]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMagF.h
Using AliMpDDLStore::GetBusPatchId instead of static arrays (Christian)
[u/mrichter/AliRoot.git] / STEER / AliMagF.h
index 2a0c9f08185a06756f6c3bf8e057aac1f3a2018a..a6a923d54ca10dba68150d655a44d3998e1705ea 100644 (file)
@@ -5,6 +5,12 @@
 
 /* $Id$ */
 
+//----------------------------------------------------------------------
+// Basic magnetic field class
+// Used in all the detectors, and also in the traking classes
+// Author:
+//----------------------------------------------------------------------
+
 #include "TNamed.h"
 
 enum Field_t {kUndef=1, kConst=1, kConMesh=2, kDipoMap=3};
@@ -12,53 +18,30 @@ enum Field_t {kUndef=1, kConst=1, kConMesh=2, kDipoMap=3};
 class AliMagF : public TNamed {
 
 public:
-  AliMagF(){}
-  AliMagF(const char *name, const char *title, const Int_t integ, 
-         const Float_t factor = 1., const Float_t fmax = 10.);
+  AliMagF();
+  AliMagF(const char *name, const char *title, Int_t integ, 
+         Float_t factor = 1., Float_t fmax = 10.);
   virtual ~AliMagF() {}
-  virtual void Field(Float_t *x, Float_t *b);
+  virtual void Field(Float_t *x, Float_t *b) const;
   virtual Int_t Type() const {return fType;}
   virtual Float_t Max() const {return fMax;}
   virtual Int_t Map() const {return fMap;}
   virtual Int_t Integ() const {return fInteg;}
+  virtual Int_t PrecInteg() const {return fPrecInteg;}  
   virtual Float_t Factor() const {return fFactor;}
   virtual void ReadField() {}
-  
-protected:
-  Int_t     fMap;    // Field Map identifier
-  Int_t     fType;   // Mag Field type
-  Int_t     fInteg;  // Integration method as indicated in Geant
-  Float_t   fFactor; // Multiplicative factor
-  Float_t   fMax;    // Max Field as indicated in Geant
-
-  ClassDef(AliMagF,1)  //Base class for all Alice MagField
+  virtual Float_t SolenoidField() const {return 2.;}
+  virtual void SetPrecInteg(Int_t integ) {fPrecInteg = integ;}
+  static void  SetReadField(Bool_t flag = kTRUE) {fgReadField = flag;}
+ protected:
+  Int_t     fMap;       // Field Map identifier
+  Int_t     fType;      // Mag Field type
+  Int_t     fInteg;     // Default integration method as indicated in Geant
+  Int_t     fPrecInteg; // Alternative integration method, e.g. for higher precision
+  Float_t   fFactor;    // Multiplicative factor
+  Float_t   fMax;       // Max Field as indicated in Geant
+  static  Bool_t    fgReadField;  // Flag for reading the field from file (if available) 
+  ClassDef(AliMagF,4)  //Base class for all Alice MagField
 };
 
-//ZDC part -------------------------------------------------------------------
-
-  const Float_t kG1=20.03;
-  const Float_t kFDIP=-37.34;
-  const Float_t kFDIMU=6.;
-  const Float_t kFCORN2=-9.4;
-//
-// ZBEG       Beginning of the inner triplet
-// D1BEG      Beginning of separator dipole 1
-// D2BEG      Beginning of separator dipole 2
-// CORBEG     Corrector dipole beginning (because of dimuon arm)
-//
-  const Float_t kCORBEG2=19216.,kCOREND2=kCORBEG2+170., kCOR2RA2=4.5*4.5;
-//
-  const Float_t kZBEG=2300.;
-  const Float_t kZ1BEG=kZBEG+   0.,kZ1END=kZ1BEG+630.,kZ1RA2=3.5*3.5;
-  const Float_t kZ2BEG=kZBEG+ 880.,kZ2END=kZ2BEG+550.,kZ2RA2=3.5*3.5;
-  const Float_t kZ3BEG=kZBEG+1530.,kZ3END=kZ3BEG+550.,kZ3RA2=3.5*3.5;
-  const Float_t kZ4BEG=kZBEG+2430.,kZ4END=kZ4BEG+630.,kZ4RA2=3.5*3.5;
-  const Float_t kD1BEG=5838.3    ,kD1END=kD1BEG+945.,kD1RA2=4.5*4.5;
-  const Float_t kD2BEG=12147.6   ,kD2END=kD2BEG+945.,kD2RA2=4.5*4.5;
-//
-  const Float_t kXCEN1D2=-9.7    ,kYCEN1D2=0.;
-  const Float_t kXCEN2D2=9.7     ,kYCEN2D2=0.;
-
-//ZDC part -------------------------------------------------------------------
-
 #endif