d5ebf00e |
1 | // -*- mode: C++ -*- |
2 | #ifndef ALIESDRUN_H |
3 | #define ALIESDRUN_H |
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ |
6 | |
7 | //------------------------------------------------------------------------- |
8 | // Implementation Class AliESDRun |
9 | // Run by run data |
10 | // for the ESD |
11 | // Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch |
12 | //------------------------------------------------------------------------- |
13 | |
14 | #include <TObject.h> |
f009b5c1 |
15 | #include <TObjArray.h> |
16 | #include <TString.h> |
d5ebf00e |
17 | |
8d218603 |
18 | class TGeoHMatrix; |
d5ebf00e |
19 | class AliESDVertex; |
20 | |
21 | class AliESDRun: public TObject { |
22 | public: |
23 | |
5cf76849 |
24 | enum StatusBits {kBInfoStored = BIT(14), kUniformBMap = BIT(15), kConvSqrtSHalfGeV = BIT(16)}; |
33fe5eb1 |
25 | |
d443e5e9 |
26 | |
d5ebf00e |
27 | AliESDRun(); |
28 | AliESDRun(const AliESDRun& esd); |
29 | AliESDRun& operator=(const AliESDRun& esd); |
732a24fe |
30 | virtual void Copy(TObject &obj) const; // Interface for using TOBject::Copy() |
8d218603 |
31 | virtual ~AliESDRun(); |
d5ebf00e |
32 | |
33fe5eb1 |
33 | Bool_t InitMagneticField() const; |
d5ebf00e |
34 | Int_t GetRunNumber() const {return fRunNumber;} |
35 | void SetRunNumber(Int_t n) {fRunNumber=n;} |
36 | void SetMagneticField(Float_t mf){fMagneticField = mf;} |
694aad0c |
37 | Double_t GetMagneticField() const {return fMagneticField;} |
38 | UInt_t GetPeriodNumber() const {return fPeriodNumber;} |
d5ebf00e |
39 | void SetPeriodNumber(Int_t n) {fPeriodNumber=n;} |
40 | void Reset(); |
41 | void Print(const Option_t *opt=0) const; |
33fe5eb1 |
42 | void SetDiamond(const AliESDVertex *vertex); |
f009b5c1 |
43 | void SetTriggerClass(const char*name, Int_t index); |
33fe5eb1 |
44 | void SetCurrentL3(Float_t cur) {fCurrentL3 = cur;} |
45 | void SetCurrentDip(Float_t cur) {fCurrentDip = cur;} |
46 | void SetBeamEnergy(Float_t be) {fBeamEnergy = be;} |
47 | void SetBeamType(const char* bt) {fBeamType = bt;} |
5cf76849 |
48 | void SetBeamEnergyIsSqrtSHalfGeV(Bool_t v=kTRUE) {SetBit(kConvSqrtSHalfGeV,v);} |
7b649c02 |
49 | void SetDetectorsInDAQ(UInt_t detmask) { fDetInDAQ = detmask; } |
50 | void SetDetectorsInReco(UInt_t detmask) { fDetInReco = detmask; } |
5cf76849 |
51 | |
52 | Bool_t IsBeamEnergyIsSqrtSHalfGeV() const {return TestBit(kConvSqrtSHalfGeV);} |
694aad0c |
53 | Double_t GetDiamondX() const {return fDiamondXY[0];} |
54 | Double_t GetDiamondY() const {return fDiamondXY[1];} |
1c7554f9 |
55 | Double_t GetDiamondZ() const {return fDiamondZ;} |
694aad0c |
56 | Double_t GetSigma2DiamondX() const {return fDiamondCovXY[0];} |
57 | Double_t GetSigma2DiamondY() const {return fDiamondCovXY[2];} |
1c7554f9 |
58 | Double_t GetSigma2DiamondZ() const {return fDiamondSig2Z;} |
d5ebf00e |
59 | void GetDiamondCovXY(Float_t cov[3]) const { |
60 | for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return; |
61 | } |
f009b5c1 |
62 | const char* GetTriggerClass(Int_t index) const; |
63 | TString GetActiveTriggerClasses() const; |
64 | TString GetFiredTriggerClasses(ULong64_t mask) const; |
65 | Bool_t IsTriggerClassFired(ULong64_t mask, const char *name) const; |
33fe5eb1 |
66 | Float_t GetCurrentL3() const {return fCurrentL3;} |
67 | Float_t GetCurrentDip() const {return fCurrentDip;} |
5cf76849 |
68 | Float_t GetBeamEnergy() const {return IsBeamEnergyIsSqrtSHalfGeV() ? fBeamEnergy : fBeamEnergy/2;} |
91460b26 |
69 | const char* GetBeamType() const {return (fBeamType=="Pb-Pb") ? "A-A":fBeamType.Data();} |
70 | void SetBeamParticle(Int_t az, Int_t ibeam) {fBeamParticle[ibeam] = az;} |
71 | Int_t GetBeamParticle(Int_t ibeam) const {return fBeamParticle[ibeam];} |
72 | Int_t GetBeamParticleA(Int_t ibeam) const {return fBeamParticle[ibeam]/1000;} |
73 | Int_t GetBeamParticleZ(Int_t ibeam) const {return fBeamParticle[ibeam]%1000;} |
74 | |
7b649c02 |
75 | UInt_t GetDetectorsInDAQ() const {return fDetInDAQ; } |
76 | UInt_t GetDetectorsInReco() const {return fDetInReco; } |
77 | |
8d218603 |
78 | void SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) { |
79 | if ((i >= 0) && (i < kNPHOSMatrix)) fPHOSMatrix[i] = matrix; |
80 | } |
81 | const TGeoHMatrix* GetPHOSMatrix(Int_t i) const { |
82 | return ((i >= 0) && (i < kNPHOSMatrix)) ? fPHOSMatrix[i] : NULL; |
83 | } |
428557af |
84 | |
85 | void SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) { |
86 | if ((i >= 0) && (i < kNEMCALMatrix)) fEMCALMatrix[i] = matrix; |
87 | } |
88 | const TGeoHMatrix* GetEMCALMatrix(Int_t i) const { |
89 | return ((i >= 0) && (i < kNEMCALMatrix)) ? fEMCALMatrix[i] : NULL; |
90 | } |
91 | |
f009b5c1 |
92 | enum {kNTriggerClasses = 50}; |
8d218603 |
93 | enum {kNPHOSMatrix = 5}; |
428557af |
94 | enum {kNEMCALMatrix = 12}; |
d443e5e9 |
95 | enum {kT0spreadSize = 4}; |
b671618d |
96 | // |
97 | Double_t GetMeanIntensity(int beam,int btp) const |
98 | { return (beam>=0&&beam<2&&btp>=0&&btp<2) ? fMeanBeamInt[beam][btp]:0;} |
99 | void SetMeanIntensity(int beam,int btp, double v=-1) |
100 | { if (beam>=0&&beam<2&&btp>=0&&btp<2) fMeanBeamInt[beam][btp]=v;} |
101 | Double_t GetMeanIntensityIntecting(int beam) const {return GetMeanIntensity(beam,0);} |
102 | Double_t GetMeanIntensityNonIntecting(int beam) const {return GetMeanIntensity(beam,1);} |
d443e5e9 |
103 | // |
104 | Float_t GetT0spread(Int_t i) const { |
105 | return ((i >= 0) && (i<kT0spreadSize)) ? fT0spread[i] : 0;} |
106 | void SetT0spread(Int_t i, Float_t t); |
107 | void SetT0spread(Float_t *t); |
da6062af |
108 | |
63c22917 |
109 | void SetCaloTriggerType(const Int_t* in) {for (int i = 0; i < 15; i++) fCaloTriggerType[i] = in[i];} |
da6062af |
110 | Int_t* GetCaloTriggerType() {return fCaloTriggerType;} |
d443e5e9 |
111 | |
1dc767cf |
112 | void SetVZEROEqFactors(Float_t factors[64]) {for (Int_t i = 0; i < 64; ++i) fVZEROEqFactors[i] = factors[i];} |
113 | const Float_t* GetVZEROEqFactors() const {return fVZEROEqFactors;} |
114 | Float_t GetVZEROEqFactors(Int_t i) const {return fVZEROEqFactors[i];} |
115 | |
d443e5e9 |
116 | private: |
33fe5eb1 |
117 | Float_t fCurrentL3; // signed current in the L3 (LHC convention: +current -> +Bz) |
118 | Float_t fCurrentDip; // signed current in the Dipole (LHC convention: +current -> -Bx) |
119 | Float_t fBeamEnergy; // beamEnergy entry from GRP |
694aad0c |
120 | Double32_t fMagneticField; // Solenoid Magnetic Field in kG : for compatibility with AliMagF |
b671618d |
121 | Double32_t fMeanBeamInt[2][2]; // mean intensity of interacting and non-intercting bunches per beam |
694aad0c |
122 | Double32_t fDiamondXY[2]; // Interaction diamond (x,y) in RUN |
123 | Double32_t fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN |
1c7554f9 |
124 | Double32_t fDiamondZ; // Interaction diamond (z) in RUN |
125 | Double32_t fDiamondSig2Z; // Interaction diamond sigma^2 (z) in RUN |
694aad0c |
126 | UInt_t fPeriodNumber; // PeriodNumber |
127 | Int_t fRunNumber; // Run Number |
33fe5eb1 |
128 | Int_t fRecoVersion; // Version of reconstruction |
91460b26 |
129 | Int_t fBeamParticle[2]; // A*1000+Z for each beam particle |
33fe5eb1 |
130 | TString fBeamType; // beam type from GRP |
f009b5c1 |
131 | TObjArray fTriggerClasses; // array of TNamed containing the names of the active trigger classes |
7b649c02 |
132 | UInt_t fDetInDAQ; // Detector mask for detectors in datataking |
133 | UInt_t fDetInReco; // Detector mask for detectors in reconstruction |
8d218603 |
134 | TGeoHMatrix* fPHOSMatrix[kNPHOSMatrix]; //PHOS module position and orientation matrices |
428557af |
135 | TGeoHMatrix* fEMCALMatrix[kNEMCALMatrix]; //EMCAL supermodule position and orientation matrices |
d443e5e9 |
136 | Float_t fT0spread[kT0spreadSize]; // spread of time distributions on T0A, T0C, (T0A+T0C)/2, (T0A-T0C)/2 |
63c22917 |
137 | Int_t fCaloTriggerType[15]; // Calorimeter trigger type |
1dc767cf |
138 | Float_t fVZEROEqFactors[64]; // V0 channel equalization factors for event-plane reconstruction |
da6062af |
139 | |
63c22917 |
140 | ClassDef(AliESDRun,14) |
d5ebf00e |
141 | }; |
142 | |
143 | #endif |