]>
Commit | Line | Data |
---|---|---|
94685752 | 1 | #ifndef ALITPCTRANSFORMATION_H |
2 | #define ALITPCTRANSFORMATION_H | |
3 | ||
4 | #include "TNamed.h" | |
5 | #include "TMatrixD.h" | |
6 | #include "TVectorD.h" | |
7 | #include "TObjArray.h" | |
8 | class TTreeSRedirector; | |
9 | class AliTrackPointArray; | |
10 | class AliTrackPoint; | |
11 | class TFormula; | |
12 | class TBits; | |
13 | class TString; | |
14 | ||
15 | class AliTPCTransformation: public TNamed{ | |
16 | public: | |
17 | typedef Double_t (*GenFuncG)(const Double_t*,const Double_t*); | |
18 | AliTPCTransformation(); | |
6d438146 | 19 | AliTPCTransformation(const char *name,TBits *mask, const char *fx, const char *fy, const char *fz, Int_t coord); |
20 | AliTPCTransformation(const AliTPCTransformation&trafo); | |
21 | ~AliTPCTransformation(); | |
22 | // | |
e55e5512 | 23 | virtual Double_t GetDeltaXYZ(Int_t coord, Int_t volID, Double_t param, Double_t x, Double_t y, Double_t z); |
6d438146 | 24 | void SetParams(Double_t param, Double_t sigma, Double_t sigma2Time, TVectorD* fixedParams); |
94685752 | 25 | Bool_t Init(); |
0e9efcbe | 26 | void SetActive(Bool_t flag){ fIsActive = flag;} |
27 | Bool_t IsActive(){return fIsActive;} | |
94685752 | 28 | // |
6d438146 | 29 | // |
94685752 | 30 | static TBits * BitsSide(Bool_t aside); |
31 | static TBits * BitsAll(); | |
94685752 | 32 | static void RegisterFormula(const char * name, GenFuncG formula); |
33 | static AliTPCTransformation::GenFuncG FindFormula(const char * name); | |
34 | static Double_t Eval(const char * name, const Double_t*x,const Double_t*par); | |
35 | public: | |
36 | // | |
37 | TString * fNameX; // x formula | |
38 | TString * fNameY; // y formula | |
39 | TString * fNameZ; // z formula | |
40 | // | |
41 | TBits * fBitMask; // bitmaps - transformation only for specified volID | |
42 | Int_t fCoordSystem; // coord system of output deltas | |
43 | Double_t fParam; // free parameter of transformation | |
44 | Double_t fSigma; // error of the parameter | |
90a856f9 | 45 | Double_t fSigmaMax; // maximal sigma (Not allowed to increase in propagate time by bigger factor) |
6d438146 | 46 | Double_t fSigma2Time; // change of the error in time (per hour) - (For kalman filter) |
47 | TVectorD *fFixedParam; // fixed parameters of tranformation | |
0e9efcbe | 48 | Bool_t fIsActive; // switch - is transformation active |
94685752 | 49 | // |
50 | // predefined formulas | |
51 | // | |
52 | static Int_t BuildBasicFormulas(); //build list of basic formulas | |
53 | static Double_t TPCscalingRPol(Double_t *xyz, Double_t * param); | |
1bc126e3 | 54 | static Double_t TPCscalingZDrift(Double_t *xyz, Double_t * param); |
55 | static Double_t TPCscalingZDriftGy(Double_t *xyz, Double_t * param); | |
56 | static Double_t TPCscalingZDriftT0(Double_t *xyz, Double_t * param); | |
94685752 | 57 | static Double_t TPCscalingPhiLocal(Double_t *xyz, Double_t * param); |
1bc126e3 | 58 | static Double_t TPClocalRPhiEdge(Double_t *xyz, Double_t * param); |
0e9efcbe | 59 | // |
60 | // TPC Field cage + ROC misalingment induced distortion | |
61 | // | |
6d438146 | 62 | static Double_t TPCscalingRIFC(Double_t *xyz, Double_t * param); // inner field cage r distorion |
63 | static Double_t TPCscalingROFC(Double_t *xyz, Double_t * param); // outer field cage r distorion | |
87224220 | 64 | // |
65 | // TPC field cage + ROC misalignemnt induced distortion | |
66 | // | |
67 | static Double_t TPCdeltaFCROC(Double_t *xyz, Double_t * param); | |
68 | static Double_t TPCdeltaFCCE(Double_t *xyz, Double_t * param); | |
69 | ||
94685752 | 70 | // |
0e9efcbe | 71 | // TPC local misalignment |
72 | // | |
73 | static Double_t TPClocaldLxdGX(Double_t *xyz, Double_t * param); | |
74 | static Double_t TPClocaldLxdGY(Double_t *xyz, Double_t * param); | |
75 | static Double_t TPClocaldLydGX(Double_t *xyz, Double_t * param); | |
76 | static Double_t TPClocaldLydGY(Double_t *xyz, Double_t * param); | |
3649eec1 | 77 | static Double_t TPClocaldRzdGX(Double_t *xyz, Double_t * param); |
78 | static Double_t TPClocaldRzdGY(Double_t *xyz, Double_t * param); | |
79 | ||
0e9efcbe | 80 | // |
81 | // TPC quadrant misalignment | |
82 | // | |
83 | // static Double_t TPCQuadrantDr(Double_t *xyz, Double_t * param){return 0;} | |
84 | //static Double_t TPCQuadrantDrphi(Double_t *xyz, Double_t * param){return 0;} | |
85 | // | |
86 | // Z shift - | |
87 | // | |
88 | static Double_t TPCDeltaZ(Double_t *xyz, Double_t * param); | |
89 | static Double_t TPCDeltaZMediumLong(Double_t *xyz, Double_t * param); | |
90 | static Double_t TPCTiltingZ(Double_t *xyz, Double_t * param); | |
91 | // | |
94685752 | 92 | Bool_t fInit; // initialization flag |
93 | GenFuncG fFormulaX; //! x formula | |
94 | GenFuncG fFormulaY; //! y formula | |
95 | GenFuncG fFormulaZ; //! z formula | |
96 | static GenFuncG fgFormulas[10000]; //! array of pointers to formula | |
97 | static TObjArray* fgFormulasName; //! array of formalas name | |
98 | private: | |
e55e5512 | 99 | AliTPCTransformation &operator=(const AliTPCTransformation&); // not implemented |
94685752 | 100 | |
90a856f9 | 101 | ClassDef(AliTPCTransformation,2); |
94685752 | 102 | }; |
103 | ||
104 | #endif | |
105 |