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