8 class AliTPCExB:public TObject {
11 virtual ~AliTPCExB() {};
12 virtual void Correct(const Double_t *position,Double_t *corrected)=0;
13 virtual void CorrectInverse(const Double_t *position,Double_t *corrected) {
14 Correct(position,corrected);
15 for (Int_t i=0;i<3;++i)
16 corrected[i]=position[i]-(corrected[i]-position[i]);
19 // Test and visualization
21 void TestExB(const char* fileName);
22 static Double_t GetDr(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
23 static Double_t GetDrphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
24 static Double_t GetDphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
25 static Double_t GetDz(Double_t r, Double_t phi, Double_t z, Double_t bz=5);
26 static AliTPCExB* Instance(){return fgInstance;}
27 static void SetInstance(AliTPCExB*param){fgInstance = param;}
31 static void RegisterField(Int_t index, AliMagF * magf);
32 static Double_t GetBx(Double_t r, Double_t phi, Double_t z,Int_t index=0);
33 static Double_t GetBy(Double_t r, Double_t phi, Double_t z,Int_t index=0);
34 static Double_t GetBz(Double_t r, Double_t phi, Double_t z,Int_t index=0);
35 static Double_t GetBr(Double_t r, Double_t phi, Double_t z,Int_t index=0);
36 static Double_t GetBrfi(Double_t r, Double_t phi, Double_t z,Int_t index=0);
38 static Double_t GetBxI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
39 static Double_t GetByI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
40 static Double_t GetBzI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
41 static Double_t GetBrI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
42 static Double_t GetBrfiI(Double_t r, Double_t phi, Double_t z,Int_t index=0);
45 Double_t Eval(Int_t type, Double_t r, Double_t phi, Double_t z);
46 Double_t SEval(Int_t type, Double_t r, Double_t phi, Double_t z){return Instance()->Eval(type,r,phi,z);}
47 static Double_t EvalMat(TVectorD &vec, Double_t r, Double_t phi, Double_t z); // evalute parameterization
50 TVectorD * fMatBrBz; //param matrix Br/Bz
51 TVectorD * fMatBrfiBz; //param matrix Br/Bz
52 TVectorD * fMatBrBzI0; //param matrix Br/Bz integral z>0
53 TVectorD * fMatBrBzI1; //param matrix Br/Bz integral z<0
54 TVectorD * fMatBrfiBzI0; //param matrix Br/Bz integral z>0
55 TVectorD * fMatBrfiBzI1; //param matrix Br/Bz integral z<0
58 static AliTPCExB* fgInstance; //! Instance of this class (singleton implementation)
59 static TObjArray fgArray; //! array of magnetic fields