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