ROOT logo
// -*- mode: C++ -*- 
#ifndef ALIESDRUN_H
#define ALIESDRUN_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//-------------------------------------------------------------------------
//                     Implementation Class AliESDRun
//   Run by run data
//   for the ESD   
//   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
//-------------------------------------------------------------------------

#include <TObject.h>
#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;}
  Double_t GetMagneticField() const {return fMagneticField;}
  UInt_t   GetPeriodNumber() const {return fPeriodNumber;}
  void    SetPeriodNumber(Int_t n) {fPeriodNumber=n;}
  void    Reset();
  void    Print(const Option_t *opt=0) const;
  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;
  }
  const char* GetTriggerClass(Int_t index) const;
  TString     GetActiveTriggerClasses() const;
  TString     GetFiredTriggerClasses(ULong64_t mask) const;
  TString     GetFiredTriggerClassesNext50(ULong64_t mask) const;
  TString     GetFiredTriggerClasses(ULong64_t mask,ULong64_t mask2) const;
  void        PrintAllTriggerClasses() const;
  Bool_t      IsTriggerClassFired(ULong64_t mask, const char *name) const;
  Bool_t      IsTriggerClassFired(ULong64_t mask, ULong64_t mask2,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=="Pb-Pb") ? "A-A":fBeamType.Data();}
  void        SetBeamParticle(Int_t az, Int_t ibeam) {fBeamParticle[ibeam] = az;}
  Int_t       GetBeamParticle(Int_t ibeam)  const {return fBeamParticle[ibeam];}
  Int_t       GetBeamParticleA(Int_t ibeam) const {return fBeamParticle[ibeam]/1000;}
  Int_t       GetBeamParticleZ(Int_t ibeam) const {return fBeamParticle[ibeam]%1000;}

  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 = 100};
  enum {kNPHOSMatrix = 5};
  enum {kNEMCALMatrix = 22};
  enum {kT0spreadSize = 4};
  //
  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);}
  // 
  Float_t    GetT0spread(Int_t i) const {
    return ((i >= 0)  && (i<kT0spreadSize)) ? fT0spread[i] : 0;}
  void       SetT0spread(Int_t i, Float_t t);
  void       SetT0spread(Float_t *t);
	
  void       SetCaloTriggerType(const Int_t* in) {for (int i = 0; i < 15; i++) fCaloTriggerType[i] = in[i];}
  Int_t*     GetCaloTriggerType() {return fCaloTriggerType;}

  void           SetVZEROEqFactors(Float_t factors[64]) {for (Int_t i = 0; i < 64; ++i) fVZEROEqFactors[i] = factors[i];}
  const Float_t* GetVZEROEqFactors() const {return fVZEROEqFactors;}
  Float_t        GetVZEROEqFactors(Int_t i) const {return fVZEROEqFactors[i];}

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           fBeamParticle[2]; // A*1000+Z for each beam particle
  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
  Float_t         fT0spread[kT0spreadSize];     // spread of time distributions on T0A, T0C, (T0A+T0C)/2, (T0A-T0C)/2
  Int_t           fCaloTriggerType[15]; // Calorimeter trigger type
  Float_t         fVZEROEqFactors[64]; // V0 channel equalization factors for event-plane reconstruction
	
  ClassDef(AliESDRun,15)
};

