]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDRun.h
Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliESDRun.h
index 0692b8fb51e98b051e1764f8fb976e25964573d3..28aa63fee2f83218a084751ba4b8ec21728c429b 100644 (file)
 #include <TObjArray.h>
 #include <TString.h>
 
+class TGeoHMatrix;
 class AliESDVertex;
 
 class AliESDRun: public TObject {
 public:
 
+  enum StatusBits {kBInfoStored = BIT(14), kUniformBMap = BIT(15), kConvSqrtSHalfGeV = BIT(16)};
+
   AliESDRun();
   AliESDRun(const AliESDRun& esd);
   AliESDRun& operator=(const AliESDRun& esd);
   virtual void Copy(TObject &obj) const; // Interface for using TOBject::Copy()
+  virtual ~AliESDRun();
 
+  Bool_t  InitMagneticField() const;
   Int_t   GetRunNumber() const {return fRunNumber;}
   void    SetRunNumber(Int_t n) {fRunNumber=n;}
   void    SetMagneticField(Float_t mf){fMagneticField = mf;}
@@ -33,13 +38,23 @@ public:
   void    SetPeriodNumber(Int_t n) {fPeriodNumber=n;}
   void    Reset();
   void    Print(const Option_t *opt=0) const;
-  void SetDiamond(const AliESDVertex *vertex);
+  void    SetDiamond(const AliESDVertex *vertex);
   void    SetTriggerClass(const char*name, Int_t index);
+  void    SetCurrentL3(Float_t cur)    {fCurrentL3 = cur;}
+  void    SetCurrentDip(Float_t cur)   {fCurrentDip = cur;}
+  void    SetBeamEnergy(Float_t be)    {fBeamEnergy = be;}
+  void    SetBeamType(const char* bt)  {fBeamType = bt;}
+  void    SetBeamEnergyIsSqrtSHalfGeV(Bool_t v=kTRUE) {SetBit(kConvSqrtSHalfGeV,v);}
+  void    SetDetectorsInDAQ(UInt_t detmask) { fDetInDAQ = detmask; }
+  void    SetDetectorsInReco(UInt_t detmask) { fDetInReco = detmask; }
 
+  Bool_t  IsBeamEnergyIsSqrtSHalfGeV() const {return TestBit(kConvSqrtSHalfGeV);}  
   Double_t GetDiamondX() const {return fDiamondXY[0];}
   Double_t GetDiamondY() const {return fDiamondXY[1];}
+  Double_t GetDiamondZ() const {return fDiamondZ;}
   Double_t GetSigma2DiamondX() const {return fDiamondCovXY[0];}
   Double_t GetSigma2DiamondY() const {return fDiamondCovXY[2];}
+  Double_t GetSigma2DiamondZ() const {return fDiamondSig2Z;}
   void GetDiamondCovXY(Float_t cov[3]) const {
     for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return;
   }
@@ -47,20 +62,59 @@ public:
   TString     GetActiveTriggerClasses() const;
   TString     GetFiredTriggerClasses(ULong64_t mask) const;
   Bool_t      IsTriggerClassFired(ULong64_t mask, const char *name) const;
-
+  Float_t     GetCurrentL3()               const {return fCurrentL3;}
+  Float_t     GetCurrentDip()              const {return fCurrentDip;}
+  Float_t     GetBeamEnergy()              const {return IsBeamEnergyIsSqrtSHalfGeV() ? fBeamEnergy : fBeamEnergy/2;}
+  const char* GetBeamType()                const {return fBeamType.Data();}
+  UInt_t      GetDetectorsInDAQ()         const {return fDetInDAQ; }
+  UInt_t      GetDetectorsInReco()         const {return fDetInReco; }
+  void    SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {
+    if ((i >= 0) && (i < kNPHOSMatrix)) fPHOSMatrix[i] = matrix;
+  }
+  const TGeoHMatrix* GetPHOSMatrix(Int_t i) const {
+    return ((i >= 0) && (i < kNPHOSMatrix)) ? fPHOSMatrix[i] : NULL;
+  }
+       
+  void    SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) {
+       if ((i >= 0) && (i < kNEMCALMatrix)) fEMCALMatrix[i] = matrix;
+  }
+  const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {
+       return ((i >= 0) && (i < kNEMCALMatrix)) ? fEMCALMatrix[i] : NULL;
+  }
+       
   enum {kNTriggerClasses = 50};
-
-private:
+  enum {kNPHOSMatrix = 5};
+  enum {kNEMCALMatrix = 12};
+  //
+  Double_t   GetMeanIntensity(int beam,int btp)     const 
+  { return (beam>=0&&beam<2&&btp>=0&&btp<2) ? fMeanBeamInt[beam][btp]:0;}
+  void       SetMeanIntensity(int beam,int btp, double v=-1) 
+  { if (beam>=0&&beam<2&&btp>=0&&btp<2) fMeanBeamInt[beam][btp]=v;}  
+  Double_t   GetMeanIntensityIntecting(int beam)    const {return GetMeanIntensity(beam,0);}
+  Double_t   GetMeanIntensityNonIntecting(int beam) const {return GetMeanIntensity(beam,1);}
+  //
+ private:
+  Float_t         fCurrentL3;       // signed current in the L3     (LHC convention: +current -> +Bz)
+  Float_t         fCurrentDip;      // signed current in the Dipole (LHC convention: +current -> -Bx)
+  Float_t         fBeamEnergy;      // beamEnergy entry from GRP
   Double32_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
+  Double32_t      fMeanBeamInt[2][2]; // mean intensity of interacting and non-intercting bunches per beam
   Double32_t      fDiamondXY[2];    // Interaction diamond (x,y) in RUN
   Double32_t      fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN
+  Double32_t      fDiamondZ;        // Interaction diamond (z) in RUN
+  Double32_t      fDiamondSig2Z;    // Interaction diamond sigma^2 (z) in RUN
   UInt_t          fPeriodNumber;    // PeriodNumber
   Int_t           fRunNumber;       // Run Number
-  Int_t           fRecoVersion;     // Version of reconstruction 
+  Int_t           fRecoVersion;     // Version of reconstruction
+  TString         fBeamType;        // beam type from GRP
   TObjArray       fTriggerClasses;  // array of TNamed containing the names of the active trigger classes
+  UInt_t          fDetInDAQ;        // Detector mask for detectors in datataking
+  UInt_t          fDetInReco;       // Detector mask for detectors in reconstruction
+  TGeoHMatrix*    fPHOSMatrix[kNPHOSMatrix]; //PHOS module position and orientation matrices
+  TGeoHMatrix*    fEMCALMatrix[kNEMCALMatrix]; //EMCAL supermodule position and orientation matrices
 
-
-  ClassDef(AliESDRun,3)
+  ClassDef(AliESDRun,9)
 };
 
 #endif