]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliMagF.h
Correct normalisation factor for TPC pads.
[u/mrichter/AliRoot.git] / STEER / AliMagF.h
CommitLineData
fe4da5cc 1#ifndef AliMagF_H
2#define AliMagF_H
3
4#include "TNamed.h"
5#include "TVector.h"
6
7enum Field_t {Undef=1, Const=1, ConMesh=2};
8
9class AliMagF : public TNamed {
10
11protected:
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
17
18public:
19 AliMagF(){}
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);
22 virtual ~AliMagF() {}
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() {}
30
31 ClassDef(AliMagF,1) //Base class for all Alice MagField
32};
33
34class AliMagFC : public AliMagF
35{
36 //Alice Constant Magnetic Field
37private:
38
39public:
40 AliMagFC(){}
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() {}
46
47 ClassDef(AliMagFC,1) //Class for all Alice Constant MagField
48};
49
50class AliMagFCM : public AliMagF
51{
52 //Alice Magnetic Field with constan mesh
53protected:
54
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
68public:
69 AliMagFCM(){}
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();
75
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));
78 }
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);
81 }
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);
84 }
85
86 ClassDef(AliMagFCM,1) //Class for all Alice MagField with Constant Mesh
87};
88
89#endif