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