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