Line data Source code
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 24 : ClassDef(AliTPCExBExact,1)
56 : /// \endcond
57 : };
58 :
59 : #endif
|