Moved old AliMagFCheb to AliMagF, small fixes/optimizations in field classes
[u/mrichter/AliRoot.git] / TPC / AliTPCExBExact.h
CommitLineData
cf585711 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
faf93237 10
11#include "AliTPCExB.h"
cf585711 12
13class AliFieldMap;
14class AliMagF;
faf93237 15
16class AliTPCExBExact:public AliTPCExB {
17public:
481f877b 18 AliTPCExBExact(); // just for the I/O stuff
faf93237 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,
481f877b 22 Int_t nx=30,Int_t ny=30,Int_t nz=100);
faf93237 23 virtual ~AliTPCExBExact();
24 virtual void Correct(const Double_t *position,Double_t *corrected);
481f877b 25 void TestThisBeautifulObject(const AliFieldMap *bFieldMap,
26 const char* fileName);
27 void TestThisBeautifulObject(const AliMagF *bField,const char* fileName);
28protected:
29 Double_t fDriftVelocity; // The electron drift velocity.
faf93237 30private:
31 AliTPCExBExact& operator=(const AliTPCExBExact&); // don't assign me
32 AliTPCExBExact(const AliTPCExBExact&); // don't copy me
481f877b 33 void TestThisBeautifulObjectGeneric(const char* fileName);
faf93237 34 void CreateLookupTable();
cf585711 35 void GetE(Double_t *e,const Double_t *x) const;
36 void GetB(Double_t *b,const Double_t *x) const;
faf93237 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;
481f877b 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)
faf93237 56
57 ClassDef(AliTPCExBExact,1)
58};
59
60#endif