]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESD.cxx
Storing the information about the interaction diamond (Francesco & Andrea)
[u/mrichter/AliRoot.git] / STEER / AliESD.cxx
CommitLineData
8a8d023f 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
acd84897 16/* $Id$ */
8a8d023f 17
ae982df3 18//-----------------------------------------------------------------
19// Implementation of the ESD class
20// This is the class to deal with during the phisical analysis of data
af7ba10c 21// This class is generated directly by the reconstruction methods
ae982df3 22// Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
23//-----------------------------------------------------------------
8a8d023f 24
25#include "AliESD.h"
d75007f6 26#include "AliESDfriend.h"
8a8d023f 27
28ClassImp(AliESD)
29
af7ba10c 30//______________________________________________________________________________
e2afb3b6 31AliESD::AliESD():
31fd97b2 32 fEventNumberInFile(0),
33 fBunchCrossNumber(0),
34 fOrbitNumber(0),
e2afb3b6 35 fRunNumber(0),
001397cd 36 fTimeStamp(0),
37 fEventType(0),
b647652d 38 fTriggerMask(0),
39 fTriggerCluster(0),
e2afb3b6 40 fRecoVersion(0),
a866ac60 41 fMagneticField(0),
32a5cab4 42 fZDCN1Energy(0),
43 fZDCP1Energy(0),
32a5cab4 44 fZDCN2Energy(0),
45 fZDCP2Energy(0),
0ee00e25 46 fZDCEMEnergy(0),
878bc0c2 47 fZDCParticipants(0),
4a78b8c5 48 fT0zVertex(0),
15b965a7 49 fSPDVertex(),
50 fPrimaryVertex(),
32e449be 51 fSPDMult(),
6d45eaef 52 fT0timeStart(0),
e23730c7 53 fTracks("AliESDtrack",15000),
482070f2 54 fHLTConfMapTracks("AliESDHLTtrack",25000),
55 fHLTHoughTracks("AliESDHLTtrack",15000),
672b5f43 56 fMuonTracks("AliESDMuonTrack",30),
561b7b31 57 fPmdTracks("AliESDPmdTrack",3000),
0ee00e25 58 fTrdTracks("AliESDTrdTrack",300),
51ad6848 59 fV0s("AliESDv0",200),
a2882fb4 60 fCascades("AliESDcascade",20),
51ad6848 61 fKinks("AliESDkink",4000),
85c60a8e 62 fCaloClusters("AliESDCaloCluster",10000),
63 fEMCALClusters(0),
64 fFirstEMCALCluster(-1),
64df000d 65 fEMCALTriggerPosition(0x0),
66 fEMCALTriggerAmplitudes(0x0),
85c60a8e 67 fPHOSClusters(0),
68 fFirstPHOSCluster(-1),
64df000d 69 fPHOSTriggerPosition(0x0),
70 fPHOSTriggerAmplitudes(0x0),
dd735cf0 71 fESDFMD(0x0),
899ca440 72 fESDVZERO(0x0),
73 fErrorLogs("AliRawDataErrorLog",5)
64df000d 74
9da38871 75{
6d45eaef 76 for (Int_t i=0; i<24; i++) {
77 fT0time[i] = 0;
78 fT0amplitude[i] = 0;
79 }
9f57c1aa 80 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
81 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
873f1f73 82}
c028b974 83//______________________________________________________________________________
84AliESD::AliESD(const AliESD& esd):
85 TObject(esd),
31fd97b2 86 fEventNumberInFile(esd.fEventNumberInFile),
87 fBunchCrossNumber(esd.fBunchCrossNumber),
88 fOrbitNumber(esd.fOrbitNumber),
c028b974 89 fRunNumber(esd.fRunNumber),
001397cd 90 fTimeStamp(esd.fTimeStamp),
91 fEventType(esd.fEventType),
c028b974 92 fTriggerMask(esd.fTriggerMask),
93 fTriggerCluster(esd.fTriggerCluster),
94 fRecoVersion(esd.fRecoVersion),
95 fMagneticField(esd.fMagneticField),
96 fZDCN1Energy(esd.fZDCN1Energy),
97 fZDCP1Energy(esd.fZDCP1Energy),
98 fZDCN2Energy(esd.fZDCN2Energy),
99 fZDCP2Energy(esd.fZDCP2Energy),
100 fZDCEMEnergy(esd.fZDCEMEnergy),
101 fZDCParticipants(esd.fZDCParticipants),
102 fT0zVertex(esd.fT0zVertex),
103 fSPDVertex(esd.fSPDVertex),
104 fPrimaryVertex(esd.fPrimaryVertex),
fe12e09c 105 fSPDMult(esd.fSPDMult),
c028b974 106 fT0timeStart(esd.fT0timeStart),
107 fTracks(*((TClonesArray*)esd.fTracks.Clone())),
108 fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
109 fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
110 fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
111 fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
112 fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
113 fV0s(*((TClonesArray*)esd.fV0s.Clone())),
114 fCascades(*((TClonesArray*)esd.fCascades.Clone())),
115 fKinks(*((TClonesArray*)esd.fKinks.Clone())),
c028b974 116 fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
117 fEMCALClusters(esd.fEMCALClusters),
118 fFirstEMCALCluster(esd.fFirstEMCALCluster),
64df000d 119 fEMCALTriggerPosition(esd. fEMCALTriggerPosition),
120 fEMCALTriggerAmplitudes(esd.fEMCALTriggerAmplitudes),
c028b974 121 fPHOSClusters(esd.fPHOSClusters),
122 fFirstPHOSCluster(esd.fFirstPHOSCluster),
64df000d 123 fPHOSTriggerPosition(esd.fPHOSTriggerPosition),
124 fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
dd735cf0 125 fESDFMD(esd.fESDFMD),
899ca440 126 fESDVZERO(esd.fESDVZERO),
127 fErrorLogs(*((TClonesArray*)esd.fErrorLogs.Clone()))
c028b974 128{
129 for (Int_t i=0; i<24; i++) {
130 fT0time[i] = esd.fT0time[i];
131 fT0amplitude[i] = esd.fT0amplitude[i];
132 }
9f57c1aa 133 for (Int_t i=0; i<2; i++) fDiamondXY[i]=esd.fDiamondXY[i];
134 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=esd.fDiamondCovXY[i];
c028b974 135}
136
fe12e09c 137//______________________________________________________________________________
138AliESD & AliESD::operator=(const AliESD& source) {
139
140 // Assignment operator
141
142 if(&source == this) return *this;
143
31fd97b2 144 fEventNumberInFile = source.fEventNumberInFile;
145 fBunchCrossNumber = source.fBunchCrossNumber;
146 fOrbitNumber = source.fOrbitNumber;
fe12e09c 147 fRunNumber = source.fRunNumber;
001397cd 148 fTimeStamp = source.fTimeStamp;
149 fEventType = source.fEventType;
fe12e09c 150 fTriggerMask = source.fTriggerMask;
151 fTriggerCluster = source.fTriggerCluster;
152 fRecoVersion = source.fRecoVersion;
153 fMagneticField = source.fMagneticField;
154 fZDCN1Energy = source.fZDCN1Energy;
155 fZDCP1Energy = source.fZDCP1Energy;
156 fZDCN2Energy = source.fZDCN2Energy;
157 fZDCP2Energy = source.fZDCP2Energy;
158 fZDCEMEnergy = source.fZDCEMEnergy;
159 fZDCParticipants = source.fZDCParticipants;
160 fT0zVertex = source.fT0zVertex;
161 fSPDVertex = source.fSPDVertex;
162 fPrimaryVertex = source.fPrimaryVertex;
163 fSPDMult = source.fSPDMult;
164 fT0timeStart = source.fT0timeStart;
165 fTracks = *((TClonesArray*)source.fTracks.Clone());
166 fHLTConfMapTracks = *((TClonesArray*)source.fHLTConfMapTracks.Clone());
167 fHLTHoughTracks = *((TClonesArray*)source.fHLTHoughTracks.Clone());
168 fMuonTracks = *((TClonesArray*)source.fMuonTracks.Clone());
169 fPmdTracks = *((TClonesArray*)source.fPmdTracks.Clone());
170 fTrdTracks = *((TClonesArray*)source.fTrdTracks.Clone());
171 fV0s = *((TClonesArray*)source.fV0s.Clone());
172 fCascades = *((TClonesArray*)source.fCascades.Clone());
173 fKinks = *((TClonesArray*)source.fKinks.Clone());
fe12e09c 174 fCaloClusters = *((TClonesArray*)source.fCaloClusters.Clone());
175 fEMCALClusters = source.fEMCALClusters;
176 fFirstEMCALCluster = source.fFirstEMCALCluster;
177 fPHOSClusters = source.fPHOSClusters;
178 fFirstPHOSCluster = source.fFirstPHOSCluster;
179 fESDFMD = source.fESDFMD;
dd735cf0 180 fESDVZERO = source.fESDVZERO;
64df000d 181 fEMCALTriggerPosition=source. fEMCALTriggerPosition;
182 fEMCALTriggerAmplitudes=source.fEMCALTriggerAmplitudes;
183 fPHOSTriggerPosition=source.fPHOSTriggerPosition;
184 fPHOSTriggerAmplitudes=source.fPHOSTriggerAmplitudes;
899ca440 185 fErrorLogs = *((TClonesArray*)source.fErrorLogs.Clone());
186
fe12e09c 187 for (Int_t i=0; i<24; i++) {
188 fT0time[i] = source.fT0time[i];
189 fT0amplitude[i] = source.fT0amplitude[i];
190 }
9f57c1aa 191 for (Int_t i=0; i<2; i++) fDiamondXY[i]=source.fDiamondXY[i];
192 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=source.fDiamondCovXY[i];
fe12e09c 193
194 return *this;
195
196}
197
e2afb3b6 198
af7ba10c 199//______________________________________________________________________________
200AliESD::~AliESD()
201{
202 //
203 // Standard destructor
204 //
205 fTracks.Delete();
8bbc564d 206 fHLTConfMapTracks.Delete();
207 fHLTHoughTracks.Delete();
af7ba10c 208 fMuonTracks.Delete();
209 fPmdTracks.Delete();
0ee00e25 210 fTrdTracks.Delete();
af7ba10c 211 fV0s.Delete();
212 fCascades.Delete();
51ad6848 213 fKinks.Delete();
85c60a8e 214 fCaloClusters.Delete();
9da38871 215 delete fESDFMD;
dd735cf0 216 delete fESDVZERO;
64df000d 217// fEMCALTriggerPosition->Delete();
218// fEMCALTriggerAmplitudes->Delete();
219// fPHOSTriggerPosition->Delete();
220// fPHOSTriggerAmplitudes->Delete();
221// delete fEMCALTriggerPosition;
222// delete fEMCALTriggerAmplitudes;
223// delete fPHOSTriggerPosition;
224// delete fPHOSTriggerAmplitudes;
899ca440 225 fErrorLogs.Delete();
64df000d 226
51ad6848 227}
228
bf25155c 229//______________________________________________________________________________
230void AliESD::Reset()
231{
31fd97b2 232 fEventNumberInFile=0;
233 fBunchCrossNumber=0;
234 fOrbitNumber=0;
bf25155c 235 fRunNumber=0;
001397cd 236 fTimeStamp = 0;
237 fEventType = 0;
b647652d 238 fTriggerMask=0;
239 fTriggerCluster=0;
bf25155c 240 fRecoVersion=0;
241 fMagneticField=0;
32a5cab4 242 fZDCN1Energy=0;
243 fZDCP1Energy=0;
32a5cab4 244 fZDCN2Energy=0;
245 fZDCP2Energy=0;
0ee00e25 246 fZDCEMEnergy=0;
bf25155c 247 fZDCParticipants=0;
248 fT0zVertex=0;
6d45eaef 249 fT0timeStart = 0;
15b965a7 250 new (&fSPDVertex) AliESDVertex();
251 new (&fPrimaryVertex) AliESDVertex();
32e449be 252 new (&fSPDMult) AliMultiplicity();
bf25155c 253 fTracks.Clear();
254 fHLTConfMapTracks.Clear();
255 fHLTHoughTracks.Clear();
256 fMuonTracks.Clear();
257 fPmdTracks.Clear();
0ee00e25 258 fTrdTracks.Clear();
bf25155c 259 fV0s.Clear();
260 fCascades.Clear();
85c60a8e 261 fCaloClusters.Clear();
262 fEMCALClusters=0;
263 fFirstEMCALCluster=-1;
264 fPHOSClusters=0;
265 fFirstPHOSCluster=-1;
9da38871 266 if (fESDFMD) fESDFMD->Clear();
64df000d 267// fEMCALTriggerPosition->Clear();
268// fEMCALTriggerAmplitudes->Clear();
269// fPHOSTriggerPosition->Clear();
270// fPHOSTriggerAmplitudes->Clear();
899ca440 271 fErrorLogs.Clear();
bf25155c 272}
af7ba10c 273
d6a49f20 274Int_t AliESD::AddV0(const AliESDv0 *v) {
275 //
276 // Add V0
277 //
278 Int_t idx=fV0s.GetEntriesFast();
b75d63a7 279 new(fV0s[idx]) AliESDv0(*v);
d6a49f20 280 return idx;
281}
282
af7ba10c 283//______________________________________________________________________________
284void AliESD::Print(Option_t *) const
285{
286 //
287 // Print header information of the event
288 //
5f7789fc 289 printf("ESD run information\n");
31fd97b2 290 printf("Event # in file %d Bunch crossing # %d Orbit # %d Run # %d Trigger %lld Magnetic field %f \n",
291 GetEventNumberInFile(),
292 GetBunchCrossNumber(),
293 GetOrbitNumber(),
ef278eae 294 GetRunNumber(),
b647652d 295 GetTriggerMask(),
ef278eae 296 GetMagneticField() );
8497bca0 297 printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
15b965a7 298 fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
299 fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
300 fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
9f57c1aa 301 printf("Mean vertex in RUN: X=%.4f Y=%.4f cm\n",
302 GetDiamondX(),GetDiamondY());
32e449be 303 printf("SPD Multiplicity. Number of tracklets %d \n",
304 fSPDMult.GetNumberOfTracklets());
ef278eae 305 printf("Event from reconstruction version %d \n",fRecoVersion);
306 printf("Number of tracks: \n");
85c60a8e 307 printf(" charged %d\n", GetNumberOfTracks());
482070f2 308 printf(" hlt CF %d\n", GetNumberOfHLTConfMapTracks());
309 printf(" hlt HT %d\n", GetNumberOfHLTHoughTracks());
ef278eae 310 printf(" muon %d\n", GetNumberOfMuonTracks());
a2882fb4 311 printf(" pmd %d\n", GetNumberOfPmdTracks());
0ee00e25 312 printf(" trd %d\n", GetNumberOfTrdTracks());
ef278eae 313 printf(" v0 %d\n", GetNumberOfV0s());
667ee8bf 314 printf(" cascades %d\n", GetNumberOfCascades());
315 printf(" kinks %d\n", GetNumberOfKinks());
667ee8bf 316 printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
317 printf(" phos %d\n", GetNumberOfPHOSClusters());
318 printf(" emcal %d\n", GetNumberOfEMCALClusters());
319 printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
dd735cf0 320 printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
ef278eae 321}
d75007f6 322
323void AliESD::SetESDfriend(const AliESDfriend *ev) {
324 //
325 // Attaches the complementary info to the ESD
326 //
327 if (!ev) return;
328
329 Int_t ntrk=ev->GetNumberOfTracks();
330
331 for (Int_t i=0; i<ntrk; i++) {
332 const AliESDfriendTrack *f=ev->GetTrack(i);
333 GetTrack(i)->SetFriendTrack(f);
334 }
335}
336
337void AliESD::GetESDfriend(AliESDfriend *ev) const {
338 //
339 // Extracts the complementary info from the ESD
340 //
341 if (!ev) return;
342
343 Int_t ntrk=GetNumberOfTracks();
344
345 for (Int_t i=0; i<ntrk; i++) {
346 const AliESDtrack *t=GetTrack(i);
347 const AliESDfriendTrack *f=t->GetFriendTrack();
348 ev->AddTrack(f);
349 }
350}