18ade80f993aed33619bdb027edbaa0ebacf19b9
[u/mrichter/AliRoot.git] / HLT / src / AliL3Transform.h
1 #ifndef ALIL3TRANSFORM_H
2 #define ALIL3TRANSFORM_H
3
4 #include "AliL3RootTypes.h"
5
6 class AliL3Transform {
7
8  private:
9   
10   static Double_t fBField;
11   static Int_t fNTimeBins;
12   static Int_t fNRowLow;
13   static Int_t fNRowUp;
14   static Int_t fNSectorLow;
15   static Int_t fNSectorUp;
16   static Double_t fPadPitchWidthLow;
17   static Double_t fPadPitchWidthUp;
18   static Double_t fZWidth;
19   static Double_t fZSigma;
20   static Int_t fNSector;
21   static Int_t fNSlice;
22   static Int_t fNRow;
23   static Double_t fPi;
24   static Double_t fNRotShift;
25   static Double_t fZLength;
26   static Double_t fZOffset;
27   static Int_t fNPads[176]; //fill this following Init
28   static Double_t fX[176];  //fill this following Init
29   static Int_t fVersion; //flags which version one is using
30   static Int_t fRows[6][2];
31   static Int_t fNRows[6];
32   static Int_t fNPatches;
33
34  public:
35   
36   static void Init(const Char_t* path); //new init for all AliRoot versions
37   
38   static void SetBField(Double_t f) {fBField = f;}
39   static Int_t GetFirstRow(Int_t patch) {return fRows[patch][0];}
40   static Int_t GetLastRow(Int_t patch) {return fRows[patch][1];}
41   static Int_t GetNRows(Int_t patch) {return fNRows[patch];}
42   static Int_t GetNPatches() {return fNPatches;}
43   static Double_t GetBField() {return fBField;}
44   static Double_t Pi() {return fPi;}
45   static Int_t GetVersion(){return fVersion;}
46   static Double_t GetPadPitchWidthLow() {return fPadPitchWidthLow;}
47   static Double_t GetPadPitchWidthUp() {return fPadPitchWidthUp;}
48   static Double_t GetPadPitchWidth(Int_t patch) {if(patch<=2) return fPadPitchWidthLow; else return fPadPitchWidthUp;}
49   static Double_t GetZWidth() {return fZWidth;}
50   static Double_t GetZLength() {return fZLength;}
51   static Double_t GetZOffset() {return fZOffset;}
52   static Int_t GetNSectorLow() {return fNSectorLow;}
53   static Int_t GetNSectorUp() {return fNSectorUp;}
54   
55   static Bool_t Slice2Sector(Int_t slice, Int_t slicerow, Int_t &sector, Int_t &row);
56   static Bool_t Sector2Slice(Int_t &slice, Int_t sector);
57   static Bool_t Sector2Slice(Int_t &slice, Int_t &slicerow, Int_t sector, Int_t row);
58
59   static Int_t GetNPads(Int_t row){return (row<fNRow)?fNPads[row]:0;}
60   static Int_t GetNTimeBins(){return fNTimeBins;}
61   static Double_t Row2X(Int_t slicerow);
62   static Double_t GetMaxY(Int_t slicerow);
63   static Double_t GetEta(Float_t *xyz);
64   static Double_t GetEta(Int_t row, Int_t pad, Int_t time);
65   static Double_t GetPhi(Float_t *xyz);
66
67   static void XYZtoRPhiEta(Float_t *rpe, Float_t *xyz);
68   static void Local2Global(Float_t *xyz, Int_t slice);
69   static void Local2GlobalAngle(Float_t *angle, Int_t slice);
70   static void Global2LocalAngle(Float_t *angle, Int_t slice);
71
72   static void Raw2Local(Float_t *xyz, Int_t sector, Int_t row, Float_t pad, Float_t time);
73   static void Local2Global(Float_t *xyz, Int_t sector, Int_t row);
74   static void Global2Local(Float_t *xyz, Int_t sector, Bool_t isSlice=kFALSE);
75   static void Raw2Global(Float_t *xyz, Int_t sector, Int_t row, Float_t pad, Float_t time);
76   static void Local2Raw(Float_t *xyz, Int_t sector, Int_t row);
77   static void Global2Raw(Float_t *xyz, Int_t sector, Int_t row);
78   
79   ClassDef(AliL3Transform,1) //Transformation class for ALICE TPC
80 };
81 #endif
82
83
84
85
86