]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMagF.h
Conding violations fixed. The code is now included in libSTEER (Mikolaj)
[u/mrichter/AliRoot.git] / STEER / AliMagF.h
index 15b7001671a0c455a039201acc70499047757ac7..3344d3a9cfb8a21e7e14170b7f30c09fcb9ffb16 100644 (file)
@@ -5,58 +5,47 @@
 
 /* $Id$ */
 
+//----------------------------------------------------------------------
+// Basic magnetic field class
+// Used in all the detectors, and also in the traking classes
+// Author:
+//----------------------------------------------------------------------
+
 #include "TNamed.h"
-#include "TVector.h"
 
 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 Int_t map, 
-         const Float_t factor, const Float_t fmax);
+  AliMagF();
+  AliMagF(const char *name, const char *title, Int_t integ, 
+         Float_t factor = 1., Float_t fmax = 10.);
+  AliMagF(const AliMagF& maps);
   virtual ~AliMagF() {}
-  virtual void Field(Float_t *x, Float_t *b);
-  virtual Int_t Type() {return fType;}
+  AliMagF& operator=(const AliMagF& rhs);
+  virtual void    Field(Float_t *x, Float_t *b) const;
+  virtual void    GetTPCInt(Float_t *xyz, Float_t *b)        const;
+  virtual void    GetTPCIntCyl(Float_t *rphiz, 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   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 void    ReadField() {}
+  virtual Float_t SolenoidField() const {return 2.;}
+  virtual void    SetPrecInteg(Int_t integ);
+  virtual void    SetReadField(Bool_t flag = kTRUE) {fReadField = 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
+  Bool_t    fReadField; // Flag for reading the field from file (if available) 
+  ClassDef(AliMagF,5)   //Base class for all Alice MagField
 };
 
-//ZDC part -------------------------------------------------------------------
-
-  static const Float_t kG1=20.03;
-  static const Float_t kFDIP=-37.34;
-  static const Float_t kFDIMU=6.;
-  static const Float_t kFCORN=11.72;
-//
-// 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)
-//
-  static const Float_t kCORBEG=1920,kCOREND=kCORBEG+190, kCORRA2=4.5*4.5;
-//
-  static const Float_t kZBEG=2300;
-  static const Float_t kZ1BEG=kZBEG+   0,kZ1END=kZ1BEG+630,kZ1RA2=3.5*3.5;
-  static const Float_t kZ2BEG=kZBEG+ 880,kZ2END=kZ2BEG+550,kZ2RA2=3.5*3.5;
-  static const Float_t kZ3BEG=kZBEG+1530,kZ3END=kZ3BEG+550,kZ3RA2=3.5*3.5;
-  static const Float_t kZ4BEG=kZBEG+2430,kZ4END=kZ4BEG+630,kZ4RA2=3.5*3.5;
-  static const Float_t kD1BEG=5843.5    ,kD1END=kD1BEG+945,kD1RA2=4.5*4.5;
-  static const Float_t kD2BEG=12113.2   ,kD2END=kD2BEG+945,kD2RA2=4.5*.5;
-
-//ZDC part -------------------------------------------------------------------
-
 #endif