]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESDEvent.h
Changes for #81817: Fixes relatedto the trigger bits treatment in AliReconstruction
[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
299
300 AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
301 // return (AliESDHLTtrack *)fHLTConfMapTracks->UncheckedAt(i);
302 return 0;
303 }
304 void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
305 printf("ESD:: AddHLTConfMapTrack do nothing \n");
306 // TClonesArray &fhlt = *fHLTConfMapTracks;
307 // new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
308 }
309
310
311 AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
312 // return (AliESDHLTtrack *)fHLTHoughTracks->UncheckedAt(i);
313 return 0;
314 }
315 void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
316 printf("ESD:: AddHLTHoughTrack do nothing \n");
317 // TClonesArray &fhlt = *fHLTHoughTracks;
318 // new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
319 }
320
321 AliESDMuonTrack *GetMuonTrack(Int_t i) const {
c017f53f 322 return (AliESDMuonTrack *)(fMuonTracks?fMuonTracks->UncheckedAt(i):0x0);
af885e0f 323 }
f0106218 324
325 void AddMuonTrack(const AliESDMuonTrack *t);
af885e0f 326
327 AliESDPmdTrack *GetPmdTrack(Int_t i) const {
c017f53f 328 return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->UncheckedAt(i):0x0);
af885e0f 329 }
f0106218 330
331 void AddPmdTrack(const AliESDPmdTrack *t);
332
af885e0f 333
334 AliESDTrdTrack *GetTrdTrack(Int_t i) const {
c017f53f 335 return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->UncheckedAt(i):0x0);
af885e0f 336 }
f0106218 337
338
339 void AddTrdTrack(const AliESDTrdTrack *t);
af885e0f 340
341 AliESDv0 *GetV0(Int_t i) const {
c017f53f 342 return (AliESDv0*)(fV0s?fV0s->UncheckedAt(i):0x0);
af885e0f 343 }
344 Int_t AddV0(const AliESDv0 *v);
345
346 AliESDcascade *GetCascade(Int_t i) const {
c017f53f 347 return (AliESDcascade *)(fCascades?fCascades->UncheckedAt(i):0x0);
af885e0f 348 }
f0106218 349
350 void AddCascade(const AliESDcascade *c);
af885e0f 351
352 AliESDkink *GetKink(Int_t i) const {
c017f53f 353 return (AliESDkink *)(fKinks?fKinks->UncheckedAt(i):0x0);
af885e0f 354 }
355 Int_t AddKink(const AliESDkink *c);
356
357 AliESDCaloCluster *GetCaloCluster(Int_t i) const {
c017f53f 358 return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->UncheckedAt(i):0x0);
af885e0f 359 }
e649177a 360
af885e0f 361 Int_t AddCaloCluster(const AliESDCaloCluster *c);
362
e649177a 363 AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
364 AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
365
042d5330 366 AliESDCaloTrigger* GetCaloTrigger(TString calo) const
367 {
368 if (calo.Contains("EMCAL")) return fEMCALTrigger;
369 else
370 return fPHOSTrigger;
371 }
372
af885e0f 373 AliRawDataErrorLog *GetErrorLog(Int_t i) const {
c017f53f 374 return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
af885e0f 375 }
7d44c466 376 void AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
f0106218 377
c017f53f 378 Int_t GetNumberOfErrorLogs() const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
af885e0f 379
04d01397 380 Int_t GetNumberOfPileupVerticesSPD() const {
642f673b 381 return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
04d01397 382 }
383 Int_t GetNumberOfPileupVerticesTracks() const {
642f673b 384 return (fTrkPileupVertices?fTrkPileupVertices->GetEntriesFast():0);
04d01397 385 }
c017f53f 386 Int_t GetNumberOfTracks() const {return fTracks?fTracks->GetEntriesFast():0;}
af885e0f 387 Int_t GetNumberOfHLTConfMapTracks() const {return 0;}
388 // fHLTConfMapTracks->GetEntriesFast();}
389 Int_t GetNumberOfHLTHoughTracks() const {return 0; }
390 // fHLTHoughTracks->GetEntriesFast(); }
391
c017f53f 392 Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
393 Int_t GetNumberOfPmdTracks() const {return fPmdTracks?fPmdTracks->GetEntriesFast():0;}
394 Int_t GetNumberOfTrdTracks() const {return fTrdTracks?fTrdTracks->GetEntriesFast():0;}
395 Int_t GetNumberOfV0s() const {return fV0s?fV0s->GetEntriesFast():0;}
396 Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
397 Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
e649177a 398
cd1d4ee0 399 Int_t GetEMCALClusters(TRefArray *clusters) const;
400 Int_t GetPHOSClusters(TRefArray *clusters) const;
c017f53f 401 Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
af885e0f 402
a2fbb067 403 void SetUseOwnList(Bool_t b){fUseOwnList = b;}
b19cc8d0 404 Bool_t GetUseOwnList() const {return fUseOwnList;}
e649177a 405
c017f53f 406 void ResetV0s() { if(fV0s) fV0s->Clear(); }
407 void ResetCascades() { if(fCascades) fCascades->Clear(); }
af885e0f 408 void Reset();
409
410 void Print(Option_t *option="") const;
411
412 void AddObject(TObject* obj);
1d0dd492 413 void ReadFromTree(TTree *tree, Option_t* opt = "");
2811495d 414 TObject* FindListObject(const char *name) const;
af885e0f 415 AliESD *GetAliESDOld(){return fESDOld;}
f12d42ce 416 void WriteToTree(TTree* tree) const;
af885e0f 417 void GetStdContent();
418 void ResetStdContent();
419 void CreateStdContent();
a2fbb067 420 void CreateStdContent(Bool_t bUseThisList);
af885e0f 421 void SetStdNames();
422 void CopyFromOldESD();
024c7734 423 TList* GetList() const {return fESDObjects;}
c8fe2783 424
425 //Following needed only for mixed event
426 virtual Int_t EventIndex(Int_t) const {return 0;}
427 virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
428 virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
429 virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
430
af885e0f 431
432protected:
433 AliESDEvent(const AliESDEvent&);
102c56c8 434 static Bool_t ResetWithPlacementNew(TObject *pObject);
af885e0f 435
436 TList *fESDObjects; // List of esd Objects
437
438 AliESDRun *fESDRun; //! Run information tmp put in the Userdata
439 AliESDHeader *fHeader; //! ESD Event Header
440 AliESDZDC *fESDZDC; //! ZDC information
441 AliESDFMD *fESDFMD; //! FMD object containing rough multiplicity
442 AliESDVZERO *fESDVZERO; //! VZERO object containing rough multiplicity
443 AliESDTZERO *fESDTZERO; //! TZEROObject
06cc9d95 444 AliESDVertex *fTPCVertex; //! Primary vertex estimated by the TPC
af885e0f 445 AliESDVertex *fSPDVertex; //! Primary vertex estimated by the SPD
446 AliESDVertex *fPrimaryVertex; //! Primary vertex estimated using ESD tracks
447 AliMultiplicity *fSPDMult; //! SPD tracklet multiplicity
448 AliESDCaloTrigger* fPHOSTrigger; //! PHOS Trigger information
449 AliESDCaloTrigger* fEMCALTrigger; //! PHOS Trigger information
bd95bae7 450 AliESDACORDE *fESDACORDE; //! ACORDE ESD object caontaining bit pattern
af885e0f 451
04d01397 452 TClonesArray *fSPDPileupVertices;//! Pileup primary vertices reconstructed by SPD
453 TClonesArray *fTrkPileupVertices;//! Pileup primary vertices reconstructed using the tracks
af885e0f 454 TClonesArray *fTracks; //! ESD tracks
455 TClonesArray *fMuonTracks; //! MUON ESD tracks
456 TClonesArray *fPmdTracks; //! PMD ESD tracks
457 TClonesArray *fTrdTracks; //! TRD ESD tracks (triggered)
458 TClonesArray *fV0s; //! V0 vertices
459 TClonesArray *fCascades; //! Cascade vertices
460 TClonesArray *fKinks; //! Kinks
461 TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
e649177a 462 AliESDCaloCells *fEMCALCells; //! EMCAL cell info
463 AliESDCaloCells *fPHOSCells; //! PHOS cell info
af885e0f 464 TClonesArray *fErrorLogs; //! Raw-data reading error messages
465
466
467
1bd10080 468 AliESD *fESDOld; //! Old esd Structure
469 AliESDfriend *fESDFriendOld; //! Old friend esd Structure
60e8f114 470 Bool_t fConnected; //! flag if leaves are alreday connected
a2fbb067 471 Bool_t fUseOwnList; //! Do not use the list from the esdTree but use the one created by this class
60e8f114 472
6989bff3 473 static const char* fgkESDListName[kESDListN]; //!
af885e0f 474
f858b00e 475 AliTOFHeader *fTOFHeader; //! event times (and sigmas) as estimated by TOF
476 // combinatorial algorithm.
477 // It contains also TOF time resolution
478 // and T0spread as written in OCDB
fba4b2e2 479 AliCentrality *fCentrality; //! Centrality for AA collision
ce7adfe9 480 AliEventplane *fEventplane; //! Event plane for AA collision
481 ClassDef(AliESDEvent,14) //ESDEvent class
af885e0f 482};
483#endif
484