]>
Commit | Line | Data |
---|---|---|
9da38871 | 1 | // -*- mode: C++ -*- |
af7ba10c | 2 | #ifndef ALIESD_H |
3 | #define ALIESD_H | |
8a8d023f | 4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
88cb7938 | 7 | |
8 | /* $Id$ */ | |
9 | ||
ae982df3 | 10 | //------------------------------------------------------------------------- |
11 | // Class AliESD | |
12 | // This is the class to deal with during the physical analysis of data | |
13 | // | |
14 | // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch | |
15 | //------------------------------------------------------------------------- | |
8a8d023f | 16 | |
af7ba10c | 17 | #include <TClonesArray.h> |
18 | #include <TObject.h> | |
19 | ||
af7ba10c | 20 | #include "AliESDMuonTrack.h" |
21 | #include "AliESDPmdTrack.h" | |
0ee00e25 | 22 | #include "AliESDTrdTrack.h" |
af7ba10c | 23 | #include "AliESDVertex.h" |
24 | #include "AliESDcascade.h" | |
51ad6848 | 25 | #include "AliESDkink.h" |
af7ba10c | 26 | #include "AliESDtrack.h" |
482070f2 | 27 | #include "AliESDHLTtrack.h" |
85c60a8e | 28 | #include "AliESDCaloCluster.h" |
af7ba10c | 29 | #include "AliESDv0.h" |
9da38871 | 30 | #include "AliESDFMD.h" |
32e449be | 31 | #include "AliMultiplicity.h" |
8a8d023f | 32 | |
d75007f6 | 33 | class AliESDfriend; |
34 | ||
ae982df3 | 35 | class AliESD : public TObject { |
8a8d023f | 36 | public: |
ae982df3 | 37 | AliESD(); |
af7ba10c | 38 | virtual ~AliESD(); |
8a8d023f | 39 | |
d75007f6 | 40 | void SetESDfriend(const AliESDfriend *f); |
41 | void GetESDfriend(AliESDfriend *f) const; | |
42 | ||
ae982df3 | 43 | void SetEventNumber(Int_t n) {fEventNumber=n;} |
5121f0b3 | 44 | void SetRunNumber(Int_t n) {fRunNumber=n;} |
001397cd | 45 | void SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;} |
46 | void SetEventType(UInt_t eventType){fEventType = eventType;} | |
b647652d | 47 | void SetTriggerMask(ULong64_t n) {fTriggerMask=n;} |
48 | void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;} | |
a866ac60 | 49 | void SetMagneticField(Float_t mf){fMagneticField = mf;} |
50 | Float_t GetMagneticField() const {return fMagneticField;} | |
51 | ||
873f1f73 | 52 | AliESDtrack *GetTrack(Int_t i) const { |
ae982df3 | 53 | return (AliESDtrack *)fTracks.UncheckedAt(i); |
54 | } | |
482070f2 | 55 | AliESDHLTtrack *GetHLTConfMapTrack(Int_t i) const { |
56 | return (AliESDHLTtrack *)fHLTConfMapTracks.UncheckedAt(i); | |
57 | } | |
58 | AliESDHLTtrack *GetHLTHoughTrack(Int_t i) const { | |
59 | return (AliESDHLTtrack *)fHLTHoughTracks.UncheckedAt(i); | |
60 | } | |
873f1f73 | 61 | AliESDMuonTrack *GetMuonTrack(Int_t i) const { |
672b5f43 | 62 | return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i); |
63 | } | |
561b7b31 | 64 | AliESDPmdTrack *GetPmdTrack(Int_t i) const { |
65 | return (AliESDPmdTrack *)fPmdTracks.UncheckedAt(i); | |
66 | } | |
0ee00e25 | 67 | AliESDTrdTrack *GetTrdTrack(Int_t i) const { |
68 | return (AliESDTrdTrack *)fTrdTracks.UncheckedAt(i); | |
69 | } | |
672b5f43 | 70 | |
51ad6848 | 71 | Int_t AddTrack(const AliESDtrack *t) { |
72 | AliESDtrack * track = new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t); | |
73 | track->SetID(fTracks.GetEntriesFast()-1); | |
74 | return track->GetID(); | |
75 | ||
ae982df3 | 76 | } |
482070f2 | 77 | void AddHLTConfMapTrack(const AliESDHLTtrack *t) { |
78 | new(fHLTConfMapTracks[fHLTConfMapTracks.GetEntriesFast()]) AliESDHLTtrack(*t); | |
79 | } | |
80 | void AddHLTHoughTrack(const AliESDHLTtrack *t) { | |
81 | new(fHLTHoughTracks[fHLTHoughTracks.GetEntriesFast()]) AliESDHLTtrack(*t); | |
82 | } | |
672b5f43 | 83 | void AddMuonTrack(const AliESDMuonTrack *t) { |
84 | new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t); | |
85 | } | |
561b7b31 | 86 | void AddPmdTrack(const AliESDPmdTrack *t) { |
87 | new(fPmdTracks[fPmdTracks.GetEntriesFast()]) AliESDPmdTrack(*t); | |
88 | } | |
0ee00e25 | 89 | void AddTrdTrack(const AliESDTrdTrack *t) { |
90 | new(fTrdTracks[fTrdTracks.GetEntriesFast()]) AliESDTrdTrack(*t); | |
91 | } | |
8a8d023f | 92 | |
873f1f73 | 93 | AliESDv0 *GetV0(Int_t i) const { |
e23730c7 | 94 | return (AliESDv0 *)fV0s.UncheckedAt(i); |
95 | } | |
d6a49f20 | 96 | Int_t AddV0(const AliESDv0 *v); |
e23730c7 | 97 | |
873f1f73 | 98 | AliESDcascade *GetCascade(Int_t i) const { |
e23730c7 | 99 | return (AliESDcascade *)fCascades.UncheckedAt(i); |
100 | } | |
101 | void AddCascade(const AliESDcascade *c) { | |
102 | new(fCascades[fCascades.GetEntriesFast()]) AliESDcascade(*c); | |
103 | } | |
104 | ||
51ad6848 | 105 | AliESDkink *GetKink(Int_t i) const { |
106 | return (AliESDkink *)fKinks.UncheckedAt(i); | |
107 | } | |
108 | Int_t AddKink(const AliESDkink *c) { | |
109 | AliESDkink * kink = new(fKinks[fKinks.GetEntriesFast()]) AliESDkink(*c); | |
110 | kink->SetID(fKinks.GetEntriesFast()); | |
111 | return fKinks.GetEntriesFast()-1; | |
112 | } | |
113 | ||
85c60a8e | 114 | AliESDCaloCluster *GetCaloCluster(Int_t i) const { |
115 | return (AliESDCaloCluster *)fCaloClusters.UncheckedAt(i); | |
116 | } | |
117 | Int_t AddCaloCluster(const AliESDCaloCluster *c) { | |
118 | AliESDCaloCluster *clus = new(fCaloClusters[fCaloClusters.GetEntriesFast()]) AliESDCaloCluster(*c); | |
119 | clus->SetID(fCaloClusters.GetEntriesFast()-1); | |
120 | return fCaloClusters.GetEntriesFast()-1; | |
121 | } | |
122 | ||
15b965a7 | 123 | void SetVertex(const AliESDVertex *vertex) { |
124 | new (&fSPDVertex) AliESDVertex(*vertex); | |
2257f27e | 125 | } |
15b965a7 | 126 | const AliESDVertex *GetVertex() const {return &fSPDVertex;} |
c5e3e5d1 | 127 | |
32e449be | 128 | void SetMultiplicity(const AliMultiplicity *mul) { |
129 | new (&fSPDMult) AliMultiplicity(*mul); | |
130 | } | |
131 | const AliMultiplicity *GetMultiplicity() const {return &fSPDMult;} | |
132 | ||
15b965a7 | 133 | void SetPrimaryVertex(const AliESDVertex *vertex) { |
134 | new (&fPrimaryVertex) AliESDVertex(*vertex); | |
c5e3e5d1 | 135 | } |
15b965a7 | 136 | const AliESDVertex *GetPrimaryVertex() const {return &fPrimaryVertex;} |
873f1f73 | 137 | |
ae982df3 | 138 | Int_t GetEventNumber() const {return fEventNumber;} |
139 | Int_t GetRunNumber() const {return fRunNumber;} | |
001397cd | 140 | UInt_t GetTimeStamp() const { return fTimeStamp;} |
141 | UInt_t GetEventType() const { return fEventType;} | |
b647652d | 142 | ULong64_t GetTriggerMask() const {return fTriggerMask;} |
143 | UChar_t GetTriggerCluster() const {return fTriggerCluster;} | |
8a8d023f | 144 | |
672b5f43 | 145 | Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();} |
482070f2 | 146 | Int_t GetNumberOfHLTConfMapTracks() const {return fHLTConfMapTracks.GetEntriesFast();} |
147 | Int_t GetNumberOfHLTHoughTracks() const {return fHLTHoughTracks.GetEntriesFast();} | |
672b5f43 | 148 | Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();} |
561b7b31 | 149 | Int_t GetNumberOfPmdTracks() const {return fPmdTracks.GetEntriesFast();} |
0ee00e25 | 150 | Int_t GetNumberOfTrdTracks() const {return fTrdTracks.GetEntriesFast();} |
e23730c7 | 151 | Int_t GetNumberOfV0s() const {return fV0s.GetEntriesFast();} |
152 | Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();} | |
51ad6848 | 153 | Int_t GetNumberOfKinks() const {return fKinks.GetEntriesFast();} |
85c60a8e | 154 | Int_t GetNumberOfCaloClusters() const {return fCaloClusters.GetEntriesFast();} |
155 | ||
156 | Int_t GetNumberOfEMCALClusters() const {return fEMCALClusters;} | |
157 | void SetNumberOfEMCALClusters(Int_t clus) {fEMCALClusters = clus;} | |
158 | Int_t GetFirstEMCALCluster() const {return fFirstEMCALCluster;} | |
159 | void SetFirstEMCALCluster(Int_t index) {fFirstEMCALCluster = index;} | |
160 | ||
161 | Int_t GetNumberOfPHOSClusters() const {return fPHOSClusters;} | |
162 | void SetNumberOfPHOSClusters(Int_t part) { fPHOSClusters = part ; } | |
163 | void SetFirstPHOSCluster(Int_t index) { fFirstPHOSCluster = index ; } | |
164 | Int_t GetFirstPHOSCluster() const { return fFirstPHOSCluster ; } | |
a2882fb4 | 165 | |
4a78b8c5 | 166 | Float_t GetT0zVertex() const {return fT0zVertex;} |
167 | void SetT0zVertex(Float_t z) {fT0zVertex=z;} | |
6d45eaef | 168 | Float_t GetT0() const {return fT0timeStart;} |
169 | void SetT0(Float_t timeStart) {fT0timeStart = timeStart;} | |
170 | const Float_t * GetT0time() const {return fT0time;} | |
171 | void SetT0time(Float_t time[24]) { | |
172 | for (Int_t i=0; i<24; i++) fT0time[i] = time[i]; | |
173 | } | |
174 | const Float_t * GetT0amplitude() const {return fT0amplitude;} | |
175 | void SetT0amplitude(Float_t amp[24]) { | |
176 | for (Int_t i=0; i<24; i++) fT0amplitude[i] = amp[i]; | |
177 | } | |
ef278eae | 178 | |
32a5cab4 | 179 | Float_t GetZDCN1Energy() const {return fZDCN1Energy;} |
180 | Float_t GetZDCP1Energy() const {return fZDCP1Energy;} | |
181 | Float_t GetZDCN2Energy() const {return fZDCN2Energy;} | |
182 | Float_t GetZDCP2Energy() const {return fZDCP2Energy;} | |
878bc0c2 | 183 | Float_t GetZDCEMEnergy() const {return fZDCEMEnergy;} |
184 | Int_t GetZDCParticipants() const {return fZDCParticipants;} | |
32a5cab4 | 185 | void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t emEnergy, |
186 | Float_t n2Energy, Float_t p2Energy, Int_t participants) | |
187 | {fZDCN1Energy=n1Energy; fZDCP1Energy=p1Energy; fZDCEMEnergy=emEnergy; | |
188 | fZDCN2Energy=n2Energy; fZDCP2Energy=p2Energy; fZDCParticipants=participants;} | |
878bc0c2 | 189 | |
50ca5f39 | 190 | void ResetV0s() { fV0s.Clear(); } |
191 | void ResetCascades() { fCascades.Clear(); } | |
192 | void Reset(); | |
bf25155c | 193 | |
ef278eae | 194 | void Print(Option_t *option="") const; |
9da38871 | 195 | |
196 | void SetFMDData(AliESDFMD * obj) { | |
197 | fESDFMD = new AliESDFMD(*obj); | |
198 | } | |
199 | ||
200 | AliESDFMD * GetFMDData(){ return fESDFMD;} | |
ef278eae | 201 | |
8a8d023f | 202 | protected: |
c028b974 | 203 | AliESD(const AliESD&); |
fe12e09c | 204 | AliESD &operator=(const AliESD& source); |
8a8d023f | 205 | |
206 | // Event Identification | |
ae982df3 | 207 | Int_t fEventNumber; // Event Number |
208 | Int_t fRunNumber; // Run Number | |
001397cd | 209 | UInt_t fTimeStamp; // Time stamp |
210 | UInt_t fEventType; // Type of Event | |
b647652d | 211 | ULong64_t fTriggerMask; // Trigger Type (mask) |
212 | UChar_t fTriggerCluster; // Trigger cluster (mask) | |
ae982df3 | 213 | Int_t fRecoVersion; // Version of reconstruction |
a866ac60 | 214 | Float_t fMagneticField; // Solenoid Magnetic Field in kG : for compatibility with AliMagF |
8a8d023f | 215 | |
32a5cab4 | 216 | Float_t fZDCN1Energy; // reconstructed energy in the neutron ZDC |
217 | Float_t fZDCP1Energy; // reconstructed energy in the proton ZDC | |
218 | Float_t fZDCN2Energy; // reconstructed energy in the neutron ZDC | |
219 | Float_t fZDCP2Energy; // reconstructed energy in the proton ZDC | |
878bc0c2 | 220 | Float_t fZDCEMEnergy; // reconstructed energy in the electromagnetic ZDC |
221 | Int_t fZDCParticipants; // number of participants estimated by the ZDC | |
222 | ||
4a78b8c5 | 223 | Float_t fT0zVertex; // vertex z position estimated by the START |
15b965a7 | 224 | AliESDVertex fSPDVertex; // Primary vertex estimated by the SPD |
225 | AliESDVertex fPrimaryVertex; // Primary vertex estimated using ESD tracks | |
32e449be | 226 | AliMultiplicity fSPDMult; // SPD tracklet multiplicity |
c5e3e5d1 | 227 | |
6d45eaef | 228 | Float_t fT0timeStart; // interaction time estimated by the START |
229 | Float_t fT0time[24]; // best TOF on each START PMT | |
230 | Float_t fT0amplitude[24]; // number of particles(MIPs) on each START PMT | |
8bbc564d | 231 | |
232 | TClonesArray fTracks; // ESD tracks | |
233 | TClonesArray fHLTConfMapTracks;// HLT ESD tracks from Conformal Mapper method | |
234 | TClonesArray fHLTHoughTracks; // HLT ESD tracks from Hough Transform method | |
235 | TClonesArray fMuonTracks; // MUON ESD tracks | |
236 | TClonesArray fPmdTracks; // PMD ESD tracks | |
0ee00e25 | 237 | TClonesArray fTrdTracks; // TRD ESD tracks (triggered) |
8bbc564d | 238 | TClonesArray fV0s; // V0 vertices |
239 | TClonesArray fCascades; // Cascade vertices | |
51ad6848 | 240 | TClonesArray fKinks; // Kinks |
85c60a8e | 241 | TClonesArray fCaloClusters; // Calorimeter clusters for PHOS/EMCAL |
242 | Int_t fEMCALClusters; // Number of EMCAL clusters (subset of caloclusters) | |
243 | Int_t fFirstEMCALCluster; // First EMCAL cluster in the fCaloClusters list | |
244 | ||
245 | Int_t fPHOSClusters; // Number of PHOS clusters (subset of caloclusters) | |
246 | Int_t fFirstPHOSCluster; // First PHOS cluster in the fCaloClusters list | |
704be597 | 247 | |
9da38871 | 248 | AliESDFMD * fESDFMD; // FMD object containing rough multiplicity |
249 | ||
001397cd | 250 | ClassDef(AliESD,15) //ESD class |
8a8d023f | 251 | }; |
8a8d023f | 252 | #endif |
253 |