]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCExBExact.h
For the THnSparse data members limit the statistic in the merging
[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 AliMagF;
14
15 class AliTPCExBExact:public AliTPCExB  {
16 public:
17   AliTPCExBExact(); // just for the I/O stuff
18   //AliTPCExBExact(const AliMagF *bFieldMap,Double_t driftVelocity,Int_t n=100);
19   AliTPCExBExact(const AliMagF *bField,Double_t driftVelocity,Int_t n=100,
20                  Int_t nx=30,Int_t ny=30,Int_t nz=100);
21   virtual ~AliTPCExBExact();
22   virtual void Correct(const Double_t *position,Double_t *corrected);
23   //void TestThisBeautifulObject(const AliFieldMap *bFieldMap,const char* fileName);
24   void TestThisBeautifulObject(const AliMagF *bField,const char* fileName);
25 protected:
26   Double_t fDriftVelocity; // The electron drift velocity.
27 private:
28   AliTPCExBExact& operator=(const AliTPCExBExact&); // don't assign me
29   AliTPCExBExact(const AliTPCExBExact&); // don't copy me
30   void TestThisBeautifulObjectGeneric(const char* fileName);
31   void CreateLookupTable();
32   void GetE(Double_t *e,const Double_t *x) const;
33   void GetB(Double_t *b,const Double_t *x) const;
34   void Motion(const Double_t *x,Double_t t,Double_t *dxdt) const;
35   void CalculateDistortion(const Double_t *x,Double_t *dist) const;
36   void DGLStep(Double_t *x,Double_t t,Double_t h) const;
37   //const AliFieldMap *fkMap; //! the magnetic field map as supplied by the user
38   const AliMagF *fkField;   //! the magnetic field as supplied by the user
39   Int_t fkN;        // max number of integration steps
40   Int_t fkNX;       // field mesh points in x direction
41   Int_t fkNY;       // field mesh points in y direction
42   Int_t fkNZ;       // field mesh points in z direction
43   Double_t fkXMin;  // the first grid point in x direction
44   Double_t fkXMax;  // the last grid point in x direction
45   Double_t fkYMin;  // the first grid point in y direction
46   Double_t fkYMax;  // the last grid point in y direction
47   Double_t fkZMin;  // the first grid point in z direction
48   Double_t fkZMax;  // the last grid point in z direction
49   Int_t fkNLook;    // size of the lookup table
50   Double_t *fkLook; //[fkNLook] the great lookup table
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   ClassDef(AliTPCExBExact,1)
55 };
56
57 #endif