AliRoot Core  v5-06-30 (35d6c57)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliTPCParam.h
Go to the documentation of this file.
1 #ifndef ALITPCPARAM_H
2 #define ALITPCPARAM_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 
9 
10 #include "AliDetectorParam.h"
11 #include "TMath.h"
12 
13 #include <TGeoMatrix.h>
14 #include <TVectorD.h>
15 class TString;
16 class TGraphErrors;
17 
18 class AliTPCParam : public AliDetectorParam {
21  //ALITPCParam object to be possible change
22  //geometry and some other parameters of TPC
23  //used by AliTPC and AliTPCSector
24 
25 public:
26  AliTPCParam();
27  virtual ~AliTPCParam();
28  TGeoHMatrix * Tracking2LocalMatrix(const TGeoHMatrix * geoMatrix, Int_t sector) const;
29  virtual Bool_t Transform(Float_t *xyz, Int_t *index, Int_t* oindex);
30  //transformation from input coodination system to output coordination system
31  Int_t Transform0to1(Float_t *xyz, Int_t *index) const;
32  //trasforamtion from global to global - adjust index[0] sector
33  //return value is equal to sector corresponding to global position
34  void Transform1to2Ideal(Float_t *xyz, Int_t *index) const;
35  //transformation to rotated coordinata - ideal frame
36  void Transform1to2(Float_t *xyz, Int_t *index) const;
37  //transformation to rotated coordinata
38  void Transform2to1(Float_t *xyz, Int_t *index) const;
39  //transformation from rotated coordinata to global coordinata
40  void Transform2to2(Float_t *xyz, Int_t *index, Int_t *oindex) const;
41  //transform rotated coordinata of one sector to rotated
42  //coordinata relative to another sector
43  Float_t Transform2to2NearestWire(Float_t *xyz, Int_t *index) const;
44  //round x position to nearest wire
45  Int_t Transform2to3(Float_t *xyz, Int_t *index) const;
46  //calulate coresponding index[2] -pad row for straight rows
47  //does not change xyz[]
48  //return pad - row
49  void Transform3to4(Float_t *xyz, Int_t *index) const;
50  //valid only for straight rows straight rows
51  //calculate xyz[0] position relative to given index
52  //return pad - row
53  void Transform4to3(Float_t *xyz, Int_t *index) const;
54  //valid only for straight rows straight rows
55  //transform xyz[0] position relative to given index
56  void Transform2to5( Float_t *xyz, Int_t *index) const;
57  //transform [x,y,z] to [r,rphi,z]
58  void Transform5to2(Float_t *xyz, Int_t *index) const;
59  //transform [r,rphi,z] coordinata to [x,y,z]
60  void Transform4to8(Float_t *xyz, Int_t *index) const;
61  //transform xyz coordinata to 'digit' coordinata
62  void Transform8to4(Float_t *xyz, Int_t *index) const;
63  //transform 'digit' coordinata to xyz coordinata
64  void Transform6to8(Float_t *xyz, Int_t *index) const;
65  //transform dr,f coordinata to 'digit' coordinata
66  void Transform8to6(Float_t *xyz, Int_t *index) const;
67  //transform 'digit' coordinata to dr,f coordinata
68 
69  virtual Int_t Transform2toPadRow(Float_t */*xyz*/, Int_t */*index*/) const{return 0;}
70  //transform rotated to
71 
72  virtual Int_t GetPadRow(Float_t *xyz, Int_t *index) const ;
73  //return pad row of point xyz - xyz is given in coordinate system -(given by index)
74  //output system is 3 for straight row and 7 for cylindrical row
75  virtual void XYZtoCRXYZ(Float_t */*xyz*/,
76  Int_t &/*sector*/, Int_t &/*padrow*/, Int_t /*option*/) const {;}
77  //transform global position to the position relative to the sector padrow
78  //if option=0 X calculate absolute calculate sector
79  //if option=1 X absolute use input sector
80  //if option=2 X relative to pad row calculate sector
81  //if option=3 X relative use input sector
82 
83  virtual void CRXYZtoXYZ(Float_t */*xyz*/,
84  const Int_t &/*sector*/, const Int_t & /*padrow*/, Int_t /*option*/) const {;}
85  //transform relative position to the gloabal position
86 
87  virtual void CRTimePadtoYZ(Float_t &/*y*/, Float_t &/*z*/,
88  const Float_t &/*time*/, const Float_t &/*pad*/,
89  Int_t /*sector*/, Int_t /*padrow*/ ){;}
90  //transform position in digit units (time slices and pads) to "normal"
91  //units (cm)
92  virtual void CRYZtoTimePad(const Float_t &/*y*/, const Float_t &/*z*/,
93  Float_t &/*time*/, Float_t &/*pad*/,
94  Int_t /*sector*/, Int_t /*padrow*/){;}
95  //transform position in cm to position in digit unit
96  virtual Int_t CalcResponse(Float_t* /*x*/, Int_t * /*index*/, Int_t /*row*/){return 0;}
97  //calculate bin response as function of the input position -x and the weight
98  //if row -pad row is equal -1 calculate response for each pad row
99  //otherwise it calculate only in given pad row
100  //return number of valid response bin
101  virtual void SetDefault(); //set defaut TPCparam
102  virtual Bool_t Update(); //recalculate and check geometric parameters
103  virtual Bool_t ReadGeoMatrices(); //read geo matrixes
104  Bool_t GetStatus() const; //get information about object consistency
105  Int_t GetIndex(Int_t sector, Int_t row) const; //give index of the given sector and pad row
106  Int_t GetNSegmentsTotal() const {return fNtRows;}
107  Double_t GetLowMaxY(Int_t irow) const {return irow*0.;}
108  Double_t GetUpMaxY(Int_t irow) const {return irow*0;}
109  //additional geometrical function - for Belikov
110 
111  Bool_t AdjustSectorRow(Int_t index, Int_t & sector, Int_t &row) const; //return sector and padrow
112  //for given index
113 
114  void AdjustCosSin(Int_t isec, Float_t &cos, Float_t &sin) const;
115  //set cosinus and sinus of rotation angles for sector isec
116  Float_t GetAngle(Int_t isec) const;
117  // void GetChamberPos(Int_t isec, Float_t* xyz) const;
118  // void GetChamberRot(Int_t isec, Float_t* angles) const;
119  //
120  //set sector parameters
121  //
122  void SetInnerRadiusLow(Float_t InnerRadiusLow ) { fInnerRadiusLow=InnerRadiusLow;}
123  void SetOuterRadiusLow(Float_t OuterRadiusLow ) { fOuterRadiusLow=OuterRadiusLow;}
124  void SetInnerRadiusUp(Float_t InnerRadiusUp) { fInnerRadiusUp= InnerRadiusUp;}
125  void SetOuterRadiusUp(Float_t OuterRadiusUp) { fOuterRadiusUp= OuterRadiusUp;}
126  void SetSectorAngles(Float_t innerangle, Float_t innershift, Float_t outerangle,
127  Float_t outershift);
128  void SetInnerFrameSpace(Float_t frspace) {fInnerFrameSpace = frspace;}
129  void SetOuterFrameSpace(Float_t frspace) {fOuterFrameSpace = frspace;}
130  void SetInnerWireMount(Float_t fmount) {fInnerWireMount = fmount;}
131  void SetOuterWireMount(Float_t fmount) {fOuterWireMount = fmount;}
132  void SetZLength(Float_t zlength) {fZLength = zlength;}
133  void SetGeometryType(Int_t type) {fGeometryType = type;}
134  //
135  // pad rows geometry
136  //
137  void SetRowNLow( Int_t NRowLow){fNRowLow = NRowLow;}
138  void SetRowNUp1 (Int_t NRowUp1){fNRowUp1 = NRowUp1 ;} //upper sec short pads
139  void SetRowNUp2 (Int_t NRowUp2){fNRowUp2 = NRowUp2 ;} //upper sec long pads
140  void SetRowNUp (Int_t NRowUp){fNRowUp = NRowUp ;}
141  //
142  //set wire parameters
143  //
144  void SetInnerNWires(Int_t nWires){ fNInnerWiresPerPad=nWires;}
145  void SetInnerDummyWire(Int_t dummy) {fInnerDummyWire = dummy;}
146  void SetInnerOffWire(Float_t offset) {fInnerOffWire =offset;}
147  void SetOuter1NWires(Int_t nWires){ fNOuter1WiresPerPad=nWires;}
148  void SetOuter2NWire(Int_t nWires){ fNOuter2WiresPerPad=nWires;}
149  void SetOuterDummyWire(Int_t dummy) {fOuterDummyWire = dummy;}
150  void SetOuterOffWire(Float_t offset) {fOuterOffWire =offset;}
151  void SetInnerWWPitch( Float_t wwPitch) {fInnerWWPitch = wwPitch;}
152  void SetRInnerFirstWire(Float_t firstWire){fRInnerFirstWire = firstWire;}
153  void SetRInnerLastWire(Float_t lastWire){fRInnerLastWire = lastWire;}
154  void SetOuterWWPitch(Float_t wwPitch){fOuterWWPitch = wwPitch;}
155  void SetLastWireUp1(Float_t wireUp1){fLastWireUp1 = wireUp1;}
156  void SetROuterFirstWire(Float_t firstWire){fROuterFirstWire = firstWire;}
157  void SetROuterLastWire(Float_t lastWire){fROuterLastWire = lastWire;}
158  //
159  //set pad parameter
160  //
161  void SetInnerPadPitchLength(Float_t PadPitchLength){ fInnerPadPitchLength=PadPitchLength;}
162  void SetInnerPadPitchWidth(Float_t PadPitchWidth){ fInnerPadPitchWidth = PadPitchWidth;}
163  void SetInnerPadLength(Float_t PadLength){ fInnerPadLength=PadLength;}
164  void SetInnerPadWidth(Float_t PadWidth) { fInnerPadWidth=PadWidth;}
165  void SetOuter1PadPitchLength(Float_t PadPitchLength){ fOuter1PadPitchLength=PadPitchLength;}
166  void SetOuter2PadPitchLength(Float_t PadPitchLength){ fOuter2PadPitchLength=PadPitchLength;}
167  void SetOuterPadPitchWidth(Float_t PadPitchWidth){ fOuterPadPitchWidth = PadPitchWidth;}
168  void SetOuter1PadLength(Float_t PadLength){ fOuter1PadLength=PadLength;}
169  void SetOuter2PadLength(Float_t PadLength){ fOuter2PadLength=PadLength;}
170  void SetOuterPadWidth(Float_t PadWidth) { fOuterPadWidth=PadWidth;}
171  void SetMWPCReadout(Bool_t type) {fBMWPCReadout = type;}
172  void SetNCrossRows(Int_t rows){fNCrossRows = rows;}
173  //
174  //set gas paremeters
175  //
176  void SetDiffT(Float_t DiffT){ fDiffT= DiffT;}
177  void SetDiffL(Float_t DiffL){ fDiffL=DiffL;}
178  void SetGasGain(Float_t GasGain){ fGasGain=GasGain;}
179  void SetDriftV(Float_t DriftV){ fDriftV= DriftV;}
180  void SetOmegaTau(Float_t OmegaTau){ fOmegaTau=OmegaTau;}
181  void SetAttCoef(Float_t AttCoef){ fAttCoef=AttCoef;}
182  void SetOxyCont(Float_t OxyCont){ fOxyCont=OxyCont;}
183  void SetGainSlopesHV(TGraphErrors * gainSlopesHV){ fGainSlopesHV=gainSlopesHV;}
184  void SetGainSlopesPT(TGraphErrors * gainSlopesPT){ fGainSlopesPT=gainSlopesPT;}
185  void SetNominalGainSlopes();
186  void SetComposition(Float_t c1, Float_t c2, Float_t c3, Float_t c4, Float_t c5, Float_t c6){fComposition[0]=c1;
187  fComposition[1]=c2;
188  fComposition[2]=c3;
189  fComposition[3]=c4;
190  fComposition[4]=c5;
191  fComposition[5]=c6;}
192  void SetFpot(Float_t fpot){fFpot=fpot;}
193  void SetNprim(Float_t prim){fNprim=prim;}
194  void SetNtot(Float_t ntot){fNtot=ntot;}
195  void SetWmean(Float_t wmean){fWmean=wmean;}
196  void SetExp(Float_t exp){fExp=exp;}
197  void SetEend(Float_t end){fEend=end;}
198  void SetBetheBloch(TVectorD *v){
199  if (fBetheBloch) delete fBetheBloch;
200  fBetheBloch=0;
201  if (v) fBetheBloch=new TVectorD(*v);
202  }
203  void SetBetheBlochMC(TVectorD *v){
204  if (fBetheBlochMC) delete fBetheBlochMC;
205  fBetheBlochMC=0;
206  if (v) fBetheBlochMC=new TVectorD(*v);
207  }
208  static TVectorD * GetBetheBlochParamNa49();
209  static TVectorD * GetBetheBlochParamAlice();
210  static TVectorD * GetBetheBlochParamAliceMC();
211  static void RegisterBBParam(TVectorD* param, Int_t position);
212  //
213  //set electronivc parameters
214  //
215  void SetPadCoupling(Float_t PadCoupling){ fPadCoupling=PadCoupling;}
216  void SetZeroSup(Int_t ZeroSup) { fZeroSup=ZeroSup;}
217  void SetNoise(Float_t Noise ) { fNoise= Noise;}
218  void SetChipGain(Float_t ChipGain){ fChipGain= ChipGain;}
219  void SetChipNorm(Float_t ChipNorm){ fChipNorm= ChipNorm;}
220  void SetTSample(Float_t TSample) { fTSample=TSample;}
221  void SetTFWHM(Float_t fwhm) { fTSigma=fwhm/2.35;}
222  void SetMaxTBin(Int_t maxtbin) { fMaxTBin = maxtbin;}
223  void SetADCSat(Int_t adcsat) { fADCSat = adcsat;}
224  void SetADCDynRange(Float_t adcdynrange) {fADCDynRange = adcdynrange;}
225  //
226  // High voltage parameters
227  //
228  void SetNominalVoltage(Float_t v, UInt_t i) {if (i<72) fNominalVoltage[i]=v;}
229  void SetMaxVoltageDeviation(Float_t voltage) { fMaxVoltageDeviation=voltage; }
230  void SetMaxDipVoltage(Float_t voltage) { fMaxDipVoltage=voltage; }
231  void SetMaxFractionHVbad(Float_t frac ) { fMaxHVfractionBad=frac; }
232  void SetVoltageDipScanPeriod(Float_t period) { fVoltageDipScanPeriod=period; }
233  //
234  //set response parameters
235  //
236  void SetNResponseMax(Int_t max) { fNResponseMax = max;}
237  void SetResponseThreshold(Int_t threshold) {fResponseThreshold = threshold;}
238  //set L1 parameters
239  void SetGateDelay(Float_t delay) {fGateDelay = delay;}
240  void SetL1Delay(Float_t delay) {fL1Delay = delay;}
241  void SetNTBinsBeforeL1(UShort_t nbins) {fNTBinsBeforeL1 = nbins;}
242  //
243  //get sector parameters
244  //
245  Float_t GetInnerRadiusLow() const {return fInnerRadiusLow;}
246  Float_t GetInnerRadiusUp() const {return fInnerRadiusUp;}
247  Float_t GetOuterRadiusLow() const {return fOuterRadiusLow;}
248  Float_t GetOuterRadiusUp() const {return fOuterRadiusUp;}
249  Float_t GetInnerFrameSpace() const {return fInnerFrameSpace;}
250  Float_t GetOuterFrameSpace() const {return fOuterFrameSpace;}
251  Float_t GetInnerWireMount() const {return fInnerWireMount;}
252  Float_t GetOuterWireMount() const {return fOuterWireMount;}
253  Float_t GetInnerAngle() const ;
254  Float_t GetInnerAngleShift() const ;
255  Float_t GetOuterAngle() const ;
256  Float_t GetOuterAngleShift() const ;
257  Int_t GetNInnerSector() const {return fNInnerSector;}
258  Int_t GetNOuterSector() const {return fNOuterSector;}
259  Int_t GetNSector() const {return fNSector;}
260  Float_t GetZLength(Int_t sector=0) const;
261  Int_t GetGeometryType() const {return fGeometryType;}
262 
263  //
264  //get wires parameter
265  //
266  Int_t GetInnerNWires() const {return fNInnerWiresPerPad;}
267  Float_t GetInnerWWPitch() const {return fInnerWWPitch;}
268  Int_t GetInnerDummyWire() const {return fInnerDummyWire;}
269  Float_t GetInnerOffWire() const {return fInnerOffWire;}
270  Float_t GetRInnerFirstWire() const {return fRInnerFirstWire;}
271  Float_t GetRInnerLastWire() const {return fRInnerLastWire;}
272  Int_t GetOuter1NWires() const {return fNOuter1WiresPerPad;}
273  Int_t GetOuter2NWires() const {return fNOuter2WiresPerPad;}
274  Float_t GetOuterWWPitch() const {return fOuterWWPitch;}
275  Int_t GetOuterDummyWire() const {return fOuterDummyWire;}
276  Float_t GetOuterOffWire() const {return fOuterOffWire;}
277  Float_t GetLastWireUp1() const {return fLastWireUp1;}
278  Float_t GetROuterFirstWire() const {return fROuterFirstWire;}
279  Float_t GetROuterLastWire() const {return fROuterLastWire;}
280  Float_t GetWWPitch(Int_t isector = 0) const {
281  return ( (isector < fNInnerSector) ? fInnerWWPitch :fOuterWWPitch);}
282  //
283  //get pad parameters
284  //
286  Float_t GetInnerPadPitchWidth() const {return fInnerPadPitchWidth;}
287  Float_t GetInnerPadLength() const {return fInnerPadLength;}
288  Float_t GetInnerPadWidth() const {return fInnerPadWidth;}
291  Float_t GetOuterPadPitchWidth() const {return fOuterPadPitchWidth;}
292  Float_t GetOuter1PadLength() const {return fOuter1PadLength;}
293  Float_t GetOuter2PadLength() const {return fOuter2PadLength;}
294  Float_t GetOuterPadWidth() const {return fOuterPadWidth;}
295  Bool_t GetMWPCReadout() const {return fBMWPCReadout;}
296  Int_t GetNCrossRows() const {return fNCrossRows;}
297  Float_t GetPadPitchWidth(Int_t isector = 0) const {
298  return ( (isector < fNInnerSector) ? fInnerPadPitchWidth :fOuterPadPitchWidth);}
299  Float_t GetPadPitchLength(Int_t isector = 0, Int_t padrow=0) const
300  { if (isector < fNInnerSector) return fInnerPadPitchLength;
301  else return ((padrow<fNRowUp1) ? fOuter1PadPitchLength:fOuter2PadPitchLength);}
302  Int_t GetNRowLow() const; //get the number of pad rows in low sector
303  Int_t GetNRowUp() const; //get the number of pad rows in up sector
304  Int_t GetNRowUp1() const; // number of short rows in up sector
305  Int_t GetNRowUp2() const; // number of long rows in up sector
306  Int_t GetNRow(Int_t isec) const {return ((isec<fNInnerSector) ? fNRowLow:fNRowUp);}
307  Int_t GetNRowsTotal() const {return fNtRows;} //get total nuber of rows
308  Float_t GetPadRowRadiiLow(Int_t irow) const; //get the pad row (irow) radii
309  Float_t GetPadRowRadiiUp(Int_t irow) const; //get the pad row (irow) radii
310  Float_t GetPadRowRadii(Int_t isec,Int_t irow) const {
311  return ( (isec < fNInnerSector) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
312  //retrun radii of the pad row irow in sector i
313  Int_t GetNPadsLow(Int_t irow) const; //get the number of pads in row irow
314  Int_t GetNPadsUp(Int_t irow) const; //get the number of pads in row irow
315  Int_t GetNPads(Int_t isector,Int_t irow) const{
316  return ( (isector < fNInnerSector) ?GetNPadsLow(irow) : GetNPadsUp(irow));}
317  Int_t GetWireSegment(Int_t sector, Int_t row) const ; // get Anode wire segment index IROC --> [0,4], OROC[0,7]
318  Int_t GetNPadsPerSegment(Int_t segmentID) const; // get number of pads for a given Anode wire segment
319 
320  Float_t GetYInner(Int_t irow) const; // wire length in low sec row
321  Float_t GetYOuter(Int_t irow) const; // wire length in up sec row
322  Int_t GetSectorIndex(Float_t angle, Int_t row, Float_t z) const; // get sector index
323  Float_t GetChamberCenter(Int_t isec, Float_t * center = 0) const; // get readout chamber positions
324  TGeoHMatrix *GetTrackingMatrix(Int_t isec) const {
325  return fTrackingMatrix[isec];}
326  TGeoHMatrix *GetClusterMatrix(Int_t isec) const {
327  return fClusterMatrix[isec];}
328  TGeoHMatrix *GetGlobalMatrix(Int_t isec) const {
329  return fGlobalMatrix[isec];}
330  Bool_t IsGeoRead(){ return fGlobalMatrix!=0;}
331  //
332  //get GAS parameters
333  //
334  Float_t GetDiffT() const {return fDiffT;}
335  Float_t GetDiffL() const {return fDiffL;}
336  Float_t GetGasGain() const {return fGasGain;}
337  Float_t GetDriftV() const {return fDriftV;}
338  Float_t GetOmegaTau() const {return fOmegaTau;}
339  Float_t GetAttCoef() const {return fAttCoef;}
340  Float_t GetOxyCont() const {return fOxyCont;}
341  TGraphErrors * GetGainSlopesHV() const { return fGainSlopesHV;}
342  TGraphErrors * GetGainSlopesPT() const { return fGainSlopesPT;}
343  Float_t* GetComposition() {return fComposition;}
344  Float_t GetFpot()const {return fFpot;}
345  Float_t GetNprim() const {return fNprim;}
346  Float_t GetNtot() const {return fNtot;}
347  Float_t GetWmean()const {return fWmean;}
348  Float_t GetExp()const {return fExp;}
349  Float_t GetEend()const {return fEend;}
352  static Double_t BetheBlochAleph(Double_t bb, Int_t type=0);
353  //
354  //get Electronic parameters
355  //
356  Float_t GetPadCoupling() const {return fPadCoupling;}
357  Int_t GetZeroSup() const {return fZeroSup;}
358  Float_t GetNoise() const {return fNoise;}
359  Float_t GetChipGain() const {return fChipGain;}
360  Float_t GetChipNorm() const {return fChipNorm;}
361  Float_t GetTSample() const {return fTSample;}
362  Float_t GetZWidth() const {return fZWidth;}
363  Float_t GetTFWHM() const {return fTSigma*2.35;}
364  Float_t GetZSigma() const {return fTSigma*fDriftV;}
365  virtual Float_t GetZOffset() const {return 3*fTSigma*fDriftV;}
366  Int_t GetMaxTBin() const {return fMaxTBin;}
367  Int_t GetADCSat() const {return fADCSat;}
368  Float_t GetADCDynRange() const {return fADCDynRange;}
369  Float_t GetTotalNormFac() const {return fTotalNormFac;}
370  Float_t GetNoiseNormFac() const {return fNoiseNormFac;}
371  //
372  // High voltage parameters
373  //
374  Float_t GetNominalVoltage(UInt_t i) const {return (i<72)?fNominalVoltage[i]:0;} //0-35:IROC, 36-71:OROC
375  Float_t GetMaxVoltageDeviation() const { return fMaxVoltageDeviation; }
376  Float_t GetMaxDipVoltage() const { return fMaxDipVoltage; }
377  Float_t GetMaxFractionHVbad() const { return fMaxHVfractionBad; }
378  Float_t GetVoltageDipScanPeriod() const { return fVoltageDipScanPeriod; }
379 
380  //
381  // get response data
382  //
383  Int_t * GetResBin(Int_t i);
384  //return response bin i - bin given by padrow [0] pad[1] timebin[2]
385  Float_t & GetResWeight(Int_t i);
386  //return weight of response bin i
387 
388  // get L1 data
389  Float_t GetGateDelay() const {return fGateDelay;}
390  Float_t GetL1Delay() const {return fL1Delay;}
391  UShort_t GetNTBinsBeforeL1() const {return fNTBinsBeforeL1;}
392  Float_t GetNTBinsL1() const {return fNTBinsL1;}
393 protected :
394 
395  Bool_t fbStatus;
396  //---------------------------------------------------------------------
397  // ALICE TPC sector geometry
398  //--------------------------------------------------------------------
399  Float_t fInnerRadiusLow;
400  Float_t fInnerRadiusUp;
401  Float_t fOuterRadiusUp;
402  Float_t fOuterRadiusLow;
403  Float_t fInnerAngle;
405  Float_t fOuterAngle;
409  Float_t fInnerWireMount;
410  Float_t fOuterWireMount;
413  Int_t fNSector;
414  Float_t fZLength;
415  Float_t *fRotAngle; //[fNSector]
418  // Float_t *fChamberPos; //[fNSector] displacements of the readout chambers
419  //with respect to the 'idead' geometry
420  //in local corrdinate system
421  // Float_t *fChamberRot; //[fNSector] rotation angles of the readout chambers
422  //with respect to the 'idead' geometry
423  //in local corrdinate system
425  TGeoHMatrix **fTrackingMatrix;
426  TGeoHMatrix **fClusterMatrix;
428  TGeoHMatrix **fGlobalMatrix;
430 
431  //1-cylindrical
432  //---------------------------------------------------------------------
433  // ALICE TPC wires geometry - for GEM we can consider that it is gating
434  //--------------------------------------------------------------------
436  Float_t fInnerWWPitch;
438  Float_t fInnerOffWire;
440  Float_t fRInnerLastWire;
441  Float_t fLastWireUp1;
444  Float_t fOuterWWPitch;
446  Float_t fOuterOffWire;
448  Float_t fROuterLastWire;
449  //---------------------------------------------------------------------
450  // ALICE TPC pad parameters
451  //--------------------------------------------------------------------
454  Float_t fInnerPadLength;
455  Float_t fInnerPadWidth;
461  Float_t fOuterPadWidth;
462  Bool_t fBMWPCReadout;
463  Int_t fNCrossRows;
464 
465  Int_t fNRowLow;
466  Int_t fNRowUp1;
467  Int_t fNRowUp2;
468  Int_t fNRowUp;
469  Int_t fNtRows;
470  Float_t fPadRowLow[600];
471  Float_t fPadRowUp[600];
472  Int_t fNPadsLow[600];
473  Int_t fNPadsUp[600];
474  Float_t fYInner[600];
475  Float_t fYOuter[600];
476  //---------------------------------------------------------------------
477  // ALICE TPC Gas Parameters
478  //--------------------------------------------------------------------
479  Float_t fDiffT;
480  Float_t fDiffL;
481  Float_t fGasGain;
482  Float_t fDriftV;
483  Float_t fOmegaTau;
484  Float_t fAttCoef;
485  Float_t fOxyCont;
486  Float_t fFpot;
487  Float_t fNprim;
488  Float_t fNtot;
489  Float_t fWmean;
490  Float_t fExp;
491  Float_t fEend;
492  TVectorD* fBetheBloch;
493  TVectorD* fBetheBlochMC;
494  // gas mixture composition
495  Float_t fComposition[6];
496  TGraphErrors * fGainSlopesHV;
497  TGraphErrors * fGainSlopesPT;
498  //---------------------------------------------------------------------
499  // ALICE TPC Electronics Parameters
500  //--------------------------------------------------------------------
501  Float_t fPadCoupling;
502  //and total pads signal
503  Int_t fZeroSup;
504  Float_t fNoise;
505  Float_t fChipGain;
506  Float_t fChipNorm;
507  Float_t fTSample;
508  Float_t fZWidth;
509  Float_t fTSigma;
510  Int_t fMaxTBin;
511  Int_t fADCSat;
512  Float_t fADCDynRange;
513  Float_t fTotalNormFac;
514  Float_t fNoiseNormFac;
515  //---------------------------------------------------------------------
516  // High voltage parameters
517  //---------------------------------------------------------------------
518  Float_t fNominalVoltage[72];
520  Float_t fMaxDipVoltage;
523 
524  //---------------------------------------------------------------------
525  // ALICE TPC response data
526  //---------------------------------------------------------------------
529  Int_t fCurrentMax;
530  Int_t *fResponseBin;
531  Float_t *fResponseWeight;
532 
533  //---------------------------------------------------------------------
534  // ALICE TPC L1 Parameters
535  //--------------------------------------------------------------------
536  Float_t fGateDelay;
537  Float_t fL1Delay;
538  UShort_t fNTBinsBeforeL1;
539  Float_t fNTBinsL1;
540  protected:
541  static TObjArray *fBBParam;
542  private:
543  AliTPCParam(const AliTPCParam &);
544  AliTPCParam & operator=(const AliTPCParam &);
545 
546  void CleanGeoMatrices();
547 
549  ClassDef(AliTPCParam,10) //parameter object for set:TPC
551 };
552 
553 
554 inline Int_t * AliTPCParam::GetResBin(Int_t i)
555 {
557 
558  if (i<fCurrentMax) return &fResponseBin[i*3];
559  else return 0;
560 }
561 
562 inline Float_t &AliTPCParam::GetResWeight(Int_t i)
563 {
565 
566  if (i<fCurrentMax) return fResponseWeight[i];
567  else return fResponseWeight[i];
568 }
569 
570 
571 inline void AliTPCParam::AdjustCosSin(Int_t isec, Float_t &cos, Float_t &sin) const
572 {
574 
575  cos=fRotAngle[isec*4];
576  sin=fRotAngle[isec*4+1];
577 }
578 
579 inline Float_t AliTPCParam::GetAngle(Int_t isec) const
580 {
582 
583  return fRotAngle[isec*4+2];
584 }
585 
586 
587 inline void AliTPCParam::Transform1to2Ideal(Float_t *xyz, Int_t *index) const
588 {
593 
594  Float_t cos,sin;
595  AdjustCosSin(index[1],cos,sin);
596  Float_t x1=xyz[0]*cos + xyz[1]*sin;
597  Float_t y1=-xyz[0]*sin + xyz[1]*cos;
598  xyz[0]=x1;
599  xyz[1]=y1;
600  xyz[2]=fZLength-TMath::Abs(xyz[2]);
601  index[0]=2;
602 }
603 
604 
605 inline void AliTPCParam::Transform1to2(Float_t *xyz, Int_t *index) const
606 {
610 
611  Double_t xyzmaster[3] = {xyz[0],xyz[1],xyz[2]};
612  Double_t xyzlocal[3]={0,0,0};
613  if (index[1]>=0 && index[1]<fNSector)
614  fGlobalMatrix[index[1]]->MasterToLocal(xyzmaster,xyzlocal);
615  xyz[0] = xyzlocal[0];
616  xyz[1] = xyzlocal[1];
617  xyz[2] = xyzlocal[2];
618  index[0]=2;
619 }
620 
621 
622 
623 
624 inline void AliTPCParam::Transform2to1(Float_t *xyz, Int_t *index) const
625 {
627 
628  Float_t cos,sin;
629  AdjustCosSin(index[1],cos,sin);
630  Float_t x1=xyz[0]*cos - xyz[1]*sin;
631  Float_t y1=xyz[0]*sin + xyz[1]*cos;
632  xyz[0]=x1;
633  xyz[1]=y1;
634  xyz[2]=fZLength-xyz[2];
635  if (index[1]<fNInnerSector)
636  {if ( index[1]>=(fNInnerSector>>1)) xyz[2]*=-1.;}
637  else
638  {if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[2]*=-1;}
639  index[0]=1;
640 }
641 
642 inline void AliTPCParam::Transform2to2(Float_t *xyz, Int_t *index, Int_t *oindex) const
643 {
646 
647  Transform2to1(xyz,index);
648  Transform1to2(xyz,oindex);
649  index[0]=2;
650  index[1]=oindex[1];
651 }
652 
653 inline Float_t AliTPCParam::Transform2to2NearestWire(Float_t *xyz, Int_t *index) const
654 {
657 
658  Float_t xnew,dx;
659  if (index[1]<fNInnerSector) {
660  xnew = fRInnerFirstWire+TMath::Nint((xyz[0]-fRInnerFirstWire)/fInnerWWPitch)*fInnerWWPitch;
661  }
662  else {
663  xnew = fROuterFirstWire+TMath::Nint((xyz[0]-fROuterFirstWire)/fOuterWWPitch)*fOuterWWPitch;
664  }
665  dx = xnew-xyz[0];
666  xyz[0]=xnew;
667  return dx;
668 }
669 
670 inline Int_t AliTPCParam::Transform2to3(Float_t *xyz, Int_t *index) const
671 {
675 
676  if (index[1]<fNInnerSector)
677  index[2] =TMath::Nint((xyz[0]-fPadRowLow[0])/fInnerPadPitchLength);
678  else
679  if (xyz[0] < fLastWireUp1 )
680  index[2] = TMath::Nint((xyz[0]-fPadRowUp[0])/fOuter1PadPitchLength);
681  else
682  index[2] = TMath::Nint(fNRowUp1+(xyz[0]-fPadRowUp[64])/fOuter2PadPitchLength);
683  index[0]=3;
684  return index[2];
685 }
686 
687 inline void AliTPCParam::Transform3to4(Float_t *xyz, Int_t *index) const
688 {
691 
692  if (index[1]<fNInnerSector)
693  xyz[0] -=index[2]*fInnerPadPitchLength+fPadRowLow[0];
694  else
695  if (index[2]<fNRowUp1)
696  xyz[0] -=index[2]*fOuter1PadPitchLength+fPadRowUp[0];
697  else
698  xyz[0] -=(index[2]-fNRowUp1)*fOuter2PadPitchLength+fPadRowUp[64];
699  index[0] =4;
700 }
701 
702 inline void AliTPCParam::Transform4to3(Float_t *xyz, Int_t *index) const
703 {
706 
707  if (index[1]<fNInnerSector)
708  xyz[0] +=index[2]*fInnerPadPitchLength+fPadRowLow[0];
709  else
710  if(index[2]<fNRowUp1)
711  xyz[0] +=index[2]*fOuter1PadPitchLength+fPadRowUp[0];
712  else
713  xyz[0] +=index[2]*fOuter2PadPitchLength+fPadRowUp[64];
714  index[0] =3;
715 }
716 
717 
718 inline void AliTPCParam::Transform2to5( Float_t *xyz, Int_t *index) const
719 {
721 
722  Float_t angle;
723  Float_t r = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
724  if ((xyz[0]==0)&&(xyz[1]==0)) angle = 0;
725  else
726  {
727  angle =TMath::ASin(xyz[1]/r);
728  if (xyz[0]<0) angle=TMath::Pi()-angle;
729  if ( (xyz[0]>0) && (xyz[1]<0) ) angle=2*TMath::Pi()+angle;
730  }
731  xyz[0]=r;
732  xyz[1]=angle;
733  index[0]=5;
734 }
735 
736 inline void AliTPCParam::Transform5to2( Float_t *xyz, Int_t *index) const
737 {
739 
740  Float_t r = xyz[0];
741  Float_t angle= xyz[1];
742  xyz[0]=r*TMath::Cos(angle);
743  xyz[1]=r*TMath::Sin(angle);
744  index[0]=2;
745 }
746 
747 inline void AliTPCParam::Transform4to8(Float_t *xyz, Int_t *index) const
748 {
750 
751  if (index[1]<fNInnerSector) {
752  if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
753  }
754  else {
755  if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
756  }
757 
758  xyz[2]/=fZWidth;
759  if (index[1]<fNInnerSector) {
760  xyz[0]/=fInnerPadPitchLength;
761  xyz[1]/=fInnerPadPitchWidth;
762  }
763  else{
764  xyz[1]/=fOuterPadPitchWidth;
765  if (index[2]<fNRowUp1 ) xyz[0]/=fOuter1PadPitchLength;
766  else xyz[0]/=fOuter2PadPitchLength;
767  }
768  xyz[1]-=0.5;
769  index[0]=8;
770 }
771 
772 inline void AliTPCParam::Transform8to4(Float_t *xyz, Int_t *index) const
773 {
775 
776  if (index[1]<fNInnerSector) {
777  if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
778  }
779  else {
780  if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
781  }
782 
783  xyz[2]*=fZWidth;
784  if (index[1]<fNInnerSector) {
785  xyz[0]*=fInnerPadPitchLength;
786  xyz[1]*=fInnerPadPitchWidth;
787  }
788  else{
789  xyz[1]*=fOuterPadPitchWidth;
790  if (index[2] < fNRowUp1 ) xyz[0]*=fOuter1PadPitchLength;
791  else xyz[0]*=fOuter2PadPitchLength;
792  }
793  index[0]=4;
794 }
795 
796 inline void AliTPCParam::Transform6to8(Float_t *xyz, Int_t *index) const
797 {
799 
800  xyz[2]/=fZWidth;
801  if (index[1]<fNInnerSector) {
802  xyz[0]/=fInnerPadPitchLength;
803  xyz[1]*=xyz[0]/fInnerPadPitchWidth;
804  }
805  else{
806  xyz[1]*=xyz[0]/fOuterPadPitchWidth;
807  if (index[2] < fNRowUp1 ) xyz[0]/=fOuter1PadPitchLength;
808  else xyz[0]/=fOuter2PadPitchLength;
809  }
810  index[0]=8;
811 }
812 
813 inline void AliTPCParam::Transform8to6(Float_t *xyz, Int_t *index) const
814 {
816 
817  xyz[2]*=fZWidth;
818  if (index[1]<fNInnerSector) {
819  xyz[0]*=fInnerPadPitchLength;
820  xyz[1]/=xyz[0]/fInnerPadPitchWidth;
821  }
822  else{
823  xyz[1]/=xyz[0]/fOuterPadPitchWidth;
824  if (index[2] < fNRowUp1 ) xyz[0]*=fOuter1PadPitchLength;
825  else xyz[0]*=fOuter2PadPitchLength;
826  }
827  index[0]=6;
828 }
829 inline Float_t AliTPCParam::GetZLength(Int_t sector) const
830 { if(sector <18 || (sector>35&&sector<54)) return fZLength-0.275;
831  else return fZLength-0.302;
832 }
833 #endif
Float_t fInnerWireMount
space for wire mount, inner sector
Definition: AliTPCParam.h:409
Int_t * fResponseBin
! array with bins -calulated
Definition: AliTPCParam.h:530
Float_t fOuter1PadLength
Outer pad length.
Definition: AliTPCParam.h:459
TGraphErrors * fGainSlopesHV
graph with the gain slope as function of HV - per chamber
Definition: AliTPCParam.h:496
Float_t GetPadPitchLength(Int_t isector=0, Int_t padrow=0) const
Definition: AliTPCParam.h:299
Int_t fNOuter1WiresPerPad
Number of wires per pad.
Definition: AliTPCParam.h:442
Float_t GetOuter2PadPitchLength() const
Definition: AliTPCParam.h:290
virtual Int_t CalcResponse(Float_t *, Int_t *, Int_t)
Definition: AliTPCParam.h:96
Float_t fInnerWWPitch
pitch between wires in inner sector - calculated
Definition: AliTPCParam.h:436
Float_t fTSample
sampling time
Definition: AliTPCParam.h:507
Float_t GetEend() const
Definition: AliTPCParam.h:349
Float_t fLastWireUp1
position of the last wire in outer1 sector
Definition: AliTPCParam.h:441
Int_t GetZeroSup() const
Definition: AliTPCParam.h:357
Float_t GetChipNorm() const
Definition: AliTPCParam.h:360
Float_t & GetResWeight(Int_t i)
Definition: AliTPCParam.h:562
static Double_t BetheBlochAleph(Double_t bb, Int_t type=0)
Float_t fPadCoupling
coupling factor ration of anode signal
Definition: AliTPCParam.h:501
Int_t Transform0to1(Float_t *xyz, Int_t *index) const
void SetOuterFrameSpace(Float_t frspace)
Definition: AliTPCParam.h:129
Float_t fInnerPadPitchWidth
Inner pad pitch width.
Definition: AliTPCParam.h:453
Float_t GetMaxDipVoltage() const
Definition: AliTPCParam.h:376
Float_t fNoise
noise sigma constant
Definition: AliTPCParam.h:504
Float_t GetYInner(Int_t irow) const
Float_t GetOuterWireMount() const
Definition: AliTPCParam.h:252
Float_t GetZSigma() const
Definition: AliTPCParam.h:364
void SetDiffT(Float_t DiffT)
Definition: AliTPCParam.h:176
Int_t GetNRowsTotal() const
Definition: AliTPCParam.h:307
Float_t fNtot
total number of electrons/c (MIP)
Definition: AliTPCParam.h:488
void SetInnerRadiusLow(Float_t InnerRadiusLow)
Definition: AliTPCParam.h:122
Float_t GetOuter1PadLength() const
Definition: AliTPCParam.h:292
void SetNominalVoltage(Float_t v, UInt_t i)
Definition: AliTPCParam.h:228
void SetNominalGainSlopes()
Float_t GetDiffL() const
Definition: AliTPCParam.h:335
Int_t GetNSector() const
Definition: AliTPCParam.h:259
Float_t fOuterWWPitch
pitch between wires in outer sector -calculated
Definition: AliTPCParam.h:444
void SetNResponseMax(Int_t max)
Definition: AliTPCParam.h:236
Float_t GetOuterPadWidth() const
Definition: AliTPCParam.h:294
Float_t fOuterAngleShift
shift of first sector center to the 0
Definition: AliTPCParam.h:406
Float_t GetOuterRadiusLow() const
Definition: AliTPCParam.h:247
void SetOuterWWPitch(Float_t wwPitch)
Definition: AliTPCParam.h:154
void SetVoltageDipScanPeriod(Float_t period)
Definition: AliTPCParam.h:232
Float_t GetGateDelay() const
Definition: AliTPCParam.h:389
Float_t GetOuter2PadLength() const
Definition: AliTPCParam.h:293
TGeoHMatrix * GetClusterMatrix(Int_t isec) const
Definition: AliTPCParam.h:326
Int_t GetNPadsPerSegment(Int_t segmentID) const
void SetOuter1NWires(Int_t nWires)
Definition: AliTPCParam.h:147
Float_t fADCDynRange
input dynamic range (mV)
Definition: AliTPCParam.h:512
void SetPadCoupling(Float_t PadCoupling)
Definition: AliTPCParam.h:215
void SetAttCoef(Float_t AttCoef)
Definition: AliTPCParam.h:181
Float_t GetRInnerFirstWire() const
Definition: AliTPCParam.h:270
void SetDiffL(Float_t DiffL)
Definition: AliTPCParam.h:177
Int_t GetNSegmentsTotal() const
Definition: AliTPCParam.h:106
Float_t fPadRowLow[600]
Lower sector, pad row radii -calculated.
Definition: AliTPCParam.h:470
void SetInnerPadPitchWidth(Float_t PadPitchWidth)
Definition: AliTPCParam.h:162
TGeoHMatrix * GetTrackingMatrix(Int_t isec) const
Definition: AliTPCParam.h:324
Float_t fOxyCont
oxygen content
Definition: AliTPCParam.h:485
#define TObjArray
Float_t GetNoise() const
Definition: AliTPCParam.h:358
Float_t GetROuterLastWire() const
Definition: AliTPCParam.h:279
void Transform2to5(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:718
void Transform1to2Ideal(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:587
Float_t fNTBinsL1
Overall L1 delay in time bins.
Definition: AliTPCParam.h:539
virtual Int_t Transform2toPadRow(Float_t *, Int_t *) const
Definition: AliTPCParam.h:69
Float_t fGateDelay
Delay of L1 arrival for the TPC gate signal.
Definition: AliTPCParam.h:536
Manager class for detector parameters.
Int_t GetInnerDummyWire() const
Definition: AliTPCParam.h:268
Bool_t fbStatus
indicates consistency of the data
Definition: AliTPCParam.h:395
Int_t * GetResBin(Int_t i)
Definition: AliTPCParam.h:554
void SetRInnerFirstWire(Float_t firstWire)
Definition: AliTPCParam.h:152
void SetBetheBloch(TVectorD *v)
Definition: AliTPCParam.h:198
Float_t GetTFWHM() const
Definition: AliTPCParam.h:363
Float_t * fRotAngle
sin and cos of rotation angles for different sectors - calculated
Definition: AliTPCParam.h:416
void SetRowNUp2(Int_t NRowUp2)
Definition: AliTPCParam.h:139
void SetGasGain(Float_t GasGain)
Definition: AliTPCParam.h:178
Float_t GetLastWireUp1() const
Definition: AliTPCParam.h:277
Manager and of geomety classes for set: TPC.
Definition: AliTPCParam.h:18
Float_t GetDriftV() const
Definition: AliTPCParam.h:337
Float_t GetMaxFractionHVbad() const
Definition: AliTPCParam.h:377
Bool_t GetMWPCReadout() const
Definition: AliTPCParam.h:295
void SetChipNorm(Float_t ChipNorm)
Definition: AliTPCParam.h:219
void SetRInnerLastWire(Float_t lastWire)
Definition: AliTPCParam.h:153
Float_t GetMaxVoltageDeviation() const
Definition: AliTPCParam.h:375
Float_t GetOuterRadiusUp() const
Definition: AliTPCParam.h:248
Float_t GetROuterFirstWire() const
Definition: AliTPCParam.h:278
Float_t fExp
de = f(E) - energy loss parametrization
Definition: AliTPCParam.h:490
Float_t fROuterFirstWire
position of the first wire -calulated
Definition: AliTPCParam.h:447
void SetGateDelay(Float_t delay)
Definition: AliTPCParam.h:239
static TVectorD * GetBetheBlochParamAlice()
virtual Bool_t Transform(Float_t *xyz, Int_t *index, Int_t *oindex)
Int_t GetInnerNWires() const
Definition: AliTPCParam.h:266
Float_t fOuterFrameSpace
space for outer frame in the phi direction
Definition: AliTPCParam.h:408
virtual Int_t GetPadRow(Float_t *xyz, Int_t *index) const
void Transform4to3(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:702
Float_t fRInnerLastWire
position of the last wire -calculated
Definition: AliTPCParam.h:440
void SetOuterWireMount(Float_t fmount)
Definition: AliTPCParam.h:131
void SetMWPCReadout(Bool_t type)
Definition: AliTPCParam.h:171
void SetNoise(Float_t Noise)
Definition: AliTPCParam.h:217
static TVectorD * GetBetheBlochParamNa49()
void SetTFWHM(Float_t fwhm)
Definition: AliTPCParam.h:221
Float_t fDriftV
drift velocity constant
Definition: AliTPCParam.h:482
virtual Bool_t ReadGeoMatrices()
Float_t fFpot
first ionisation potential
Definition: AliTPCParam.h:486
Float_t fNprim
number of primary electrons/cm
Definition: AliTPCParam.h:487
Float_t fMaxDipVoltage
maximum voltage deviation from median before a dip event is marked
Definition: AliTPCParam.h:520
Int_t fGeometryType
type of geometry -0 straight rows
Definition: AliTPCParam.h:417
Float_t GetPadRowRadiiLow(Int_t irow) const
Float_t fInnerRadiusUp
upper radius of inner sector-IP
Definition: AliTPCParam.h:400
void SetL1Delay(Float_t delay)
Definition: AliTPCParam.h:240
Int_t fNInnerWiresPerPad
[fNSector]
Definition: AliTPCParam.h:435
Float_t fDiffL
longutudinal diffusion constant
Definition: AliTPCParam.h:480
Float_t fAttCoef
attachment coefitients
Definition: AliTPCParam.h:484
void SetZeroSup(Int_t ZeroSup)
Definition: AliTPCParam.h:216
void SetOxyCont(Float_t OxyCont)
Definition: AliTPCParam.h:182
Float_t GetOmegaTau() const
Definition: AliTPCParam.h:338
Float_t GetGasGain() const
Definition: AliTPCParam.h:336
void SetGainSlopesPT(TGraphErrors *gainSlopesPT)
Definition: AliTPCParam.h:184
Float_t GetPadPitchWidth(Int_t isector=0) const
Definition: AliTPCParam.h:297
Float_t Transform2to2NearestWire(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:653
Float_t GetPadCoupling() const
Definition: AliTPCParam.h:356
Float_t fEend
upper cutoff for de generation
Definition: AliTPCParam.h:491
void SetInnerPadPitchLength(Float_t PadPitchLength)
Definition: AliTPCParam.h:161
void SetInnerFrameSpace(Float_t frspace)
Definition: AliTPCParam.h:128
Float_t GetInnerPadLength() const
Definition: AliTPCParam.h:287
Float_t fOuter2PadLength
Outer pad length.
Definition: AliTPCParam.h:460
static TObjArray * fBBParam
array of the Bethe-Bloch parameters.
Definition: AliTPCParam.h:541
Float_t GetInnerPadPitchLength() const
Definition: AliTPCParam.h:285
Int_t fInnerDummyWire
number of wires without pad readout
Definition: AliTPCParam.h:437
Float_t fOuterRadiusLow
lower radius of outer sector-IP
Definition: AliTPCParam.h:402
Float_t fInnerPadPitchLength
Inner pad pitch length.
Definition: AliTPCParam.h:452
void SetOuterOffWire(Float_t offset)
Definition: AliTPCParam.h:150
void SetOuter1PadPitchLength(Float_t PadPitchLength)
Definition: AliTPCParam.h:165
static void RegisterBBParam(TVectorD *param, Int_t position)
Float_t fNominalVoltage[72]
nominal voltage in [V] per chamber
Definition: AliTPCParam.h:518
Float_t GetL1Delay() const
Definition: AliTPCParam.h:390
void Transform2to2(Float_t *xyz, Int_t *index, Int_t *oindex) const
Definition: AliTPCParam.h:642
Float_t fROuterLastWire
position of the last wire -calculated
Definition: AliTPCParam.h:448
TGraphErrors * fGainSlopesPT
graph with the gain slope as function of P/T - per chamber
Definition: AliTPCParam.h:497
void Transform4to8(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:747
void SetMaxTBin(Int_t maxtbin)
Definition: AliTPCParam.h:222
Int_t Transform2to3(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:670
Int_t fNInnerSector
number of inner sectors -calculated
Definition: AliTPCParam.h:411
Float_t GetTotalNormFac() const
Definition: AliTPCParam.h:369
Float_t GetNoiseNormFac() const
Definition: AliTPCParam.h:370
void SetMaxFractionHVbad(Float_t frac)
Definition: AliTPCParam.h:231
Float_t GetFpot() const
Definition: AliTPCParam.h:344
void SetInnerPadWidth(Float_t PadWidth)
Definition: AliTPCParam.h:164
TGeoHMatrix * Tracking2LocalMatrix(const TGeoHMatrix *geoMatrix, Int_t sector) const
static TVectorD * GetBetheBlochParamAliceMC()
void SetChipGain(Float_t ChipGain)
Definition: AliTPCParam.h:218
void SetMaxVoltageDeviation(Float_t voltage)
Definition: AliTPCParam.h:229
void SetSectorAngles(Float_t innerangle, Float_t innershift, Float_t outerangle, Float_t outershift)
Float_t fPadRowUp[600]
Upper sector, pad row radii -calculated.
Definition: AliTPCParam.h:471
Float_t fOuterWireMount
space for wire mount, outer sector
Definition: AliTPCParam.h:410
void SetNTBinsBeforeL1(UShort_t nbins)
Definition: AliTPCParam.h:241
Int_t GetNPadsLow(Int_t irow) const
void SetOuterRadiusLow(Float_t OuterRadiusLow)
Definition: AliTPCParam.h:123
Float_t fYInner[600]
Inner sector, wire-length.
Definition: AliTPCParam.h:474
void Transform5to2(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:736
Float_t GetNprim() const
Definition: AliTPCParam.h:345
TVectorD * fBetheBloch
Bethe-Bloch parametrization.
Definition: AliTPCParam.h:492
Float_t GetOuterWWPitch() const
Definition: AliTPCParam.h:274
TVectorD * fBetheBlochMC
Bethe-Bloch parametrization.
Definition: AliTPCParam.h:493
void SetInnerDummyWire(Int_t dummy)
Definition: AliTPCParam.h:145
void Transform6to8(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:796
Int_t GetNCrossRows() const
Definition: AliTPCParam.h:296
UShort_t fNTBinsBeforeL1
Number of time bins before L1 arrival which are being read out.
Definition: AliTPCParam.h:538
Float_t GetADCDynRange() const
Definition: AliTPCParam.h:368
Int_t fNRowUp
number of pad rows per sector up -calculated
Definition: AliTPCParam.h:468
Float_t GetOuterAngle() const
virtual Float_t GetZOffset() const
Definition: AliTPCParam.h:365
Float_t GetYOuter(Int_t irow) const
Int_t GetOuter1NWires() const
Definition: AliTPCParam.h:272
Int_t GetSectorIndex(Float_t angle, Int_t row, Float_t z) const
virtual void CRXYZtoXYZ(Float_t *, const Int_t &, const Int_t &, Int_t) const
Definition: AliTPCParam.h:83
Float_t fNoiseNormFac
normalisation factor to transform noise in electron to ADC channel
Definition: AliTPCParam.h:514
Float_t fOuterAngle
opening angle of outer sector
Definition: AliTPCParam.h:405
Float_t GetInnerRadiusLow() const
Definition: AliTPCParam.h:245
Float_t fChipGain
preamp shaper constant
Definition: AliTPCParam.h:505
TGeoHMatrix ** fClusterMatrix
transformation matrices of the cluster coordinate system
Definition: AliTPCParam.h:427
Float_t fMaxHVfractionBad
maximum fraction of bad HV entries (deviation from Median) before a chamber is marked bad ...
Definition: AliTPCParam.h:521
Float_t GetZWidth() const
Definition: AliTPCParam.h:362
Float_t fResponseThreshold
threshold for accepted response
Definition: AliTPCParam.h:528
void SetLastWireUp1(Float_t wireUp1)
Definition: AliTPCParam.h:155
Int_t fNSector
total number of sectors -calculated
Definition: AliTPCParam.h:413
Float_t GetOuterOffWire() const
Definition: AliTPCParam.h:276
void SetOuter1PadLength(Float_t PadLength)
Definition: AliTPCParam.h:168
Int_t GetNRowUp2() const
Float_t GetInnerAngle() const
Float_t fWmean
mean energy for electron/ion pair
Definition: AliTPCParam.h:489
Int_t fNResponseMax
maximal dimension of response
Definition: AliTPCParam.h:527
Float_t GetAngle(Int_t isec) const
Definition: AliTPCParam.h:579
Float_t * fResponseWeight
! array with response -calulated
Definition: AliTPCParam.h:531
Int_t fNPadsLow[600]
Lower sector, number of pads per row -calculated.
Definition: AliTPCParam.h:472
Float_t fInnerFrameSpace
space for inner frame in the phi direction
Definition: AliTPCParam.h:407
Float_t fChipNorm
preamp shaper normalisation
Definition: AliTPCParam.h:506
void SetOuter2PadLength(Float_t PadLength)
Definition: AliTPCParam.h:169
Float_t GetTSample() const
Definition: AliTPCParam.h:361
Double_t GetLowMaxY(Int_t irow) const
Definition: AliTPCParam.h:107
Int_t GetNRowUp() const
Int_t fOuterDummyWire
number of wires without pad readout
Definition: AliTPCParam.h:445
Bool_t GetStatus() const
Float_t fInnerOffWire
oofset of first wire to the begining of the sector
Definition: AliTPCParam.h:438
void SetNprim(Float_t prim)
Definition: AliTPCParam.h:193
Int_t fNPadsUp[600]
Upper sector, number of pads per row -calculated.
Definition: AliTPCParam.h:473
void SetGainSlopesHV(TGraphErrors *gainSlopesHV)
Definition: AliTPCParam.h:183
void SetInnerWWPitch(Float_t wwPitch)
Definition: AliTPCParam.h:151
void SetOuterDummyWire(Int_t dummy)
Definition: AliTPCParam.h:149
Float_t fDiffT
tangencial diffusion constant
Definition: AliTPCParam.h:479
void SetInnerPadLength(Float_t PadLength)
Definition: AliTPCParam.h:163
virtual void SetDefault()
Float_t fOuterPadWidth
Outer pad width.
Definition: AliTPCParam.h:461
TGeoHMatrix ** fGlobalMatrix
fTrackingMatrix * fClusterMatrix
Definition: AliTPCParam.h:429
Int_t fNOuter2WiresPerPad
Number of wires per pad.
Definition: AliTPCParam.h:443
void SetOuterRadiusUp(Float_t OuterRadiusUp)
Definition: AliTPCParam.h:125
Float_t GetOuterAngleShift() const
virtual void CRYZtoTimePad(const Float_t &, const Float_t &, Float_t &, Float_t &, Int_t, Int_t)
Definition: AliTPCParam.h:92
Float_t fInnerAngle
opening angle of Inner sector
Definition: AliTPCParam.h:403
Int_t GetADCSat() const
Definition: AliTPCParam.h:367
void SetInnerNWires(Int_t nWires)
Definition: AliTPCParam.h:144
Float_t fOuterOffWire
oofset of first wire to the begining of the sector
Definition: AliTPCParam.h:446
void SetRowNLow(Int_t NRowLow)
Definition: AliTPCParam.h:137
void SetTSample(Float_t TSample)
Definition: AliTPCParam.h:220
Float_t GetDiffT() const
Definition: AliTPCParam.h:334
Float_t fL1Delay
Delay of L1 arrival for the TPC readout.
Definition: AliTPCParam.h:537
Float_t fOmegaTau
omega tau ExB coeficient
Definition: AliTPCParam.h:483
Int_t fCurrentMax
! current maximal dimension -calulated
Definition: AliTPCParam.h:529
Int_t fADCSat
saturation value of ADC (10 bits)
Definition: AliTPCParam.h:511
virtual Bool_t Update()
Float_t fMaxVoltageDeviation
maximum voltage deviation from nominal voltage before a chamber is masked
Definition: AliTPCParam.h:519
void SetDriftV(Float_t DriftV)
Definition: AliTPCParam.h:179
void SetRowNUp(Int_t NRowUp)
Definition: AliTPCParam.h:140
Float_t GetNominalVoltage(UInt_t i) const
Definition: AliTPCParam.h:374
void SetResponseThreshold(Int_t threshold)
Definition: AliTPCParam.h:237
void CleanGeoMatrices()
Bool_t AdjustSectorRow(Int_t index, Int_t &sector, Int_t &row) const
Float_t fInnerAngleShift
shift of first inner sector center to the 0
Definition: AliTPCParam.h:404
TGraphErrors * GetGainSlopesPT() const
Definition: AliTPCParam.h:342
Int_t GetIndex(Int_t sector, Int_t row) const
TVectorD * GetBetheBlochParameters()
Definition: AliTPCParam.h:350
Float_t fTotalNormFac
full normalisation factor - calculated
Definition: AliTPCParam.h:513
Int_t GetNRow(Int_t isec) const
Definition: AliTPCParam.h:306
void SetExp(Float_t exp)
Definition: AliTPCParam.h:196
void SetROuterLastWire(Float_t lastWire)
Definition: AliTPCParam.h:157
Float_t fInnerPadLength
Inner pad length.
Definition: AliTPCParam.h:454
void Transform8to4(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:772
void SetZLength(Float_t zlength)
Definition: AliTPCParam.h:132
Float_t fYOuter[600]
Outer sector, wire-length.
Definition: AliTPCParam.h:475
TGraphErrors * GetGainSlopesHV() const
Definition: AliTPCParam.h:341
Int_t GetWireSegment(Int_t sector, Int_t row) const
TGeoHMatrix ** fTrackingMatrix
transformation matrices of the tracking coordinate system
Definition: AliTPCParam.h:425
Float_t GetPadRowRadiiUp(Int_t irow) const
Float_t GetVoltageDipScanPeriod() const
Definition: AliTPCParam.h:378
TGeoHMatrix * GetGlobalMatrix(Int_t isec) const
Definition: AliTPCParam.h:328
Float_t fZWidth
derived value calculated using TSample and driftw -computed
Definition: AliTPCParam.h:508
Float_t GetWmean() const
Definition: AliTPCParam.h:347
void SetOmegaTau(Float_t OmegaTau)
Definition: AliTPCParam.h:180
Int_t GetGeometryType() const
Definition: AliTPCParam.h:261
Float_t GetInnerFrameSpace() const
Definition: AliTPCParam.h:249
Float_t GetWWPitch(Int_t isector=0) const
Definition: AliTPCParam.h:280
void AdjustCosSin(Int_t isec, Float_t &cos, Float_t &sin) const
Definition: AliTPCParam.h:571
Float_t GetOxyCont() const
Definition: AliTPCParam.h:340
Float_t GetChipGain() const
Definition: AliTPCParam.h:359
void SetGeometryType(Int_t type)
Definition: AliTPCParam.h:133
Float_t fOuterPadPitchWidth
Outer pad pitch width.
Definition: AliTPCParam.h:458
Int_t GetNPads(Int_t isector, Int_t irow) const
Definition: AliTPCParam.h:315
virtual void CRTimePadtoYZ(Float_t &, Float_t &, const Float_t &, const Float_t &, Int_t, Int_t)
Definition: AliTPCParam.h:87
Int_t GetOuter2NWires() const
Definition: AliTPCParam.h:273
Bool_t IsGeoRead()
Definition: AliTPCParam.h:330
Float_t GetInnerAngleShift() const
Float_t GetInnerOffWire() const
Definition: AliTPCParam.h:269
Int_t GetNPadsUp(Int_t irow) const
UShort_t GetNTBinsBeforeL1() const
Definition: AliTPCParam.h:391
Int_t GetNOuterSector() const
Definition: AliTPCParam.h:258
Float_t fOuter1PadPitchLength
Outer pad pitch length.
Definition: AliTPCParam.h:456
void SetOuterPadPitchWidth(Float_t PadPitchWidth)
Definition: AliTPCParam.h:167
Int_t fMaxTBin
maximum time bin number
Definition: AliTPCParam.h:510
void SetNCrossRows(Int_t rows)
Definition: AliTPCParam.h:172
Float_t GetOuterFrameSpace() const
Definition: AliTPCParam.h:250
Int_t fNOuterSector
number of outer sectors -calculated
Definition: AliTPCParam.h:412
void SetRowNUp1(Int_t NRowUp1)
Definition: AliTPCParam.h:138
void SetBetheBlochMC(TVectorD *v)
Definition: AliTPCParam.h:203
void SetADCDynRange(Float_t adcdynrange)
Definition: AliTPCParam.h:224
Float_t fRInnerFirstWire
position of the first wire -calculated
Definition: AliTPCParam.h:439
void Transform2to1(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:624
Float_t fInnerPadWidth
Inner pad width.
Definition: AliTPCParam.h:455
Float_t GetInnerWireMount() const
Definition: AliTPCParam.h:251
Float_t GetInnerRadiusUp() const
Definition: AliTPCParam.h:246
Int_t fNRowLow
number of pad rows per low sector -set
Definition: AliTPCParam.h:465
virtual ~AliTPCParam()
void SetInnerWireMount(Float_t fmount)
Definition: AliTPCParam.h:130
Double_t GetUpMaxY(Int_t irow) const
Definition: AliTPCParam.h:108
Float_t GetOuterPadPitchWidth() const
Definition: AliTPCParam.h:291
void SetOuter2NWire(Int_t nWires)
Definition: AliTPCParam.h:148
Float_t fInnerRadiusLow
lower radius of inner sector-IP
Definition: AliTPCParam.h:399
void SetOuterPadWidth(Float_t PadWidth)
Definition: AliTPCParam.h:170
Float_t GetNTBinsL1() const
Definition: AliTPCParam.h:392
Float_t GetZLength(Int_t sector=0) const
Definition: AliTPCParam.h:829
void SetADCSat(Int_t adcsat)
Definition: AliTPCParam.h:223
Float_t fZLength
Definition: AliTPCParam.h:414
void SetNtot(Float_t ntot)
Definition: AliTPCParam.h:194
void SetROuterFirstWire(Float_t firstWire)
Definition: AliTPCParam.h:156
Int_t fNRowUp1
number of short pad rows per sector up -set
Definition: AliTPCParam.h:466
Int_t GetOuterDummyWire() const
Definition: AliTPCParam.h:275
void Transform3to4(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:687
void SetEend(Float_t end)
Definition: AliTPCParam.h:197
Float_t fComposition[6]
Definition: AliTPCParam.h:495
Float_t fOuterRadiusUp
upper radius of outer sector-IP
Definition: AliTPCParam.h:401
Float_t GetPadRowRadii(Int_t isec, Int_t irow) const
Definition: AliTPCParam.h:310
Float_t GetInnerWWPitch() const
Definition: AliTPCParam.h:267
Float_t GetAttCoef() const
Definition: AliTPCParam.h:339
Float_t fGasGain
gas gain constant
Definition: AliTPCParam.h:481
void Transform8to6(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:813
Float_t GetNtot() const
Definition: AliTPCParam.h:346
Float_t GetExp() const
Definition: AliTPCParam.h:348
Float_t GetOuter1PadPitchLength() const
Definition: AliTPCParam.h:289
Float_t fOuter2PadPitchLength
Outer pad pitch length.
Definition: AliTPCParam.h:457
Int_t GetMaxTBin() const
Definition: AliTPCParam.h:366
void SetWmean(Float_t wmean)
Definition: AliTPCParam.h:195
Float_t fTSigma
width of the Preamp/Shaper function
Definition: AliTPCParam.h:509
void Transform1to2(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:605
Int_t fZeroSup
zero suppresion constant
Definition: AliTPCParam.h:503
virtual void XYZtoCRXYZ(Float_t *, Int_t &, Int_t &, Int_t) const
Definition: AliTPCParam.h:75
Float_t GetInnerPadPitchWidth() const
Definition: AliTPCParam.h:286
Bool_t fBMWPCReadout
indicate wire readout - kTRUE or GEM readout -kFALSE
Definition: AliTPCParam.h:462
void SetComposition(Float_t c1, Float_t c2, Float_t c3, Float_t c4, Float_t c5, Float_t c6)
Definition: AliTPCParam.h:186
TVectorD * GetBetheBlochParametersMC()
Definition: AliTPCParam.h:351
void SetInnerOffWire(Float_t offset)
Definition: AliTPCParam.h:146
Int_t fNRowUp2
number of long pad rows per sector up -set
Definition: AliTPCParam.h:467
Float_t fVoltageDipScanPeriod
scanning period to detect a high volrage dip: event time stamp +- fVoltageDipScanPeriod [sec] ...
Definition: AliTPCParam.h:522
Int_t GetNInnerSector() const
Definition: AliTPCParam.h:257
Float_t GetRInnerLastWire() const
Definition: AliTPCParam.h:271
Int_t GetNRowLow() const
void SetFpot(Float_t fpot)
Definition: AliTPCParam.h:192
Float_t * GetComposition()
Definition: AliTPCParam.h:343
Int_t fNCrossRows
number of rows to crostalk calculation
Definition: AliTPCParam.h:463
void SetOuter2PadPitchLength(Float_t PadPitchLength)
Definition: AliTPCParam.h:166
void SetMaxDipVoltage(Float_t voltage)
Definition: AliTPCParam.h:230
void SetInnerRadiusUp(Float_t InnerRadiusUp)
Definition: AliTPCParam.h:124
Int_t fNtRows
total number of rows in TPC -calculated
Definition: AliTPCParam.h:469
AliTPCParam & operator=(const AliTPCParam &)
Int_t GetNRowUp1() const
Float_t GetChamberCenter(Int_t isec, Float_t *center=0) const
Float_t GetInnerPadWidth() const
Definition: AliTPCParam.h:288