]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDEvent.h
First version of DEtaDPhi all wagon
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDEvent.h
CommitLineData
af885e0f 1// -*- mode: C++ -*-
2#ifndef ALIESDEVENT_H
3#define ALIESDEVENT_H
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7
8/* $Id$ */
9
10//-------------------------------------------------------------------------
f56a9fa7 11// Class AliESDEvent
6989bff3 12// This is the class to deal with during the physics analysis of data.
f56a9fa7 13// It also ensures the backward compatibility with the old ESD format.
af885e0f 14//
f56a9fa7 15// Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
af885e0f 16//-------------------------------------------------------------------------
17
18#include <TClonesArray.h>
19#include <TObject.h>
20#include <TTree.h>
21#include <TArrayF.h>
22
af885e0f 23
024c7734 24#include "AliVEvent.h"
694aad0c 25// some includes for delegated methods
f0106218 26#include "AliESDCaloTrigger.h"
af885e0f 27#include "AliESDRun.h"
28#include "AliESDHeader.h"
3f47e572 29#include "AliESDTZERO.h"
f0106218 30#include "AliESDZDC.h"
bd95bae7 31#include "AliESDACORDE.h"
af885e0f 32
024c7734 33// AliESDtrack has to be included so that the compiler
34// knows its inheritance tree (= that it is a AliVParticle).
35#include "AliESDtrack.h"
5303c167 36// same for AliESDVertex (which is a AliVVertex)
37#include "AliESDVertex.h"
c8fe2783 38// same for CaloCells and CaloClusters (which is a AliVCaloCells, AliVCluster)
39#include "AliESDCaloCluster.h"
40#include "AliESDCaloCells.h"
41
f858b00e 42#include "AliTOFHeader.h"
024c7734 43
ae2bccf1 44#include "AliESDVZERO.h"
820b4d9e 45#ifdef MFT_UPGRADE
46//#include "AliESDMFT.h"
47#endif
ae2bccf1 48
af885e0f 49class AliESDfriend;
af885e0f 50class AliESDHLTtrack;
f0106218 51class AliESDVertex;
52class AliESDPmdTrack;
53class AliESDFMD;
54class AliESDkink;
f0106218 55class AliESDv0;
f0106218 56class AliMultiplicity;
57class AliRawDataErrorLog;
58class AliESDRun;
6c8e0967 59class AliESDTrdTrigger;
f0106218 60class AliESDTrdTrack;
52cd0cc0 61class AliESDTrdTracklet;
f0106218 62class AliESDMuonTrack;
af885e0f 63class AliESD;
f0106218 64class AliESDcascade;
fba4b2e2 65class AliCentrality;
ce7adfe9 66class AliEventplane;
cd1d4ee0 67class TRefArray;
bd95bae7 68class AliESDACORDE;
8b12d288 69class AliESDHLTDecision;
af885e0f 70
80791508 71class TList;
72class TString;
73
74
024c7734 75class AliESDEvent : public AliVEvent {
af885e0f 76public:
77
78
6989bff3 79 enum ESDListIndex {kESDRun,
af885e0f 80 kHeader,
81 kESDZDC,
82 kESDFMD,
83 kESDVZERO,
84 kESDTZERO,
06cc9d95 85 kTPCVertex,
af885e0f 86 kSPDVertex,
87 kPrimaryVertex,
88 kSPDMult,
89 kPHOSTrigger,
90 kEMCALTrigger,
04d01397 91 kSPDPileupVertices,
92 kTrkPileupVertices,
af885e0f 93 kTracks,
94 kMuonTracks,
95 kPmdTracks,
6c8e0967 96 kTrdTrigger,
af885e0f 97 kTrdTracks,
52cd0cc0 98 kTrdTracklets,
af885e0f 99 kV0s,
100 kCascades,
101 kKinks,
102 kCaloClusters,
e649177a 103 kEMCALCells,
104 kPHOSCells,
af885e0f 105 kErrorLogs,
bd95bae7 106 kESDACORDE,
f858b00e 107 kTOFHeader,
af885e0f 108 kESDListN
820b4d9e 109 #ifdef MFT_UPGRADE
110 // , kESDMFT
111 #endif
af885e0f 112 };
113
114 AliESDEvent();
732a24fe 115 virtual ~AliESDEvent();
116 AliESDEvent &operator=(const AliESDEvent& source); // or make private and use only copy?
117 virtual void Copy(TObject& obj) const;
af885e0f 118
119 // RUN
120 // move this to the UserData!!!
121 const AliESDRun* GetESDRun() const {return fESDRun;}
122
123 // Delegated methods for fESDRun
c017f53f 124 void SetRunNumber(Int_t n) {if(fESDRun) fESDRun->SetRunNumber(n);}
125 Int_t GetRunNumber() const {return fESDRun?fESDRun->GetRunNumber():-1;}
00d00f58 126 void SetPeriodNumber(UInt_t n){
127 if(fESDRun) fESDRun->SetPeriodNumber(n);
128 if(fHeader) fHeader->SetPeriodNumber(n);
129 }
c017f53f 130 UInt_t GetPeriodNumber() const {return fESDRun?fESDRun->GetPeriodNumber():0;}
131 void SetMagneticField(Double_t mf){if(fESDRun) fESDRun->SetMagneticField(mf);}
132 Double_t GetMagneticField() const {return fESDRun?fESDRun->GetMagneticField():0;}
133 void SetDiamond(const AliESDVertex *vertex) { if(fESDRun) fESDRun->SetDiamond(vertex);}
134 Double_t GetDiamondX() const {return fESDRun?fESDRun->GetDiamondX():0;}
135 Double_t GetDiamondY() const {return fESDRun?fESDRun->GetDiamondY():0;}
1c7554f9 136 Double_t GetDiamondZ() const {return fESDRun?fESDRun->GetDiamondZ():0;}
c017f53f 137 Double_t GetSigma2DiamondX() const {return fESDRun?fESDRun->GetSigma2DiamondX():0;}
138 Double_t GetSigma2DiamondY() const {return fESDRun?fESDRun->GetSigma2DiamondY():0;}
1c7554f9 139 Double_t GetSigma2DiamondZ() const {return fESDRun?fESDRun->GetSigma2DiamondZ():0;}
c017f53f 140 void GetDiamondCovXY(Float_t cov[3]) const {if(fESDRun) fESDRun->GetDiamondCovXY(cov);}
141 void SetTriggerClass(const char*name, Int_t index) {if(fESDRun) fESDRun->SetTriggerClass(name,index);}
142 void SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {if(fESDRun) fESDRun->SetPHOSMatrix(matrix,i);}
143 const TGeoHMatrix* GetPHOSMatrix(Int_t i) const {return fESDRun?fESDRun->GetPHOSMatrix(i):0x0;}
144 void SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) {if(fESDRun) fESDRun->SetEMCALMatrix(matrix,i);}
145 const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {return fESDRun?fESDRun->GetEMCALMatrix(i):0x0;}
da6062af 146 void SetCaloTriggerType(const Int_t* type) {if (fESDRun) fESDRun->SetCaloTriggerType(type);}
1dc767cf 147 Int_t* GetCaloTriggerType() const {return fESDRun?fESDRun->GetCaloTriggerType():0x0;}
5e14e698 148 virtual const Float_t* GetVZEROEqFactors() const {return fESDRun?fESDRun->GetVZEROEqFactors():0x0;}
149 virtual Float_t GetVZEROEqMultiplicity(Int_t i) const;
da6062af 150
33fe5eb1 151 //
c017f53f 152 void SetCurrentL3(Float_t cur) const {if(fESDRun) fESDRun->SetCurrentL3(cur);}
153 void SetCurrentDip(Float_t cur) const {if(fESDRun) fESDRun->SetCurrentDip(cur);}
154 void SetBeamEnergy(Float_t be) const {if(fESDRun) fESDRun->SetBeamEnergy(be);}
155 void SetBeamType(const char* bt) const {if(fESDRun) fESDRun->SetBeamType(bt);}
156 void SetUniformBMap(Bool_t val=kTRUE) const {if(fESDRun) fESDRun->SetBit(AliESDRun::kUniformBMap,val);}
157 void SetBInfoStored(Bool_t val=kTRUE) const {if(fESDRun) fESDRun->SetBit(AliESDRun::kBInfoStored,val);}
33fe5eb1 158 //
c017f53f 159 Float_t GetCurrentL3() const {return fESDRun?fESDRun->GetCurrentL3():0;}
160 Float_t GetCurrentDip() const {return fESDRun?fESDRun->GetCurrentDip():0;}
161 Float_t GetBeamEnergy() const {return fESDRun?fESDRun->GetBeamEnergy():0;}
162 const char* GetBeamType() const {return fESDRun?fESDRun->GetBeamType():0;}
163 Bool_t IsUniformBMap() const {return fESDRun?fESDRun->TestBit(AliESDRun::kUniformBMap):kFALSE;}
33fe5eb1 164 //
c017f53f 165 Bool_t InitMagneticField() const {return fESDRun?fESDRun->InitMagneticField():kFALSE;}
8938f4e0 166 void SetT0spread(Float_t *t) const {if(fESDRun) fESDRun->SetT0spread(t);}
1dc767cf 167 void SetVZEROEqFactors(Float_t factors[64]) const {if(fESDRun) fESDRun->SetVZEROEqFactors(factors);}
af885e0f 168 // HEADER
024c7734 169 AliESDHeader* GetHeader() const {return fHeader;}
af885e0f 170
171 // Delegated methods for fHeader
c017f53f 172 void SetTriggerMask(ULong64_t n) {if(fHeader) fHeader->SetTriggerMask(n);}
173 void SetOrbitNumber(UInt_t n) {if(fHeader) fHeader->SetOrbitNumber(n);}
174 void SetTimeStamp(UInt_t timeStamp){if(fHeader) fHeader->SetTimeStamp(timeStamp);}
175 void SetEventType(UInt_t eventType){if(fHeader) fHeader->SetEventType(eventType);}
176 void SetEventSpecie(UInt_t eventSpecie){if(fHeader) fHeader->SetEventSpecie(eventSpecie);}
177 void SetEventNumberInFile(Int_t n) {if(fHeader) fHeader->SetEventNumberInFile(n);}
178 // void SetRunNumber(Int_t n) {if(fHeader) fHeader->SetRunNumber(n);}
179 void SetBunchCrossNumber(UShort_t n) {if(fHeader) fHeader->SetBunchCrossNumber(n);}
180 void SetTriggerCluster(UChar_t n) {if(fHeader) fHeader->SetTriggerCluster(n);}
694aad0c 181
c017f53f 182 ULong64_t GetTriggerMask() const {return fHeader?fHeader->GetTriggerMask():0;}
183 TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
184 Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
2a3dfb14 185 Bool_t IsEventSelected(const char *trigExpr) const;
3b286f80 186 TObject* GetHLTTriggerDecision() const;
187 TString GetHLTTriggerDescription() const;
188 Bool_t IsHLTTriggerFired(const char* name=NULL) const;
158a76dd 189 UInt_t GetOrbitNumber() const {return fHeader?fHeader->GetOrbitNumber():0;}
c017f53f 190 UInt_t GetTimeStamp() const { return fHeader?fHeader->GetTimeStamp():0;}
191 UInt_t GetEventType() const { return fHeader?fHeader->GetEventType():0;}
192 UInt_t GetEventSpecie() const { return fHeader?fHeader->GetEventSpecie():0;}
193 Int_t GetEventNumberInFile() const {return fHeader?fHeader->GetEventNumberInFile():-1;}
194 UShort_t GetBunchCrossNumber() const {return fHeader?fHeader->GetBunchCrossNumber():0;}
195 UChar_t GetTriggerCluster() const {return fHeader?fHeader->GetTriggerCluster():0;}
af885e0f 196
197 // ZDC CKB: put this in the header?
16d867eb 198 AliESDZDC* GetESDZDC() const {return fESDZDC;}
199 AliESDZDC* GetZDCData() const {return fESDZDC;}
200
af6f24c9 201 void SetZDCData(AliESDZDC * obj);
af885e0f 202
203 // Delegated methods for fESDZDC
c017f53f 204 Double_t GetZDCN1Energy() const {return fESDZDC?fESDZDC->GetZDCN1Energy():0;}
205 Double_t GetZDCP1Energy() const {return fESDZDC?fESDZDC->GetZDCP1Energy():0;}
206 Double_t GetZDCN2Energy() const {return fESDZDC?fESDZDC->GetZDCN2Energy():0;}
207 Double_t GetZDCP2Energy() const {return fESDZDC?fESDZDC->GetZDCP2Energy():0;}
208 Double_t GetZDCEMEnergy(Int_t i=0) const {return fESDZDC?fESDZDC->GetZDCEMEnergy(i):0;}
209 Int_t GetZDCParticipants() const {return fESDZDC?fESDZDC->GetZDCParticipants():0;}
fba4b2e2 210 AliCentrality* GetCentrality();
ce7adfe9 211 AliEventplane* GetEventplane();
cb62947d 212
2eec2a33 213
b19cc8d0 214 void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t em1Energy, Float_t em2Energy,
215 Float_t n2Energy, Float_t p2Energy, Int_t participants, Int_t nPartA,
216 Int_t nPartC, Double_t b, Double_t bA, Double_t bC, UInt_t recoflag)
c017f53f 217 {if(fESDZDC) fESDZDC->SetZDC(n1Energy, p1Energy, em1Energy, em2Energy, n2Energy, p2Energy,
b19cc8d0 218 participants, nPartA, nPartC, b, bA, bC, recoflag);}
cb62947d 219 // FMD
af885e0f 220 void SetFMDData(AliESDFMD * obj);
5b96d6f1 221 AliESDFMD *GetFMDData() const { return fESDFMD; }
af885e0f 222
223
224 // TZERO CKB: put this in the header?
225 const AliESDTZERO* GetESDTZERO() const {return fESDTZERO;}
b0e13b29 226 void SetTZEROData(AliESDTZERO * obj);
227 // delegetated methods for fESDTZERO
af885e0f 228
adf36b9d 229 Double32_t GetT0zVertex() const {return fESDTZERO?fESDTZERO->GetT0zVertex():0;}
230 void SetT0zVertex(Double32_t z) {if(fESDTZERO) fESDTZERO->SetT0zVertex(z);}
231 Double32_t GetT0() const {return fESDTZERO?fESDTZERO->GetT0():0;}
232 void SetT0(Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0(timeStart);}
233 Double32_t GetT0clock() const {return fESDTZERO?fESDTZERO->GetT0clock():0;}
234 void SetT0clock(Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0clock(timeStart);}
235 Double32_t GetT0TOF(Int_t icase) const {return fESDTZERO?fESDTZERO->GetT0TOF(icase):0;}
236 const Double32_t * GetT0TOF() const {return fESDTZERO?fESDTZERO->GetT0TOF():0x0;}
237 void SetT0TOF(Int_t icase,Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0TOF(icase,timeStart);}
238 const Double32_t * GetT0time() const {return fESDTZERO?fESDTZERO->GetT0time():0x0;}
239 void SetT0time(Double32_t time[24]) {if(fESDTZERO) fESDTZERO->SetT0time(time);}
240 const Double32_t * GetT0amplitude() const {return fESDTZERO?fESDTZERO->GetT0amplitude():0x0;}
241 void SetT0amplitude(Double32_t amp[24]){if(fESDTZERO) fESDTZERO->SetT0amplitude(amp);}
242 Int_t GetT0Trig() const { return fESDTZERO?fESDTZERO->GetT0Trig():0;}
243 void SetT0Trig(Int_t tvdc) {if(fESDTZERO) fESDTZERO->SetT0Trig(tvdc);}
af885e0f 244
245 // VZERO
246 AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
247 void SetVZEROData(AliESDVZERO * obj);
820b4d9e 248
249 #ifdef MFT_UPGRADE
250 // MFT
251// AliESDMFT *GetMFTData() const { return fESDMFT; }
252// void SetMFTData(AliESDMFT * obj);
253 #endif
254
bd95bae7 255 // ACORDE
256 AliESDACORDE *GetACORDEData() const { return fESDACORDE;}
257 void SetACORDEData(AliESDACORDE * obj);
af885e0f 258
7d44c466 259 void SetESDfriend(const AliESDfriend *f) const;
af885e0f 260 void GetESDfriend(AliESDfriend *f) const;
261
262
263
06cc9d95 264 void SetPrimaryVertexTPC(const AliESDVertex *vertex);
265 const AliESDVertex *GetPrimaryVertexTPC() const {return fTPCVertex;}
266
267 void SetPrimaryVertexSPD(const AliESDVertex *vertex);
268 const AliESDVertex *GetPrimaryVertexSPD() const {return fSPDVertex;}
269 const AliESDVertex *GetVertex() const {
270 //For the backward compatibily only
271 return GetPrimaryVertexSPD();
272 }
af885e0f 273
c264b61b 274 void SetPrimaryVertexTracks(const AliESDVertex *vertex);
275 const AliESDVertex *GetPrimaryVertexTracks() const {return fPrimaryVertex;}
518573d7 276 AliESDVertex *PrimaryVertexTracksUnconstrained() const;
c264b61b 277
278 const AliESDVertex *GetPrimaryVertex() const;
af885e0f 279
f858b00e 280
281
282 void SetTOFHeader(const AliTOFHeader * tofEventTime);
283 const AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
d9fc7e74 284 Float_t GetEventTimeSpread() const {if (fTOFHeader) return fTOFHeader->GetT0spread(); else return 0.;}
285 Float_t GetTOFTimeResolution() const {if (fTOFHeader) return fTOFHeader->GetTOFResolution(); else return 0.;}
f858b00e 286
287
f0106218 288 void SetMultiplicity(const AliMultiplicity *mul);
289
af885e0f 290 const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
4ace6760 291 void EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
292 Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
f0106218 293
7f68891d 294 Bool_t Clean(Float_t *cleanPars);
7d44c466 295 Bool_t RemoveKink(Int_t i) const;
296 Bool_t RemoveV0(Int_t i) const;
297 Bool_t RemoveTrack(Int_t i) const;
d64bd07d 298
04d01397 299 const AliESDVertex *GetPileupVertexSPD(Int_t i) const {
c017f53f 300 return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->UncheckedAt(i):0x0);
04d01397 301 }
6dc21f57 302 Char_t AddPileupVertexSPD(const AliESDVertex *vtx);
04d01397 303 const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
c017f53f 304 return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->UncheckedAt(i):0x0);
04d01397 305 }
6dc21f57 306 Char_t AddPileupVertexTracks(const AliESDVertex *vtx);
3f2db92f 307 TClonesArray* GetPileupVerticesTracks() const {return (TClonesArray*)fTrkPileupVertices;}
308 TClonesArray* GetPileupVerticesSPD() const {return (TClonesArray*)fSPDPileupVertices;}
04d01397 309
a98c78e5 310 virtual Bool_t IsPileupFromSPD(Int_t minContributors=3,
311 Double_t minZdist=0.8,
312 Double_t nSigmaZdist=3.,
313 Double_t nSigmaDiamXY=2.,
314 Double_t nSigmaDiamZ=5.) const;
315
b46ff4b0 316 virtual Bool_t IsPileupFromSPDInMultBins() const;
317
af885e0f 318 AliESDtrack *GetTrack(Int_t i) const {
0ecbfc1b 319 if (!fTracks) return 0;
320 AliESDtrack* track = (AliESDtrack*) fTracks->UncheckedAt(i);
321 track->SetESDEvent(this);
322 return track;
af885e0f 323 }
324 Int_t AddTrack(const AliESDtrack *t);
325
65a0cf79 326 /// add new track at the end of tracks array and return instance
327 AliESDtrack* NewTrack();
af885e0f 328
329 AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
330 // return (AliESDHLTtrack *)fHLTConfMapTracks->UncheckedAt(i);
331 return 0;
332 }
333 void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
334 printf("ESD:: AddHLTConfMapTrack do nothing \n");
335 // TClonesArray &fhlt = *fHLTConfMapTracks;
336 // new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
337 }
338
339
340 AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
341 // return (AliESDHLTtrack *)fHLTHoughTracks->UncheckedAt(i);
342 return 0;
343 }
344 void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
345 printf("ESD:: AddHLTHoughTrack do nothing \n");
346 // TClonesArray &fhlt = *fHLTHoughTracks;
347 // new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
348 }
349
350 AliESDMuonTrack *GetMuonTrack(Int_t i) const {
c017f53f 351 return (AliESDMuonTrack *)(fMuonTracks?fMuonTracks->UncheckedAt(i):0x0);
af885e0f 352 }
f0106218 353
354 void AddMuonTrack(const AliESDMuonTrack *t);
af885e0f 355
356 AliESDPmdTrack *GetPmdTrack(Int_t i) const {
c017f53f 357 return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->UncheckedAt(i):0x0);
af885e0f 358 }
f0106218 359
360 void AddPmdTrack(const AliESDPmdTrack *t);
361
af885e0f 362
363 AliESDTrdTrack *GetTrdTrack(Int_t i) const {
c017f53f 364 return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->UncheckedAt(i):0x0);
af885e0f 365 }
f0106218 366
367
6c8e0967 368 void SetTrdTrigger(const AliESDTrdTrigger *t);
369
370 AliESDTrdTrigger* GetTrdTrigger() const {
371 return (AliESDTrdTrigger*)(fTrdTrigger);
372 }
373
f0106218 374 void AddTrdTrack(const AliESDTrdTrack *t);
af885e0f 375
52cd0cc0 376 AliESDTrdTracklet* GetTrdTracklet(Int_t idx) const {
377 return (AliESDTrdTracklet*)(fTrdTracklets?fTrdTracklets->UncheckedAt(idx):0x0);
378 }
379
380 void AddTrdTracklet(const AliESDTrdTracklet *trkl);
381
af885e0f 382 AliESDv0 *GetV0(Int_t i) const {
c017f53f 383 return (AliESDv0*)(fV0s?fV0s->UncheckedAt(i):0x0);
af885e0f 384 }
385 Int_t AddV0(const AliESDv0 *v);
386
387 AliESDcascade *GetCascade(Int_t i) const {
c017f53f 388 return (AliESDcascade *)(fCascades?fCascades->UncheckedAt(i):0x0);
af885e0f 389 }
f0106218 390
391 void AddCascade(const AliESDcascade *c);
af885e0f 392
393 AliESDkink *GetKink(Int_t i) const {
c017f53f 394 return (AliESDkink *)(fKinks?fKinks->UncheckedAt(i):0x0);
af885e0f 395 }
396 Int_t AddKink(const AliESDkink *c);
397
398 AliESDCaloCluster *GetCaloCluster(Int_t i) const {
c017f53f 399 return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->UncheckedAt(i):0x0);
af885e0f 400 }
e649177a 401
af885e0f 402 Int_t AddCaloCluster(const AliESDCaloCluster *c);
403
e649177a 404 AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
405 AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
406
042d5330 407 AliESDCaloTrigger* GetCaloTrigger(TString calo) const
408 {
409 if (calo.Contains("EMCAL")) return fEMCALTrigger;
410 else
411 return fPHOSTrigger;
412 }
413
af885e0f 414 AliRawDataErrorLog *GetErrorLog(Int_t i) const {
c017f53f 415 return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
af885e0f 416 }
7d44c466 417 void AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
f0106218 418
c017f53f 419 Int_t GetNumberOfErrorLogs() const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
af885e0f 420
04d01397 421 Int_t GetNumberOfPileupVerticesSPD() const {
642f673b 422 return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
04d01397 423 }
424 Int_t GetNumberOfPileupVerticesTracks() const {
642f673b 425 return (fTrkPileupVertices?fTrkPileupVertices->GetEntriesFast():0);
04d01397 426 }
c017f53f 427 Int_t GetNumberOfTracks() const {return fTracks?fTracks->GetEntriesFast():0;}
af885e0f 428 Int_t GetNumberOfHLTConfMapTracks() const {return 0;}
429 // fHLTConfMapTracks->GetEntriesFast();}
430 Int_t GetNumberOfHLTHoughTracks() const {return 0; }
431 // fHLTHoughTracks->GetEntriesFast(); }
432
c017f53f 433 Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
434 Int_t GetNumberOfPmdTracks() const {return fPmdTracks?fPmdTracks->GetEntriesFast():0;}
435 Int_t GetNumberOfTrdTracks() const {return fTrdTracks?fTrdTracks->GetEntriesFast():0;}
52cd0cc0 436 Int_t GetNumberOfTrdTracklets() const {return fTrdTracklets?fTrdTracklets->GetEntriesFast():0;}
c017f53f 437 Int_t GetNumberOfV0s() const {return fV0s?fV0s->GetEntriesFast():0;}
438 Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
439 Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
e649177a 440
cd1d4ee0 441 Int_t GetEMCALClusters(TRefArray *clusters) const;
442 Int_t GetPHOSClusters(TRefArray *clusters) const;
c017f53f 443 Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
af885e0f 444
a2fbb067 445 void SetUseOwnList(Bool_t b){fUseOwnList = b;}
b19cc8d0 446 Bool_t GetUseOwnList() const {return fUseOwnList;}
e649177a 447
c017f53f 448 void ResetV0s() { if(fV0s) fV0s->Clear(); }
449 void ResetCascades() { if(fCascades) fCascades->Clear(); }
af885e0f 450 void Reset();
451
452 void Print(Option_t *option="") const;
453
454 void AddObject(TObject* obj);
1d0dd492 455 void ReadFromTree(TTree *tree, Option_t* opt = "");
2811495d 456 TObject* FindListObject(const char *name) const;
af885e0f 457 AliESD *GetAliESDOld(){return fESDOld;}
f12d42ce 458 void WriteToTree(TTree* tree) const;
af885e0f 459 void GetStdContent();
460 void ResetStdContent();
461 void CreateStdContent();
a2fbb067 462 void CreateStdContent(Bool_t bUseThisList);
af885e0f 463 void SetStdNames();
464 void CopyFromOldESD();
024c7734 465 TList* GetList() const {return fESDObjects;}
c8fe2783 466
467 //Following needed only for mixed event
468 virtual Int_t EventIndex(Int_t) const {return 0;}
469 virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
470 virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
471 virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
472
af885e0f 473
474protected:
475 AliESDEvent(const AliESDEvent&);
102c56c8 476 static Bool_t ResetWithPlacementNew(TObject *pObject);
af885e0f 477
478 TList *fESDObjects; // List of esd Objects
479
480 AliESDRun *fESDRun; //! Run information tmp put in the Userdata
481 AliESDHeader *fHeader; //! ESD Event Header
482 AliESDZDC *fESDZDC; //! ZDC information
483 AliESDFMD *fESDFMD; //! FMD object containing rough multiplicity
484 AliESDVZERO *fESDVZERO; //! VZERO object containing rough multiplicity
485 AliESDTZERO *fESDTZERO; //! TZEROObject
06cc9d95 486 AliESDVertex *fTPCVertex; //! Primary vertex estimated by the TPC
af885e0f 487 AliESDVertex *fSPDVertex; //! Primary vertex estimated by the SPD
488 AliESDVertex *fPrimaryVertex; //! Primary vertex estimated using ESD tracks
489 AliMultiplicity *fSPDMult; //! SPD tracklet multiplicity
490 AliESDCaloTrigger* fPHOSTrigger; //! PHOS Trigger information
491 AliESDCaloTrigger* fEMCALTrigger; //! PHOS Trigger information
bd95bae7 492 AliESDACORDE *fESDACORDE; //! ACORDE ESD object caontaining bit pattern
6c8e0967 493 AliESDTrdTrigger *fTrdTrigger; //! TRD trigger information
af885e0f 494
04d01397 495 TClonesArray *fSPDPileupVertices;//! Pileup primary vertices reconstructed by SPD
496 TClonesArray *fTrkPileupVertices;//! Pileup primary vertices reconstructed using the tracks
af885e0f 497 TClonesArray *fTracks; //! ESD tracks
498 TClonesArray *fMuonTracks; //! MUON ESD tracks
499 TClonesArray *fPmdTracks; //! PMD ESD tracks
500 TClonesArray *fTrdTracks; //! TRD ESD tracks (triggered)
52cd0cc0 501 TClonesArray *fTrdTracklets; //! TRD tracklets (for trigger)
af885e0f 502 TClonesArray *fV0s; //! V0 vertices
503 TClonesArray *fCascades; //! Cascade vertices
504 TClonesArray *fKinks; //! Kinks
505 TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
e649177a 506 AliESDCaloCells *fEMCALCells; //! EMCAL cell info
507 AliESDCaloCells *fPHOSCells; //! PHOS cell info
af885e0f 508 TClonesArray *fErrorLogs; //! Raw-data reading error messages
509
510
511
1bd10080 512 AliESD *fESDOld; //! Old esd Structure
513 AliESDfriend *fESDFriendOld; //! Old friend esd Structure
60e8f114 514 Bool_t fConnected; //! flag if leaves are alreday connected
a2fbb067 515 Bool_t fUseOwnList; //! Do not use the list from the esdTree but use the one created by this class
60e8f114 516
6989bff3 517 static const char* fgkESDListName[kESDListN]; //!
af885e0f 518
f858b00e 519 AliTOFHeader *fTOFHeader; //! event times (and sigmas) as estimated by TOF
520 // combinatorial algorithm.
521 // It contains also TOF time resolution
522 // and T0spread as written in OCDB
fba4b2e2 523 AliCentrality *fCentrality; //! Centrality for AA collision
ce7adfe9 524 AliEventplane *fEventplane; //! Event plane for AA collision
5e14e698 525 ClassDef(AliESDEvent,16) //ESDEvent class
af885e0f 526};
527#endif
528