New TPC files from M.Kowalski.
[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////////////////////////////////////////////////
6#include"TObject.h"
7
8const Int_t kMaxRows=600;
9
10class 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
16public:
17 AliTPCParam();
18 virtual ~AliTPCParam() {;} //dummy destructor
19
20 void XYZtoCRXYZ(Float_t *xyz,
21 Int_t &sector, 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 &sector, 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
132private :
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