]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCExBExact.h
Using AliGeomManager in the macros (Raffaele)
[u/mrichter/AliRoot.git] / TPC / AliTPCExBExact.h
1 #ifndef ALITPC_EXB_EXACT
2 #define ALITPC_EXB_EXACT
3
4 #include "AliTPCExB.h"
5 #include "AliFieldMap.h"
6 #include "AliMagF.h"
7
8 class AliTPCExBExact:public AliTPCExB  {
9 public:
10   AliTPCExBExact(); // just for the I/O stuff
11   AliTPCExBExact(const AliFieldMap *bFieldMap,Double_t driftVelocity,
12                  Int_t n=100);
13   AliTPCExBExact(const AliMagF *bField,Double_t driftVelocity,Int_t n=100,
14                  Int_t nx=30,Int_t ny=30,Int_t nz=100);
15   virtual ~AliTPCExBExact();
16   virtual void Correct(const Double_t *position,Double_t *corrected);
17   void TestThisBeautifulObject(const AliFieldMap *bFieldMap,
18                                const char* fileName);
19   void TestThisBeautifulObject(const AliMagF *bField,const char* fileName);
20 protected:
21   Double_t fDriftVelocity; // The electron drift velocity.
22 private:
23   AliTPCExBExact& operator=(const AliTPCExBExact&); // don't assign me
24   AliTPCExBExact(const AliTPCExBExact&); // don't copy me
25   void TestThisBeautifulObjectGeneric(const char* fileName);
26   void CreateLookupTable();
27   void GetE(Double_t *E,const Double_t *x) const;
28   void GetB(Double_t *B,const Double_t *x) const;
29   void Motion(const Double_t *x,Double_t t,Double_t *dxdt) const;
30   void CalculateDistortion(const Double_t *x,Double_t *dist) const;
31   void DGLStep(Double_t *x,Double_t t,Double_t h) const;
32   const AliFieldMap *fkMap; //! the magnetic field map as supplied by the user
33   const AliMagF *fkField;   //! the magnetic field as supplied by the user
34   Int_t fkN;        // max number of integration steps
35   Int_t fkNX;       // field mesh points in x direction
36   Int_t fkNY;       // field mesh points in y direction
37   Int_t fkNZ;       // field mesh points in z direction
38   Double_t fkXMin;  // the first grid point in x direction
39   Double_t fkXMax;  // the last grid point in x direction
40   Double_t fkYMin;  // the first grid point in y direction
41   Double_t fkYMax;  // the last grid point in y direction
42   Double_t fkZMin;  // the first grid point in z direction
43   Double_t fkZMax;  // the last grid point in z direction
44   Int_t fkNLook;    // size of the lookup table
45   Double_t *fkLook; //[fkNLook] the great lookup table
46   static const Double_t fgkEM; //! elementary charge over electron mass (C/kg)
47   static const Double_t fgkDriftField; //! the TPC drift field (V/m) (modulus)
48
49   ClassDef(AliTPCExBExact,1)
50 };
51
52 #endif