]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCbase/AliTPCExBExact.h
CMake: Retrieve Git information
[u/mrichter/AliRoot.git] / TPC / TPCbase / AliTPCExBExact.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 /// \class AliTPCExBExact
5 /// \brief An exact implementation of the ExB effect.
6
7 #ifndef ALITPCEXBEXACT_H
8 #define ALITPCEXBEXACT_H
9
10 #include "AliTPCExB.h"
11
12 class AliMagF;
13
14 class AliTPCExBExact:public AliTPCExB  {
15 public:
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);
24 protected:
25   Double_t fDriftVelocity; ///< The electron drift velocity.
26 private:
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)
53
54   /// \cond CLASSIMP
55   ClassDef(AliTPCExBExact,1)
56   /// \endcond
57 };
58
59 #endif