SND@LHC Software
Loading...
Searching...
No Matches
ecalInf.h
Go to the documentation of this file.
1
7#ifndef ECALINF_H
8#define ECALINF_H
9
10#include "TObjArray.h"
11#include "TString.h"
12#include "TObjString.h"
13
14#include <list>
15#include <stdlib.h>
16
17class TMap;
18
19class ecalInf:public TObject
20{
21public:
23 ecalInf() : TObject(), fVariables(NULL), fEcalStr(), fXPos(0.), fYPos(0.),
24 fZPos(0.), fNLayers(0), fXSize(0), fYSize(0), fModuleSize(0.), fLead(0.),
25 fScin(0.), fTyveec(0.), fThicknessLayer(0.), fCellSize(0.), fEcalSize(),
26 fECut(0.), fHCut(0.), fSemiX(0.0), fSemiY(0.0), fFastMC(-1),
27 fSuccess(-1), fFileName("")
28 {};
29
30 static ecalInf* GetInstance(const char* filename);
32 inline Double_t GetXPos() const {return fXPos;}
33 inline Double_t GetYPos() const {return fYPos;}
34 inline Double_t GetZPos() const {return fZPos;}
35
36 inline Double_t GetModuleSize() const {return fModuleSize;}
37
38 inline Int_t GetNLayers() const {return fNLayers;}
39 inline Double_t GetLead() const {return fLead;}
40 inline Double_t GetScin() const {return fScin;}
41 inline Double_t GetTyveec() const {return fTyveec;}
42 inline Double_t GetThicknessLayer() const {return fThicknessLayer;}
43
45 inline Int_t GetXSize() const {return fXSize;}
46 inline Int_t GetYSize() const {return fYSize;}
47 inline Double_t GetContainerXSemiAxiss() const {return fSemiX;}
48 inline Double_t GetContainerYSemiAxiss() const {return fSemiY;}
49
51 inline Double_t GetElectronCut() const {return fECut;}
52 inline Double_t GetHadronCut() const {return fHCut;}
53
54 inline Double_t GetEcalSize(Int_t num) const {
55 if (num>-1&&num<3) return fEcalSize[num];
56 return -1;
57 }
58 char GetType(Int_t x, Int_t y) const; //returns type of (X,Y) supercell
59 inline Int_t GetFastMC() const {return fFastMC;}
60 void DumpContainer() const;
61
62 void FreeInstance();
63
68 Double_t GetVariable(const char* key);
73 Double_t GetVariableStrict(const char* key);
74 TString GetStringVariable(const char* key);
75
76 void AddVariable(const char* key, const char* value);
79 // void CheckVariables();
80protected:
81
83 ecalInf(const char* filename);
85 virtual ~ecalInf();
86
87 static ecalInf* fInf;
88 static Int_t fRefCount;
89
90
91private:
94 void InitVariables();
96 Bool_t ExcludeParameter(TString parname);
102 TObjArray fEcalStr;
104 Double_t fXPos;
106 Double_t fYPos;
108 Double_t fZPos;
109
111 Int_t fNLayers;
112
114 Int_t fXSize;
116 Int_t fYSize;
117
119 Double_t fModuleSize;
120
122 Double_t fLead;
124 Double_t fScin;
126 Double_t fTyveec;
130 Double_t fCellSize;
132 Double_t fEcalSize[3];
134 Double_t fECut;
136 Double_t fHCut;
138 Double_t fSemiX;
139 Double_t fSemiY;
140
142 Int_t fFastMC;
143
145 Int_t fSuccess;
146
147 TString fFileName;
148
151
153};
154
155inline char ecalInf::GetType(Int_t x, Int_t y) const
156{
158 if (x<0||y<0||y>fEcalStr.GetLast()) return 0;
159 TObjString* str=(TObjString*)fEcalStr.At(y);
160 if (str->GetString().Length()<x) return 0;
161 char stri[2]={str->GetString()[x],0};
162 return atoi(stri);
163}
164
166{
167 fRefCount--;
168 if (fRefCount==0)
169 {
170 delete this;
171 fInf=NULL;
172 }
173}
174#endif
Bool_t ExcludeParameter(TString parname)
Definition ecalInf.cxx:260
Double_t GetModuleSize() const
Definition ecalInf.h:36
Int_t GetYSize() const
Definition ecalInf.h:46
void FreeInstance()
Definition ecalInf.h:165
Double_t GetThicknessLayer() const
Definition ecalInf.h:42
TMap * fVariables
Definition ecalInf.h:99
Double_t GetHadronCut() const
Definition ecalInf.h:52
Int_t fYSize
Definition ecalInf.h:116
char GetType(Int_t x, Int_t y) const
Definition ecalInf.h:155
Int_t fXSize
Definition ecalInf.h:114
Double_t GetTyveec() const
Definition ecalInf.h:41
Double_t GetZPos() const
Definition ecalInf.h:34
void DumpContainer() const
Definition ecalInf.cxx:361
Int_t GetXSize() const
Definition ecalInf.h:45
Double_t fTyveec
Definition ecalInf.h:126
Double_t fECut
Definition ecalInf.h:134
TString GetStringVariable(const char *key)
Definition ecalInf.cxx:103
TString fFileName
Definition ecalInf.h:147
ecalInf()
Definition ecalInf.h:23
Double_t GetContainerXSemiAxiss() const
Definition ecalInf.h:47
Double_t fThicknessLayer
Definition ecalInf.h:128
Int_t fSuccess
Definition ecalInf.h:145
Int_t fFastMC
Definition ecalInf.h:142
virtual ~ecalInf()
Definition ecalInf.cxx:28
Double_t fSemiY
Definition ecalInf.h:139
Double_t GetXPos() const
Definition ecalInf.h:32
void CalculateHoleSize()
Double_t fYPos
Definition ecalInf.h:106
static Int_t fRefCount
Definition ecalInf.h:88
Double_t fXPos
Definition ecalInf.h:104
Double_t fHCut
Definition ecalInf.h:136
Double_t fEcalSize[3]
Definition ecalInf.h:132
Int_t fNLayers
Definition ecalInf.h:111
Double_t GetScin() const
Definition ecalInf.h:40
ecalInf & operator=(const ecalInf &)
TObjArray fEcalStr
Definition ecalInf.h:102
void AddVariable(const char *key, const char *value)
Definition ecalInf.cxx:128
Int_t GetFastMC() const
Definition ecalInf.h:59
Double_t fSemiX
Definition ecalInf.h:138
Double_t GetYPos() const
Definition ecalInf.h:33
Double_t fScin
Definition ecalInf.h:124
Double_t fCellSize
Definition ecalInf.h:130
Double_t fLead
Definition ecalInf.h:122
Double_t GetVariableStrict(const char *key)
Definition ecalInf.cxx:82
ClassDef(ecalInf, 2)
Double_t GetLead() const
Definition ecalInf.h:39
Double_t fModuleSize
Definition ecalInf.h:119
void InitVariables()
Definition ecalInf.cxx:324
Double_t GetVariable(const char *key)
Definition ecalInf.cxx:115
Double_t GetContainerYSemiAxiss() const
Definition ecalInf.h:48
Double_t GetEcalSize(Int_t num) const
Definition ecalInf.h:54
Double_t GetElectronCut() const
Definition ecalInf.h:51
Double_t fZPos
Definition ecalInf.h:108
ecalInf(const ecalInf &)
Int_t GetNLayers() const
Definition ecalInf.h:38
static ecalInf * GetInstance(const char *filename)
Definition ecalInf.cxx:35
static ecalInf * fInf
Definition ecalInf.h:87