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