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