]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMagF.h
added the HCAL section and removed obsolete method
[u/mrichter/AliRoot.git] / STEER / AliMagF.h
index 7319a37fd8f24ba106f86f8925559739a9d0fd6e..adf9637ea4072a39119374eae83cc1bfc032ebde 100644 (file)
@@ -1,93 +1,68 @@
-#ifndef AliMagF_H
-#define AliMagF_H
+#ifndef ALIMAGF_H
+#define ALIMAGF_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
 
 #include "TNamed.h"
-#include "TVector.h"
 
-enum Field_t {Undef=1, Const=1, ConMesh=2};
+enum Field_t {kUndef=1, kConst=1, kConMesh=2, kDipoMap=3};
 
 class AliMagF : public TNamed {
 
-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
-
 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, const Int_t integ, 
+         const Float_t factor = 1., const Float_t fmax = 10.);
   virtual ~AliMagF() {}
   virtual void Field(Float_t *x, Float_t *b);
-  virtual Int_t Type() {return fType;}
+  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 Float_t Factor() const {return fFactor;}
   virtual void ReadField() {}
+  virtual void SetDebug(Int_t level=0) {fDebug=level;}
+  virtual Float_t SolenoidField() const {return 2.;}
   
-  ClassDef(AliMagF,1)  //Base class for all Alice MagField
-};
-
-class AliMagFC  : public AliMagF
-{
-  //Alice Constant Magnetic Field
-private:
-
-public:
-  AliMagFC(){}
-  AliMagFC(const char *name, const char *title, const Int_t integ, const Int_t map, 
-          const Float_t factor, const Float_t fmax);
-  virtual ~AliMagFC() {}
-  virtual void Field(Float_t *x, Float_t *b);
-  virtual void ReadField() {}
+  virtual Int_t GetDebug() const {return fDebug;}
   
-  ClassDef(AliMagFC,1)  //Class for all Alice Constant MagField 
+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
+  Int_t     fDebug;  // Debug flag
+
+  ClassDef(AliMagF,1)  //Base class for all Alice MagField
 };
 
-class AliMagFCM : public AliMagF
-{
-  //Alice Magnetic Field with constan mesh
-protected:
+//ZDC part -------------------------------------------------------------------
 
-  Float_t    fXbeg;  // Start of mesh in x
-  Float_t    fYbeg;  // Start of mesh in y
-  Float_t    fZbeg;  // Start of mesh in z
-  Float_t    fXdel;  // Mesh step in x
-  Float_t    fYdel;  // Mesh step in y
-  Float_t    fZdel;  // Mesh step in z
-  Double_t   fXdeli; // Inverse of Mesh step in x
-  Double_t   fYdeli; // Inverse of Mesh step in y
-  Double_t   fZdeli; // Inverse of Mesh step in z
-  Int_t      fXn;    // Number of mesh points in x
-  Int_t      fYn;    // Number of mesh points in y
-  Int_t      fZn;    // Number of mesh points in z
-  TVector   *fB;     // Field map
-public:
-  AliMagFCM(){}
-  AliMagFCM(const char *name, const char *title, const Int_t integ, const Int_t map, 
-          const Float_t factor, const Float_t fmax);
-  virtual ~AliMagFCM() {delete fB;}
-  virtual void Field(Float_t *x, Float_t *b);
-  virtual void ReadField();
+static const Float_t kG1=20.443;
+static const Float_t kFDIP=-37.96;
+static const Float_t kFCORN2=-9.14;
+//
+// 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 kCORBEG2=19216.,kCOREND2=kCORBEG2+170., kCOR2RA2=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=5838.3    ,kD1END=kD1BEG+945.,kD1RA2=4.5*4.5;
+static const Float_t kD2BEG=12147.6   ,kD2END=kD2BEG+945.,kD2RA2=4.5*4.5;
+//
+static const Float_t kXCEN1D2=-9.7    ,kYCEN1D2=0.;
+static const Float_t kXCEN2D2=9.7     ,kYCEN2D2=0.;
 
-  inline Float_t Bx(const Int_t ix, const Int_t iy, const Int_t iz) {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix));
-  }
-  inline Float_t By(const Int_t ix, const Int_t iy, const Int_t iz) {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+1);
-  }
-  inline Float_t Bz(const Int_t ix, const Int_t iy, const Int_t iz) {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+2);
-  }
-  
-  ClassDef(AliMagFCM,1)  //Class for all Alice MagField with Constant Mesh
-};
+//ZDC part -------------------------------------------------------------------
 
 #endif