]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDEvent.h
split of AliV and AliVV interfaces
[u/mrichter/AliRoot.git] / STEER / ESD / 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
5e319bd5 8/* $Id: AliESDEvent.h 64008 2013-08-28 13:09:59Z hristov $ */
af885e0f 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>
115179c6 22#include <TObjArray.h>
af885e0f 23
af885e0f 24
024c7734 25#include "AliVEvent.h"
19dbfe8c 26#include "AliVVevent.h"
694aad0c 27// some includes for delegated methods
f0106218 28#include "AliESDCaloTrigger.h"
af885e0f 29#include "AliESDRun.h"
30#include "AliESDHeader.h"
3f47e572 31#include "AliESDTZERO.h"
f0106218 32#include "AliESDZDC.h"
bd95bae7 33#include "AliESDACORDE.h"
5e319bd5 34#include "AliESDAD.h"
af885e0f 35
024c7734 36// AliESDtrack has to be included so that the compiler
37// knows its inheritance tree (= that it is a AliVParticle).
38#include "AliESDtrack.h"
5303c167 39// same for AliESDVertex (which is a AliVVertex)
40#include "AliESDVertex.h"
c8fe2783 41// same for CaloCells and CaloClusters (which is a AliVCaloCells, AliVCluster)
42#include "AliESDCaloCluster.h"
43#include "AliESDCaloCells.h"
44
ae2bccf1 45#include "AliESDVZERO.h"
9aa7ebff 46#include "AliESDTrdTrack.h"
49436743 47#include "AliESDTOFCluster.h"
48#include "AliESDTOFHit.h"
49#include "AliESDTOFMatch.h"
50ff8c36 50#include "AliESDv0.h"
51#include "AliESDkink.h"
08f45a9c 52#include "AliESDfriend.h"
49436743 53
af885e0f 54class AliESDHLTtrack;
f0106218 55class AliESDVertex;
56class AliESDPmdTrack;
57class AliESDFMD;
f0106218 58class AliMultiplicity;
59class AliRawDataErrorLog;
60class AliESDRun;
6c8e0967 61class AliESDTrdTrigger;
52cd0cc0 62class AliESDTrdTracklet;
f0106218 63class AliESDMuonTrack;
fe0324de 64class AliESDMuonCluster;
65class AliESDMuonPad;
d3eabe96 66class AliESDMuonGlobalTrack; // AU
af885e0f 67class AliESD;
f0106218 68class AliESDcascade;
fba4b2e2 69class AliCentrality;
ce7adfe9 70class AliEventplane;
cd1d4ee0 71class TRefArray;
bd95bae7 72class AliESDACORDE;
5e319bd5 73class AliESDAD;
8b12d288 74class AliESDHLTDecision;
8e1324ab 75class AliESDCosmicTrack;
af885e0f 76
80791508 77class TList;
78class TString;
79
d3eabe96 80
19dbfe8c 81class AliESDEvent : public AliVEvent, public AliVVevent {
af885e0f 82public:
83
84
6989bff3 85 enum ESDListIndex {kESDRun,
af885e0f 86 kHeader,
87 kESDZDC,
88 kESDFMD,
89 kESDVZERO,
90 kESDTZERO,
06cc9d95 91 kTPCVertex,
af885e0f 92 kSPDVertex,
93 kPrimaryVertex,
94 kSPDMult,
95 kPHOSTrigger,
96 kEMCALTrigger,
04d01397 97 kSPDPileupVertices,
98 kTrkPileupVertices,
af885e0f 99 kTracks,
100 kMuonTracks,
fe0324de 101 kMuonClusters,
102 kMuonPads,
d3eabe96 103 kMuonGlobalTracks, // AU
af885e0f 104 kPmdTracks,
6c8e0967 105 kTrdTrigger,
af885e0f 106 kTrdTracks,
52cd0cc0 107 kTrdTracklets,
af885e0f 108 kV0s,
109 kCascades,
110 kKinks,
111 kCaloClusters,
e649177a 112 kEMCALCells,
113 kPHOSCells,
af885e0f 114 kErrorLogs,
bd95bae7 115 kESDACORDE,
5e319bd5 116 kESDAD,
f858b00e 117 kTOFHeader,
8e1324ab 118 kCosmicTracks,
49436743 119 kTOFclusters,
120 kTOFhit,
121 kTOFmatch,
af885e0f 122 kESDListN
123 };
124
125 AliESDEvent();
732a24fe 126 virtual ~AliESDEvent();
127 AliESDEvent &operator=(const AliESDEvent& source); // or make private and use only copy?
128 virtual void Copy(TObject& obj) const;
af885e0f 129
130 // RUN
131 // move this to the UserData!!!
132 const AliESDRun* GetESDRun() const {return fESDRun;}
133
134 // Delegated methods for fESDRun
c017f53f 135 void SetRunNumber(Int_t n) {if(fESDRun) fESDRun->SetRunNumber(n);}
136 Int_t GetRunNumber() const {return fESDRun?fESDRun->GetRunNumber():-1;}
00d00f58 137 void SetPeriodNumber(UInt_t n){
138 if(fESDRun) fESDRun->SetPeriodNumber(n);
139 if(fHeader) fHeader->SetPeriodNumber(n);
140 }
c017f53f 141 UInt_t GetPeriodNumber() const {return fESDRun?fESDRun->GetPeriodNumber():0;}
142 void SetMagneticField(Double_t mf){if(fESDRun) fESDRun->SetMagneticField(mf);}
143 Double_t GetMagneticField() const {return fESDRun?fESDRun->GetMagneticField():0;}
144 void SetDiamond(const AliESDVertex *vertex) { if(fESDRun) fESDRun->SetDiamond(vertex);}
145 Double_t GetDiamondX() const {return fESDRun?fESDRun->GetDiamondX():0;}
146 Double_t GetDiamondY() const {return fESDRun?fESDRun->GetDiamondY():0;}
1c7554f9 147 Double_t GetDiamondZ() const {return fESDRun?fESDRun->GetDiamondZ():0;}
c017f53f 148 Double_t GetSigma2DiamondX() const {return fESDRun?fESDRun->GetSigma2DiamondX():0;}
149 Double_t GetSigma2DiamondY() const {return fESDRun?fESDRun->GetSigma2DiamondY():0;}
1c7554f9 150 Double_t GetSigma2DiamondZ() const {return fESDRun?fESDRun->GetSigma2DiamondZ():0;}
c017f53f 151 void GetDiamondCovXY(Float_t cov[3]) const {if(fESDRun) fESDRun->GetDiamondCovXY(cov);}
152 void SetTriggerClass(const char*name, Int_t index) {if(fESDRun) fESDRun->SetTriggerClass(name,index);}
153 void SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {if(fESDRun) fESDRun->SetPHOSMatrix(matrix,i);}
154 const TGeoHMatrix* GetPHOSMatrix(Int_t i) const {return fESDRun?fESDRun->GetPHOSMatrix(i):0x0;}
155 void SetEMCALMatrix(TGeoHMatrix*matrix, Int_t i) {if(fESDRun) fESDRun->SetEMCALMatrix(matrix,i);}
156 const TGeoHMatrix* GetEMCALMatrix(Int_t i) const {return fESDRun?fESDRun->GetEMCALMatrix(i):0x0;}
da6062af 157 void SetCaloTriggerType(const Int_t* type) {if (fESDRun) fESDRun->SetCaloTriggerType(type);}
1dc767cf 158 Int_t* GetCaloTriggerType() const {return fESDRun?fESDRun->GetCaloTriggerType():0x0;}
5e14e698 159 virtual const Float_t* GetVZEROEqFactors() const {return fESDRun?fESDRun->GetVZEROEqFactors():0x0;}
160 virtual Float_t GetVZEROEqMultiplicity(Int_t i) const;
da6062af 161
33fe5eb1 162 //
c017f53f 163 void SetCurrentL3(Float_t cur) const {if(fESDRun) fESDRun->SetCurrentL3(cur);}
164 void SetCurrentDip(Float_t cur) const {if(fESDRun) fESDRun->SetCurrentDip(cur);}
165 void SetBeamEnergy(Float_t be) const {if(fESDRun) fESDRun->SetBeamEnergy(be);}
166 void SetBeamType(const char* bt) const {if(fESDRun) fESDRun->SetBeamType(bt);}
91460b26 167 void SetBeamParticle(Int_t az, Int_t ibeam) {if(fESDRun) fESDRun->SetBeamParticle(az,ibeam);}
c017f53f 168 void SetUniformBMap(Bool_t val=kTRUE) const {if(fESDRun) fESDRun->SetBit(AliESDRun::kUniformBMap,val);}
169 void SetBInfoStored(Bool_t val=kTRUE) const {if(fESDRun) fESDRun->SetBit(AliESDRun::kBInfoStored,val);}
33fe5eb1 170 //
c017f53f 171 Float_t GetCurrentL3() const {return fESDRun?fESDRun->GetCurrentL3():0;}
172 Float_t GetCurrentDip() const {return fESDRun?fESDRun->GetCurrentDip():0;}
173 Float_t GetBeamEnergy() const {return fESDRun?fESDRun->GetBeamEnergy():0;}
174 const char* GetBeamType() const {return fESDRun?fESDRun->GetBeamType():0;}
91460b26 175 Int_t GetBeamParticle(Int_t ibeam) const {return fESDRun?fESDRun->GetBeamParticle(ibeam):0;}
176 Int_t GetBeamParticleA(Int_t ibeam) const {return fESDRun?fESDRun->GetBeamParticleA(ibeam):0;}
177 Int_t GetBeamParticleZ(Int_t ibeam) const {return fESDRun?fESDRun->GetBeamParticleZ(ibeam):0;}
c017f53f 178 Bool_t IsUniformBMap() const {return fESDRun?fESDRun->TestBit(AliESDRun::kUniformBMap):kFALSE;}
33fe5eb1 179 //
127be208 180 virtual Bool_t InitMagneticField() const {return fESDRun?fESDRun->InitMagneticField():kFALSE;}
78cbd205 181 void SetT0spread(Float_t *t) const {if(fESDRun) fESDRun->SetT0spread(t);}
182 Float_t GetT0spread(Int_t i) const {return fESDRun?fESDRun->GetT0spread(i):0;}
cc4d0e9c 183 virtual void SetVZEROEqFactors(Float_t factors[64]) const {if(fESDRun) fESDRun->SetVZEROEqFactors(factors);}
af885e0f 184 // HEADER
024c7734 185 AliESDHeader* GetHeader() const {return fHeader;}
af885e0f 186
187 // Delegated methods for fHeader
c017f53f 188 void SetTriggerMask(ULong64_t n) {if(fHeader) fHeader->SetTriggerMask(n);}
6848e3be 189 void SetTriggerMaskNext50(ULong64_t n) {if(fHeader) fHeader->SetTriggerMaskNext50(n);}
c017f53f 190 void SetOrbitNumber(UInt_t n) {if(fHeader) fHeader->SetOrbitNumber(n);}
191 void SetTimeStamp(UInt_t timeStamp){if(fHeader) fHeader->SetTimeStamp(timeStamp);}
192 void SetEventType(UInt_t eventType){if(fHeader) fHeader->SetEventType(eventType);}
193 void SetEventSpecie(UInt_t eventSpecie){if(fHeader) fHeader->SetEventSpecie(eventSpecie);}
194 void SetEventNumberInFile(Int_t n) {if(fHeader) fHeader->SetEventNumberInFile(n);}
195 // void SetRunNumber(Int_t n) {if(fHeader) fHeader->SetRunNumber(n);}
196 void SetBunchCrossNumber(UShort_t n) {if(fHeader) fHeader->SetBunchCrossNumber(n);}
197 void SetTriggerCluster(UChar_t n) {if(fHeader) fHeader->SetTriggerCluster(n);}
694aad0c 198
c017f53f 199 ULong64_t GetTriggerMask() const {return fHeader?fHeader->GetTriggerMask():0;}
6848e3be 200 ULong64_t GetTriggerMaskNext50() const {return fHeader?fHeader->GetTriggerMaskNext50():0;}
201 //TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
202 TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50()):"";}
203 //Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
204 Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50(),name):kFALSE;}
2a3dfb14 205 Bool_t IsEventSelected(const char *trigExpr) const;
3b286f80 206 TObject* GetHLTTriggerDecision() const;
207 TString GetHLTTriggerDescription() const;
208 Bool_t IsHLTTriggerFired(const char* name=NULL) const;
158a76dd 209 UInt_t GetOrbitNumber() const {return fHeader?fHeader->GetOrbitNumber():0;}
c017f53f 210 UInt_t GetTimeStamp() const { return fHeader?fHeader->GetTimeStamp():0;}
211 UInt_t GetEventType() const { return fHeader?fHeader->GetEventType():0;}
212 UInt_t GetEventSpecie() const { return fHeader?fHeader->GetEventSpecie():0;}
213 Int_t GetEventNumberInFile() const {return fHeader?fHeader->GetEventNumberInFile():-1;}
214 UShort_t GetBunchCrossNumber() const {return fHeader?fHeader->GetBunchCrossNumber():0;}
215 UChar_t GetTriggerCluster() const {return fHeader?fHeader->GetTriggerCluster():0;}
766037f0 216 Bool_t IsDetectorInTriggerCluster(TString detector, AliTriggerConfiguration* trigConf) const;
af885e0f 217 // ZDC CKB: put this in the header?
16d867eb 218 AliESDZDC* GetESDZDC() const {return fESDZDC;}
219 AliESDZDC* GetZDCData() const {return fESDZDC;}
220
5d8eaff6 221 void SetZDCData(const AliESDZDC * obj);
af885e0f 222
223 // Delegated methods for fESDZDC
c017f53f 224 Double_t GetZDCN1Energy() const {return fESDZDC?fESDZDC->GetZDCN1Energy():0;}
225 Double_t GetZDCP1Energy() const {return fESDZDC?fESDZDC->GetZDCP1Energy():0;}
226 Double_t GetZDCN2Energy() const {return fESDZDC?fESDZDC->GetZDCN2Energy():0;}
227 Double_t GetZDCP2Energy() const {return fESDZDC?fESDZDC->GetZDCP2Energy():0;}
228 Double_t GetZDCEMEnergy(Int_t i=0) const {return fESDZDC?fESDZDC->GetZDCEMEnergy(i):0;}
229 Int_t GetZDCParticipants() const {return fESDZDC?fESDZDC->GetZDCParticipants():0;}
fba4b2e2 230 AliCentrality* GetCentrality();
ce7adfe9 231 AliEventplane* GetEventplane();
cb62947d 232
2eec2a33 233
b19cc8d0 234 void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t em1Energy, Float_t em2Energy,
235 Float_t n2Energy, Float_t p2Energy, Int_t participants, Int_t nPartA,
236 Int_t nPartC, Double_t b, Double_t bA, Double_t bC, UInt_t recoflag)
c017f53f 237 {if(fESDZDC) fESDZDC->SetZDC(n1Energy, p1Energy, em1Energy, em2Energy, n2Energy, p2Energy,
b19cc8d0 238 participants, nPartA, nPartC, b, bA, bC, recoflag);}
cb62947d 239 // FMD
af885e0f 240 void SetFMDData(AliESDFMD * obj);
5b96d6f1 241 AliESDFMD *GetFMDData() const { return fESDFMD; }
af885e0f 242
243
244 // TZERO CKB: put this in the header?
245 const AliESDTZERO* GetESDTZERO() const {return fESDTZERO;}
5d8eaff6 246 void SetTZEROData(const AliESDTZERO * obj);
b0e13b29 247 // delegetated methods for fESDTZERO
af885e0f 248
adf36b9d 249 Double32_t GetT0zVertex() const {return fESDTZERO?fESDTZERO->GetT0zVertex():0;}
250 void SetT0zVertex(Double32_t z) {if(fESDTZERO) fESDTZERO->SetT0zVertex(z);}
251 Double32_t GetT0() const {return fESDTZERO?fESDTZERO->GetT0():0;}
252 void SetT0(Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0(timeStart);}
253 Double32_t GetT0clock() const {return fESDTZERO?fESDTZERO->GetT0clock():0;}
254 void SetT0clock(Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0clock(timeStart);}
255 Double32_t GetT0TOF(Int_t icase) const {return fESDTZERO?fESDTZERO->GetT0TOF(icase):0;}
256 const Double32_t * GetT0TOF() const {return fESDTZERO?fESDTZERO->GetT0TOF():0x0;}
257 void SetT0TOF(Int_t icase,Double32_t timeStart) {if(fESDTZERO) fESDTZERO->SetT0TOF(icase,timeStart);}
258 const Double32_t * GetT0time() const {return fESDTZERO?fESDTZERO->GetT0time():0x0;}
259 void SetT0time(Double32_t time[24]) {if(fESDTZERO) fESDTZERO->SetT0time(time);}
260 const Double32_t * GetT0amplitude() const {return fESDTZERO?fESDTZERO->GetT0amplitude():0x0;}
261 void SetT0amplitude(Double32_t amp[24]){if(fESDTZERO) fESDTZERO->SetT0amplitude(amp);}
262 Int_t GetT0Trig() const { return fESDTZERO?fESDTZERO->GetT0Trig():0;}
263 void SetT0Trig(Int_t tvdc) {if(fESDTZERO) fESDTZERO->SetT0Trig(tvdc);}
af885e0f 264
265 // VZERO
266 AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
5d8eaff6 267 void SetVZEROData(const AliESDVZERO * obj);
820b4d9e 268
bd95bae7 269 // ACORDE
270 AliESDACORDE *GetACORDEData() const { return fESDACORDE;}
271 void SetACORDEData(AliESDACORDE * obj);
af885e0f 272
5e319bd5 273 // AD
274 AliESDAD *GetADData() const { return fESDAD;}
275 void SetADData(AliESDAD * obj);
276
277
278
279
7d44c466 280 void SetESDfriend(const AliESDfriend *f) const;
af885e0f 281 void GetESDfriend(AliESDfriend *f) const;
08f45a9c 282 AliESDfriend* FindFriend() const { return static_cast<AliESDfriend*>(FindListObject("AliESDfriend")); }
af885e0f 283
06cc9d95 284 void SetPrimaryVertexTPC(const AliESDVertex *vertex);
285 const AliESDVertex *GetPrimaryVertexTPC() const {return fTPCVertex;}
286
287 void SetPrimaryVertexSPD(const AliESDVertex *vertex);
288 const AliESDVertex *GetPrimaryVertexSPD() const {return fSPDVertex;}
289 const AliESDVertex *GetVertex() const {
290 //For the backward compatibily only
291 return GetPrimaryVertexSPD();
292 }
af885e0f 293
c264b61b 294 void SetPrimaryVertexTracks(const AliESDVertex *vertex);
295 const AliESDVertex *GetPrimaryVertexTracks() const {return fPrimaryVertex;}
518573d7 296 AliESDVertex *PrimaryVertexTracksUnconstrained() const;
c264b61b 297
298 const AliESDVertex *GetPrimaryVertex() const;
af885e0f 299
f858b00e 300
301
302 void SetTOFHeader(const AliTOFHeader * tofEventTime);
49a1368d 303 AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
d9fc7e74 304 Float_t GetEventTimeSpread() const {if (fTOFHeader) return fTOFHeader->GetT0spread(); else return 0.;}
305 Float_t GetTOFTimeResolution() const {if (fTOFHeader) return fTOFHeader->GetTOFResolution(); else return 0.;}
49436743 306
307 TClonesArray *GetESDTOFClusters() const {return fESDTOFClusters;}
308 TClonesArray *GetESDTOFHits() const {return fESDTOFHits;}
309 TClonesArray *GetESDTOFMatches() const {return fESDTOFMatchess;}
310
311 void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster,Int_t *mapping=NULL);
312 void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster[],Int_t *mapping=NULL);
313 Int_t GetNTOFclusters() const {return fESDTOFClusters ? fESDTOFClusters->GetEntriesFast() : 0;}
f858b00e 314
f0106218 315 void SetMultiplicity(const AliMultiplicity *mul);
316
af885e0f 317 const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
4ace6760 318 void EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
319 Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
f0106218 320
7f68891d 321 Bool_t Clean(Float_t *cleanPars);
7d44c466 322 Bool_t RemoveKink(Int_t i) const;
323 Bool_t RemoveV0(Int_t i) const;
324 Bool_t RemoveTrack(Int_t i) const;
d64bd07d 325
04d01397 326 const AliESDVertex *GetPileupVertexSPD(Int_t i) const {
c8975fcf 327 return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->At(i):0x0);
04d01397 328 }
6dc21f57 329 Char_t AddPileupVertexSPD(const AliESDVertex *vtx);
04d01397 330 const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
c8975fcf 331 return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->At(i):0x0);
04d01397 332 }
6dc21f57 333 Char_t AddPileupVertexTracks(const AliESDVertex *vtx);
3f2db92f 334 TClonesArray* GetPileupVerticesTracks() const {return (TClonesArray*)fTrkPileupVertices;}
335 TClonesArray* GetPileupVerticesSPD() const {return (TClonesArray*)fSPDPileupVertices;}
04d01397 336
a98c78e5 337 virtual Bool_t IsPileupFromSPD(Int_t minContributors=3,
338 Double_t minZdist=0.8,
339 Double_t nSigmaZdist=3.,
340 Double_t nSigmaDiamXY=2.,
341 Double_t nSigmaDiamZ=5.) const;
342
b46ff4b0 343 virtual Bool_t IsPileupFromSPDInMultBins() const;
344
d38034b8 345 void ConnectTracks();
346 Bool_t AreTracksConnected() const {return fTracksConnected;}
347
348 AliESDtrack *GetTrack(Int_t i) const {return (fTracks)?(AliESDtrack*)fTracks->At(i) : 0;}
af885e0f 349 Int_t AddTrack(const AliESDtrack *t);
350
65a0cf79 351 /// add new track at the end of tracks array and return instance
352 AliESDtrack* NewTrack();
af885e0f 353
354 AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
c8975fcf 355 // return (AliESDHLTtrack *)fHLTConfMapTracks->At(i);
af885e0f 356 return 0;
357 }
358 void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
359 printf("ESD:: AddHLTConfMapTrack do nothing \n");
360 // TClonesArray &fhlt = *fHLTConfMapTracks;
361 // new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
362 }
363
364
365 AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
c8975fcf 366 // return (AliESDHLTtrack *)fHLTHoughTracks->At(i);
af885e0f 367 return 0;
368 }
369 void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
370 printf("ESD:: AddHLTHoughTrack do nothing \n");
371 // TClonesArray &fhlt = *fHLTHoughTracks;
372 // new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
373 }
374
fe0324de 375 Bool_t MoveMuonObjects();
376
377 AliESDMuonTrack* GetMuonTrack(Int_t i);
378 AliESDMuonTrack* NewMuonTrack();
379
380 AliESDMuonCluster* GetMuonCluster(Int_t i);
381 AliESDMuonCluster* FindMuonCluster(UInt_t clusterId);
382 AliESDMuonCluster* NewMuonCluster();
383
384 AliESDMuonPad* GetMuonPad(Int_t i);
385 AliESDMuonPad* FindMuonPad(UInt_t padId);
386 AliESDMuonPad* NewMuonPad();
387
d3eabe96 388 AliESDMuonGlobalTrack* GetMuonGlobalTrack(Int_t i); // AU
389 AliESDMuonGlobalTrack* NewMuonGlobalTrack(); // AU
390
af885e0f 391 AliESDPmdTrack *GetPmdTrack(Int_t i) const {
c8975fcf 392 return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->At(i):0x0);
af885e0f 393 }
f0106218 394
395 void AddPmdTrack(const AliESDPmdTrack *t);
396
af885e0f 397
398 AliESDTrdTrack *GetTrdTrack(Int_t i) const {
c8975fcf 399 return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->At(i):0x0);
af885e0f 400 }
f0106218 401
402
6c8e0967 403 void SetTrdTrigger(const AliESDTrdTrigger *t);
404
405 AliESDTrdTrigger* GetTrdTrigger() const {
406 return (AliESDTrdTrigger*)(fTrdTrigger);
407 }
408
f0106218 409 void AddTrdTrack(const AliESDTrdTrack *t);
af885e0f 410
52cd0cc0 411 AliESDTrdTracklet* GetTrdTracklet(Int_t idx) const {
c8975fcf 412 return (AliESDTrdTracklet*)(fTrdTracklets?fTrdTracklets->At(idx):0x0);
52cd0cc0 413 }
414
415 void AddTrdTracklet(const AliESDTrdTracklet *trkl);
60557224 416 void AddTrdTracklet(UInt_t trackletWord, Short_t hcid, Int_t label = -1);
52cd0cc0 417
af885e0f 418 AliESDv0 *GetV0(Int_t i) const {
c8975fcf 419 return (AliESDv0*)(fV0s?fV0s->At(i):0x0);
af885e0f 420 }
421 Int_t AddV0(const AliESDv0 *v);
422
423 AliESDcascade *GetCascade(Int_t i) const {
c8975fcf 424 return (AliESDcascade *)(fCascades?fCascades->At(i):0x0);
af885e0f 425 }
f0106218 426
427 void AddCascade(const AliESDcascade *c);
af885e0f 428
429 AliESDkink *GetKink(Int_t i) const {
c8975fcf 430 return (AliESDkink *)(fKinks?fKinks->At(i):0x0);
af885e0f 431 }
432 Int_t AddKink(const AliESDkink *c);
433
434 AliESDCaloCluster *GetCaloCluster(Int_t i) const {
c8975fcf 435 return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->At(i):0x0);
af885e0f 436 }
e649177a 437
af885e0f 438 Int_t AddCaloCluster(const AliESDCaloCluster *c);
439
e649177a 440 AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
441 AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
442
042d5330 443 AliESDCaloTrigger* GetCaloTrigger(TString calo) const
444 {
445 if (calo.Contains("EMCAL")) return fEMCALTrigger;
446 else
447 return fPHOSTrigger;
448 }
8e1324ab 449
450 AliESDCosmicTrack *GetCosmicTrack(Int_t i) const {
c8975fcf 451 return fCosmicTracks ? (AliESDCosmicTrack*) fCosmicTracks->At(i) : 0;
8e1324ab 452 }
453 const TClonesArray * GetCosmicTracks() const{ return fCosmicTracks;}
454
455 void AddCosmicTrack(const AliESDCosmicTrack *t);
042d5330 456
af885e0f 457 AliRawDataErrorLog *GetErrorLog(Int_t i) const {
c8975fcf 458 return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->At(i):0x0);
af885e0f 459 }
7d44c466 460 void AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
f0106218 461
c017f53f 462 Int_t GetNumberOfErrorLogs() const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
af885e0f 463
04d01397 464 Int_t GetNumberOfPileupVerticesSPD() const {
642f673b 465 return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
04d01397 466 }
467 Int_t GetNumberOfPileupVerticesTracks() const {
642f673b 468 return (fTrkPileupVertices?fTrkPileupVertices->GetEntriesFast():0);
04d01397 469 }
c017f53f 470 Int_t GetNumberOfTracks() const {return fTracks?fTracks->GetEntriesFast():0;}
ef7661fd 471 Int_t GetNumberOfESDTracks() const { return GetNumberOfTracks(); }
af885e0f 472 Int_t GetNumberOfHLTConfMapTracks() const {return 0;}
473 // fHLTConfMapTracks->GetEntriesFast();}
474 Int_t GetNumberOfHLTHoughTracks() const {return 0; }
475 // fHLTHoughTracks->GetEntriesFast(); }
476
c017f53f 477 Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
fe0324de 478 Int_t GetNumberOfMuonClusters();
479 Int_t GetNumberOfMuonPads();
d3eabe96 480 Int_t GetNumberOfMuonGlobalTracks() const {return fMuonGlobalTracks?fMuonGlobalTracks->GetEntriesFast():0;} // AU
c017f53f 481 Int_t GetNumberOfPmdTracks() const {return fPmdTracks?fPmdTracks->GetEntriesFast():0;}
482 Int_t GetNumberOfTrdTracks() const {return fTrdTracks?fTrdTracks->GetEntriesFast():0;}
52cd0cc0 483 Int_t GetNumberOfTrdTracklets() const {return fTrdTracklets?fTrdTracklets->GetEntriesFast():0;}
c017f53f 484 Int_t GetNumberOfV0s() const {return fV0s?fV0s->GetEntriesFast():0;}
485 Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
486 Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
8e1324ab 487
488 Int_t GetNumberOfCosmicTracks() const {return fCosmicTracks ? fCosmicTracks->GetEntriesFast():0;}
cd1d4ee0 489 Int_t GetEMCALClusters(TRefArray *clusters) const;
490 Int_t GetPHOSClusters(TRefArray *clusters) const;
c017f53f 491 Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
af885e0f 492
a2fbb067 493 void SetUseOwnList(Bool_t b){fUseOwnList = b;}
b19cc8d0 494 Bool_t GetUseOwnList() const {return fUseOwnList;}
e649177a 495
c017f53f 496 void ResetV0s() { if(fV0s) fV0s->Clear(); }
497 void ResetCascades() { if(fCascades) fCascades->Clear(); }
af885e0f 498 void Reset();
499
500 void Print(Option_t *option="") const;
501
502 void AddObject(TObject* obj);
1d0dd492 503 void ReadFromTree(TTree *tree, Option_t* opt = "");
2811495d 504 TObject* FindListObject(const char *name) const;
af885e0f 505 AliESD *GetAliESDOld(){return fESDOld;}
f12d42ce 506 void WriteToTree(TTree* tree) const;
af885e0f 507 void GetStdContent();
508 void ResetStdContent();
509 void CreateStdContent();
a2fbb067 510 void CreateStdContent(Bool_t bUseThisList);
fe0324de 511 void CompleteStdContent();
af885e0f 512 void SetStdNames();
513 void CopyFromOldESD();
024c7734 514 TList* GetList() const {return fESDObjects;}
c8fe2783 515
516 //Following needed only for mixed event
517 virtual Int_t EventIndex(Int_t) const {return 0;}
518 virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
519 virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
520 virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
521
a8f382ab 522 void SetDetectorStatus(ULong_t detMask) {fDetectorStatus|=detMask;}
523 void ResetDetectorStatus(ULong_t detMask) {fDetectorStatus&=~detMask;}
524 ULong_t GetDetectorStatus() const {return fDetectorStatus;}
525 Bool_t IsDetectorOn(ULong_t detMask) const {return (fDetectorStatus&detMask)>0;}
af885e0f 526
8bc95619 527 void SetDAQDetectorPattern(UInt_t pattern) {fDAQDetectorPattern = pattern;}
528 void SetDAQAttributes(UInt_t attributes) {fDAQAttributes = attributes;}
529 UInt_t GetDAQDetectorPattern() const {return fDAQDetectorPattern;}
530 UInt_t GetDAQAttributes() const {return fDAQAttributes;}
766037f0 531
af885e0f 532protected:
533 AliESDEvent(const AliESDEvent&);
102c56c8 534 static Bool_t ResetWithPlacementNew(TObject *pObject);
af885e0f 535
fe0324de 536 void AddMuonTrack(const AliESDMuonTrack *t);
d3eabe96 537 void AddMuonGlobalTrack(const AliESDMuonGlobalTrack *t); // AU
fe0324de 538
af885e0f 539 TList *fESDObjects; // List of esd Objects
540
541 AliESDRun *fESDRun; //! Run information tmp put in the Userdata
542 AliESDHeader *fHeader; //! ESD Event Header
543 AliESDZDC *fESDZDC; //! ZDC information
544 AliESDFMD *fESDFMD; //! FMD object containing rough multiplicity
545 AliESDVZERO *fESDVZERO; //! VZERO object containing rough multiplicity
546 AliESDTZERO *fESDTZERO; //! TZEROObject
06cc9d95 547 AliESDVertex *fTPCVertex; //! Primary vertex estimated by the TPC
af885e0f 548 AliESDVertex *fSPDVertex; //! Primary vertex estimated by the SPD
549 AliESDVertex *fPrimaryVertex; //! Primary vertex estimated using ESD tracks
550 AliMultiplicity *fSPDMult; //! SPD tracklet multiplicity
551 AliESDCaloTrigger* fPHOSTrigger; //! PHOS Trigger information
552 AliESDCaloTrigger* fEMCALTrigger; //! PHOS Trigger information
bd95bae7 553 AliESDACORDE *fESDACORDE; //! ACORDE ESD object caontaining bit pattern
5e319bd5 554 AliESDAD *fESDAD; //! AD ESD object caontaining bit pattern
6c8e0967 555 AliESDTrdTrigger *fTrdTrigger; //! TRD trigger information
af885e0f 556
04d01397 557 TClonesArray *fSPDPileupVertices;//! Pileup primary vertices reconstructed by SPD
558 TClonesArray *fTrkPileupVertices;//! Pileup primary vertices reconstructed using the tracks
af885e0f 559 TClonesArray *fTracks; //! ESD tracks
560 TClonesArray *fMuonTracks; //! MUON ESD tracks
fe0324de 561 TClonesArray *fMuonClusters; //! MUON ESD clusters
562 TClonesArray *fMuonPads; //! MUON ESD pads
d3eabe96 563 TClonesArray *fMuonGlobalTracks; //! MUON+MFT ESD tracks // AU
af885e0f 564 TClonesArray *fPmdTracks; //! PMD ESD tracks
565 TClonesArray *fTrdTracks; //! TRD ESD tracks (triggered)
52cd0cc0 566 TClonesArray *fTrdTracklets; //! TRD tracklets (for trigger)
af885e0f 567 TClonesArray *fV0s; //! V0 vertices
568 TClonesArray *fCascades; //! Cascade vertices
569 TClonesArray *fKinks; //! Kinks
570 TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
e649177a 571 AliESDCaloCells *fEMCALCells; //! EMCAL cell info
572 AliESDCaloCells *fPHOSCells; //! PHOS cell info
8e1324ab 573 TClonesArray *fCosmicTracks; //! Tracks created by cosmics finder
49436743 574 TClonesArray *fESDTOFClusters; //! TOF clusters
575 TClonesArray *fESDTOFHits; //! TOF hits (used for clusters)
576 TClonesArray *fESDTOFMatchess; //! TOF matching info (with the reference to tracks)
af885e0f 577 TClonesArray *fErrorLogs; //! Raw-data reading error messages
578
fe0324de 579 Bool_t fOldMuonStructure; //! Flag if reading ESD with old MUON structure
af885e0f 580
1bd10080 581 AliESD *fESDOld; //! Old esd Structure
582 AliESDfriend *fESDFriendOld; //! Old friend esd Structure
60e8f114 583 Bool_t fConnected; //! flag if leaves are alreday connected
a2fbb067 584 Bool_t fUseOwnList; //! Do not use the list from the esdTree but use the one created by this class
d38034b8 585 Bool_t fTracksConnected; //! flag if tracks have already pointer to event set
60e8f114 586
6989bff3 587 static const char* fgkESDListName[kESDListN]; //!
af885e0f 588
f858b00e 589 AliTOFHeader *fTOFHeader; //! event times (and sigmas) as estimated by TOF
590 // combinatorial algorithm.
591 // It contains also TOF time resolution
592 // and T0spread as written in OCDB
fba4b2e2 593 AliCentrality *fCentrality; //! Centrality for AA collision
ce7adfe9 594 AliEventplane *fEventplane; //! Event plane for AA collision
a8f382ab 595
0ca3804d 596 ULong64_t fDetectorStatus; // set detector event status bit for good event selection
8bc95619 597 UInt_t fDAQDetectorPattern; // Detector pattern from DAQ: bit 0 is SPD, bit 4 is TPC, etc. See event.h
598 UInt_t fDAQAttributes; // Third word of attributes from DAQ: bit 7 corresponds to HLT decision
a8f382ab 599
49436743 600 ClassDef(AliESDEvent,22) //ESDEvent class
af885e0f 601};
602#endif
603