Moving the classes that belong to the following libraries: STEERBase, ESD, CDB, AOD...
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODHeader.h
1 #ifndef AliAODHeader_H
2 #define AliAODHeader_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     AOD event header class
10 //     Author: Markus Oldenburg, CERN
11 //-------------------------------------------------------------------------
12
13 #include "AliVHeader.h"
14 #include "AliAODVertex.h"
15 #include <TString.h>
16 #include "AliCentrality.h"
17 #include "AliEventplane.h"
18
19 class TGeoHMatrix;
20 class TString;
21
22
23 class AliAODHeader : public AliVHeader {
24
25  public :
26   AliAODHeader();
27  
28   AliAODHeader(Int_t nRun, UShort_t nBunchX, UInt_t nOrbit, UInt_t nPeriod, const Char_t *title="");
29   AliAODHeader(Int_t nRun, 
30                UShort_t nBunchX,
31                UInt_t nOrbit,
32                UInt_t nPeriod,
33                Int_t refMult,
34                Int_t refMultPos,
35                Int_t refMultNeg,
36                Double_t magField,
37                Double_t muonMagFieldScale,
38                Double_t cent,
39                Double_t eventplane,
40                Double_t n1Energy,
41                Double_t p1Energy,
42                Double_t n2Energy,
43                Double_t p2Energy,
44                Double_t *emEnergy,
45                ULong64_t fTriggerMask,
46                UChar_t   fTriggerCluster,
47                UInt_t    fEventType,
48                const Char_t *title="",
49                Int_t nMuons=0,
50                Int_t nDimuons=0);
51   
52   virtual ~AliAODHeader();
53   AliAODHeader(const AliAODHeader& evt); 
54   AliAODHeader& operator=(const AliAODHeader& evt);
55
56   Int_t     GetRunNumber()          const { return fRunNumber;}
57   Int_t     GetEventNumberESDFile() const { return fEventNumberESDFile;}
58   UShort_t  GetBunchCrossNumber()   const { return fBunchCrossNumber; }
59   UInt_t    GetOrbitNumber()        const { return fOrbitNumber; }
60   UInt_t    GetPeriodNumber()       const { return fPeriodNumber; }
61   ULong64_t GetTriggerMask()        const { return fTriggerMask; }
62   UChar_t   GetTriggerCluster()     const { return fTriggerCluster; }
63   TString   GetFiredTriggerClasses()const { return fFiredTriggers;}
64   UInt_t    GetEventType()          const { return fEventType; }
65   Double_t  GetMagneticField()      const { return fMagneticField; }
66   Double_t  GetMuonMagFieldScale()  const { return fMuonMagFieldScale; }
67   
68   Double_t  GetCentrality()         const { return fCentrality; }
69   Double_t  GetEventplane()         const { return fEventplane; }
70   Double_t  GetZDCN1Energy()        const { return fZDCN1Energy; }
71   Double_t  GetZDCP1Energy()        const { return fZDCP1Energy; }
72   Double_t  GetZDCN2Energy()        const { return fZDCN2Energy; }
73   Double_t  GetZDCP2Energy()        const { return fZDCP2Energy; }
74   Double_t  GetZDCEMEnergy(Int_t i) const { return fZDCEMEnergy[i]; }
75   Int_t     GetRefMultiplicity()    const { return fRefMult; }
76   Int_t     GetRefMultiplicityPos() const { return fRefMultPos; }
77   Int_t     GetRefMultiplicityNeg() const { return fRefMultNeg; }
78   Int_t     GetNumberOfMuons()      const { return fNMuons; }
79   Int_t     GetNumberOfDimuons()    const { return fNDimuons; }
80
81   Double_t  GetQTheta(UInt_t i) const;
82   UInt_t    GetNQTheta() const { return (UInt_t)fNQTheta; }
83
84   Double_t GetDiamondX() const {return fDiamondXY[0];}
85   Double_t GetDiamondY() const {return fDiamondXY[1];}
86   Double_t GetDiamondZ() const {return fDiamondZ;}
87   Double_t GetSigma2DiamondX() const {return fDiamondCovXY[0];}
88   Double_t GetSigma2DiamondY() const {return fDiamondCovXY[2];}
89   Double_t GetSigma2DiamondZ() const {return fDiamondSig2Z;}
90   void GetDiamondCovXY(Float_t cov[3]) const {
91     for(Int_t i=0;i<3;i++) cov[i]=fDiamondCovXY[i]; return;
92   }
93   UInt_t   GetL0TriggerInputs() const {return fL0TriggerInputs;}  
94   UInt_t   GetL1TriggerInputs() const {return fL1TriggerInputs;} 
95   UShort_t GetL2TriggerInputs() const {return fL2TriggerInputs;} 
96   AliCentrality* GetCentralityP()  const { return fCentralityP; }
97   AliEventplane* GetEventplaneP()  const { return fEventplaneP; }
98
99   
100   void SetRunNumber(Int_t nRun)                { fRunNumber = nRun; }
101   void SetEventNumberESDFile(Int_t n)          { fEventNumberESDFile=n; }
102   void SetBunchCrossNumber(UShort_t nBx)       { fBunchCrossNumber = nBx; }
103   void SetOrbitNumber(UInt_t nOr)              { fOrbitNumber = nOr; }
104   void SetPeriodNumber(UInt_t nPer)            { fPeriodNumber = nPer; }
105   void SetTriggerMask(ULong64_t trigMsk)       { fTriggerMask = trigMsk; }
106   void SetFiredTriggerClasses(TString trig)    { fFiredTriggers = trig;}
107   void SetTriggerCluster(UChar_t trigClus)     { fTriggerCluster = trigClus; }
108   void SetEventType(UInt_t evttype)            { fEventType = evttype; }
109   void SetMagneticField(Double_t magFld)       { fMagneticField = magFld; }
110   void SetMuonMagFieldScale(Double_t magFldScl){ fMuonMagFieldScale = magFldScl; }
111   void SetCentrality(AliCentrality* cent);
112   void SetEventplane(AliEventplane* eventplane);
113   void SetZDCN1Energy(Double_t n1Energy)       { fZDCN1Energy = n1Energy; }
114   void SetZDCP1Energy(Double_t p1Energy)       { fZDCP1Energy = p1Energy; }
115   void SetZDCN2Energy(Double_t n2Energy)       { fZDCN2Energy = n2Energy; }
116   void SetZDCP2Energy(Double_t p2Energy)       { fZDCP2Energy = p2Energy; }
117   void SetZDCEMEnergy(Double_t emEnergy1, Double_t emEnergy2)      
118         { fZDCEMEnergy[0] = emEnergy1; fZDCEMEnergy[1] = emEnergy2;}
119   void SetRefMultiplicity(Int_t refMult)       { fRefMult = refMult; }
120   void SetRefMultiplicityPos(Int_t refMultPos) { fRefMultPos = refMultPos; }
121   void SetRefMultiplicityNeg(Int_t refMultNeg) { fRefMultNeg = refMultNeg; }
122   void SetNumberOfMuons(Int_t nMuons) { fNMuons = nMuons; }
123   void SetNumberOfDimuons(Int_t nDimuons) { fNDimuons = nDimuons; }
124   
125   void SetQTheta(Double_t *QTheta, UInt_t size = 5);  
126   void RemoveQTheta();
127
128   void SetDiamond(Float_t xy[2],Float_t cov[3]) { 
129     for(Int_t i=0;i<3;i++) {fDiamondCovXY[i] = cov[i];}
130     for(Int_t i=0;i<2;i++) {fDiamondXY[i]    = xy[i] ;}
131   }
132   void SetDiamondZ(Float_t z, Float_t sig2z){
133     fDiamondZ=z; fDiamondSig2Z=sig2z;
134   }
135   void SetL0TriggerInputs(UInt_t n)   {fL0TriggerInputs=n;}
136   void SetL1TriggerInputs(UInt_t n)   {fL1TriggerInputs=n;}
137   void SetL2TriggerInputs(UShort_t n) {fL2TriggerInputs=n;}
138   void SetESDFileName(TString name)   {fESDFileName = name;}
139   void Print(Option_t* option = "") const;
140
141   void    SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {
142       if ((i >= 0) && (i < kNPHOSMatrix)) fPHOSMatrix[i] = matrix;
143   }
144   const TGeoHMatrix* GetPHOSMatrix(Int_t i) const {
145       return ((i >= 0) && (i < kNPHOSMatrix)) ? fPHOSMatrix[i] : NULL;
146   }
147   
148   void    SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) {
149       if ((i >= 0) && (i < kNEMCALMatrix)) fEMCALMatrix[i] = matrix;
150   }
151   const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {
152       return ((i >= 0) && (i < kNEMCALMatrix)) ? fEMCALMatrix[i] : NULL;
153   }
154   
155   UInt_t GetOfflineTrigger() { return fOfflineTrigger; }
156   void   SetOfflineTrigger(UInt_t trigger) { fOfflineTrigger = trigger; }
157   UInt_t GetNumberOfITSClusters(Int_t ilay) const {return fITSClusters[ilay];}
158   void   SetITSClusters(Int_t ilay, UInt_t nclus);
159   Int_t  GetTPConlyRefMultiplicity() const {return fTPConlyRefMult;}
160   void   SetTPConlyRefMultiplicity(Int_t mult) {fTPConlyRefMult = mult;} 
161   
162   TString GetESDFileName() const  {return fESDFileName;}
163   void Clear(Option_t* = "");
164   enum {kNPHOSMatrix = 5};
165   enum {kNEMCALMatrix = 12};
166   
167  private :
168   
169   Double32_t  fMagneticField;       // Solenoid Magnetic Field in kG
170   Double32_t  fMuonMagFieldScale;   // magnetic field scale of muon arm magnet
171   Double32_t  fCentrality;          // Centrality
172   Double32_t  fEventplane;          // Event plane angle
173   Double32_t  fZDCN1Energy;         // reconstructed energy in the neutron1 ZDC
174   Double32_t  fZDCP1Energy;         // reconstructed energy in the proton1 ZDC
175   Double32_t  fZDCN2Energy;         // reconstructed energy in the neutron2 ZDC
176   Double32_t  fZDCP2Energy;         // reconstructed energy in the proton2 ZDC
177   Double32_t  fZDCEMEnergy[2];      // reconstructed energy in the electromagnetic ZDCs
178   Int_t       fNQTheta;             // number of QTheta elements
179   Double32_t *fQTheta;              // [fNQTheta] values to store Lee-Yang-Zeros
180   ULong64_t   fTriggerMask;         // Trigger Type (mask)
181   TString     fFiredTriggers;       // String with fired triggers
182   Int_t       fRunNumber;           // Run Number
183   Int_t       fRefMult;             // reference multiplicity
184   Int_t       fRefMultPos;          // reference multiplicity of positive particles
185   Int_t       fRefMultNeg;          // reference multiplicity of negative particles
186   Int_t       fNMuons;              // number of muons in the forward spectrometer
187   Int_t       fNDimuons;            // number of dimuons in the forward spectrometer
188   UInt_t      fEventType;           // Type of Event
189   UInt_t      fOrbitNumber;         // Orbit Number
190   UInt_t      fPeriodNumber;        // Period Number
191   UShort_t    fBunchCrossNumber;    // BunchCrossingNumber
192   UChar_t     fTriggerCluster;      // Trigger cluster (mask)
193   Double32_t      fDiamondXY[2];    // Interaction diamond (x,y) in RUN
194   Double32_t      fDiamondCovXY[3]; // Interaction diamond covariance (x,y) in RUN
195   Double32_t      fDiamondZ;        // Interaction diamond (z) in RUN
196   Double32_t      fDiamondSig2Z;    // Interaction diamond sigma^2 (z) in RUN
197   TGeoHMatrix*    fPHOSMatrix[kNPHOSMatrix];   //PHOS module position and orientation matrices
198   TGeoHMatrix*    fEMCALMatrix[kNEMCALMatrix]; //EMCAL supermodule position and orientation matrices
199   UInt_t      fOfflineTrigger;      // fired offline triggers for this event
200   TString     fESDFileName;         // ESD file name to which this event belongs
201   Int_t       fEventNumberESDFile;  // Event number in ESD file
202   UInt_t      fL0TriggerInputs;     // L0 Trigger Inputs (mask)
203   UInt_t      fL1TriggerInputs;     // L1 Trigger Inputs (mask)
204   UShort_t    fL2TriggerInputs;     // L2 Trigger Inputs (mask)
205   UInt_t      fITSClusters[6];      // Number of ITS cluster per layer
206   Int_t       fTPConlyRefMult;      // Reference multiplicty for standard TPC only tracks
207   AliCentrality* fCentralityP;      // Pointer to full centrality information
208   AliEventplane* fEventplaneP;      // Pointer to full event plane information
209   ClassDef(AliAODHeader, 16);
210 };
211 inline
212 void AliAODHeader::SetCentrality(AliCentrality* cent)      { 
213     if(cent){
214         if(fCentralityP)*fCentralityP = *cent;
215         else fCentralityP = new AliCentrality(*cent);
216         fCentrality = cent->GetCentralityPercentile("V0M");
217     }
218     else{
219         fCentrality = -999;
220     }
221 }
222 inline
223 void AliAODHeader::SetEventplane(AliEventplane* eventplane)      { 
224     if(eventplane){
225         if(fEventplaneP)*fEventplaneP = *eventplane;
226         else fEventplaneP = new AliEventplane(*eventplane);
227         fEventplane = eventplane->GetEventplane("Q");
228     }
229     else{
230         fEventplane = -999;
231     }
232 }
233
234 inline
235 void AliAODHeader::SetITSClusters(Int_t ilay, UInt_t nclus)
236 {
237     if (ilay >= 0 && ilay < 6) fITSClusters[ilay] = nclus;
238 }
239
240
241 #endif