Correct sign for calculated b_y (outside measured region).
[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(const AliFieldMap *bFieldMap,Double_t driftVelocity,
11                  Int_t n=100);
12   AliTPCExBExact(const AliMagF *bField,Double_t driftVelocity,Int_t n=100,
13                  Int_t nx=100,Int_t ny=100,Int_t nz=100);
14   virtual ~AliTPCExBExact();
15   virtual void Correct(const Double_t *position,Double_t *corrected);
16   void TestThisBeautifulObject(const char* fileName);
17 private:
18   AliTPCExBExact& operator=(const AliTPCExBExact&); // don't assign me
19   AliTPCExBExact(const AliTPCExBExact&); // don't copy me
20   void CreateLookupTable();
21   void GetE(Double_t *E,const Double_t *x) const;
22   void GetB(Double_t *B,const Double_t *x) const;
23   void Motion(const Double_t *x,Double_t t,Double_t *dxdt) const;
24   void CalculateDistortion(const Double_t *x,Double_t *dist) const;
25   void DGLStep(Double_t *x,Double_t t,Double_t h) const;
26   const AliFieldMap *fkMap; // the magnetic field map as supplied by the user
27   const AliMagF *fkField;   // the magnetic field as supplied by the user
28   Int_t fkN;       // max number of integration steps
29   Int_t fkNX;      // field mesh points in x direction
30   Int_t fkNY;      // field mesh points in y direction
31   Int_t fkNZ;      // field mesh points in z direction
32   Double_t fkXMin; // the first grid point in x direction
33   Double_t fkXMax; // the last grid point in x direction
34   Double_t fkYMin; // the first grid point in y direction
35   Double_t fkYMax; // the last grid point in y direction
36   Double_t fkZMin; // the first grid point in z direction
37   Double_t fkZMax; // the last grid point in z direction
38   Double_t *fLook; // the great lookup table
39   static const Double_t fgkEM; // elementary charge over electron mass (C/kg)
40   static const Double_t fgkDriftField; // the TPC drift field (V/m) (modulus)
41
42   ClassDef(AliTPCExBExact,1)
43 };
44
45 #endif