]>
Commit | Line | Data |
---|---|---|
7d855b04 | 1 | /// \class AliTPCExB |
2 | ||
98a4cc77 | 3 | #ifndef ALITPCEXB_H |
4 | #define ALITPCEXB_H | |
faf93237 | 5 | |
9170bb1b | 6 | class AliMagF; |
481f877b | 7 | #include "TObject.h" |
98a4cc77 | 8 | #include "TVectorDfwd.h" |
faf93237 | 9 | |
481f877b | 10 | class AliTPCExB:public TObject { |
faf93237 | 11 | public: |
9170bb1b | 12 | AliTPCExB(); |
0ffd2ae1 | 13 | AliTPCExB& operator=(const AliTPCExB &exb); |
14 | AliTPCExB(const AliTPCExB& exb); | |
faf93237 | 15 | virtual ~AliTPCExB() {}; |
481f877b | 16 | virtual void Correct(const Double_t *position,Double_t *corrected)=0; |
17 | virtual void CorrectInverse(const Double_t *position,Double_t *corrected) { | |
18 | Correct(position,corrected); | |
19 | for (Int_t i=0;i<3;++i) | |
20 | corrected[i]=position[i]-(corrected[i]-position[i]); | |
21 | } | |
2abfc1e6 | 22 | // |
9170bb1b | 23 | // Test and visualization |
2abfc1e6 | 24 | // |
25 | void TestExB(const char* fileName); | |
3ac615eb | 26 | static Double_t GetDr(Double_t r, Double_t phi, Double_t z, Double_t bz=5); |
27 | static Double_t GetDrphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5); | |
28 | static Double_t GetDphi(Double_t r, Double_t phi, Double_t z, Double_t bz=5); | |
29 | static Double_t GetDz(Double_t r, Double_t phi, Double_t z, Double_t bz=5); | |
2abfc1e6 | 30 | static AliTPCExB* Instance(){return fgInstance;} |
98a4cc77 | 31 | static void SetInstance(AliTPCExB *const param){fgInstance = param;} |
9170bb1b | 32 | // |
33 | // Mag field scans | |
34 | // | |
35 | static void RegisterField(Int_t index, AliMagF * magf); | |
36 | static Double_t GetBx(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
37 | static Double_t GetBy(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
38 | static Double_t GetBz(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
39 | static Double_t GetBr(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
40 | static Double_t GetBrfi(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
41 | // | |
42 | static Double_t GetBxI(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
43 | static Double_t GetByI(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
44 | static Double_t GetBzI(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
45 | static Double_t GetBrI(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
46 | static Double_t GetBrfiI(Double_t r, Double_t phi, Double_t z,Int_t index=0); | |
47 | // | |
48 | // | |
49 | Double_t Eval(Int_t type, Double_t r, Double_t phi, Double_t z); | |
50 | Double_t SEval(Int_t type, Double_t r, Double_t phi, Double_t z){return Instance()->Eval(type,r,phi,z);} | |
98a4cc77 | 51 | static Double_t EvalMat(const TVectorD &vec, Double_t r, Double_t phi, Double_t z); // evalute parameterization |
7d855b04 | 52 | |
98a4cc77 | 53 | private: |
7d855b04 | 54 | TVectorD * fMatBrBz; ///< param matrix Br/Bz |
55 | TVectorD * fMatBrfiBz; ///< param matrix Br/Bz | |
56 | TVectorD * fMatBrBzI0; ///< param matrix Br/Bz integral z>0 | |
57 | TVectorD * fMatBrBzI1; ///< param matrix Br/Bz integral z<0 | |
58 | TVectorD * fMatBrfiBzI0; ///< param matrix Br/Bz integral z>0 | |
59 | TVectorD * fMatBrfiBzI1; ///< param matrix Br/Bz integral z<0 | |
60 | ||
61 | static AliTPCExB* fgInstance; //!< Instance of this class (singleton implementation) | |
62 | static TObjArray fgArray; //!< array of magnetic fields | |
9170bb1b | 63 | // |
7d855b04 | 64 | /// \cond CLASSIMP |
9732a354 | 65 | ClassDef(AliTPCExB,2) |
7d855b04 | 66 | /// \endcond |
faf93237 | 67 | }; |
68 | ||
69 | #endif |