7 enum Field_t {Undef=1, Const=1, ConMesh=2};
9 class AliMagF : public TNamed {
12 Int_t fMap; // Field Map identifier
13 Int_t fType; // Mag Field type
14 Int_t fInteg; // Integration method as indicated in Geant
15 Float_t fFactor; // Multiplicative factor
16 Float_t fMax; // Max Field as indicated in Geant
20 AliMagF(const char *name, const char *title, const Int_t integ, const Int_t map,
21 const Float_t factor, const Float_t fmax);
23 virtual void Field(Float_t *x, Float_t *b);
24 virtual Int_t Type() {return fType;}
25 virtual Float_t Max() const {return fMax;}
26 virtual Int_t Map() const {return fMap;}
27 virtual Int_t Integ() const {return fInteg;}
28 virtual Float_t Factor() const {return fFactor;}
29 virtual void ReadField() {}
31 ClassDef(AliMagF,1) //Base class for all Alice MagField
34 class AliMagFC : public AliMagF
36 //Alice Constant Magnetic Field
41 AliMagFC(const char *name, const char *title, const Int_t integ, const Int_t map,
42 const Float_t factor, const Float_t fmax);
43 virtual ~AliMagFC() {}
44 virtual void Field(Float_t *x, Float_t *b);
45 virtual void ReadField() {}
47 ClassDef(AliMagFC,1) //Class for all Alice Constant MagField
50 class AliMagFCM : public AliMagF
52 //Alice Magnetic Field with constan mesh
55 Float_t fXbeg; // Start of mesh in x
56 Float_t fYbeg; // Start of mesh in y
57 Float_t fZbeg; // Start of mesh in z
58 Float_t fXdel; // Mesh step in x
59 Float_t fYdel; // Mesh step in y
60 Float_t fZdel; // Mesh step in z
61 Double_t fXdeli; // Inverse of Mesh step in x
62 Double_t fYdeli; // Inverse of Mesh step in y
63 Double_t fZdeli; // Inverse of Mesh step in z
64 Int_t fXn; // Number of mesh points in x
65 Int_t fYn; // Number of mesh points in y
66 Int_t fZn; // Number of mesh points in z
67 TVector *fB; // Field map
70 AliMagFCM(const char *name, const char *title, const Int_t integ, const Int_t map,
71 const Float_t factor, const Float_t fmax);
72 virtual ~AliMagFCM() {delete fB;}
73 virtual void Field(Float_t *x, Float_t *b);
74 virtual void ReadField();
76 inline Float_t Bx(const Int_t ix, const Int_t iy, const Int_t iz) {
77 return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix));
79 inline Float_t By(const Int_t ix, const Int_t iy, const Int_t iz) {
80 return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+1);
82 inline Float_t Bz(const Int_t ix, const Int_t iy, const Int_t iz) {
83 return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+2);
86 ClassDef(AliMagFCM,1) //Class for all Alice MagField with Constant Mesh