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