]>
Commit | Line | Data |
---|---|---|
faf93237 | 1 | #ifndef ALITPC_EXB |
2 | #define ALITPC_EXB | |
3 | ||
9170bb1b | 4 | class AliMagF; |
481f877b | 5 | #include "TObject.h" |
9170bb1b | 6 | #include "TVectorD.h" |
faf93237 | 7 | |
481f877b | 8 | class AliTPCExB:public TObject { |
faf93237 | 9 | public: |
9170bb1b | 10 | AliTPCExB(); |
faf93237 | 11 | virtual ~AliTPCExB() {}; |
481f877b | 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]); | |
17 | } | |
2abfc1e6 | 18 | // |
9170bb1b | 19 | // Test and visualization |
2abfc1e6 | 20 | // |
21 | void TestExB(const char* fileName); | |
3ac615eb | 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); | |
2abfc1e6 | 26 | static AliTPCExB* Instance(){return fgInstance;} |
27 | static void SetInstance(AliTPCExB*param){fgInstance = param;} | |
9170bb1b | 28 | // |
29 | // Mag field scans | |
30 | // | |
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); | |
37 | // | |
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); | |
43 | // | |
44 | // | |
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 | |
48 | ||
49 | public: | |
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 | |
12ed89e4 | 56 | AliTPCExB& operator=(const AliTPCExB &/*exb*/){ return *this;} |
9170bb1b | 57 | |
58 | private: | |
59 | static AliTPCExB* fgInstance; //! Instance of this class (singleton implementation) | |
60 | static TObjArray fgArray; //! array of magnetic fields | |
61 | // | |
9732a354 | 62 | ClassDef(AliTPCExB,2) |
faf93237 | 63 | }; |
64 | ||
65 | #endif |