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