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