]>
Commit | Line | Data |
---|---|---|
8c555625 | 1 | #ifndef TPCParam_H |
2 | #define TPCParam_H | |
3 | //////////////////////////////////////////////// | |
4 | // Manager class for TPC parameters // | |
5 | //////////////////////////////////////////////// | |
6 | #include"TObject.h" | |
7 | ||
8 | const Int_t kMaxRows=600; | |
9 | ||
10 | class AliTPCParam : public TObject { | |
11 | ////////////////////////////////////////////////////// | |
12 | ////////////////////////////////////////////////////// | |
13 | //ALITPCParam object to be possible change | |
14 | //geometry and some other parameters of TPC | |
15 | //used by AliTPC and AliTPCSector | |
16 | public: | |
17 | AliTPCParam(); | |
18 | virtual ~AliTPCParam() {;} //dummy destructor | |
19 | ||
20 | void XYZtoCRXYZ(Float_t *xyz, | |
21 | Int_t §or, Int_t &padrow, Int_t option=3); | |
22 | //transform global position to the position relative to the sector padrow | |
23 | //if option=0 X calculate absolute calculate sector | |
24 | //if option=1 X absolute use input sector | |
25 | //if option=2 X relative to pad row calculate sector | |
26 | //if option=3 X relative use input sector | |
27 | ||
28 | void CRXYZtoXYZ(Float_t *xyz, | |
29 | const Int_t §or, const Int_t & padrow, Int_t option=3) const; | |
30 | //transform relative position to the gloabal position | |
31 | ||
32 | void CRTimePadtoYZ(Float_t &y, Float_t &z, | |
33 | const Float_t &time, const Float_t &pad, | |
34 | Int_t sector, Int_t padrow ); | |
35 | //transform position in digit units (time slices and pads) to "normal" | |
36 | //units (cm) | |
37 | void CRYZtoTimePad(const Float_t &y, const Float_t &z, | |
38 | Float_t &time, Float_t &pad, | |
39 | Int_t sector, Int_t padrow); | |
40 | //transform position in cm to position in digit unit | |
41 | Double_t GetLowMaxY(Int_t irow) const {return irow*0.;} | |
42 | Double_t GetUpMaxY(Int_t irow) const {return irow*0;} | |
43 | //additional geometrical function | |
44 | Int_t GetPadRow(Int_t isec, Float_t &x); | |
45 | //return pad row for given sector and position x | |
46 | //if res=-1 it is out of sector | |
47 | ||
48 | Int_t GetWire(Float_t &x); | |
49 | Int_t GetIndex(Int_t sector, Int_t row); //give index of the given sector and pad row | |
50 | Bool_t AdjustSectorRow(Int_t index, Int_t & sector, Int_t &row); //return sector and padrow | |
51 | //for given index | |
52 | Int_t GetNRowsTotal(){return fNtRows;} //get total nuber of rows | |
53 | void SetDefault(); //set defaut TPCparam | |
54 | Bool_t Update(); //recalculate and check geometric parameters | |
55 | Bool_t GetStatus(); //get information about object consistency | |
56 | ||
57 | ||
58 | void AdjustAngles(Int_t isec, Float_t &cos, Float_t &sin) const; | |
59 | //set cosinus and sinus of rotation angles for sector isec | |
60 | Int_t GetNRowLow() const; //get the number of pad rows in low sector | |
61 | Int_t GetNRowUp() const; //get the number of pad rows in up sector | |
62 | Int_t GetNRow(Int_t isec) {return ((isec<25) ? fnRowLow:fnRowUp);} | |
63 | //get the nuber of pad row in given sector | |
64 | Float_t GetPadRowRadiiLow(Int_t irow) const; //get the pad row (irow) radii | |
65 | Float_t GetPadRowRadiiUp(Int_t irow) const; //get the pad row (irow) radii | |
66 | Float_t GetPadRowRadii(Int_t isec,Int_t irow) const { | |
67 | return ( (isec < 25) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));} | |
68 | //retrun raii of the pad row irow in sector i | |
69 | Int_t GetNPadsLow(Int_t irow) const; //get the number of pads in row irow | |
70 | Int_t GetNPadsUp(Int_t irow) const; //get the number of pads in row irow | |
71 | Int_t GetNPads(Int_t isector,Int_t irow){ | |
72 | return ( (isector < 25) ?GetNPadsLow(irow) : GetNPadsUp(irow));} | |
73 | //get the number of pads in given sector and row | |
74 | // Int_t GetNPads(Int_t isector, Int_t irow) const; | |
75 | //get the number of pads in sector isector and row irow | |
76 | ||
77 | void SetInnerRadiusLow(Float_t InnerRadiusLow ) { fInnerRadiusLow=InnerRadiusLow;} | |
78 | void SetOuterRadiusLow(Float_t OuterRadiusLow ){ fOuterRadiusLow=OuterRadiusLow;} | |
79 | void SetInnerRadiusUp(Float_t InnerRadiusUp){ fInnerRadiusUp= InnerRadiusUp;} | |
80 | void SetOuterRadiusUp(Float_t OuterRadiusUp){ fOuterRadiusUp= OuterRadiusUp;} | |
81 | ||
82 | void SetPadPitchLength(Float_t PadPitchLength){ fPadPitchLength=PadPitchLength;} | |
83 | void SetPadPitchWidth(Float_t PadPitchWidth){ fPadPitchWidth = PadPitchWidth;} | |
84 | void SetPadLength(Float_t PadLength){ fPadLength=PadLength;} | |
85 | void SetPadWidth(Float_t PadWidth) { fPadWidth=PadWidth;} | |
86 | void SetDiffT(Float_t DiffT){ fDiffT= DiffT;} | |
87 | void SetDiffL(Float_t DiffL){ fDiffL=DiffL;} | |
88 | void SetDriftV(Float_t DriftV){ fDriftV= DriftV;} | |
89 | void SetOmegaTau(Float_t OmegaTau){ fOmegaTau=OmegaTau;} | |
90 | void SetAttCoef(Float_t AttCoef){ fAttCoef=AttCoef;} | |
91 | void SetOxyCont(Float_t OxyCont){ fOxyCont=OxyCont;} | |
92 | ||
93 | void SetNoise(Float_t Noise ){ fNoise= Noise;} | |
94 | void SetChipGain(Float_t ChipGain){ fChipGain= ChipGain;} | |
95 | void SetGasGain(Float_t GasGain){ fGasGain=GasGain;} | |
96 | void SetTSample(Float_t TSample){ fTSample=TSample;} | |
97 | void SetTSigma(Float_t Sigma){ fTSigma=Sigma;} | |
98 | void SetPadCoupling(Float_t PadCoupling){ fPadCoupling=PadCoupling;} | |
99 | void SetNWires(Int_t nWires){ fnWires=nWires;} | |
100 | void SetWWPitch(Float_t WWPitch){ fWWPitch=WWPitch;} | |
101 | void SetZeroSup(Int_t ZeroSup){ fZeroSup=ZeroSup;} | |
102 | ||
103 | Float_t GetInnerRadiusLow(){return fInnerRadiusLow;} | |
104 | Float_t GetOuterRadiusLow(){return fOuterRadiusLow;} | |
105 | Float_t GetInnerRadiusUp(){return fInnerRadiusUp;} | |
106 | Float_t GetOuterRadiusUp(){return fOuterRadiusUp;} | |
107 | ||
108 | Float_t GetPadPitchLength(){return fPadPitchLength;} | |
109 | Float_t GetPadPitchWidth(){return fPadPitchWidth;} | |
110 | Float_t GetPadLength(){return fPadLength;} | |
111 | Float_t GetPadWidth() {return fPadWidth;} | |
112 | Float_t GetDiffT(){return fDiffT;} | |
113 | Float_t GetDiffL(){return fDiffL;} | |
114 | Float_t GetDriftV(){return fDriftV;} | |
115 | Float_t GetOmegaTau(){return fOmegaTau;} | |
116 | Float_t GetAttCoef(){return fAttCoef;} | |
117 | Float_t GetOxyCont(){return fOxyCont;} | |
118 | ||
119 | Float_t GetNoise(){return fNoise;} | |
120 | Float_t GetChipGain(){return fChipGain;} | |
121 | Float_t GetGasGain(){return fGasGain;} | |
122 | Float_t GetTSample(){return fTSample;} | |
123 | Float_t GetTSigma(){return fTSigma;} | |
124 | Float_t GetZWidth(){return fZWidth;} | |
125 | Float_t GetZSigma(){return fTSigma*fDriftV;} | |
126 | Float_t GetPadCoupling(){return fPadCoupling;} | |
127 | Int_t GetNWires(){return fnWires;} | |
128 | Float_t GetWWPitch(){return fWWPitch;} | |
129 | Int_t GetZeroSup(){return fZeroSup;} | |
130 | ||
131 | ||
132 | private : | |
133 | Bool_t fbStatus; //indicates consistency of the data | |
134 | //--------------------------------------------------------------------- | |
135 | // ALICE TPC sector geometry | |
136 | //-------------------------------------------------------------------- | |
137 | ||
138 | Float_t fInnerRadiusLow; // lower radius of inner sector | |
139 | Float_t fOuterRadiusLow; // lower radius of outer sector | |
140 | Float_t fInnerRadiusUp; // upper radius of inner sector | |
141 | Float_t fOuterRadiusUp; // upper radius of outer sector | |
142 | ||
143 | Float_t fPadPitchLength; //pad pitch length | |
144 | Float_t fPadPitchWidth; //pad pitch width | |
145 | Float_t fPadLength; //pad length | |
146 | Float_t fPadWidth; //pad width | |
147 | ||
148 | ||
149 | Int_t fnRowLow; // number of pad rows per low sector | |
150 | Int_t fnRowUp; // number of pad rows per sector up | |
151 | Float_t fPadRowLow[600]; // Lower sector, pad row radii | |
152 | Float_t fPadRowUp[600]; // Upper sector, pad row radii | |
153 | Int_t fnPadsLow[600]; // Lower sector, number of pads per row | |
154 | Int_t fnPadsUp[600]; // Upper sector, number of pads per row | |
155 | Float_t fRotAngle[200]; // sin and cos of rotation angles for | |
156 | // diferent sectors | |
157 | ||
158 | Int_t fnWires; // Number of wires per pad | |
159 | Float_t fWWPitch; // pitch between wires | |
160 | //--------------------------------------------------------------------- | |
161 | // ALICE TPC Gas Parameters | |
162 | //-------------------------------------------------------------------- | |
163 | Float_t fDiffT; //tangencial diffusion constant | |
164 | Float_t fDiffL; //longutudinal diffusion constant | |
165 | Float_t fGasGain; //gas gain constant | |
166 | Float_t fDriftV; //drift velocity constant | |
167 | Float_t fOmegaTau; //omega tau ExB coeficient | |
168 | Float_t fAttCoef; //attachment coefitients | |
169 | Float_t fOxyCont; //oxygen content | |
170 | //--------------------------------------------------------------------- | |
171 | // ALICE TPC Electronics Parameters | |
172 | //-------------------------------------------------------------------- | |
173 | Float_t fPadCoupling; //coupling factor ration of anode signal | |
174 | //and total pads signal | |
175 | Int_t fZeroSup; //zero suppresion constant | |
176 | Float_t fNoise; //noise sigma constant | |
177 | Float_t fChipGain; //preamp shaper constant | |
178 | Float_t fTSample; // sampling time | |
179 | Float_t fZWidth; //derived value calculated using TSample and driftw | |
180 | Float_t fTSigma; // width of the Preamp/Shaper function | |
181 | //-------------------------------------------------------- | |
182 | // | |
183 | Int_t fNtRows; //total number of rows in TPC | |
184 | ClassDef(AliTPCParam,2) //parameter object for set:TPC | |
185 | }; | |
186 | ||
187 | ||
188 | ||
189 | ||
190 | ||
191 | #endif |