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