Moved old AliMagFCheb to AliMagF, small fixes/optimizations in field classes
[u/mrichter/AliRoot.git] / STEER / AliMagFC.h
1 #ifndef ALIMAGFC_H
2 #define ALIMAGFC_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 //     Constant magnetic field class
10 //     Used by AliRun class
11 //     Author:
12 //-------------------------------------------------------------------------
13
14 #include "AliMagF.h"
15
16 enum BeamType_t {kBeamTypeAA, kBeamTypepp};
17 class AliMagFC  : public AliMagF
18 {
19   //Alice Constant Magnetic Field
20
21 public:
22   AliMagFC();
23   AliMagFC(const char *name, const char *title, Int_t integ, 
24            Float_t factor, Float_t fmax);
25   virtual ~AliMagFC(){}
26   virtual void Field(const float *x, float *b)      const;
27   virtual void Field(const double *x, double *b)    const;
28   virtual void ReadField() {}
29   virtual void ZDCField(const float *x, float *b)   const;
30   virtual void ZDCField(const double *x, double *b) const;
31   virtual void SetBeamType(BeamType_t type)      {fBeamType    = type;}
32   virtual void SetBeamEnergy(Float_t energy)     {fBeamEnergy  = energy;}
33   virtual void SetCompensatorMagnet(Bool_t flag) {fCompensator = flag;}
34
35 private:
36   Bool_t     fCompensator; // Flag for compensator magnetic field (kTrue -> ON)
37   BeamType_t fBeamType;    // Beam type: A-A (fBeamType=0) or p-p (fBeamType=1)
38   Float_t    fBeamEnergy;  // Beam energy in GeV
39   mutable Float_t    fQuadGradient;// Gradient field for inner triplet quadrupoles
40   mutable Float_t    fDipoleField; // Field value for D1 and D2 dipoles
41   mutable Float_t    fCCorrField;  // Side C 2nd compensator field
42   mutable Float_t    fACorr1Field; // Side A 1st compensator field 
43   mutable Float_t    fACorr2Field; // Side A 2nd compensator field
44   
45   ClassDef(AliMagFC,3)  //Class for all Alice Constant MagField 
46 };
47
48
49 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ZDC part  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50
51 // ************************ LHC optics v6.5 *****************************
52 // ---- Position of the magnetic elements of LHC beam optics ----
53 // -> SIDE C
54 static const Float_t kCCorrBegin = -1972.5, kCCorrEnd = kCCorrBegin - 153., kCCorrSqRadius = 4.5*4.5;
55 //
56 static const Float_t kCTripletBegin  = -2296.5;
57 static const Float_t kCQ1Begin = kCTripletBegin,        kCQ1End = kCQ1Begin-637., kCQ1SqRadius = 3.5*3.5;
58 static const Float_t kCQ2Begin = kCTripletBegin-908.5,  kCQ2End = kCQ2Begin-550., kCQ2SqRadius = 3.5*3.5;
59 static const Float_t kCQ3Begin = kCTripletBegin-1558.5, kCQ3End = kCQ3Begin-550., kCQ3SqRadius = 3.5*3.5;
60 static const Float_t kCQ4Begin = kCTripletBegin-2400.,  kCQ4End = kCQ4Begin-637., kCQ4SqRadius = 3.5*3.5;
61 //
62 static const Float_t kCD1Begin = -5838.3,  kCD1End = kCD1Begin-945., kCD1SqRadius = 4.5*4.5;
63 static const Float_t kCD2Begin = -12167.8, kCD2End = kCD2Begin-945., kCD2SqRadius = 4.5*4.5;
64 static const Float_t kCD2XCentre1 = -9.7;
65 static const Float_t kCD2XCentre2 =  9.7;
66 //
67 // -> SIDE A
68 // NB -> kACorr1Begin = 919. to be checked
69 static const Float_t kACorr1Begin = 919., kACorr1End = kACorr1Begin+260., kCCorr1SqRadius = 4.*4.;
70 static const Float_t kACorr2Begin = 1972.5, kACorr2End = kACorr2Begin+153., kCCorr2SqRadius = 4.5*4.5;
71 static const Float_t kATripletBegin  = 2296.5;
72 static const Float_t kAQ1Begin = kATripletBegin,        kAQ1End = kAQ1Begin+637., kAQ1SqRadius = 3.5*3.5;
73 static const Float_t kAQ2Begin = kATripletBegin+908.5,  kAQ2End = kAQ2Begin+550., kAQ2SqRadius = 3.5*3.5;
74 static const Float_t kAQ3Begin = kATripletBegin+1558.5, kAQ3End = kAQ3Begin+550., kAQ3SqRadius = 3.5*3.5;
75 static const Float_t kAQ4Begin = kATripletBegin+2400.,  kAQ4End = kAQ4Begin+637., kAQ4SqRadius = 3.5*3.5;
76 //
77 static const Float_t kAD1Begin = 5838.3,  kAD1End = kAD1Begin+945., kAD1SqRadius = 3.375*3.375;
78 static const Float_t kAD2Begin = 12167.8, kAD2End = kAD2Begin+945., kAD2SqRadius = 3.75*3.75;
79 static const Float_t kAD2XCentre1 = -9.4;
80 static const Float_t kAD2XCentre2 =  9.4;
81
82 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ZDC part  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83
84 #endif
85