X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliESDRun.h;h=28aa63fee2f83218a084751ba4b8ec21728c429b;hb=6ecb073a7d393a0ec3e9ef6b7b209e3f7358e1b6;hp=2f3a5459a689f0ae130a31695f7149df41fa2b57;hpb=d5ebf00ec32a4a350d238072c76e06c92b76152d;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliESDRun.h b/STEER/AliESDRun.h index 2f3a5459a68..28aa63fee2f 100644 --- a/STEER/AliESDRun.h +++ b/STEER/AliESDRun.h @@ -12,44 +12,109 @@ //------------------------------------------------------------------------- #include +#include +#include +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;} - Float_t GetMagneticField() const {return fMagneticField;} - Int_t GetPeriodNumber() const {return fPeriodNumber;} + 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 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; } - - Float_t GetDiamondX() const {return fDiamondXY[0];} - Float_t GetDiamondY() const {return fDiamondXY[1];} - Float_t GetSigma2DiamondX() const {return fDiamondCovXY[0];} - Float_t GetSigma2DiamondY() const {return fDiamondCovXY[2];} + 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; } -private: - Int_t fRunNumber; // Run Number - Int_t fPeriodNumber; // PeriodNumber - Int_t fRecoVersion; // Version of reconstruction - Float_t fMagneticField; // Solenoid Magnetic Field in kG : for compatibility with AliMagF - Float_t fDiamondXY[2]; // Interaction diamond (x,y) in RUN - Float_t fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN - - ClassDef(AliESDRun,1) + const char* GetTriggerClass(Int_t index) const; + 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}; + 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 + 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,9) }; #endif