#endif 
 AliESDRun.h:1
 AliESDRun.h:2
 AliESDRun.h:3
 AliESDRun.h:4
 AliESDRun.h:5
 AliESDRun.h:6
 AliESDRun.h:7
 AliESDRun.h:8
 AliESDRun.h:9
 AliESDRun.h:10
 AliESDRun.h:11
 AliESDRun.h:12
 AliESDRun.h:13
 AliESDRun.h:14
 AliESDRun.h:15
 AliESDRun.h:16
 AliESDRun.h:17
 AliESDRun.h:18
 AliESDRun.h:19
 AliESDRun.h:20
 AliESDRun.h:21
 AliESDRun.h:22
 AliESDRun.h:23
 AliESDRun.h:24
 AliESDRun.h:25
 AliESDRun.h:26
 AliESDRun.h:27
 AliESDRun.h:28
 AliESDRun.h:29
 AliESDRun.h:30
 AliESDRun.h:31
 AliESDRun.h:32
 AliESDRun.h:33
 AliESDRun.h:34
 AliESDRun.h:35
 AliESDRun.h:36
 AliESDRun.h:37
 AliESDRun.h:38
 AliESDRun.h:39
 AliESDRun.h:40
 AliESDRun.h:41
 AliESDRun.h:42
 AliESDRun.h:43
 AliESDRun.h:44
 AliESDRun.h:45
 AliESDRun.h:46
 AliESDRun.h:47
 AliESDRun.h:48
 AliESDRun.h:49
 AliESDRun.h:50
 AliESDRun.h:51
 AliESDRun.h:52
 AliESDRun.h:53
 AliESDRun.h:54
 AliESDRun.h:55
 AliESDRun.h:56
 AliESDRun.h:57
 AliESDRun.h:58
 AliESDRun.h:59
 AliESDRun.h:60
 AliESDRun.h:61
 AliESDRun.h:62
 AliESDRun.h:63
 AliESDRun.h:64
 AliESDRun.h:65
 AliESDRun.h:66
 AliESDRun.h:67
 AliESDRun.h:68
 AliESDRun.h:69
 AliESDRun.h:70
 AliESDRun.h:71
 AliESDRun.h:72
 AliESDRun.h:73
 AliESDRun.h:74
 AliESDRun.h:75
 AliESDRun.h:76
 AliESDRun.h:77
 AliESDRun.h:78
 AliESDRun.h:79
 AliESDRun.h:80
 AliESDRun.h:81
 AliESDRun.h:82
 AliESDRun.h:83
 AliESDRun.h:84
 AliESDRun.h:85
 AliESDRun.h:86
 AliESDRun.h:87
 AliESDRun.h:88
 AliESDRun.h:89
 AliESDRun.h:90
 AliESDRun.h:91
 AliESDRun.h:92
 AliESDRun.h:93
 AliESDRun.h:94
 AliESDRun.h:95
 AliESDRun.h:96
 AliESDRun.h:97
 AliESDRun.h:98
 AliESDRun.h:99
 AliESDRun.h:100
 AliESDRun.h:101
 AliESDRun.h:102
 AliESDRun.h:103
 AliESDRun.h:104
 AliESDRun.h:105
 AliESDRun.h:106
 AliESDRun.h:107
 AliESDRun.h:108
 AliESDRun.h:109
 AliESDRun.h:110
 AliESDRun.h:111
 AliESDRun.h:112
 AliESDRun.h:113
 AliESDRun.h:114
 AliESDRun.h:115
 AliESDRun.h:116
 AliESDRun.h:117
 AliESDRun.h:118
 AliESDRun.h:119
 AliESDRun.h:120
 AliESDRun.h:121
 AliESDRun.h:122
 AliESDRun.h:123
 AliESDRun.h:124
 AliESDRun.h:125
 AliESDRun.h:126
 AliESDRun.h:127
 AliESDRun.h:128
 AliESDRun.h:129
 AliESDRun.h:130
 AliESDRun.h:131
 AliESDRun.h:132
 AliESDRun.h:133
 AliESDRun.h:134
 AliESDRun.h:135
 AliESDRun.h:136
 AliESDRun.h:137
 AliESDRun.h:138
 AliESDRun.h:139
 AliESDRun.h:140
 AliESDRun.h:141
 AliESDRun.h:142
 AliESDRun.h:143
 AliESDRun.h:144
 AliESDRun.h:145
 AliESDRun.h:146
 AliESDRun.h:147