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