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