]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCbase/AliTPCExB.h
doxy: TPC/TPCbase converted
[u/mrichter/AliRoot.git] / TPC / TPCbase / AliTPCExB.h
1 /// \class AliTPCExB
2
3 #ifndef ALITPCEXB_H
4 #define ALITPCEXB_H
5
6 class AliMagF;
7 #include "TObject.h"
8 #include "TVectorDfwd.h"
9
10 class AliTPCExB:public TObject {
11 public:
12   AliTPCExB();
13   AliTPCExB& operator=(const AliTPCExB &exb);
14   AliTPCExB(const AliTPCExB& exb);
15   virtual ~AliTPCExB() {};
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   }
22   //
23   // Test and visualization
24   //
25   void TestExB(const char* fileName);
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);
30   static AliTPCExB*  Instance(){return fgInstance;}
31   static void SetInstance(AliTPCExB *const param){fgInstance = param;}
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);}
51   static Double_t EvalMat(const TVectorD &vec, Double_t r, Double_t phi, Double_t z);     // evalute parameterization
52
53  private:
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
63   //
64   /// \cond CLASSIMP
65   ClassDef(AliTPCExB,2)
66   /// \endcond
67 };
68
69 #endif