Introduction of the Copyright and cvs Log
[u/mrichter/AliRoot.git] / TPC / AliTPCParam.h
CommitLineData
8c555625 1#ifndef TPCParam_H
2#define TPCParam_H
3////////////////////////////////////////////////
4// Manager class for TPC parameters //
5////////////////////////////////////////////////
8c555625 6
1283eee5 7#include "TObject.h"
8
9// the last things from AliTPCSecGeo
10//const Float_t z_end = 250.;
11//const Float_t alpha_low=0.523598775; // 30 degrees
12//const Float_t alpha_up=0.261799387; // 15 degrees
13//const Float_t q_el = 1.602e-19; // elementary charge
14//const Float_t adc_sat = 1023; // dynamic range (10 bits)
15//const Float_t dyn_range = 2000.; // output dynamic range (mV)
16
17
8c555625 18
19class AliTPCParam : public TObject {
20 //////////////////////////////////////////////////////
21 //////////////////////////////////////////////////////
22 //ALITPCParam object to be possible change
23 //geometry and some other parameters of TPC
24 //used by AliTPC and AliTPCSector
25public:
26 AliTPCParam();
27 virtual ~AliTPCParam() {;} //dummy destructor
28
29 void XYZtoCRXYZ(Float_t *xyz,
30 Int_t &sector, Int_t &padrow, Int_t option=3);
31 //transform global position to the position relative to the sector padrow
32 //if option=0 X calculate absolute calculate sector
33 //if option=1 X absolute use input sector
34 //if option=2 X relative to pad row calculate sector
35 //if option=3 X relative use input sector
36
37 void CRXYZtoXYZ(Float_t *xyz,
38 const Int_t &sector, const Int_t & padrow, Int_t option=3) const;
39 //transform relative position to the gloabal position
40
41 void CRTimePadtoYZ(Float_t &y, Float_t &z,
42 const Float_t &time, const Float_t &pad,
43 Int_t sector, Int_t padrow );
44 //transform position in digit units (time slices and pads) to "normal"
45 //units (cm)
46 void CRYZtoTimePad(const Float_t &y, const Float_t &z,
47 Float_t &time, Float_t &pad,
48 Int_t sector, Int_t padrow);
49 //transform position in cm to position in digit unit
50 Double_t GetLowMaxY(Int_t irow) const {return irow*0.;}
51 Double_t GetUpMaxY(Int_t irow) const {return irow*0;}
52 //additional geometrical function
53 Int_t GetPadRow(Int_t isec, Float_t &x);
54 //return pad row for given sector and position x
55 //if res=-1 it is out of sector
56
57 Int_t GetWire(Float_t &x);
58 Int_t GetIndex(Int_t sector, Int_t row); //give index of the given sector and pad row
59 Bool_t AdjustSectorRow(Int_t index, Int_t & sector, Int_t &row); //return sector and padrow
60 //for given index
61 Int_t GetNRowsTotal(){return fNtRows;} //get total nuber of rows
62 void SetDefault(); //set defaut TPCparam
63 Bool_t Update(); //recalculate and check geometric parameters
64 Bool_t GetStatus(); //get information about object consistency
65
66
67 void AdjustAngles(Int_t isec, Float_t &cos, Float_t &sin) const;
68 //set cosinus and sinus of rotation angles for sector isec
69 Int_t GetNRowLow() const; //get the number of pad rows in low sector
70 Int_t GetNRowUp() const; //get the number of pad rows in up sector
1283eee5 71 Int_t GetNRow(Int_t isec) {return ((isec<fNInnerSector) ? fnRowLow:fnRowUp);}
8c555625 72 //get the nuber of pad row in given sector
73 Float_t GetPadRowRadiiLow(Int_t irow) const; //get the pad row (irow) radii
74 Float_t GetPadRowRadiiUp(Int_t irow) const; //get the pad row (irow) radii
75 Float_t GetPadRowRadii(Int_t isec,Int_t irow) const {
1283eee5 76 return ( (isec < fNInnerSector) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
8c555625 77 //retrun raii of the pad row irow in sector i
78 Int_t GetNPadsLow(Int_t irow) const; //get the number of pads in row irow
79 Int_t GetNPadsUp(Int_t irow) const; //get the number of pads in row irow
80 Int_t GetNPads(Int_t isector,Int_t irow){
1283eee5 81 return ( (isector < fNInnerSector) ?GetNPadsLow(irow) : GetNPadsUp(irow));}
8c555625 82 //get the number of pads in given sector and row
83 // Int_t GetNPads(Int_t isector, Int_t irow) const;
84 //get the number of pads in sector isector and row irow
85
86 void SetInnerRadiusLow(Float_t InnerRadiusLow ) { fInnerRadiusLow=InnerRadiusLow;}
87 void SetOuterRadiusLow(Float_t OuterRadiusLow ){ fOuterRadiusLow=OuterRadiusLow;}
88 void SetInnerRadiusUp(Float_t InnerRadiusUp){ fInnerRadiusUp= InnerRadiusUp;}
89 void SetOuterRadiusUp(Float_t OuterRadiusUp){ fOuterRadiusUp= OuterRadiusUp;}
1283eee5 90
91 void SetSectorAngles(Float_t innerangle, Float_t innershift, Float_t outerangle,
92 Float_t outershift,Bool_t inDegree=kTRUE);
93
94 void SetInSecLowEdge(Float_t isle){fInSecLowEdge=isle;}
95 void SetInSecUpEdge(Float_t isue){fInSecUpEdge=isue;}
96 void SetOuSecLowEdge(Float_t osle){fOuSecLowEdge=osle;}
97 void SetOuSecUpEdge(Float_t osue){fOuSecUpEdge=osue;}
98
99 void SetEdge(Float_t edge){fEdge = edge;}
100 void SetDeadZone(Float_t zone){fDeadZone = zone;}
101
8c555625 102
103 void SetPadPitchLength(Float_t PadPitchLength){ fPadPitchLength=PadPitchLength;}
104 void SetPadPitchWidth(Float_t PadPitchWidth){ fPadPitchWidth = PadPitchWidth;}
105 void SetPadLength(Float_t PadLength){ fPadLength=PadLength;}
106 void SetPadWidth(Float_t PadWidth) { fPadWidth=PadWidth;}
107 void SetDiffT(Float_t DiffT){ fDiffT= DiffT;}
108 void SetDiffL(Float_t DiffL){ fDiffL=DiffL;}
109 void SetDriftV(Float_t DriftV){ fDriftV= DriftV;}
110 void SetOmegaTau(Float_t OmegaTau){ fOmegaTau=OmegaTau;}
111 void SetAttCoef(Float_t AttCoef){ fAttCoef=AttCoef;}
112 void SetOxyCont(Float_t OxyCont){ fOxyCont=OxyCont;}
113
114 void SetNoise(Float_t Noise ){ fNoise= Noise;}
115 void SetChipGain(Float_t ChipGain){ fChipGain= ChipGain;}
116 void SetGasGain(Float_t GasGain){ fGasGain=GasGain;}
117 void SetTSample(Float_t TSample){ fTSample=TSample;}
118 void SetTSigma(Float_t Sigma){ fTSigma=Sigma;}
119 void SetPadCoupling(Float_t PadCoupling){ fPadCoupling=PadCoupling;}
120 void SetNWires(Int_t nWires){ fnWires=nWires;}
121 void SetWWPitch(Float_t WWPitch){ fWWPitch=WWPitch;}
122 void SetZeroSup(Int_t ZeroSup){ fZeroSup=ZeroSup;}
123
124 Float_t GetInnerRadiusLow(){return fInnerRadiusLow;}
125 Float_t GetOuterRadiusLow(){return fOuterRadiusLow;}
126 Float_t GetInnerRadiusUp(){return fInnerRadiusUp;}
127 Float_t GetOuterRadiusUp(){return fOuterRadiusUp;}
128
1283eee5 129 Float_t GetInnerAngle(){return fInnerAngle;}
130 Float_t GetInnerAngleShift(){return fInnerAngleShift;}
131 Float_t GetOuterAngle(){return fOuterAngle;}
132 Float_t GetOuterAngleShift(){return fOuterAngleShift;}
133 Int_t GetNInnerSector(){return fNInnerSector;}
134 Int_t GetNOuterSector(){return fNOuterSector;}
135 Int_t GetNSector(){return fNSector;}
136
137 Float_t GetInSecLowEdge(){return fInSecLowEdge;}
138 Float_t GetInSecUpEdge(){return fInSecUpEdge;}
139 Float_t GetOuSecLowEdge(){return fOuSecLowEdge;}
140 Float_t GetOuSecUpEdge(){return fOuSecUpEdge;}
141
142 Float_t GetEdge(){return fEdge;}
143 Float_t GetDeadZone(){return fDeadZone;}
144
8c555625 145 Float_t GetPadPitchLength(){return fPadPitchLength;}
146 Float_t GetPadPitchWidth(){return fPadPitchWidth;}
147 Float_t GetPadLength(){return fPadLength;}
148 Float_t GetPadWidth() {return fPadWidth;}
149 Float_t GetDiffT(){return fDiffT;}
150 Float_t GetDiffL(){return fDiffL;}
151 Float_t GetDriftV(){return fDriftV;}
152 Float_t GetOmegaTau(){return fOmegaTau;}
153 Float_t GetAttCoef(){return fAttCoef;}
154 Float_t GetOxyCont(){return fOxyCont;}
155
156 Float_t GetNoise(){return fNoise;}
157 Float_t GetChipGain(){return fChipGain;}
158 Float_t GetGasGain(){return fGasGain;}
159 Float_t GetTSample(){return fTSample;}
160 Float_t GetTSigma(){return fTSigma;}
161 Float_t GetZWidth(){return fZWidth;}
162 Float_t GetZSigma(){return fTSigma*fDriftV;}
163 Float_t GetPadCoupling(){return fPadCoupling;}
164 Int_t GetNWires(){return fnWires;}
165 Float_t GetWWPitch(){return fWWPitch;}
166 Int_t GetZeroSup(){return fZeroSup;}
1283eee5 167 Int_t GetMaxTBin(){return fMaxTBin;}
8c555625 168
169private :
170 Bool_t fbStatus; //indicates consistency of the data
171 //---------------------------------------------------------------------
172 // ALICE TPC sector geometry
173 //--------------------------------------------------------------------
174
175 Float_t fInnerRadiusLow; // lower radius of inner sector
176 Float_t fOuterRadiusLow; // lower radius of outer sector
177 Float_t fInnerRadiusUp; // upper radius of inner sector
178 Float_t fOuterRadiusUp; // upper radius of outer sector
179
1283eee5 180 Float_t fInnerAngle; //opening angle of Inner sector
181 Float_t fInnerAngleShift; //shift of first inner sector center to the 0
182 Float_t fOuterAngle; //opening angle of outer sector
183 Float_t fOuterAngleShift; //shift of first sector center to the 0
184
185 Int_t fNInnerSector; //!number of inner sectors
186 Int_t fNOuterSector; //!number of outer sectors
187 Int_t fNSector; //! total number of sectors
188
189 Float_t fInSecLowEdge; // inner sector lower edge
190 Float_t fInSecUpEdge; // inner sector upper edge
191 Float_t fOuSecLowEdge; // outer sector lower edge
192 Float_t fOuSecUpEdge; // outer sector upper edge
193
194 Float_t fEdge; // thickness of the sector edge
195 Float_t fDeadZone; // dead zone due to the sector mounting etc.
196
197 //---------------------------------------------------------------------
198 // ALICE TPC pad parameters
199 //--------------------------------------------------------------------
8c555625 200 Float_t fPadPitchLength; //pad pitch length
201 Float_t fPadPitchWidth; //pad pitch width
202 Float_t fPadLength; //pad length
203 Float_t fPadWidth; //pad width
204
205
206 Int_t fnRowLow; // number of pad rows per low sector
207 Int_t fnRowUp; // number of pad rows per sector up
208 Float_t fPadRowLow[600]; // Lower sector, pad row radii
209 Float_t fPadRowUp[600]; // Upper sector, pad row radii
210 Int_t fnPadsLow[600]; // Lower sector, number of pads per row
211 Int_t fnPadsUp[600]; // Upper sector, number of pads per row
212 Float_t fRotAngle[200]; // sin and cos of rotation angles for
213 // diferent sectors
214
215 Int_t fnWires; // Number of wires per pad
216 Float_t fWWPitch; // pitch between wires
217 //---------------------------------------------------------------------
218 // ALICE TPC Gas Parameters
219 //--------------------------------------------------------------------
220 Float_t fDiffT; //tangencial diffusion constant
221 Float_t fDiffL; //longutudinal diffusion constant
222 Float_t fGasGain; //gas gain constant
223 Float_t fDriftV; //drift velocity constant
224 Float_t fOmegaTau; //omega tau ExB coeficient
225 Float_t fAttCoef; //attachment coefitients
226 Float_t fOxyCont; //oxygen content
227 //---------------------------------------------------------------------
228 // ALICE TPC Electronics Parameters
229 //--------------------------------------------------------------------
230 Float_t fPadCoupling; //coupling factor ration of anode signal
231 //and total pads signal
232 Int_t fZeroSup; //zero suppresion constant
233 Float_t fNoise; //noise sigma constant
234 Float_t fChipGain; //preamp shaper constant
235 Float_t fTSample; // sampling time
236 Float_t fZWidth; //derived value calculated using TSample and driftw
237 Float_t fTSigma; // width of the Preamp/Shaper function
1283eee5 238 Int_t fMaxTBin; //maximum time bin number
8c555625 239 //--------------------------------------------------------
240 //
241 Int_t fNtRows; //total number of rows in TPC
242 ClassDef(AliTPCParam,2) //parameter object for set:TPC
243};
244
245
1283eee5 246/////////////////////////////////////////////////////////////////////////////
247//
248//---------------------------------------------------------------------
249// ALICE TPC Cluster Parameters
250//--------------------------------------------------------------------
251//
252//
253// Sigma rphi
254/*const Float_t a_rphi=0.41818e-2;
255const Float_t b_rphi=0.17460e-4;
256const Float_t c_rphi=0.30993e-2;
257const Float_t d_rphi=0.41061e-3;
258// Sigma z
259const Float_t a_z=0.39614e-2;
260const Float_t b_z=0.22443e-4;
261const Float_t c_z=0.51504e-1;
262// Cluster width in rphi
263const Float_t ac_rphi=0.18322;
264const Float_t bc_rphi=0.59551e-3;
265const Float_t cc_rphi=0.60952e-1;
266// Cluster width in z
267const Float_t ac_z=0.19081;
268const Float_t bc_z=0.55938e-3;
269const Float_t cc_z=0.30428;
270*/
8c555625 271
272
273
274#endif