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