]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/ESD/AliESDEvent.h
dummy impl. file to comply with build system
[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;
21e601a3 277 virtual AliESDfriend* FindFriend() const;
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
e3d1b1e2 295 //getters for calibration
296 Int_t GetPrimaryVertex (AliESDVertex &v) const {
297 if(!GetPrimaryVertex()) return -1;
298 v=*GetPrimaryVertex();
299 return 0;
300 }
301
302 Int_t GetPrimaryVertexTPC (AliESDVertex &v) const {
303 if(!GetPrimaryVertexTPC()) return -1;
304 v=*GetPrimaryVertexTPC();
305 return 0;
306 }
307
308 Int_t GetPrimaryVertexSPD (AliESDVertex &v) const {
309 if(!GetPrimaryVertexSPD()) return -1;
310 v=*GetPrimaryVertexSPD();
311 return 0;
312 }
313
314 Int_t GetPrimaryVertexTracks (AliESDVertex &v) const {
315 if(!GetPrimaryVertexTracks()) return -1;
316 v=*GetPrimaryVertexTracks();
317 return 0;
318 }
f858b00e 319
320
321 void SetTOFHeader(const AliTOFHeader * tofEventTime);
49a1368d 322 AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
d9fc7e74 323 Float_t GetEventTimeSpread() const {if (fTOFHeader) return fTOFHeader->GetT0spread(); else return 0.;}
324 Float_t GetTOFTimeResolution() const {if (fTOFHeader) return fTOFHeader->GetTOFResolution(); else return 0.;}
49436743 325
326 TClonesArray *GetESDTOFClusters() const {return fESDTOFClusters;}
327 TClonesArray *GetESDTOFHits() const {return fESDTOFHits;}
328 TClonesArray *GetESDTOFMatches() const {return fESDTOFMatchess;}
329
330 void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster,Int_t *mapping=NULL);
331 void SetTOFcluster(Int_t ntofclusters,AliESDTOFCluster *cluster[],Int_t *mapping=NULL);
332 Int_t GetNTOFclusters() const {return fESDTOFClusters ? fESDTOFClusters->GetEntriesFast() : 0;}
f858b00e 333
f0106218 334 void SetMultiplicity(const AliMultiplicity *mul);
335
af885e0f 336 const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
4ace6760 337 void EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
338 Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
f0106218 339
7f68891d 340 Bool_t Clean(Float_t *cleanPars);
7d44c466 341 Bool_t RemoveKink(Int_t i) const;
342 Bool_t RemoveV0(Int_t i) const;
343 Bool_t RemoveTrack(Int_t i) const;
d64bd07d 344
04d01397 345 const AliESDVertex *GetPileupVertexSPD(Int_t i) const {
c8975fcf 346 return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->At(i):0x0);
04d01397 347 }
6dc21f57 348 Char_t AddPileupVertexSPD(const AliESDVertex *vtx);
04d01397 349 const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
c8975fcf 350 return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->At(i):0x0);
04d01397 351 }
6dc21f57 352 Char_t AddPileupVertexTracks(const AliESDVertex *vtx);
3f2db92f 353 TClonesArray* GetPileupVerticesTracks() const {return (TClonesArray*)fTrkPileupVertices;}
354 TClonesArray* GetPileupVerticesSPD() const {return (TClonesArray*)fSPDPileupVertices;}
04d01397 355
a98c78e5 356 virtual Bool_t IsPileupFromSPD(Int_t minContributors=3,
357 Double_t minZdist=0.8,
358 Double_t nSigmaZdist=3.,
359 Double_t nSigmaDiamXY=2.,
360 Double_t nSigmaDiamZ=5.) const;
361
b46ff4b0 362 virtual Bool_t IsPileupFromSPDInMultBins() const;
363
d38034b8 364 void ConnectTracks();
365 Bool_t AreTracksConnected() const {return fTracksConnected;}
366
367 AliESDtrack *GetTrack(Int_t i) const {return (fTracks)?(AliESDtrack*)fTracks->At(i) : 0;}
af885e0f 368 Int_t AddTrack(const AliESDtrack *t);
369
65a0cf79 370 /// add new track at the end of tracks array and return instance
371 AliESDtrack* NewTrack();
af885e0f 372
373 AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
c8975fcf 374 // return (AliESDHLTtrack *)fHLTConfMapTracks->At(i);
af885e0f 375 return 0;
376 }
377 void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
378 printf("ESD:: AddHLTConfMapTrack do nothing \n");
379 // TClonesArray &fhlt = *fHLTConfMapTracks;
380 // new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
381 }
382
383
384 AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
c8975fcf 385 // return (AliESDHLTtrack *)fHLTHoughTracks->At(i);
af885e0f 386 return 0;
387 }
388 void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
389 printf("ESD:: AddHLTHoughTrack do nothing \n");
390 // TClonesArray &fhlt = *fHLTHoughTracks;
391 // new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
392 }
393
fe0324de 394 Bool_t MoveMuonObjects();
395
396 AliESDMuonTrack* GetMuonTrack(Int_t i);
397 AliESDMuonTrack* NewMuonTrack();
398
399 AliESDMuonCluster* GetMuonCluster(Int_t i);
400 AliESDMuonCluster* FindMuonCluster(UInt_t clusterId);
401 AliESDMuonCluster* NewMuonCluster();
402
403 AliESDMuonPad* GetMuonPad(Int_t i);
404 AliESDMuonPad* FindMuonPad(UInt_t padId);
405 AliESDMuonPad* NewMuonPad();
406
d3eabe96 407 AliESDMuonGlobalTrack* GetMuonGlobalTrack(Int_t i); // AU
408 AliESDMuonGlobalTrack* NewMuonGlobalTrack(); // AU
409
af885e0f 410 AliESDPmdTrack *GetPmdTrack(Int_t i) const {
c8975fcf 411 return (AliESDPmdTrack *)(fPmdTracks?fPmdTracks->At(i):0x0);
af885e0f 412 }
f0106218 413
414 void AddPmdTrack(const AliESDPmdTrack *t);
415
af885e0f 416
417 AliESDTrdTrack *GetTrdTrack(Int_t i) const {
c8975fcf 418 return (AliESDTrdTrack *)(fTrdTracks?fTrdTracks->At(i):0x0);
af885e0f 419 }
f0106218 420
421
6c8e0967 422 void SetTrdTrigger(const AliESDTrdTrigger *t);
423
424 AliESDTrdTrigger* GetTrdTrigger() const {
425 return (AliESDTrdTrigger*)(fTrdTrigger);
426 }
427
f0106218 428 void AddTrdTrack(const AliESDTrdTrack *t);
af885e0f 429
52cd0cc0 430 AliESDTrdTracklet* GetTrdTracklet(Int_t idx) const {
c8975fcf 431 return (AliESDTrdTracklet*)(fTrdTracklets?fTrdTracklets->At(idx):0x0);
52cd0cc0 432 }
433
434 void AddTrdTracklet(const AliESDTrdTracklet *trkl);
60557224 435 void AddTrdTracklet(UInt_t trackletWord, Short_t hcid, Int_t label = -1);
52cd0cc0 436
af885e0f 437 AliESDv0 *GetV0(Int_t i) const {
c8975fcf 438 return (AliESDv0*)(fV0s?fV0s->At(i):0x0);
af885e0f 439 }
e3d1b1e2 440
441 Int_t GetV0(AliESDv0 &v0dum, Int_t i) const {
442 if(!GetV0(i)) return -1;
443 v0dum=*GetV0(i);
444 return 0;}
445
af885e0f 446 Int_t AddV0(const AliESDv0 *v);
447
448 AliESDcascade *GetCascade(Int_t i) const {
c8975fcf 449 return (AliESDcascade *)(fCascades?fCascades->At(i):0x0);
af885e0f 450 }
f0106218 451
452 void AddCascade(const AliESDcascade *c);
af885e0f 453
454 AliESDkink *GetKink(Int_t i) const {
c8975fcf 455 return (AliESDkink *)(fKinks?fKinks->At(i):0x0);
af885e0f 456 }
457 Int_t AddKink(const AliESDkink *c);
458
459 AliESDCaloCluster *GetCaloCluster(Int_t i) const {
c8975fcf 460 return (AliESDCaloCluster *)(fCaloClusters?fCaloClusters->At(i):0x0);
af885e0f 461 }
e649177a 462
af885e0f 463 Int_t AddCaloCluster(const AliESDCaloCluster *c);
464
e649177a 465 AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
466 AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
467
042d5330 468 AliESDCaloTrigger* GetCaloTrigger(TString calo) const
469 {
470 if (calo.Contains("EMCAL")) return fEMCALTrigger;
471 else
472 return fPHOSTrigger;
473 }
8e1324ab 474
475 AliESDCosmicTrack *GetCosmicTrack(Int_t i) const {
c8975fcf 476 return fCosmicTracks ? (AliESDCosmicTrack*) fCosmicTracks->At(i) : 0;
8e1324ab 477 }
478 const TClonesArray * GetCosmicTracks() const{ return fCosmicTracks;}
479
480 void AddCosmicTrack(const AliESDCosmicTrack *t);
042d5330 481
af885e0f 482 AliRawDataErrorLog *GetErrorLog(Int_t i) const {
c8975fcf 483 return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->At(i):0x0);
af885e0f 484 }
7d44c466 485 void AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
f0106218 486
c017f53f 487 Int_t GetNumberOfErrorLogs() const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
af885e0f 488
04d01397 489 Int_t GetNumberOfPileupVerticesSPD() const {
642f673b 490 return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
04d01397 491 }
492 Int_t GetNumberOfPileupVerticesTracks() const {
642f673b 493 return (fTrkPileupVertices?fTrkPileupVertices->GetEntriesFast():0);
04d01397 494 }
c017f53f 495 Int_t GetNumberOfTracks() const {return fTracks?fTracks->GetEntriesFast():0;}
ef7661fd 496 Int_t GetNumberOfESDTracks() const { return GetNumberOfTracks(); }
af885e0f 497 Int_t GetNumberOfHLTConfMapTracks() const {return 0;}
498 // fHLTConfMapTracks->GetEntriesFast();}
499 Int_t GetNumberOfHLTHoughTracks() const {return 0; }
500 // fHLTHoughTracks->GetEntriesFast(); }
501
c017f53f 502 Int_t GetNumberOfMuonTracks() const {return fMuonTracks?fMuonTracks->GetEntriesFast():0;}
fe0324de 503 Int_t GetNumberOfMuonClusters();
504 Int_t GetNumberOfMuonPads();
d3eabe96 505 Int_t GetNumberOfMuonGlobalTracks() const {return fMuonGlobalTracks?fMuonGlobalTracks->GetEntriesFast():0;} // AU
c017f53f 506 Int_t GetNumberOfPmdTracks() const {return fPmdTracks?fPmdTracks->GetEntriesFast():0;}
507 Int_t GetNumberOfTrdTracks() const {return fTrdTracks?fTrdTracks->GetEntriesFast():0;}
52cd0cc0 508 Int_t GetNumberOfTrdTracklets() const {return fTrdTracklets?fTrdTracklets->GetEntriesFast():0;}
c017f53f 509 Int_t GetNumberOfV0s() const {return fV0s?fV0s->GetEntriesFast():0;}
510 Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
511 Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
8e1324ab 512
513 Int_t GetNumberOfCosmicTracks() const {return fCosmicTracks ? fCosmicTracks->GetEntriesFast():0;}
cd1d4ee0 514 Int_t GetEMCALClusters(TRefArray *clusters) const;
515 Int_t GetPHOSClusters(TRefArray *clusters) const;
c017f53f 516 Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
af885e0f 517
a2fbb067 518 void SetUseOwnList(Bool_t b){fUseOwnList = b;}
b19cc8d0 519 Bool_t GetUseOwnList() const {return fUseOwnList;}
e649177a 520
c017f53f 521 void ResetV0s() { if(fV0s) fV0s->Clear(); }
522 void ResetCascades() { if(fCascades) fCascades->Clear(); }
af885e0f 523 void Reset();
524
525 void Print(Option_t *option="") const;
526
527 void AddObject(TObject* obj);
1d0dd492 528 void ReadFromTree(TTree *tree, Option_t* opt = "");
2811495d 529 TObject* FindListObject(const char *name) const;
af885e0f 530 AliESD *GetAliESDOld(){return fESDOld;}
f12d42ce 531 void WriteToTree(TTree* tree) const;
af885e0f 532 void GetStdContent();
533 void ResetStdContent();
534 void CreateStdContent();
a2fbb067 535 void CreateStdContent(Bool_t bUseThisList);
fe0324de 536 void CompleteStdContent();
af885e0f 537 void SetStdNames();
538 void CopyFromOldESD();
024c7734 539 TList* GetList() const {return fESDObjects;}
c8fe2783 540
541 //Following needed only for mixed event
542 virtual Int_t EventIndex(Int_t) const {return 0;}
543 virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
544 virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
545 virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
546
a8f382ab 547 void SetDetectorStatus(ULong_t detMask) {fDetectorStatus|=detMask;}
548 void ResetDetectorStatus(ULong_t detMask) {fDetectorStatus&=~detMask;}
549 ULong_t GetDetectorStatus() const {return fDetectorStatus;}
550 Bool_t IsDetectorOn(ULong_t detMask) const {return (fDetectorStatus&detMask)>0;}
af885e0f 551
8bc95619 552 void SetDAQDetectorPattern(UInt_t pattern) {fDAQDetectorPattern = pattern;}
553 void SetDAQAttributes(UInt_t attributes) {fDAQAttributes = attributes;}
554 UInt_t GetDAQDetectorPattern() const {return fDAQDetectorPattern;}
555 UInt_t GetDAQAttributes() const {return fDAQAttributes;}
6a33e0e9 556
af885e0f 557protected:
558 AliESDEvent(const AliESDEvent&);
102c56c8 559 static Bool_t ResetWithPlacementNew(TObject *pObject);
af885e0f 560
fe0324de 561 void AddMuonTrack(const AliESDMuonTrack *t);
d3eabe96 562 void AddMuonGlobalTrack(const AliESDMuonGlobalTrack *t); // AU
fe0324de 563
af885e0f 564 TList *fESDObjects; // List of esd Objects
565
566 AliESDRun *fESDRun; //! Run information tmp put in the Userdata
567 AliESDHeader *fHeader; //! ESD Event Header
568 AliESDZDC *fESDZDC; //! ZDC information
569 AliESDFMD *fESDFMD; //! FMD object containing rough multiplicity
570 AliESDVZERO *fESDVZERO; //! VZERO object containing rough multiplicity
571 AliESDTZERO *fESDTZERO; //! TZEROObject
06cc9d95 572 AliESDVertex *fTPCVertex; //! Primary vertex estimated by the TPC
af885e0f 573 AliESDVertex *fSPDVertex; //! Primary vertex estimated by the SPD
574 AliESDVertex *fPrimaryVertex; //! Primary vertex estimated using ESD tracks
575 AliMultiplicity *fSPDMult; //! SPD tracklet multiplicity
576 AliESDCaloTrigger* fPHOSTrigger; //! PHOS Trigger information
577 AliESDCaloTrigger* fEMCALTrigger; //! PHOS Trigger information
bd95bae7 578 AliESDACORDE *fESDACORDE; //! ACORDE ESD object caontaining bit pattern
5e319bd5 579 AliESDAD *fESDAD; //! AD ESD object caontaining bit pattern
6c8e0967 580 AliESDTrdTrigger *fTrdTrigger; //! TRD trigger information
af885e0f 581
04d01397 582 TClonesArray *fSPDPileupVertices;//! Pileup primary vertices reconstructed by SPD
583 TClonesArray *fTrkPileupVertices;//! Pileup primary vertices reconstructed using the tracks
af885e0f 584 TClonesArray *fTracks; //! ESD tracks
585 TClonesArray *fMuonTracks; //! MUON ESD tracks
fe0324de 586 TClonesArray *fMuonClusters; //! MUON ESD clusters
587 TClonesArray *fMuonPads; //! MUON ESD pads
d3eabe96 588 TClonesArray *fMuonGlobalTracks; //! MUON+MFT ESD tracks // AU
af885e0f 589 TClonesArray *fPmdTracks; //! PMD ESD tracks
590 TClonesArray *fTrdTracks; //! TRD ESD tracks (triggered)
52cd0cc0 591 TClonesArray *fTrdTracklets; //! TRD tracklets (for trigger)
af885e0f 592 TClonesArray *fV0s; //! V0 vertices
593 TClonesArray *fCascades; //! Cascade vertices
594 TClonesArray *fKinks; //! Kinks
595 TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
e649177a 596 AliESDCaloCells *fEMCALCells; //! EMCAL cell info
597 AliESDCaloCells *fPHOSCells; //! PHOS cell info
8e1324ab 598 TClonesArray *fCosmicTracks; //! Tracks created by cosmics finder
49436743 599 TClonesArray *fESDTOFClusters; //! TOF clusters
600 TClonesArray *fESDTOFHits; //! TOF hits (used for clusters)
601 TClonesArray *fESDTOFMatchess; //! TOF matching info (with the reference to tracks)
af885e0f 602 TClonesArray *fErrorLogs; //! Raw-data reading error messages
603
fe0324de 604 Bool_t fOldMuonStructure; //! Flag if reading ESD with old MUON structure
af885e0f 605
1bd10080 606 AliESD *fESDOld; //! Old esd Structure
607 AliESDfriend *fESDFriendOld; //! Old friend esd Structure
60e8f114 608 Bool_t fConnected; //! flag if leaves are alreday connected
a2fbb067 609 Bool_t fUseOwnList; //! Do not use the list from the esdTree but use the one created by this class
d38034b8 610 Bool_t fTracksConnected; //! flag if tracks have already pointer to event set
60e8f114 611
6989bff3 612 static const char* fgkESDListName[kESDListN]; //!
af885e0f 613
f858b00e 614 AliTOFHeader *fTOFHeader; //! event times (and sigmas) as estimated by TOF
615 // combinatorial algorithm.
616 // It contains also TOF time resolution
617 // and T0spread as written in OCDB
fba4b2e2 618 AliCentrality *fCentrality; //! Centrality for AA collision
ce7adfe9 619 AliEventplane *fEventplane; //! Event plane for AA collision
a8f382ab 620
0ca3804d 621 ULong64_t fDetectorStatus; // set detector event status bit for good event selection
8bc95619 622 UInt_t fDAQDetectorPattern; // Detector pattern from DAQ: bit 0 is SPD, bit 4 is TPC, etc. See event.h
623 UInt_t fDAQAttributes; // Third word of attributes from DAQ: bit 7 corresponds to HLT decision
a8f382ab 624
5d539efa 625 ClassDef(AliESDEvent,23) //ESDEvent class
af885e0f 626};
627#endif
628