AliRoot Core  ee782a0 (ee782a0)
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 SetRegionGain(UInt_t region, Float_t gain) { fRegionGain[region%3] = gain; }
180  void SetDriftV(Float_t DriftV){ fDriftV= DriftV;}
181  void SetOmegaTau(Float_t OmegaTau){ fOmegaTau=OmegaTau;}
182  void SetAttCoef(Float_t AttCoef){ fAttCoef=AttCoef;}
183  void SetOxyCont(Float_t OxyCont){ fOxyCont=OxyCont;}
184  void SetGainSlopesHV(TGraphErrors * gainSlopesHV){ fGainSlopesHV=gainSlopesHV;}
185  void SetGainSlopesPT(TGraphErrors * gainSlopesPT){ fGainSlopesPT=gainSlopesPT;}
186  void SetNominalGainSlopes();
187  void SetComposition(Float_t c1, Float_t c2, Float_t c3, Float_t c4, Float_t c5, Float_t c6){fComposition[0]=c1;
188  fComposition[1]=c2;
189  fComposition[2]=c3;
190  fComposition[3]=c4;
191  fComposition[4]=c5;
192  fComposition[5]=c6;}
193  void SetFpot(Float_t fpot){fFpot=fpot;}
194  void SetNprim(Float_t prim){fNprim=prim;}
195  void SetNtot(Float_t ntot){fNtot=ntot;}
196  void SetWmean(Float_t wmean){fWmean=wmean;}
197  void SetExp(Float_t exp){fExp=exp;}
198  void SetEend(Float_t end){fEend=end;}
200  if (fBetheBloch) delete fBetheBloch;
201  fBetheBloch=0;
202  if (v) fBetheBloch=new TVectorD(*v);
203  }
205  if (fBetheBlochMC) delete fBetheBlochMC;
206  fBetheBlochMC=0;
207  if (v) fBetheBlochMC=new TVectorD(*v);
208  }
209  static TVectorD * GetBetheBlochParamNa49();
212  static void RegisterBBParam(TVectorD* param, Int_t position);
213  //
214  //set electronivc parameters
215  //
216  void SetPadCoupling(Float_t PadCoupling){ fPadCoupling=PadCoupling;}
217  void SetZeroSup(Int_t ZeroSup) { fZeroSup=ZeroSup;}
218  void SetNoise(Float_t Noise ) { fNoise= Noise;}
219  void SetChipGain(Float_t ChipGain){ fChipGain= ChipGain;}
220  void SetChipNorm(Float_t ChipNorm){ fChipNorm= ChipNorm;}
221  void SetTSample(Float_t TSample) { fTSample=TSample;}
222  void SetTFWHM(Float_t fwhm) { fTSigma=fwhm/2.35;}
223  void SetMaxTBin(Int_t maxtbin) { fMaxTBin = maxtbin;}
224  void SetADCSat(Int_t adcsat) { fADCSat = adcsat;}
225  void SetADCDynRange(Float_t adcdynrange) {fADCDynRange = adcdynrange;}
228  //
229  // High voltage parameters
230  //
231  void SetNominalVoltage(Float_t v, UInt_t i) {if (i<72) fNominalVoltage[i]=v;}
232  void SetMaxVoltageDeviation(Float_t voltage) { fMaxVoltageDeviation=voltage; }
233  void SetMaxDipVoltage(Float_t voltage) { fMaxDipVoltage=voltage; }
234  void SetMaxFractionHVbad(Float_t frac ) { fMaxHVfractionBad=frac; }
235  void SetVoltageDipScanPeriod(Float_t period) { fVoltageDipScanPeriod=period; }
236  //
237  //set response parameters
238  //
239  void SetNResponseMax(Int_t max) { fNResponseMax = max;}
240  void SetResponseThreshold(Int_t threshold) {fResponseThreshold = threshold;}
241  //set L1 parameters
242  void SetGateDelay(Float_t delay) {fGateDelay = delay;}
243  void SetL1Delay(Float_t delay) {fL1Delay = delay;}
244  void SetNTBinsBeforeL1(UShort_t nbins) {fNTBinsBeforeL1 = nbins;}
245  //
246  //get sector parameters
247  //
248  Float_t GetInnerRadiusLow() const {return fInnerRadiusLow;}
249  Float_t GetInnerRadiusUp() const {return fInnerRadiusUp;}
250  Float_t GetOuterRadiusLow() const {return fOuterRadiusLow;}
251  Float_t GetOuterRadiusUp() const {return fOuterRadiusUp;}
252  Float_t GetInnerFrameSpace() const {return fInnerFrameSpace;}
253  Float_t GetOuterFrameSpace() const {return fOuterFrameSpace;}
254  Float_t GetInnerWireMount() const {return fInnerWireMount;}
255  Float_t GetOuterWireMount() const {return fOuterWireMount;}
256  Float_t GetInnerAngle() const ;
257  Float_t GetInnerAngleShift() const ;
258  Float_t GetOuterAngle() const ;
259  Float_t GetOuterAngleShift() const ;
260  Int_t GetNInnerSector() const {return fNInnerSector;}
261  Int_t GetNOuterSector() const {return fNOuterSector;}
262  Int_t GetNSector() const {return fNSector;}
263  Float_t GetZLength(Int_t sector=0) const;
264  Int_t GetGeometryType() const {return fGeometryType;}
265 
266  //
267  //get wires parameter
268  //
269  Int_t GetInnerNWires() const {return fNInnerWiresPerPad;}
270  Float_t GetInnerWWPitch() const {return fInnerWWPitch;}
271  Int_t GetInnerDummyWire() const {return fInnerDummyWire;}
272  Float_t GetInnerOffWire() const {return fInnerOffWire;}
273  Float_t GetRInnerFirstWire() const {return fRInnerFirstWire;}
274  Float_t GetRInnerLastWire() const {return fRInnerLastWire;}
275  Int_t GetOuter1NWires() const {return fNOuter1WiresPerPad;}
276  Int_t GetOuter2NWires() const {return fNOuter2WiresPerPad;}
277  Float_t GetOuterWWPitch() const {return fOuterWWPitch;}
278  Int_t GetOuterDummyWire() const {return fOuterDummyWire;}
279  Float_t GetOuterOffWire() const {return fOuterOffWire;}
280  Float_t GetLastWireUp1() const {return fLastWireUp1;}
281  Float_t GetROuterFirstWire() const {return fROuterFirstWire;}
282  Float_t GetROuterLastWire() const {return fROuterLastWire;}
283  Float_t GetWWPitch(Int_t isector = 0) const {
284  return ( (isector < fNInnerSector) ? fInnerWWPitch :fOuterWWPitch);}
285  //
286  //get pad parameters
287  //
289  Float_t GetInnerPadPitchWidth() const {return fInnerPadPitchWidth;}
290  Float_t GetInnerPadLength() const {return fInnerPadLength;}
291  Float_t GetInnerPadWidth() const {return fInnerPadWidth;}
294  Float_t GetOuterPadPitchWidth() const {return fOuterPadPitchWidth;}
295  Float_t GetOuter1PadLength() const {return fOuter1PadLength;}
296  Float_t GetOuter2PadLength() const {return fOuter2PadLength;}
297  Float_t GetOuterPadWidth() const {return fOuterPadWidth;}
298  Bool_t GetMWPCReadout() const {return fBMWPCReadout;}
299  Int_t GetNCrossRows() const {return fNCrossRows;}
300  Float_t GetPadPitchWidth(Int_t isector = 0) const {
301  return ( (isector < fNInnerSector) ? fInnerPadPitchWidth :fOuterPadPitchWidth);}
302  Float_t GetPadPitchLength(Int_t isector = 0, Int_t padrow=0) const
303  { if (isector < fNInnerSector) return fInnerPadPitchLength;
304  else return ((padrow<fNRowUp1) ? fOuter1PadPitchLength:fOuter2PadPitchLength);}
305  Int_t GetNRowLow() const; //get the number of pad rows in low sector
306  Int_t GetNRowUp() const; //get the number of pad rows in up sector
307  Int_t GetNRowUp1() const; // number of short rows in up sector
308  Int_t GetNRowUp2() const; // number of long rows in up sector
309  Int_t GetNRow(Int_t isec) const {return ((isec<fNInnerSector) ? fNRowLow:fNRowUp);}
310  Int_t GetNRowsTotal() const {return fNtRows;} //get total nuber of rows
311  Float_t GetPadRowRadiiLow(Int_t irow) const; //get the pad row (irow) radii
312  Float_t GetPadRowRadiiUp(Int_t irow) const; //get the pad row (irow) radii
313  Float_t GetPadRowRadii(Int_t isec,Int_t irow) const {
314  return ( (isec < fNInnerSector) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
315  //retrun radii of the pad row irow in sector i
316  Int_t GetNPadsLow(Int_t irow) const; //get the number of pads in row irow
317  Int_t GetNPadsUp(Int_t irow) const; //get the number of pads in row irow
318  Int_t GetNPads(Int_t isector,Int_t irow) const{
319  return ( (isector < fNInnerSector) ?GetNPadsLow(irow) : GetNPadsUp(irow));}
320  Int_t GetWireSegment(Int_t sector, Int_t row) const ; // get Anode wire segment index IROC --> [0,4], OROC[0,7]
321  Int_t GetNPadsPerSegment(Int_t segmentID) const; // get number of pads for a given Anode wire segment
322 
323  Float_t GetYInner(Int_t irow) const; // wire length in low sec row
324  Float_t GetYOuter(Int_t irow) const; // wire length in up sec row
325  Int_t GetSectorIndex(Float_t angle, Int_t row, Float_t z) const; // get sector index
326  Float_t GetChamberCenter(Int_t isec, Float_t * center = 0) const; // get readout chamber positions
327  TGeoHMatrix *GetTrackingMatrix(Int_t isec) const {
328  return fTrackingMatrix[isec];}
329  TGeoHMatrix *GetClusterMatrix(Int_t isec) const {
330  return fClusterMatrix[isec];}
331  TGeoHMatrix *GetGlobalMatrix(Int_t isec) const {
332  return fGlobalMatrix[isec];}
333  Bool_t IsGeoRead(){ return fGlobalMatrix!=0;}
334  //
335  //get GAS parameters
336  //
337  Float_t GetDiffT() const {return fDiffT;}
338  Float_t GetDiffL() const {return fDiffL;}
339  Float_t GetGasGain() const {return fGasGain;}
340  Float_t GetRegionGain(UInt_t region) const {return fRegionGain[region%3];}
341  Float_t GetRegionGainAbsolute(UInt_t region) const { return (fRegionGain[region%3]>1e-10) ? fRegionGain[region%3]*fGasGain : fGasGain; }
342  Float_t GetDriftV() const {return fDriftV;}
343  Float_t GetOmegaTau() const {return fOmegaTau;}
344  Float_t GetAttCoef() const {return fAttCoef;}
345  Float_t GetOxyCont() const {return fOxyCont;}
346  TGraphErrors * GetGainSlopesHV() const { return fGainSlopesHV;}
347  TGraphErrors * GetGainSlopesPT() const { return fGainSlopesPT;}
348  Float_t* GetComposition() {return fComposition;}
349  Float_t GetFpot()const {return fFpot;}
350  Float_t GetNprim() const {return fNprim;}
351  Float_t GetNtot() const {return fNtot;}
352  Float_t GetWmean()const {return fWmean;}
353  Float_t GetExp()const {return fExp;}
354  Float_t GetEend()const {return fEend;}
357  static Double_t BetheBlochAleph(Double_t bb, Int_t type=0);
358  //
359  //get Electronic parameters
360  //
361  Float_t GetPadCoupling() const {return fPadCoupling;}
362  Int_t GetZeroSup() const {return fZeroSup;}
363  Float_t GetNoise() const {return fNoise;}
364  Float_t GetChipGain() const {return fChipGain;}
365  Float_t GetChipNorm() const {return fChipNorm;}
366  Float_t GetTSample() const {return fTSample;}
367  Float_t GetZWidth() const {return fZWidth;}
368  Float_t GetTFWHM() const {return fTSigma*2.35;}
369  Float_t GetZSigma() const {return fTSigma*fDriftV;}
370  virtual Float_t GetZOffset() const {return 3*fTSigma*fDriftV;}
371  Int_t GetMaxTBin() const {return fMaxTBin;}
372  Int_t GetADCSat() const {return fADCSat;}
373  Float_t GetADCDynRange() const {return fADCDynRange;}
374  Float_t GetTotalNormFac() const {return fTotalNormFac;}
375  Float_t GetNoiseNormFac() const {return fNoiseNormFac;}
376  Bool_t GetUseGlitchFilter() const {return fUseGlitchFilter;}
378 
379  //
380  // High voltage parameters
381  //
382  Float_t GetNominalVoltage(UInt_t i) const {return (i<72)?fNominalVoltage[i]:0;} //0-35:IROC, 36-71:OROC
383  Float_t GetMaxVoltageDeviation() const { return fMaxVoltageDeviation; }
384  Float_t GetMaxDipVoltage() const { return fMaxDipVoltage; }
385  Float_t GetMaxFractionHVbad() const { return fMaxHVfractionBad; }
386  Float_t GetVoltageDipScanPeriod() const { return fVoltageDipScanPeriod; }
387 
388  //
389  // get response data
390  //
391  Int_t * GetResBin(Int_t i);
392  //return response bin i - bin given by padrow [0] pad[1] timebin[2]
393  Float_t & GetResWeight(Int_t i);
394  //return weight of response bin i
395 
396  // get L1 data
397  Float_t GetGateDelay() const {return fGateDelay;}
398  Float_t GetL1Delay() const {return fL1Delay;}
399  UShort_t GetNTBinsBeforeL1() const {return fNTBinsBeforeL1;}
400  Float_t GetNTBinsL1() const {return fNTBinsL1;}
401 protected :
402 
403  Bool_t fbStatus;
404  //---------------------------------------------------------------------
405  // ALICE TPC sector geometry
406  //--------------------------------------------------------------------
407  Float_t fInnerRadiusLow;
408  Float_t fInnerRadiusUp;
409  Float_t fOuterRadiusUp;
410  Float_t fOuterRadiusLow;
411  Float_t fInnerAngle;
413  Float_t fOuterAngle;
417  Float_t fInnerWireMount;
418  Float_t fOuterWireMount;
421  Int_t fNSector;
422  Float_t fZLength;
423  Float_t *fRotAngle; //[fNSector]
426  // Float_t *fChamberPos; //[fNSector] displacements of the readout chambers
427  //with respect to the 'idead' geometry
428  //in local corrdinate system
429  // Float_t *fChamberRot; //[fNSector] rotation angles of the readout chambers
430  //with respect to the 'idead' geometry
431  //in local corrdinate system
433  TGeoHMatrix **fTrackingMatrix;
434  TGeoHMatrix **fClusterMatrix;
436  TGeoHMatrix **fGlobalMatrix;
438 
439  //1-cylindrical
440  //---------------------------------------------------------------------
441  // ALICE TPC wires geometry - for GEM we can consider that it is gating
442  //--------------------------------------------------------------------
444  Float_t fInnerWWPitch;
446  Float_t fInnerOffWire;
448  Float_t fRInnerLastWire;
449  Float_t fLastWireUp1;
452  Float_t fOuterWWPitch;
454  Float_t fOuterOffWire;
456  Float_t fROuterLastWire;
457  //---------------------------------------------------------------------
458  // ALICE TPC pad parameters
459  //--------------------------------------------------------------------
462  Float_t fInnerPadLength;
463  Float_t fInnerPadWidth;
469  Float_t fOuterPadWidth;
470  Bool_t fBMWPCReadout;
471  Int_t fNCrossRows;
472 
473  Int_t fNRowLow;
474  Int_t fNRowUp1;
475  Int_t fNRowUp2;
476  Int_t fNRowUp;
477  Int_t fNtRows;
478  Float_t fPadRowLow[600];
479  Float_t fPadRowUp[600];
480  Int_t fNPadsLow[600];
481  Int_t fNPadsUp[600];
482  Float_t fYInner[600];
483  Float_t fYOuter[600];
484  //---------------------------------------------------------------------
485  // ALICE TPC Gas Parameters
486  //--------------------------------------------------------------------
487  Float_t fDiffT;
488  Float_t fDiffL;
489  Float_t fGasGain;
490  Float_t fRegionGain[3];
491  Float_t fDriftV;
492  Float_t fOmegaTau;
493  Float_t fAttCoef;
494  Float_t fOxyCont;
495  Float_t fFpot;
496  Float_t fNprim;
497  Float_t fNtot;
498  Float_t fWmean;
499  Float_t fExp;
500  Float_t fEend;
503  // gas mixture composition
504  Float_t fComposition[6];
505  TGraphErrors * fGainSlopesHV;
506  TGraphErrors * fGainSlopesPT;
507  //---------------------------------------------------------------------
508  // ALICE TPC Electronics Parameters
509  //--------------------------------------------------------------------
510  Float_t fPadCoupling;
511  //and total pads signal
512  Int_t fZeroSup;
513  Float_t fNoise;
514  Float_t fChipGain;
515  Float_t fChipNorm;
516  Float_t fTSample;
517  Float_t fZWidth;
518  Float_t fTSigma;
519  Int_t fMaxTBin;
520  Int_t fADCSat;
521  Float_t fADCDynRange;
522  Float_t fTotalNormFac;
523  Float_t fNoiseNormFac;
526 
527  //---------------------------------------------------------------------
528  // High voltage parameters
529  //---------------------------------------------------------------------
530  Float_t fNominalVoltage[72];
532  Float_t fMaxDipVoltage;
535 
536  //---------------------------------------------------------------------
537  // ALICE TPC response data
538  //---------------------------------------------------------------------
541  Int_t fCurrentMax;
542  Int_t *fResponseBin;
543  Float_t *fResponseWeight;
544 
545  //---------------------------------------------------------------------
546  // ALICE TPC L1 Parameters
547  //--------------------------------------------------------------------
548  Float_t fGateDelay;
549  Float_t fL1Delay;
550  UShort_t fNTBinsBeforeL1;
551  Float_t fNTBinsL1;
552  protected:
553  static TObjArray *fBBParam;
554  private:
555  AliTPCParam(const AliTPCParam &);
556  AliTPCParam & operator=(const AliTPCParam &);
557 
558  void CleanGeoMatrices();
559 
561  ClassDef(AliTPCParam,13) //parameter object for set:TPC
563 };
564 
565 
566 inline Int_t * AliTPCParam::GetResBin(Int_t i)
567 {
569 
570  if (i<fCurrentMax) return &fResponseBin[i*3];
571  else return 0;
572 }
573 
574 inline Float_t &AliTPCParam::GetResWeight(Int_t i)
575 {
577 
578  if (i<fCurrentMax) return fResponseWeight[i];
579  else return fResponseWeight[i];
580 }
581 
582 
583 inline void AliTPCParam::AdjustCosSin(Int_t isec, Float_t &cos, Float_t &sin) const
584 {
586 
587  cos=fRotAngle[isec*4];
588  sin=fRotAngle[isec*4+1];
589 }
590 
591 inline Float_t AliTPCParam::GetAngle(Int_t isec) const
592 {
594 
595  return fRotAngle[isec*4+2];
596 }
597 
598 
599 inline void AliTPCParam::Transform1to2Ideal(Float_t *xyz, Int_t *index) const
600 {
605 
606  Float_t cos,sin;
607  AdjustCosSin(index[1],cos,sin);
608  Float_t x1=xyz[0]*cos + xyz[1]*sin;
609  Float_t y1=-xyz[0]*sin + xyz[1]*cos;
610  xyz[0]=x1;
611  xyz[1]=y1;
612  xyz[2]= fZLength + (((index[1]/18)&0x1) ? xyz[2] : -xyz[2]);
613  index[0]=2;
614 }
615 
616 
617 inline void AliTPCParam::Transform1to2(Float_t *xyz, Int_t *index) const
618 {
622 
623  Double_t xyzmaster[3] = {xyz[0],xyz[1],xyz[2]};
624  Double_t xyzlocal[3]={0,0,0};
625  if (index[1]>=0 && index[1]<fNSector)
626  fGlobalMatrix[index[1]]->MasterToLocal(xyzmaster,xyzlocal);
627  xyz[0] = xyzlocal[0];
628  xyz[1] = xyzlocal[1];
629  xyz[2] = xyzlocal[2];
630  index[0]=2;
631 }
632 
633 
634 
635 
636 inline void AliTPCParam::Transform2to1(Float_t *xyz, Int_t *index) const
637 {
639 
640  Float_t cos,sin;
641  AdjustCosSin(index[1],cos,sin);
642  Float_t x1=xyz[0]*cos - xyz[1]*sin;
643  Float_t y1=xyz[0]*sin + xyz[1]*cos;
644  xyz[0]=x1;
645  xyz[1]=y1;
646  xyz[2]=fZLength-xyz[2];
647  if (index[1]<fNInnerSector)
648  {if ( index[1]>=(fNInnerSector>>1)) xyz[2]*=-1.;}
649  else
650  {if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[2]*=-1;}
651  index[0]=1;
652 }
653 
654 inline void AliTPCParam::Transform2to2(Float_t *xyz, Int_t *index, Int_t *oindex) const
655 {
658 
659  Transform2to1(xyz,index);
660  Transform1to2(xyz,oindex);
661  index[0]=2;
662  index[1]=oindex[1];
663 }
664 
665 inline Float_t AliTPCParam::Transform2to2NearestWire(Float_t *xyz, Int_t *index) const
666 {
669 
670  Float_t xnew,dx;
671  if (index[1]<fNInnerSector) {
672  xnew = fRInnerFirstWire+TMath::Nint((xyz[0]-fRInnerFirstWire)/fInnerWWPitch)*fInnerWWPitch;
673  }
674  else {
675  xnew = fROuterFirstWire+TMath::Nint((xyz[0]-fROuterFirstWire)/fOuterWWPitch)*fOuterWWPitch;
676  }
677  dx = xnew-xyz[0];
678  xyz[0]=xnew;
679  return dx;
680 }
681 
682 inline Int_t AliTPCParam::Transform2to3(Float_t *xyz, Int_t *index) const
683 {
687 
688  if (index[1]<fNInnerSector)
689  index[2] =TMath::Nint((xyz[0]-fPadRowLow[0])/fInnerPadPitchLength);
690  else
691  if (xyz[0] < fLastWireUp1 )
692  index[2] = TMath::Nint((xyz[0]-fPadRowUp[0])/fOuter1PadPitchLength);
693  else
694  index[2] = TMath::Nint(fNRowUp1+(xyz[0]-fPadRowUp[64])/fOuter2PadPitchLength);
695  index[0]=3;
696  return index[2];
697 }
698 
699 inline void AliTPCParam::Transform3to4(Float_t *xyz, Int_t *index) const
700 {
703 
704  if (index[1]<fNInnerSector)
705  xyz[0] -=index[2]*fInnerPadPitchLength+fPadRowLow[0];
706  else
707  if (index[2]<fNRowUp1)
708  xyz[0] -=index[2]*fOuter1PadPitchLength+fPadRowUp[0];
709  else
710  xyz[0] -=(index[2]-fNRowUp1)*fOuter2PadPitchLength+fPadRowUp[64];
711  index[0] =4;
712 }
713 
714 inline void AliTPCParam::Transform4to3(Float_t *xyz, Int_t *index) const
715 {
718 
719  if (index[1]<fNInnerSector)
720  xyz[0] +=index[2]*fInnerPadPitchLength+fPadRowLow[0];
721  else
722  if(index[2]<fNRowUp1)
723  xyz[0] +=index[2]*fOuter1PadPitchLength+fPadRowUp[0];
724  else
725  xyz[0] +=index[2]*fOuter2PadPitchLength+fPadRowUp[64];
726  index[0] =3;
727 }
728 
729 
730 inline void AliTPCParam::Transform2to5( Float_t *xyz, Int_t *index) const
731 {
733 
734  Float_t angle;
735  Float_t r = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
736  if ((xyz[0]==0)&&(xyz[1]==0)) angle = 0;
737  else
738  {
739  angle =TMath::ASin(xyz[1]/r);
740  if (xyz[0]<0) angle=TMath::Pi()-angle;
741  if ( (xyz[0]>0) && (xyz[1]<0) ) angle=2*TMath::Pi()+angle;
742  }
743  xyz[0]=r;
744  xyz[1]=angle;
745  index[0]=5;
746 }
747 
748 inline void AliTPCParam::Transform5to2( Float_t *xyz, Int_t *index) const
749 {
751 
752  Float_t r = xyz[0];
753  Float_t angle= xyz[1];
754  xyz[0]=r*TMath::Cos(angle);
755  xyz[1]=r*TMath::Sin(angle);
756  index[0]=2;
757 }
758 
759 inline void AliTPCParam::Transform4to8(Float_t *xyz, Int_t *index) const
760 {
762 
763  if (index[1]<fNInnerSector) {
764  if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
765  }
766  else {
767  if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
768  }
769 
770  xyz[2]/=fZWidth;
771  if (index[1]<fNInnerSector) {
772  xyz[0]/=fInnerPadPitchLength;
773  xyz[1]/=fInnerPadPitchWidth;
774  }
775  else{
776  xyz[1]/=fOuterPadPitchWidth;
777  if (index[2]<fNRowUp1 ) xyz[0]/=fOuter1PadPitchLength;
778  else xyz[0]/=fOuter2PadPitchLength;
779  }
780  xyz[1]-=0.5;
781  index[0]=8;
782 }
783 
784 inline void AliTPCParam::Transform8to4(Float_t *xyz, Int_t *index) const
785 {
787 
788  if (index[1]<fNInnerSector) {
789  if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
790  }
791  else {
792  if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
793  }
794 
795  xyz[2]*=fZWidth;
796  if (index[1]<fNInnerSector) {
797  xyz[0]*=fInnerPadPitchLength;
798  xyz[1]*=fInnerPadPitchWidth;
799  }
800  else{
801  xyz[1]*=fOuterPadPitchWidth;
802  if (index[2] < fNRowUp1 ) xyz[0]*=fOuter1PadPitchLength;
803  else xyz[0]*=fOuter2PadPitchLength;
804  }
805  index[0]=4;
806 }
807 
808 inline void AliTPCParam::Transform6to8(Float_t *xyz, Int_t *index) const
809 {
811 
812  xyz[2]/=fZWidth;
813  if (index[1]<fNInnerSector) {
814  xyz[0]/=fInnerPadPitchLength;
815  xyz[1]*=xyz[0]/fInnerPadPitchWidth;
816  }
817  else{
818  xyz[1]*=xyz[0]/fOuterPadPitchWidth;
819  if (index[2] < fNRowUp1 ) xyz[0]/=fOuter1PadPitchLength;
820  else xyz[0]/=fOuter2PadPitchLength;
821  }
822  index[0]=8;
823 }
824 
825 inline void AliTPCParam::Transform8to6(Float_t *xyz, Int_t *index) const
826 {
828 
829  xyz[2]*=fZWidth;
830  if (index[1]<fNInnerSector) {
831  xyz[0]*=fInnerPadPitchLength;
832  xyz[1]/=xyz[0]/fInnerPadPitchWidth;
833  }
834  else{
835  xyz[1]/=xyz[0]/fOuterPadPitchWidth;
836  if (index[2] < fNRowUp1 ) xyz[0]*=fOuter1PadPitchLength;
837  else xyz[0]*=fOuter2PadPitchLength;
838  }
839  index[0]=6;
840 }
841 inline Float_t AliTPCParam::GetZLength(Int_t sector) const
842 { if(sector <18 || (sector>35&&sector<54)) return fZLength-0.275;
843  else return fZLength-0.302;
844 }
845 #endif
Float_t fInnerWireMount
space for wire mount, inner sector
Definition: AliTPCParam.h:417
Float_t GetRegionGainAbsolute(UInt_t region) const
Definition: AliTPCParam.h:341
Int_t * fResponseBin
! array with bins -calulated
Definition: AliTPCParam.h:542
Float_t fOuter1PadLength
Outer pad length.
Definition: AliTPCParam.h:467
TGraphErrors * fGainSlopesHV
graph with the gain slope as function of HV - per chamber
Definition: AliTPCParam.h:505
Float_t GetPadPitchLength(Int_t isector=0, Int_t padrow=0) const
Definition: AliTPCParam.h:302
Int_t fNOuter1WiresPerPad
Number of wires per pad.
Definition: AliTPCParam.h:450
Float_t GetOuter2PadPitchLength() const
Definition: AliTPCParam.h:293
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:444
Float_t fTSample
sampling time
Definition: AliTPCParam.h:516
Float_t GetEend() const
Definition: AliTPCParam.h:354
Float_t fLastWireUp1
position of the last wire in outer1 sector
Definition: AliTPCParam.h:449
Int_t GetZeroSup() const
Definition: AliTPCParam.h:362
Float_t GetChipNorm() const
Definition: AliTPCParam.h:365
Float_t & GetResWeight(Int_t i)
Definition: AliTPCParam.h:574
static Double_t BetheBlochAleph(Double_t bb, Int_t type=0)
Float_t fPadCoupling
coupling factor ration of anode signal
Definition: AliTPCParam.h:510
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:461
Float_t GetMaxDipVoltage() const
Definition: AliTPCParam.h:384
Float_t fNoise
noise sigma constant
Definition: AliTPCParam.h:513
Float_t GetYInner(Int_t irow) const
Float_t GetOuterWireMount() const
Definition: AliTPCParam.h:255
Float_t GetZSigma() const
Definition: AliTPCParam.h:369
void SetDiffT(Float_t DiffT)
Definition: AliTPCParam.h:176
Int_t GetNRowsTotal() const
Definition: AliTPCParam.h:310
Float_t fNtot
total number of electrons/c (MIP)
Definition: AliTPCParam.h:497
void SetInnerRadiusLow(Float_t InnerRadiusLow)
Definition: AliTPCParam.h:122
Float_t GetOuter1PadLength() const
Definition: AliTPCParam.h:295
void SetNominalVoltage(Float_t v, UInt_t i)
Definition: AliTPCParam.h:231
void SetNominalGainSlopes()
Float_t GetDiffL() const
Definition: AliTPCParam.h:338
Int_t GetNSector() const
Definition: AliTPCParam.h:262
Float_t fOuterWWPitch
pitch between wires in outer sector -calculated
Definition: AliTPCParam.h:452
void SetNResponseMax(Int_t max)
Definition: AliTPCParam.h:239
Float_t GetOuterPadWidth() const
Definition: AliTPCParam.h:297
Float_t fOuterAngleShift
shift of first sector center to the 0
Definition: AliTPCParam.h:414
Float_t GetOuterRadiusLow() const
Definition: AliTPCParam.h:250
void SetOuterWWPitch(Float_t wwPitch)
Definition: AliTPCParam.h:154
void SetVoltageDipScanPeriod(Float_t period)
Definition: AliTPCParam.h:235
Float_t GetGateDelay() const
Definition: AliTPCParam.h:397
Float_t GetOuter2PadLength() const
Definition: AliTPCParam.h:296
TGeoHMatrix * GetClusterMatrix(Int_t isec) const
Definition: AliTPCParam.h:329
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:521
void SetPadCoupling(Float_t PadCoupling)
Definition: AliTPCParam.h:216
void SetAttCoef(Float_t AttCoef)
Definition: AliTPCParam.h:182
Float_t GetRInnerFirstWire() const
Definition: AliTPCParam.h:273
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:478
void SetInnerPadPitchWidth(Float_t PadPitchWidth)
Definition: AliTPCParam.h:162
TGeoHMatrix * GetTrackingMatrix(Int_t isec) const
Definition: AliTPCParam.h:327
Float_t fOxyCont
oxygen content
Definition: AliTPCParam.h:494
#define TObjArray
Float_t GetNoise() const
Definition: AliTPCParam.h:363
Float_t GetROuterLastWire() const
Definition: AliTPCParam.h:282
Float_t fRegionGain[3]
gain in pad regions relative to fGasGain
Definition: AliTPCParam.h:490
void Transform2to5(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:730
void Transform1to2Ideal(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:599
Float_t fNTBinsL1
Overall L1 delay in time bins.
Definition: AliTPCParam.h:551
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:548
Manager class for detector parameters.
Int_t GetInnerDummyWire() const
Definition: AliTPCParam.h:271
Bool_t fbStatus
indicates consistency of the data
Definition: AliTPCParam.h:403
Int_t * GetResBin(Int_t i)
Definition: AliTPCParam.h:566
void SetRInnerFirstWire(Float_t firstWire)
Definition: AliTPCParam.h:152
void SetBetheBloch(TVectorD *v)
Definition: AliTPCParam.h:199
Float_t GetTFWHM() const
Definition: AliTPCParam.h:368
Float_t * fRotAngle
sin and cos of rotation angles for different sectors - calculated
Definition: AliTPCParam.h:424
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:280
Manager and of geomety classes for set: TPC.
Definition: AliTPCParam.h:18
Float_t GetDriftV() const
Definition: AliTPCParam.h:342
Float_t GetMaxFractionHVbad() const
Definition: AliTPCParam.h:385
Bool_t GetMWPCReadout() const
Definition: AliTPCParam.h:298
void SetChipNorm(Float_t ChipNorm)
Definition: AliTPCParam.h:220
void SetRInnerLastWire(Float_t lastWire)
Definition: AliTPCParam.h:153
Float_t GetMaxVoltageDeviation() const
Definition: AliTPCParam.h:383
Float_t GetOuterRadiusUp() const
Definition: AliTPCParam.h:251
Float_t fSigmaRangePIDinTracking
maximum sigma range allowed for PID probability range calculation used in tracking ...
Definition: AliTPCParam.h:525
Float_t GetROuterFirstWire() const
Definition: AliTPCParam.h:281
Float_t fExp
de = f(E) - energy loss parametrization
Definition: AliTPCParam.h:499
Float_t fROuterFirstWire
position of the first wire -calulated
Definition: AliTPCParam.h:455
void SetGateDelay(Float_t delay)
Definition: AliTPCParam.h:242
static TVectorD * GetBetheBlochParamAlice()
virtual Bool_t Transform(Float_t *xyz, Int_t *index, Int_t *oindex)
Int_t GetInnerNWires() const
Definition: AliTPCParam.h:269
Float_t fOuterFrameSpace
space for outer frame in the phi direction
Definition: AliTPCParam.h:416
virtual Int_t GetPadRow(Float_t *xyz, Int_t *index) const
void Transform4to3(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:714
Float_t fRInnerLastWire
position of the last wire -calculated
Definition: AliTPCParam.h:448
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:218
static TVectorD * GetBetheBlochParamNa49()
void SetTFWHM(Float_t fwhm)
Definition: AliTPCParam.h:222
Float_t fDriftV
drift velocity constant
Definition: AliTPCParam.h:491
virtual Bool_t ReadGeoMatrices()
Float_t fFpot
first ionisation potential
Definition: AliTPCParam.h:495
Float_t fNprim
number of primary electrons/cm
Definition: AliTPCParam.h:496
Float_t fMaxDipVoltage
maximum voltage deviation from median before a dip event is marked
Definition: AliTPCParam.h:532
void SetSigmaRangePIDinTracking(Float_t range)
Definition: AliTPCParam.h:227
Int_t fGeometryType
type of geometry -0 straight rows
Definition: AliTPCParam.h:425
Float_t GetPadRowRadiiLow(Int_t irow) const
Float_t fInnerRadiusUp
upper radius of inner sector-IP
Definition: AliTPCParam.h:408
void SetL1Delay(Float_t delay)
Definition: AliTPCParam.h:243
Int_t fNInnerWiresPerPad
[fNSector]
Definition: AliTPCParam.h:443
Float_t fDiffL
longutudinal diffusion constant
Definition: AliTPCParam.h:488
Float_t fAttCoef
attachment coefitients
Definition: AliTPCParam.h:493
void SetZeroSup(Int_t ZeroSup)
Definition: AliTPCParam.h:217
void SetOxyCont(Float_t OxyCont)
Definition: AliTPCParam.h:183
Float_t GetOmegaTau() const
Definition: AliTPCParam.h:343
Float_t GetGasGain() const
Definition: AliTPCParam.h:339
void SetGainSlopesPT(TGraphErrors *gainSlopesPT)
Definition: AliTPCParam.h:185
Float_t GetPadPitchWidth(Int_t isector=0) const
Definition: AliTPCParam.h:300
Float_t Transform2to2NearestWire(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:665
Float_t GetPadCoupling() const
Definition: AliTPCParam.h:361
Float_t GetSigmaRangePIDinTracking() const
Definition: AliTPCParam.h:377
Float_t fEend
upper cutoff for de generation
Definition: AliTPCParam.h:500
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:290
Float_t fOuter2PadLength
Outer pad length.
Definition: AliTPCParam.h:468
static TObjArray * fBBParam
array of the Bethe-Bloch parameters.
Definition: AliTPCParam.h:553
Float_t GetInnerPadPitchLength() const
Definition: AliTPCParam.h:288
Int_t fInnerDummyWire
number of wires without pad readout
Definition: AliTPCParam.h:445
Float_t fOuterRadiusLow
lower radius of outer sector-IP
Definition: AliTPCParam.h:410
Float_t fInnerPadPitchLength
Inner pad pitch length.
Definition: AliTPCParam.h:460
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 GetRegionGain(UInt_t region) const
Definition: AliTPCParam.h:340
Float_t fNominalVoltage[72]
nominal voltage in [V] per chamber
Definition: AliTPCParam.h:530
Float_t GetL1Delay() const
Definition: AliTPCParam.h:398
void Transform2to2(Float_t *xyz, Int_t *index, Int_t *oindex) const
Definition: AliTPCParam.h:654
Float_t fROuterLastWire
position of the last wire -calculated
Definition: AliTPCParam.h:456
TGraphErrors * fGainSlopesPT
graph with the gain slope as function of P/T - per chamber
Definition: AliTPCParam.h:506
void Transform4to8(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:759
void SetMaxTBin(Int_t maxtbin)
Definition: AliTPCParam.h:223
Int_t Transform2to3(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:682
Int_t fNInnerSector
number of inner sectors -calculated
Definition: AliTPCParam.h:419
Float_t GetTotalNormFac() const
Definition: AliTPCParam.h:374
Float_t GetNoiseNormFac() const
Definition: AliTPCParam.h:375
void SetMaxFractionHVbad(Float_t frac)
Definition: AliTPCParam.h:234
Float_t GetFpot() const
Definition: AliTPCParam.h:349
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:219
void SetMaxVoltageDeviation(Float_t voltage)
Definition: AliTPCParam.h:232
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:479
Float_t fOuterWireMount
space for wire mount, outer sector
Definition: AliTPCParam.h:418
void SetNTBinsBeforeL1(UShort_t nbins)
Definition: AliTPCParam.h:244
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:482
void Transform5to2(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:748
Float_t GetNprim() const
Definition: AliTPCParam.h:350
Bool_t GetUseGlitchFilter() const
Definition: AliTPCParam.h:376
TVectorD * fBetheBloch
Bethe-Bloch parametrization.
Definition: AliTPCParam.h:501
Float_t GetOuterWWPitch() const
Definition: AliTPCParam.h:277
TVectorD * fBetheBlochMC
Bethe-Bloch parametrization.
Definition: AliTPCParam.h:502
void SetInnerDummyWire(Int_t dummy)
Definition: AliTPCParam.h:145
void Transform6to8(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:808
Int_t GetNCrossRows() const
Definition: AliTPCParam.h:299
UShort_t fNTBinsBeforeL1
Number of time bins before L1 arrival which are being read out.
Definition: AliTPCParam.h:550
Float_t GetADCDynRange() const
Definition: AliTPCParam.h:373
Int_t fNRowUp
number of pad rows per sector up -calculated
Definition: AliTPCParam.h:476
Float_t GetOuterAngle() const
virtual Float_t GetZOffset() const
Definition: AliTPCParam.h:370
Float_t GetYOuter(Int_t irow) const
Int_t GetOuter1NWires() const
Definition: AliTPCParam.h:275
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:523
Macros to do fast simulation of processes important for tuning of reconstruction Currently fast simulation of ionization digitization and cluster finder AliTPCclusterFast How to use it a which macro to use(I know it was somewhere in AliRoot but with the GIT page I dont find it anymore)
Float_t fOuterAngle
opening angle of outer sector
Definition: AliTPCParam.h:413
Float_t GetInnerRadiusLow() const
Definition: AliTPCParam.h:248
Float_t fChipGain
preamp shaper constant
Definition: AliTPCParam.h:514
TGeoHMatrix ** fClusterMatrix
transformation matrices of the cluster coordinate system
Definition: AliTPCParam.h:435
Float_t fMaxHVfractionBad
maximum fraction of bad HV entries (deviation from Median) before a chamber is marked bad ...
Definition: AliTPCParam.h:533
Float_t GetZWidth() const
Definition: AliTPCParam.h:367
Float_t fResponseThreshold
threshold for accepted response
Definition: AliTPCParam.h:540
void SetLastWireUp1(Float_t wireUp1)
Definition: AliTPCParam.h:155
Int_t fNSector
total number of sectors -calculated
Definition: AliTPCParam.h:421
Float_t GetOuterOffWire() const
Definition: AliTPCParam.h:279
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:498
Int_t fNResponseMax
maximal dimension of response
Definition: AliTPCParam.h:539
Float_t GetAngle(Int_t isec) const
Definition: AliTPCParam.h:591
Float_t * fResponseWeight
! array with response -calulated
Definition: AliTPCParam.h:543
Int_t fNPadsLow[600]
Lower sector, number of pads per row -calculated.
Definition: AliTPCParam.h:480
Float_t fInnerFrameSpace
space for inner frame in the phi direction
Definition: AliTPCParam.h:415
Float_t fChipNorm
preamp shaper normalisation
Definition: AliTPCParam.h:515
void SetOuter2PadLength(Float_t PadLength)
Definition: AliTPCParam.h:169
Float_t GetTSample() const
Definition: AliTPCParam.h:366
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:453
Bool_t GetStatus() const
Float_t fInnerOffWire
oofset of first wire to the begining of the sector
Definition: AliTPCParam.h:446
void SetNprim(Float_t prim)
Definition: AliTPCParam.h:194
Int_t fNPadsUp[600]
Upper sector, number of pads per row -calculated.
Definition: AliTPCParam.h:481
void SetGainSlopesHV(TGraphErrors *gainSlopesHV)
Definition: AliTPCParam.h:184
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:487
void SetInnerPadLength(Float_t PadLength)
Definition: AliTPCParam.h:163
virtual void SetDefault()
Float_t fOuterPadWidth
Outer pad width.
Definition: AliTPCParam.h:469
TGeoHMatrix ** fGlobalMatrix
fTrackingMatrix * fClusterMatrix
Definition: AliTPCParam.h:437
Int_t fNOuter2WiresPerPad
Number of wires per pad.
Definition: AliTPCParam.h:451
void SetOuterRadiusUp(Float_t OuterRadiusUp)
Definition: AliTPCParam.h:125
Float_t range[5]
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:411
Int_t GetADCSat() const
Definition: AliTPCParam.h:372
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:454
void SetRowNLow(Int_t NRowLow)
Definition: AliTPCParam.h:137
void SetTSample(Float_t TSample)
Definition: AliTPCParam.h:221
Float_t GetDiffT() const
Definition: AliTPCParam.h:337
Float_t fL1Delay
Delay of L1 arrival for the TPC readout.
Definition: AliTPCParam.h:549
Float_t fOmegaTau
omega tau ExB coeficient
Definition: AliTPCParam.h:492
Int_t fCurrentMax
! current maximal dimension -calulated
Definition: AliTPCParam.h:541
Int_t fADCSat
saturation value of ADC (10 bits)
Definition: AliTPCParam.h:520
virtual Bool_t Update()
Float_t fMaxVoltageDeviation
maximum voltage deviation from nominal voltage before a chamber is masked
Definition: AliTPCParam.h:531
void SetDriftV(Float_t DriftV)
Definition: AliTPCParam.h:180
void SetRowNUp(Int_t NRowUp)
Definition: AliTPCParam.h:140
Float_t GetNominalVoltage(UInt_t i) const
Definition: AliTPCParam.h:382
void SetResponseThreshold(Int_t threshold)
Definition: AliTPCParam.h:240
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:412
TGraphErrors * GetGainSlopesPT() const
Definition: AliTPCParam.h:347
Int_t GetIndex(Int_t sector, Int_t row) const
TVectorD * GetBetheBlochParameters()
Definition: AliTPCParam.h:355
Float_t fTotalNormFac
full normalisation factor - calculated
Definition: AliTPCParam.h:522
Int_t GetNRow(Int_t isec) const
Definition: AliTPCParam.h:309
void SetExp(Float_t exp)
Definition: AliTPCParam.h:197
void SetROuterLastWire(Float_t lastWire)
Definition: AliTPCParam.h:157
Float_t fInnerPadLength
Inner pad length.
Definition: AliTPCParam.h:462
void SetRegionGain(UInt_t region, Float_t gain)
Definition: AliTPCParam.h:179
void Transform8to4(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:784
void SetZLength(Float_t zlength)
Definition: AliTPCParam.h:132
Float_t fYOuter[600]
Outer sector, wire-length.
Definition: AliTPCParam.h:483
TGraphErrors * GetGainSlopesHV() const
Definition: AliTPCParam.h:346
Int_t GetWireSegment(Int_t sector, Int_t row) const
TGeoHMatrix ** fTrackingMatrix
transformation matrices of the tracking coordinate system
Definition: AliTPCParam.h:433
Float_t GetPadRowRadiiUp(Int_t irow) const
Float_t GetVoltageDipScanPeriod() const
Definition: AliTPCParam.h:386
TGeoHMatrix * GetGlobalMatrix(Int_t isec) const
Definition: AliTPCParam.h:331
Float_t fZWidth
derived value calculated using TSample and driftw -computed
Definition: AliTPCParam.h:517
Float_t GetWmean() const
Definition: AliTPCParam.h:352
void SetOmegaTau(Float_t OmegaTau)
Definition: AliTPCParam.h:181
Int_t GetGeometryType() const
Definition: AliTPCParam.h:264
Float_t GetInnerFrameSpace() const
Definition: AliTPCParam.h:252
Float_t GetWWPitch(Int_t isector=0) const
Definition: AliTPCParam.h:283
void AdjustCosSin(Int_t isec, Float_t &cos, Float_t &sin) const
Definition: AliTPCParam.h:583
Float_t GetOxyCont() const
Definition: AliTPCParam.h:345
Float_t GetChipGain() const
Definition: AliTPCParam.h:364
void SetGeometryType(Int_t type)
Definition: AliTPCParam.h:133
Float_t fOuterPadPitchWidth
Outer pad pitch width.
Definition: AliTPCParam.h:466
Int_t GetNPads(Int_t isector, Int_t irow) const
Definition: AliTPCParam.h:318
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:276
Bool_t IsGeoRead()
Definition: AliTPCParam.h:333
Float_t GetInnerAngleShift() const
Float_t GetInnerOffWire() const
Definition: AliTPCParam.h:272
Int_t GetNPadsUp(Int_t irow) const
UShort_t GetNTBinsBeforeL1() const
Definition: AliTPCParam.h:399
Int_t GetNOuterSector() const
Definition: AliTPCParam.h:261
Float_t fOuter1PadPitchLength
Outer pad pitch length.
Definition: AliTPCParam.h:464
void SetOuterPadPitchWidth(Float_t PadPitchWidth)
Definition: AliTPCParam.h:167
Int_t fMaxTBin
maximum time bin number
Definition: AliTPCParam.h:519
void SetNCrossRows(Int_t rows)
Definition: AliTPCParam.h:172
Float_t GetOuterFrameSpace() const
Definition: AliTPCParam.h:253
Int_t fNOuterSector
number of outer sectors -calculated
Definition: AliTPCParam.h:420
void SetRowNUp1(Int_t NRowUp1)
Definition: AliTPCParam.h:138
void SetBetheBlochMC(TVectorD *v)
Definition: AliTPCParam.h:204
void SetADCDynRange(Float_t adcdynrange)
Definition: AliTPCParam.h:225
Float_t fRInnerFirstWire
position of the first wire -calculated
Definition: AliTPCParam.h:447
void Transform2to1(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:636
Float_t fInnerPadWidth
Inner pad width.
Definition: AliTPCParam.h:463
Float_t GetInnerWireMount() const
Definition: AliTPCParam.h:254
Float_t GetInnerRadiusUp() const
Definition: AliTPCParam.h:249
Int_t fNRowLow
number of pad rows per low sector -set
Definition: AliTPCParam.h:473
virtual ~AliTPCParam()
void SetInnerWireMount(Float_t fmount)
Definition: AliTPCParam.h:130
class TVectorT< Double_t > TVectorD
Double_t GetUpMaxY(Int_t irow) const
Definition: AliTPCParam.h:108
Float_t GetOuterPadPitchWidth() const
Definition: AliTPCParam.h:294
void SetOuter2NWire(Int_t nWires)
Definition: AliTPCParam.h:148
Float_t fInnerRadiusLow
lower radius of inner sector-IP
Definition: AliTPCParam.h:407
void SetOuterPadWidth(Float_t PadWidth)
Definition: AliTPCParam.h:170
Float_t GetNTBinsL1() const
Definition: AliTPCParam.h:400
Float_t GetZLength(Int_t sector=0) const
Definition: AliTPCParam.h:841
void SetUseGlitchFilter(Bool_t use)
Definition: AliTPCParam.h:226
void SetADCSat(Int_t adcsat)
Definition: AliTPCParam.h:224
Float_t fZLength
Definition: AliTPCParam.h:422
void SetNtot(Float_t ntot)
Definition: AliTPCParam.h:195
void SetROuterFirstWire(Float_t firstWire)
Definition: AliTPCParam.h:156
Int_t fNRowUp1
number of short pad rows per sector up -set
Definition: AliTPCParam.h:474
Int_t GetOuterDummyWire() const
Definition: AliTPCParam.h:278
void Transform3to4(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:699
void SetEend(Float_t end)
Definition: AliTPCParam.h:198
Float_t fComposition[6]
Definition: AliTPCParam.h:504
Float_t fOuterRadiusUp
upper radius of outer sector-IP
Definition: AliTPCParam.h:409
Float_t GetPadRowRadii(Int_t isec, Int_t irow) const
Definition: AliTPCParam.h:313
Float_t GetInnerWWPitch() const
Definition: AliTPCParam.h:270
Float_t GetAttCoef() const
Definition: AliTPCParam.h:344
Float_t fGasGain
gas gain constant
Definition: AliTPCParam.h:489
void Transform8to6(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:825
Float_t GetNtot() const
Definition: AliTPCParam.h:351
Float_t GetExp() const
Definition: AliTPCParam.h:353
Float_t GetOuter1PadPitchLength() const
Definition: AliTPCParam.h:292
Float_t fOuter2PadPitchLength
Outer pad pitch length.
Definition: AliTPCParam.h:465
Int_t GetMaxTBin() const
Definition: AliTPCParam.h:371
void SetWmean(Float_t wmean)
Definition: AliTPCParam.h:196
Float_t fTSigma
width of the Preamp/Shaper function
Definition: AliTPCParam.h:518
void Transform1to2(Float_t *xyz, Int_t *index) const
Definition: AliTPCParam.h:617
Int_t fZeroSup
zero suppresion constant
Definition: AliTPCParam.h:512
virtual void XYZtoCRXYZ(Float_t *, Int_t &, Int_t &, Int_t) const
Definition: AliTPCParam.h:75
Float_t GetInnerPadPitchWidth() const
Definition: AliTPCParam.h:289
Bool_t fBMWPCReadout
indicate wire readout - kTRUE or GEM readout -kFALSE
Definition: AliTPCParam.h:470
void SetComposition(Float_t c1, Float_t c2, Float_t c3, Float_t c4, Float_t c5, Float_t c6)
Definition: AliTPCParam.h:187
TVectorD * GetBetheBlochParametersMC()
Definition: AliTPCParam.h:356
void SetInnerOffWire(Float_t offset)
Definition: AliTPCParam.h:146
Int_t fNRowUp2
number of long pad rows per sector up -set
Definition: AliTPCParam.h:475
Float_t fVoltageDipScanPeriod
scanning period to detect a high volrage dip: event time stamp +- fVoltageDipScanPeriod [sec] ...
Definition: AliTPCParam.h:534
Int_t GetNInnerSector() const
Definition: AliTPCParam.h:260
Float_t GetRInnerLastWire() const
Definition: AliTPCParam.h:274
Int_t GetNRowLow() const
Bool_t fUseGlitchFilter
use the glitch filter to suppress single digits above threshold
Definition: AliTPCParam.h:524
void SetFpot(Float_t fpot)
Definition: AliTPCParam.h:193
Float_t * GetComposition()
Definition: AliTPCParam.h:348
Int_t fNCrossRows
number of rows to crostalk calculation
Definition: AliTPCParam.h:471
void SetOuter2PadPitchLength(Float_t PadPitchLength)
Definition: AliTPCParam.h:166
void SetMaxDipVoltage(Float_t voltage)
Definition: AliTPCParam.h:233
void SetInnerRadiusUp(Float_t InnerRadiusUp)
Definition: AliTPCParam.h:124
Int_t fNtRows
total number of rows in TPC -calculated
Definition: AliTPCParam.h:477
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:291