]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliMagFDM.h
Use new naming conventions from QuadSet.
[u/mrichter/AliRoot.git] / STEER / AliMagFDM.h
1 #ifndef ALIMAGFDM_H
2 #define ALIMAGFDM_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //   Field with Magnetic Field map
10 //   Used by AliRun class
11 //   Author:
12 //-------------------------------------------------------------------------
13
14 #include "AliMagFC.h"
15 //
16 class AliMagFDM : public AliMagFC
17 {
18 //Alice Magnetic Field:Magnetic field map from IP to muon filter for Muon arm
19
20 public:
21   AliMagFDM();
22   AliMagFDM(const char *name, const char *title, Int_t integ,
23             Float_t factor, Float_t fmax);
24   virtual ~AliMagFDM(){} 
25   virtual void Field(Float_t *x, Float_t *b) const;
26   virtual void ReadField(); 
27   virtual void SetSolenoidField(Float_t field = 2.) {fSolenoid = field;}
28   virtual Float_t SolenoidField() const {
29      return -Factor()*fSolenoid;
30   }
31   Int_t FZ(Double_t u, const Float_t *Ar, Float_t du, Int_t ki, Int_t nu) const;
32   Double_t Ba(Int_t kai, Double_t za1, Double_t za2, Double_t al1, Double_t al2, Double_t al3, Int_t ka, Int_t ma) const;
33   Double_t Bb(Double_t z1, Double_t z2, Double_t y1, Double_t y2, Double_t x1, Double_t x2, Int_t kvr, Int_t k, Int_t l, Int_t m) const; 
34
35
36 protected:
37
38 //
39   Float_t fSolenoid; // Solenoid Field Strength
40   Int_t   fInd;      // Character number of validity Map region
41
42   Float_t fZmin;  // Start of the cartesian  part  of MAP in z
43   Float_t fZmax;  // End of Map in z   
44   Float_t fYmax;  // Start of the cartesian  part  of MAP in y
45   Float_t fYmin;  // End  of the cartesian  part  of MAP in y
46   Float_t fZpmx;  // End of the polar  part  of MAP in z
47   Float_t fZpmn;  // Start of the polar  part  of MAP in z
48   Float_t fRmax;  // Maximal radius of the polar  part  of MAP 
49   Float_t fRmin;  // Minimal radius of the polar  part  of MAP  
50               
51
52   Float_t    fXdel;  //  step in x - cartesian  part  of MAP
53   Float_t    fYdel;  //  step in y - cartesian  part  of MAP
54   Float_t    fZdel;  //  step in z - cartesian  part  of MAP
55   
56   Float_t    fRdel;  //  step in r - polar  part  of MAP
57   Float_t    fPhid;  //  step in Phi - polar  part  of MAP
58   Float_t    fZpdl;  //  step in z - polar  part  of MAP 
59   
60   Float_t    fCx1;   // Field constant
61   Float_t    fCx2;   // Field constant
62   Float_t    fAx1;   // Field constant
63   Float_t    fAx2;   // Field constant
64    
65   Float_t fZc[81];  // z coordinates in cartesian  part
66   Float_t fY[81];   // y coordinates in cartesian  part 
67   Float_t fBcx[81][81][44]; // Bx array for cartesian  part
68   Float_t fBcy[81][81][44]; // By array for cartesian  part
69   Float_t fBcz[81][81][44]; // Bz array for cartesian  part
70
71   Float_t  fZp[51];  // z coordinates in polar  part
72   Float_t  fR[10];   // r coordinates in polar  part  
73   Float_t  fPhi[33]; // Phi coordinates in polar  part
74
75   Float_t  fBpx[51][10][33]; // Bx array for polar  part
76   Float_t  fBpy[51][10][33]; // By array for polar  part
77   Float_t  fBpz[51][10][33]; // Bx array for polar  part 
78   Float_t  fB[2][2][32];     // Limits of field
79   
80   Int_t      fXl;    // Number steps in x for cartesian  part
81   Int_t      fYl;    // Number steps in y  for cartesian  par
82   Int_t      fZl;    // Number steps in z  for cartesian  part
83     
84   Int_t      fRn;    // Number steps in r for polar  part
85   Int_t      fPhin;  // Number steps in Phi for polar  part
86   Int_t      fZpl;   // Number steps in z for polar  part 
87   
88
89   ClassDef(AliMagFDM,1) //Class Magnetic field map from IP till muon filter
90 };
91
92 #endif