]>
Commit | Line | Data |
---|---|---|
108615fc | 1 | #ifndef ALIL3TRANSFORM_H |
2 | #define ALIL3TRANSFORM_H | |
3 | ||
108615fc | 4 | #include "AliL3RootTypes.h" |
108615fc | 5 | |
6 | class AliL3Transform { | |
494fad94 | 7 | |
108615fc | 8 | private: |
af99f571 | 9 | const static Double_t fBFACT; |
494fad94 | 10 | |
ef79795d | 11 | static Double_t fBField; |
293aee2f | 12 | static Int_t fBFieldFactor; |
494fad94 | 13 | static Int_t fNTimeBins; |
14 | static Int_t fNRowLow; | |
15 | static Int_t fNRowUp; | |
5923e698 | 16 | static Int_t fNRowUp1; |
17 | static Int_t fNRowUp2; | |
494fad94 | 18 | static Int_t fNSectorLow; |
19 | static Int_t fNSectorUp; | |
20 | static Double_t fPadPitchWidthLow; | |
21 | static Double_t fPadPitchWidthUp; | |
22 | static Double_t fZWidth; | |
23 | static Double_t fZSigma; | |
24 | static Int_t fNSector; | |
25 | static Int_t fNSlice; | |
26 | static Int_t fNRow; | |
27 | static Double_t fPi; | |
28 | static Double_t fNRotShift; | |
29 | static Double_t fZLength; | |
30 | static Double_t fZOffset; | |
5923e698 | 31 | static Int_t fNPads[159]; //fill this following Init |
32 | static Double_t fX[159]; //fill this following Init | |
4499ed26 | 33 | static Int_t fVersion; //flags the version |
9ca67380 | 34 | static Int_t fRows[6][2]; |
35 | static Int_t fNRows[6]; | |
36 | static Int_t fNPatches; | |
768861a0 | 37 | static Double_t fDiffT; //Transversal diffusion constant |
38 | static Double_t fDiffL; //Longitudinal diffusion constant | |
39 | static Double_t fAnodeWireSpacing; | |
40 | static Double_t fInnerPadLength; | |
5923e698 | 41 | static Double_t fOuter1PadLength; |
42 | static Double_t fOuter2PadLength; | |
768861a0 | 43 | static Double_t fInnerPRFSigma; |
5923e698 | 44 | static Double_t fOuter1PRFSigma; |
45 | static Double_t fOuter2PRFSigma; | |
768861a0 | 46 | static Double_t fTimeSigma; //Minimal longitudinal width |
6f3df1c8 | 47 | static Int_t fADCSat; |
48 | ||
494fad94 | 49 | public: |
af99f571 | 50 | |
2220326f | 51 | static Bool_t Init(Char_t* path,Bool_t UseAliTPCParam=kFALSE); //init for different AliRoot versions |
52 | static Bool_t MakeInitFile(Char_t *filename,Char_t *path); //create the init file in path | |
53 | static Bool_t ReadInit(Char_t *path); //read it possibly from root file | |
54 | ||
ef79795d | 55 | static void SetBField(Double_t f) {fBField = f;} |
af99f571 | 56 | |
5e0f9911 | 57 | static const Char_t* GetParamName() {return "75x40_100x60_150x60";} |
58 | ||
e376e129 | 59 | static Int_t GetFirstRow(Int_t patch); |
60 | static Int_t GetLastRow(Int_t patch); | |
61 | static Int_t GetNRows(Int_t patch); | |
f500b93b | 62 | static Int_t GetNRows() {return fNRow;} |
9ca67380 | 63 | static Int_t GetNPatches() {return fNPatches;} |
ef79795d | 64 | static Double_t GetBField() {return fBField;} |
af99f571 | 65 | static Double_t GetBFact() {return fBFACT;} |
66 | static Double_t GetBFieldValue() {return (fBField*fBFACT);} | |
3e44d77c | 67 | static Float_t Deg2Rad(Float_t angle) {return angle*fPi/180;} |
9ca67380 | 68 | static Double_t Pi() {return fPi;} |
494fad94 | 69 | static Int_t GetVersion(){return fVersion;} |
70 | static Double_t GetPadPitchWidthLow() {return fPadPitchWidthLow;} | |
71 | static Double_t GetPadPitchWidthUp() {return fPadPitchWidthUp;} | |
6a17f2c9 | 72 | static Double_t GetPadPitchWidth(Int_t patch) {return patch < 2 ? fPadPitchWidthLow : fPadPitchWidthUp;} |
494fad94 | 73 | static Double_t GetZWidth() {return fZWidth;} |
74 | static Double_t GetZLength() {return fZLength;} | |
75 | static Double_t GetZOffset() {return fZOffset;} | |
768861a0 | 76 | static Double_t GetDiffT() {return fDiffT;} |
77 | static Double_t GetDiffL() {return fDiffL;} | |
78 | static Double_t GetAnodeWireSpacing() {return fAnodeWireSpacing;} | |
5923e698 | 79 | static Double_t GetPadLength(Int_t padrow); |
80 | static Double_t GetPRFSigma(Int_t padrow); | |
768861a0 | 81 | static Double_t GetTimeSigma() {return fTimeSigma;} |
6f3df1c8 | 82 | static Int_t GetADCSat() {return fADCSat;} |
494fad94 | 83 | static Int_t GetNSectorLow() {return fNSectorLow;} |
84 | static Int_t GetNSectorUp() {return fNSectorUp;} | |
95a00d93 | 85 | |
494fad94 | 86 | static Bool_t Slice2Sector(Int_t slice, Int_t slicerow, Int_t §or, Int_t &row); |
87 | static Bool_t Sector2Slice(Int_t &slice, Int_t sector); | |
88 | static Bool_t Sector2Slice(Int_t &slice, Int_t &slicerow, Int_t sector, Int_t row); | |
1727f1c9 | 89 | |
494fad94 | 90 | static Int_t GetNPads(Int_t row){return (row<fNRow)?fNPads[row]:0;} |
91 | static Int_t GetNTimeBins(){return fNTimeBins;} | |
92 | static Double_t Row2X(Int_t slicerow); | |
93 | static Double_t GetMaxY(Int_t slicerow); | |
94 | static Double_t GetEta(Float_t *xyz); | |
3ac82106 | 95 | static Double_t GetEta(Int_t slice,Int_t padrow, Int_t pad, Int_t time); |
494fad94 | 96 | static Double_t GetPhi(Float_t *xyz); |
1727f1c9 | 97 | |
494fad94 | 98 | static void XYZtoRPhiEta(Float_t *rpe, Float_t *xyz); |
99 | static void Local2Global(Float_t *xyz, Int_t slice); | |
100 | static void Local2GlobalAngle(Float_t *angle, Int_t slice); | |
101 | static void Global2LocalAngle(Float_t *angle, Int_t slice); | |
108615fc | 102 | |
494fad94 | 103 | static void Raw2Local(Float_t *xyz, Int_t sector, Int_t row, Float_t pad, Float_t time); |
104 | static void Local2Global(Float_t *xyz, Int_t sector, Int_t row); | |
105 | static void Global2Local(Float_t *xyz, Int_t sector, Bool_t isSlice=kFALSE); | |
106 | static void Raw2Global(Float_t *xyz, Int_t sector, Int_t row, Float_t pad, Float_t time); | |
107 | static void Local2Raw(Float_t *xyz, Int_t sector, Int_t row); | |
108 | static void Global2Raw(Float_t *xyz, Int_t sector, Int_t row); | |
108615fc | 109 | |
4499ed26 | 110 | ClassDef(AliL3Transform,1) |
108615fc | 111 | }; |
108615fc | 112 | #endif |