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