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