Added function Deg2Raw
[u/mrichter/AliRoot.git] / HLT / src / AliL3Transform.h
CommitLineData
108615fc 1#ifndef ALIL3TRANSFORM_H
2#define ALIL3TRANSFORM_H
3
108615fc 4#include "AliL3RootTypes.h"
108615fc 5
6class 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 &sector, 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