ZDC information added
[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   Float_t GetZDCNEnergy() const {return fZDCNEnergy;}
112   Float_t GetZDCPEnergy() const {return fZDCPEnergy;}
113   Float_t GetZDCEMEnergy() const {return fZDCEMEnergy;}
114   Int_t   GetZDCParticipants() const {return fZDCParticipants;}
115   void    SetZDC(Float_t nEnergy, Float_t pEnergy, Float_t emEnergy,
116                  Int_t participants) 
117    {fZDCNEnergy=nEnergy; fZDCPEnergy=pEnergy; fZDCEMEnergy=emEnergy;
118     fZDCParticipants=participants;}
119
120   void  Print(Option_t *option="") const;
121    
122 protected:
123
124   // Event Identification
125   Int_t        fEventNumber;     // Event Number
126   Int_t        fRunNumber;       // Run Number
127   Long_t       fTrigger;         // Trigger Type
128   Int_t        fRecoVersion;     // Version of reconstruction 
129   Float_t      fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
130
131   Float_t      fZDCNEnergy;      // reconstructed energy in the neutron ZDC
132   Float_t      fZDCPEnergy;      // reconstructed energy in the proton ZDC
133   Float_t      fZDCEMEnergy;     // reconstructed energy in the electromagnetic ZDC
134   Int_t        fZDCParticipants; // number of participants estimated by the ZDC
135
136   Float_t      fT0zVertex;       // vertex z position estimated by the START
137   AliESDVertex fPrimaryVertex;   // Primary vertex estimated by the ITS
138
139   TClonesArray fTracks;          // ESD tracks
140   TClonesArray fHLTConfMapTracks;// HLT ESD tracks from Conformal Mapper method
141   TClonesArray fHLTHoughTracks;  // HLT ESD tracks from Hough Transform method
142   TClonesArray fMuonTracks;      // MUON ESD tracks
143   TClonesArray fPmdTracks;       // PMD ESD tracks
144   TClonesArray fV0s;             // V0 vertices
145   TClonesArray fCascades;        // Cascade vertices
146   Int_t        fPHOSParticles;   // Number of PHOS particles (stored as fTracks)
147   Int_t        fEMCALParticles;  // Number of EMCAL particles (stored as fTracks)
148   Int_t        fFirstPHOSParticle; // First PHOS particle in the fTracks list 
149   Int_t        fFirstEMCALParticle;// First EMCAL particle in the fTracks list 
150  
151   ClassDef(AliESD,8)  //ESD class 
152 };
153 #endif 
154