]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESDEvent.h
For primary tracks, when mother-particle is defined, add label and
[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
23class TList;
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"
af885e0f 33
024c7734 34// AliESDtrack has to be included so that the compiler
35// knows its inheritance tree (= that it is a AliVParticle).
36#include "AliESDtrack.h"
37
af885e0f 38class AliESDfriend;
39class AliESDVZERO;
40class AliESDHLTtrack;
f0106218 41class AliESDVertex;
42class AliESDPmdTrack;
43class AliESDFMD;
44class AliESDkink;
f0106218 45class AliESDCaloCluster;
e649177a 46class AliESDCaloCells;
f0106218 47class AliESDv0;
f0106218 48class AliMultiplicity;
49class AliRawDataErrorLog;
50class AliESDRun;
51class AliESDTrdTrack;
52class AliESDMuonTrack;
af885e0f 53class AliESD;
f0106218 54class AliESDcascade;
cd1d4ee0 55class TRefArray;
bd95bae7 56class AliESDACORDE;
af885e0f 57
024c7734 58class AliESDEvent : public AliVEvent {
af885e0f 59public:
60
61
6989bff3 62 enum ESDListIndex {kESDRun,
af885e0f 63 kHeader,
64 kESDZDC,
65 kESDFMD,
66 kESDVZERO,
67 kESDTZERO,
06cc9d95 68 kTPCVertex,
af885e0f 69 kSPDVertex,
70 kPrimaryVertex,
71 kSPDMult,
72 kPHOSTrigger,
73 kEMCALTrigger,
74 kTracks,
75 kMuonTracks,
76 kPmdTracks,
77 kTrdTracks,
78 kV0s,
79 kCascades,
80 kKinks,
81 kCaloClusters,
e649177a 82 kEMCALCells,
83 kPHOSCells,
af885e0f 84 kErrorLogs,
bd95bae7 85 kESDACORDE,
af885e0f 86 kESDListN
87 };
88
89 AliESDEvent();
90 virtual ~AliESDEvent();
91
92
93 // RUN
94 // move this to the UserData!!!
95 const AliESDRun* GetESDRun() const {return fESDRun;}
96
97 // Delegated methods for fESDRun
024c7734 98 void SetRunNumber(Int_t n) {fESDRun->SetRunNumber(n);}
99 Int_t GetRunNumber() const {return fESDRun->GetRunNumber();}
100 void SetPeriodNumber(UInt_t n){fESDRun->SetPeriodNumber(n);}
101 UInt_t GetPeriodNumber() const {return fESDRun->GetPeriodNumber();}
102 void SetMagneticField(Double_t mf){fESDRun->SetMagneticField(mf);}
103 Double_t GetMagneticField() const {return fESDRun->GetMagneticField();}
104 void SetDiamond(const AliESDVertex *vertex) { fESDRun->SetDiamond(vertex);}
694aad0c 105 Double_t GetDiamondX() const {return fESDRun->GetDiamondX();}
106 Double_t GetDiamondY() const {return fESDRun->GetDiamondY();}
107 Double_t GetSigma2DiamondX() const {return fESDRun->GetSigma2DiamondX();}
108 Double_t GetSigma2DiamondY() const {return fESDRun->GetSigma2DiamondY();}
109 void GetDiamondCovXY(Float_t cov[3]) const {fESDRun->GetDiamondCovXY(cov);}
b024fd7f 110 void SetTriggerClass(const char*name, Int_t index) {fESDRun->SetTriggerClass(name,index);}
af885e0f 111
112
113 // HEADER
024c7734 114 AliESDHeader* GetHeader() const {return fHeader;}
af885e0f 115
116 // Delegated methods for fHeader
117 void SetTriggerMask(ULong64_t n) {fHeader->SetTriggerMask(n);}
118 void SetOrbitNumber(UInt_t n) {fHeader->SetOrbitNumber(n);}
119 void SetTimeStamp(UInt_t timeStamp){fHeader->SetTimeStamp(timeStamp);}
120 void SetEventType(UInt_t eventType){fHeader->SetEventType(eventType);}
121 void SetEventNumberInFile(Int_t n) {fHeader->SetEventNumberInFile(n);}
122 // void SetRunNumber(Int_t n) {fHeader->SetRunNumber(n);}
123 void SetBunchCrossNumber(UShort_t n) {fHeader->SetBunchCrossNumber(n);}
124 void SetTriggerCluster(UChar_t n) {fHeader->SetTriggerCluster(n);}
694aad0c 125
af885e0f 126 ULong64_t GetTriggerMask() const {return fHeader->GetTriggerMask();}
ed4e8b82 127 TString GetFiredTriggerClasses() const {return fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask());}
128 Bool_t IsTriggerClassFired(const char *name) const {return fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name);}
af885e0f 129 UInt_t GetOrbitNumber() const {return fHeader->GetOrbitNumber();}
130 UInt_t GetTimeStamp() const { return fHeader->GetTimeStamp();}
131 UInt_t GetEventType() const { return fHeader->GetEventType();}
132 Int_t GetEventNumberInFile() const {return fHeader->GetEventNumberInFile();}
133 UShort_t GetBunchCrossNumber() const {return fHeader->GetBunchCrossNumber();}
134 UChar_t GetTriggerCluster() const {return fHeader->GetTriggerCluster();}
135
136 // ZDC CKB: put this in the header?
a85132e7 137 AliESDZDC* GetESDZDC() const {return fESDZDC;}
af885e0f 138
139 // Delegated methods for fESDZDC
024c7734 140 Double_t GetZDCN1Energy() const {return fESDZDC->GetZDCN1Energy();}
141 Double_t GetZDCP1Energy() const {return fESDZDC->GetZDCP1Energy();}
142 Double_t GetZDCN2Energy() const {return fESDZDC->GetZDCN2Energy();}
143 Double_t GetZDCP2Energy() const {return fESDZDC->GetZDCP2Energy();}
a85132e7 144 Double_t GetZDCEMEnergy(Int_t i=0) const {return fESDZDC->GetZDCEMEnergy(i);}
af885e0f 145 Int_t GetZDCParticipants() const {return fESDZDC->GetZDCParticipants();}
a85132e7 146 void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t em1Energy, Float_t em2Energy,
af885e0f 147 Float_t n2Energy, Float_t p2Energy, Int_t participants)
a85132e7 148 {fESDZDC->SetZDC(n1Energy, p1Energy, em1Energy, em2Energy, n2Energy, p2Energy, participants);}
af885e0f 149
150
151 // FMD
152 void SetFMDData(AliESDFMD * obj);
153 AliESDFMD *GetFMDData(){ return fESDFMD; }
154
155
156 // TZERO CKB: put this in the header?
157 const AliESDTZERO* GetESDTZERO() const {return fESDTZERO;}
158 // delegetated methods for fESDTZERO
159
694aad0c 160 Double_t GetT0zVertex() const {return fESDTZERO->GetT0zVertex();}
af885e0f 161 void SetT0zVertex(Float_t z) {fESDTZERO->SetT0zVertex(z);}
694aad0c 162 Double_t GetT0() const {return fESDTZERO->GetT0();}
af885e0f 163 void SetT0(Float_t timeStart) {fESDTZERO->SetT0(timeStart);}
694aad0c 164 const Double_t * GetT0time() const {return fESDTZERO->GetT0time();}
af885e0f 165 void SetT0time(Float_t time[24]) {fESDTZERO->SetT0time(time);}
694aad0c 166 const Double_t * GetT0amplitude() const {return fESDTZERO->GetT0amplitude();}
af885e0f 167 void SetT0amplitude(Float_t amp[24]){fESDTZERO->SetT0amplitude(amp);}
168
169 // VZERO
170 AliESDVZERO *GetVZEROData() const { return fESDVZERO; }
171 void SetVZEROData(AliESDVZERO * obj);
172
bd95bae7 173 // ACORDE
174 AliESDACORDE *GetACORDEData() const { return fESDACORDE;}
175 void SetACORDEData(AliESDACORDE * obj);
af885e0f 176
7d44c466 177 void SetESDfriend(const AliESDfriend *f) const;
af885e0f 178 void GetESDfriend(AliESDfriend *f) const;
179
180
181
06cc9d95 182 void SetPrimaryVertexTPC(const AliESDVertex *vertex);
183 const AliESDVertex *GetPrimaryVertexTPC() const {return fTPCVertex;}
184
185 void SetPrimaryVertexSPD(const AliESDVertex *vertex);
186 const AliESDVertex *GetPrimaryVertexSPD() const {return fSPDVertex;}
187 const AliESDVertex *GetVertex() const {
188 //For the backward compatibily only
189 return GetPrimaryVertexSPD();
190 }
af885e0f 191
60e8f114 192 void SetPrimaryVertex(const AliESDVertex *vertex);
af885e0f 193 const AliESDVertex *GetPrimaryVertex() const {return fPrimaryVertex;}
194
f0106218 195 void SetMultiplicity(const AliMultiplicity *mul);
196
af885e0f 197 const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
f0106218 198
199
7f68891d 200 Bool_t Clean(Float_t *cleanPars);
7d44c466 201 Bool_t RemoveKink(Int_t i) const;
202 Bool_t RemoveV0(Int_t i) const;
203 Bool_t RemoveTrack(Int_t i) const;
d64bd07d 204
af885e0f 205 AliESDtrack *GetTrack(Int_t i) const {
206 return (AliESDtrack *)fTracks->UncheckedAt(i);
207 }
208 Int_t AddTrack(const AliESDtrack *t);
209
210
211 AliESDHLTtrack *GetHLTConfMapTrack(Int_t /*i*/) const {
212 // return (AliESDHLTtrack *)fHLTConfMapTracks->UncheckedAt(i);
213 return 0;
214 }
215 void AddHLTConfMapTrack(const AliESDHLTtrack */*t*/) {
216 printf("ESD:: AddHLTConfMapTrack do nothing \n");
217 // TClonesArray &fhlt = *fHLTConfMapTracks;
218 // new(fhlt[fHLTConfMapTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
219 }
220
221
222 AliESDHLTtrack *GetHLTHoughTrack(Int_t /*i*/) const {
223 // return (AliESDHLTtrack *)fHLTHoughTracks->UncheckedAt(i);
224 return 0;
225 }
226 void AddHLTHoughTrack(const AliESDHLTtrack */*t*/) {
227 printf("ESD:: AddHLTHoughTrack do nothing \n");
228 // TClonesArray &fhlt = *fHLTHoughTracks;
229 // new(fhlt[fHLTHoughTracks->GetEntriesFast()]) AliESDHLTtrack(*t);
230 }
231
232 AliESDMuonTrack *GetMuonTrack(Int_t i) const {
233 return (AliESDMuonTrack *)fMuonTracks->UncheckedAt(i);
234 }
f0106218 235
236 void AddMuonTrack(const AliESDMuonTrack *t);
af885e0f 237
238 AliESDPmdTrack *GetPmdTrack(Int_t i) const {
239 return (AliESDPmdTrack *)fPmdTracks->UncheckedAt(i);
240 }
f0106218 241
242 void AddPmdTrack(const AliESDPmdTrack *t);
243
af885e0f 244
245 AliESDTrdTrack *GetTrdTrack(Int_t i) const {
246 return (AliESDTrdTrack *)fTrdTracks->UncheckedAt(i);
247 }
f0106218 248
249
250 void AddTrdTrack(const AliESDTrdTrack *t);
af885e0f 251
252 AliESDv0 *GetV0(Int_t i) const {
253 return (AliESDv0*)fV0s->UncheckedAt(i);
254 }
255 Int_t AddV0(const AliESDv0 *v);
256
257 AliESDcascade *GetCascade(Int_t i) const {
258 return (AliESDcascade *)fCascades->UncheckedAt(i);
259 }
f0106218 260
261 void AddCascade(const AliESDcascade *c);
af885e0f 262
263 AliESDkink *GetKink(Int_t i) const {
264 return (AliESDkink *)fKinks->UncheckedAt(i);
265 }
266 Int_t AddKink(const AliESDkink *c);
267
268 AliESDCaloCluster *GetCaloCluster(Int_t i) const {
269 return (AliESDCaloCluster *)fCaloClusters->UncheckedAt(i);
270 }
e649177a 271
af885e0f 272 Int_t AddCaloCluster(const AliESDCaloCluster *c);
273
e649177a 274 AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
275 AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
276
af885e0f 277 AliRawDataErrorLog *GetErrorLog(Int_t i) const {
278 return (AliRawDataErrorLog *)fErrorLogs->UncheckedAt(i);
279 }
7d44c466 280 void AddRawDataErrorLog(const AliRawDataErrorLog *log) const;
f0106218 281
af885e0f 282 Int_t GetNumberOfErrorLogs() const {return fErrorLogs->GetEntriesFast();}
283
284
285 void AddPHOSTriggerPosition(TArrayF array) { fPHOSTrigger->AddTriggerPosition(array); }
286 void AddPHOSTriggerAmplitudes(TArrayF array) { fPHOSTrigger->AddTriggerAmplitudes(array);}
287 void AddEMCALTriggerPosition(TArrayF array) { fEMCALTrigger->AddTriggerPosition(array); }
288 void AddEMCALTriggerAmplitudes(TArrayF array){ fEMCALTrigger->AddTriggerAmplitudes(array); }
289
af885e0f 290 Int_t GetNumberOfTracks() const {return fTracks->GetEntriesFast();}
291 Int_t GetNumberOfHLTConfMapTracks() const {return 0;}
292 // fHLTConfMapTracks->GetEntriesFast();}
293 Int_t GetNumberOfHLTHoughTracks() const {return 0; }
294 // fHLTHoughTracks->GetEntriesFast(); }
295
296 Int_t GetNumberOfMuonTracks() const {return fMuonTracks->GetEntriesFast();}
297 Int_t GetNumberOfPmdTracks() const {return fPmdTracks->GetEntriesFast();}
298 Int_t GetNumberOfTrdTracks() const {return fTrdTracks->GetEntriesFast();}
299 Int_t GetNumberOfV0s() const {return fV0s->GetEntriesFast();}
300 Int_t GetNumberOfCascades() const {return fCascades->GetEntriesFast();}
301 Int_t GetNumberOfKinks() const {return fKinks->GetEntriesFast();}
e649177a 302
cd1d4ee0 303 Int_t GetEMCALClusters(TRefArray *clusters) const;
304 Int_t GetPHOSClusters(TRefArray *clusters) const;
af885e0f 305 Int_t GetNumberOfCaloClusters() const {return fCaloClusters->GetEntriesFast();}
306
e649177a 307
308 // Remove this stuff CKB?
309 //---------------------------------------------------
af885e0f 310 Int_t GetNumberOfEMCALClusters() const {return fEMCALClusters;}
311 void SetNumberOfEMCALClusters(Int_t clus) {fEMCALClusters = clus;}
312 Int_t GetFirstEMCALCluster() const {return fFirstEMCALCluster;}
313 void SetFirstEMCALCluster(Int_t index) {fFirstEMCALCluster = index;}
e649177a 314
af885e0f 315 Int_t GetNumberOfPHOSClusters() const {return fPHOSClusters;}
316 void SetNumberOfPHOSClusters(Int_t part) { fPHOSClusters = part ; }
317 void SetFirstPHOSCluster(Int_t index) { fFirstPHOSCluster = index ; }
318 Int_t GetFirstPHOSCluster() const { return fFirstPHOSCluster ; }
e649177a 319 //-------------------------------------------------------
320
321 TArrayF *GetEMCALTriggerPosition() const {return fEMCALTrigger->GetTriggerPosition();}
322 TArrayF *GetEMCALTriggerAmplitudes() const {return fEMCALTrigger->GetTriggerAmplitudes();}
af885e0f 323 TArrayF *GetPHOSTriggerPosition() const {return fPHOSTrigger->GetTriggerPosition();}
324 TArrayF *GetPHOSTriggerAmplitudes() const {return fPHOSTrigger->GetTriggerAmplitudes();}
325
326 void ResetV0s() { fV0s->Clear(); }
327 void ResetCascades() { fCascades->Clear(); }
328 void Reset();
329
330 void Print(Option_t *option="") const;
331
332 void AddObject(TObject* obj);
333 void ReadFromTree(TTree *tree);
001b9beb 334 TObject* FindListObject(const char *name);
af885e0f 335 AliESD *GetAliESDOld(){return fESDOld;}
38f940fb 336 const void WriteToTree(TTree* tree) const;
af885e0f 337 void GetStdContent();
338 void ResetStdContent();
339 void CreateStdContent();
340 void SetStdNames();
341 void CopyFromOldESD();
024c7734 342 TList* GetList() const {return fESDObjects;}
af885e0f 343
344protected:
345 AliESDEvent(const AliESDEvent&);
346 AliESDEvent &operator=(const AliESDEvent& source);
347
348
349 TList *fESDObjects; // List of esd Objects
350
351 AliESDRun *fESDRun; //! Run information tmp put in the Userdata
352 AliESDHeader *fHeader; //! ESD Event Header
353 AliESDZDC *fESDZDC; //! ZDC information
354 AliESDFMD *fESDFMD; //! FMD object containing rough multiplicity
355 AliESDVZERO *fESDVZERO; //! VZERO object containing rough multiplicity
356 AliESDTZERO *fESDTZERO; //! TZEROObject
06cc9d95 357 AliESDVertex *fTPCVertex; //! Primary vertex estimated by the TPC
af885e0f 358 AliESDVertex *fSPDVertex; //! Primary vertex estimated by the SPD
359 AliESDVertex *fPrimaryVertex; //! Primary vertex estimated using ESD tracks
360 AliMultiplicity *fSPDMult; //! SPD tracklet multiplicity
361 AliESDCaloTrigger* fPHOSTrigger; //! PHOS Trigger information
362 AliESDCaloTrigger* fEMCALTrigger; //! PHOS Trigger information
bd95bae7 363 AliESDACORDE *fESDACORDE; //! ACORDE ESD object caontaining bit pattern
af885e0f 364
365 TClonesArray *fTracks; //! ESD tracks
366 TClonesArray *fMuonTracks; //! MUON ESD tracks
367 TClonesArray *fPmdTracks; //! PMD ESD tracks
368 TClonesArray *fTrdTracks; //! TRD ESD tracks (triggered)
369 TClonesArray *fV0s; //! V0 vertices
370 TClonesArray *fCascades; //! Cascade vertices
371 TClonesArray *fKinks; //! Kinks
372 TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
e649177a 373 AliESDCaloCells *fEMCALCells; //! EMCAL cell info
374 AliESDCaloCells *fPHOSCells; //! PHOS cell info
af885e0f 375 TClonesArray *fErrorLogs; //! Raw-data reading error messages
376
377
378
1bd10080 379 AliESD *fESDOld; //! Old esd Structure
380 AliESDfriend *fESDFriendOld; //! Old friend esd Structure
60e8f114 381 Bool_t fConnected; //! flag if leaves are alreday connected
382
6989bff3 383 static const char* fgkESDListName[kESDListN]; //!
af885e0f 384
af885e0f 385 // Remove this stuff CKB
386 Int_t fEMCALClusters; // Number of EMCAL clusters (subset of caloclusters)
387 Int_t fFirstEMCALCluster; // First EMCAL cluster in the fCaloClusters list
388
389 Int_t fPHOSClusters; // Number of PHOS clusters (subset of caloclusters)
390 Int_t fFirstPHOSCluster; // First PHOS cluster in the fCaloClusters list
391
bd95bae7 392 ClassDef(AliESDEvent,8) //ESDEvent class
af885e0f 393};
394#endif
395