8cdd50ac705ad879f45e707fe39a5c8ef2b7351d
[u/mrichter/AliRoot.git] / STEER / AliESD.h
1 #ifndef ALIESD_H
2 #define ALIESD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 /* $Id$ */
8
9 //-------------------------------------------------------------------------
10 //                          Class AliESD
11 //   This is the class to deal with during the physical analysis of data
12 //      
13 //         Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
14 //-------------------------------------------------------------------------
15
16 #include <TClonesArray.h>
17 #include <TObject.h>
18
19 #include "AliESDMuonTrack.h"
20 #include "AliESDPmdTrack.h"
21 #include "AliESDVertex.h"
22 #include "AliESDcascade.h"
23 #include "AliESDtrack.h"
24 #include "AliESDHLTtrack.h"
25 #include "AliESDv0.h"
26
27 class AliESD : public TObject {
28 public:
29   AliESD();
30   virtual ~AliESD(); 
31
32   void SetEventNumber(Int_t n) {fEventNumber=n;}
33   void SetRunNumber(Int_t n) {fRunNumber=n;}
34   void SetTrigger(Long_t n) {fTrigger=n;}
35   void SetMagneticField(Float_t mf){fMagneticField = mf;}
36   Float_t GetMagneticField() const {return fMagneticField;}
37   
38   AliESDtrack *GetTrack(Int_t i) const {
39     return (AliESDtrack *)fTracks.UncheckedAt(i);
40   }
41   AliESDHLTtrack *GetHLTConfMapTrack(Int_t i) const {
42     return (AliESDHLTtrack *)fHLTConfMapTracks.UncheckedAt(i);
43   }
44   AliESDHLTtrack *GetHLTHoughTrack(Int_t i) const {
45     return (AliESDHLTtrack *)fHLTHoughTracks.UncheckedAt(i);
46   }
47   AliESDMuonTrack *GetMuonTrack(Int_t i) const {
48     return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i);
49   }
50   AliESDPmdTrack *GetPmdTrack(Int_t i) const {
51     return (AliESDPmdTrack *)fPmdTracks.UncheckedAt(i);
52   }
53
54   void AddTrack(const AliESDtrack *t) {
55     new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t);
56   }
57   void AddHLTConfMapTrack(const AliESDHLTtrack *t) {
58     new(fHLTConfMapTracks[fHLTConfMapTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
59   }
60   void AddHLTHoughTrack(const AliESDHLTtrack *t) {
61     new(fHLTHoughTracks[fHLTHoughTracks.GetEntriesFast()]) AliESDHLTtrack(*t);
62   }
63   void AddMuonTrack(const AliESDMuonTrack *t) {
64     new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t);
65   }
66   void AddPmdTrack(const AliESDPmdTrack *t) {
67     new(fPmdTracks[fPmdTracks.GetEntriesFast()]) AliESDPmdTrack(*t);
68   }
69
70   AliESDv0 *GetV0(Int_t i) const {
71     return (AliESDv0 *)fV0s.UncheckedAt(i);
72   }
73   void AddV0(const AliESDv0 *v) {
74     new(fV0s[fV0s.GetEntriesFast()]) AliESDv0(*v);
75   }
76
77   AliESDcascade *GetCascade(Int_t i) const {
78     return (AliESDcascade *)fCascades.UncheckedAt(i);
79   }
80   void AddCascade(const AliESDcascade *c) {
81     new(fCascades[fCascades.GetEntriesFast()]) AliESDcascade(*c);
82   }
83
84   void SetVertex(AliESDVertex* vertex) {
85     new(&fPrimaryVertex) AliESDVertex(*vertex);
86   }
87   const AliESDVertex* GetVertex() const {return &fPrimaryVertex;};
88
89   Int_t  GetEventNumber() const {return fEventNumber;}
90   Int_t  GetRunNumber() const {return fRunNumber;}
91   Long_t GetTrigger() const {return fTrigger;}
92   
93   Int_t GetNumberOfTracks()     const {return fTracks.GetEntriesFast();}
94   Int_t GetNumberOfHLTConfMapTracks()     const {return fHLTConfMapTracks.GetEntriesFast();}
95   Int_t GetNumberOfHLTHoughTracks()     const {return fHLTHoughTracks.GetEntriesFast();}
96   Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();}
97   Int_t GetNumberOfPmdTracks() const {return fPmdTracks.GetEntriesFast();}
98   Int_t GetNumberOfV0s()      const {return fV0s.GetEntriesFast();}
99   Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();}
100   Int_t GetNumberOfPHOSParticles() const {return fPHOSParticles;}
101   void  SetNumberOfPHOSParticles(Int_t part) { fPHOSParticles = part ; }
102   void  SetFirstPHOSParticle(Int_t index) { fFirstPHOSParticle = index ; } 
103   Int_t GetNumberOfEMCALParticles() const {return fEMCALParticles;}
104   void  SetNumberOfEMCALParticles(Int_t part) { fEMCALParticles = part ; }
105   void  SetFirstEMCALParticle(Int_t index) { fFirstEMCALParticle = index ; } 
106
107
108   Float_t GetT0zVertex() const {return fT0zVertex;}
109   void SetT0zVertex(Float_t z) {fT0zVertex=z;}
110
111   void  Print(Option_t *option="") const;
112    
113 protected:
114
115   // Event Identification
116   Int_t        fEventNumber;     // Event Number
117   Int_t        fRunNumber;       // Run Number
118   Long_t       fTrigger;         // Trigger Type
119   Int_t        fRecoVersion;     // Version of reconstruction 
120   Float_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
121
122   Float_t      fT0zVertex;       // vertex z position estimated by the START
123   AliESDVertex fPrimaryVertex;   // Primary vertex estimated by the ITS
124
125   TClonesArray fTracks;          // ESD tracks
126   TClonesArray fHLTConfMapTracks;// HLT ESD tracks from Conformal Mapper method
127   TClonesArray fHLTHoughTracks;  // HLT ESD tracks from Hough Transform method
128   TClonesArray fMuonTracks;      // MUON ESD tracks
129   TClonesArray fPmdTracks;       // PMD ESD tracks
130   TClonesArray fV0s;             // V0 vertices
131   TClonesArray fCascades;        // Cascade vertices
132   Int_t        fPHOSParticles;   // Number of PHOS particles (stored as fTracks)
133   Int_t        fEMCALParticles;  // Number of EMCAL particles (stored as fTracks)
134   Int_t        fFirstPHOSParticle; // First PHOS particle in the fTracks list 
135   Int_t        fFirstEMCALParticle;// First EMCAL particle in the fTracks list 
136  
137   ClassDef(AliESD,7)  //ESD class 
138 };
139 #endif 
140