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