1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 //-----------------------------------------------------------------
19 // Implementation of the ESD class
20 // This is the class to deal with during the phisical analysis of data
21 // This class is generated directly by the reconstruction methods
22 // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
23 //-----------------------------------------------------------------
26 #include "AliESDfriend.h"
30 //______________________________________________________________________________
32 fEventNumberInFile(0),
54 fTracks("AliESDtrack",15000),
55 fHLTConfMapTracks("AliESDHLTtrack",25000),
56 fHLTHoughTracks("AliESDHLTtrack",15000),
57 fMuonTracks("AliESDMuonTrack",30),
58 fPmdTracks("AliESDPmdTrack",3000),
59 fTrdTracks("AliESDTrdTrack",300),
61 fCascades("AliESDcascade",20),
62 fKinks("AliESDkink",4000),
63 fCaloClusters("AliESDCaloCluster",10000),
65 fFirstEMCALCluster(-1),
66 fEMCALTriggerPosition(0x0),
67 fEMCALTriggerAmplitudes(0x0),
69 fFirstPHOSCluster(-1),
70 fPHOSTriggerPosition(0x0),
71 fPHOSTriggerAmplitudes(0x0),
74 fErrorLogs("AliRawDataErrorLog",5)
77 for (Int_t i=0; i<24; i++) {
81 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
82 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
84 //______________________________________________________________________________
85 AliESD::AliESD(const AliESD& esd):
87 fEventNumberInFile(esd.fEventNumberInFile),
88 fBunchCrossNumber(esd.fBunchCrossNumber),
89 fOrbitNumber(esd.fOrbitNumber),
90 fPeriodNumber(esd.fPeriodNumber),
91 fRunNumber(esd.fRunNumber),
92 fTimeStamp(esd.fTimeStamp),
93 fEventType(esd.fEventType),
94 fTriggerMask(esd.fTriggerMask),
95 fTriggerCluster(esd.fTriggerCluster),
96 fRecoVersion(esd.fRecoVersion),
97 fMagneticField(esd.fMagneticField),
98 fZDCN1Energy(esd.fZDCN1Energy),
99 fZDCP1Energy(esd.fZDCP1Energy),
100 fZDCN2Energy(esd.fZDCN2Energy),
101 fZDCP2Energy(esd.fZDCP2Energy),
102 fZDCEMEnergy(esd.fZDCEMEnergy),
103 fZDCParticipants(esd.fZDCParticipants),
104 fT0zVertex(esd.fT0zVertex),
105 fSPDVertex(esd.fSPDVertex),
106 fPrimaryVertex(esd.fPrimaryVertex),
107 fSPDMult(esd.fSPDMult),
108 fT0timeStart(esd.fT0timeStart),
109 fTracks(*((TClonesArray*)esd.fTracks.Clone())),
110 fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
111 fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
112 fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
113 fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
114 fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
115 fV0s(*((TClonesArray*)esd.fV0s.Clone())),
116 fCascades(*((TClonesArray*)esd.fCascades.Clone())),
117 fKinks(*((TClonesArray*)esd.fKinks.Clone())),
118 fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
119 fEMCALClusters(esd.fEMCALClusters),
120 fFirstEMCALCluster(esd.fFirstEMCALCluster),
121 fEMCALTriggerPosition(esd. fEMCALTriggerPosition),
122 fEMCALTriggerAmplitudes(esd.fEMCALTriggerAmplitudes),
123 fPHOSClusters(esd.fPHOSClusters),
124 fFirstPHOSCluster(esd.fFirstPHOSCluster),
125 fPHOSTriggerPosition(esd.fPHOSTriggerPosition),
126 fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
127 fESDFMD(esd.fESDFMD),
128 fESDVZERO(esd.fESDVZERO),
129 fErrorLogs(*((TClonesArray*)esd.fErrorLogs.Clone()))
131 for (Int_t i=0; i<24; i++) {
132 fT0time[i] = esd.fT0time[i];
133 fT0amplitude[i] = esd.fT0amplitude[i];
135 for (Int_t i=0; i<2; i++) fDiamondXY[i]=esd.fDiamondXY[i];
136 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=esd.fDiamondCovXY[i];
139 //______________________________________________________________________________
140 AliESD & AliESD::operator=(const AliESD& source) {
142 // Assignment operator
144 if(&source == this) return *this;
146 fEventNumberInFile = source.fEventNumberInFile;
147 fBunchCrossNumber = source.fBunchCrossNumber;
148 fOrbitNumber = source.fOrbitNumber;
149 fPeriodNumber = source.fPeriodNumber;
150 fRunNumber = source.fRunNumber;
151 fTimeStamp = source.fTimeStamp;
152 fEventType = source.fEventType;
153 fTriggerMask = source.fTriggerMask;
154 fTriggerCluster = source.fTriggerCluster;
155 fRecoVersion = source.fRecoVersion;
156 fMagneticField = source.fMagneticField;
157 fZDCN1Energy = source.fZDCN1Energy;
158 fZDCP1Energy = source.fZDCP1Energy;
159 fZDCN2Energy = source.fZDCN2Energy;
160 fZDCP2Energy = source.fZDCP2Energy;
161 fZDCEMEnergy = source.fZDCEMEnergy;
162 fZDCParticipants = source.fZDCParticipants;
163 fT0zVertex = source.fT0zVertex;
164 fSPDVertex = source.fSPDVertex;
165 fPrimaryVertex = source.fPrimaryVertex;
166 fSPDMult = source.fSPDMult;
167 fT0timeStart = source.fT0timeStart;
168 fTracks = *((TClonesArray*)source.fTracks.Clone());
169 fHLTConfMapTracks = *((TClonesArray*)source.fHLTConfMapTracks.Clone());
170 fHLTHoughTracks = *((TClonesArray*)source.fHLTHoughTracks.Clone());
171 fMuonTracks = *((TClonesArray*)source.fMuonTracks.Clone());
172 fPmdTracks = *((TClonesArray*)source.fPmdTracks.Clone());
173 fTrdTracks = *((TClonesArray*)source.fTrdTracks.Clone());
174 fV0s = *((TClonesArray*)source.fV0s.Clone());
175 fCascades = *((TClonesArray*)source.fCascades.Clone());
176 fKinks = *((TClonesArray*)source.fKinks.Clone());
177 fCaloClusters = *((TClonesArray*)source.fCaloClusters.Clone());
178 fEMCALClusters = source.fEMCALClusters;
179 fFirstEMCALCluster = source.fFirstEMCALCluster;
180 fPHOSClusters = source.fPHOSClusters;
181 fFirstPHOSCluster = source.fFirstPHOSCluster;
182 fESDFMD = source.fESDFMD;
183 fESDVZERO = source.fESDVZERO;
184 fEMCALTriggerPosition=source. fEMCALTriggerPosition;
185 fEMCALTriggerAmplitudes=source.fEMCALTriggerAmplitudes;
186 fPHOSTriggerPosition=source.fPHOSTriggerPosition;
187 fPHOSTriggerAmplitudes=source.fPHOSTriggerAmplitudes;
188 fErrorLogs = *((TClonesArray*)source.fErrorLogs.Clone());
190 for (Int_t i=0; i<24; i++) {
191 fT0time[i] = source.fT0time[i];
192 fT0amplitude[i] = source.fT0amplitude[i];
194 for (Int_t i=0; i<2; i++) fDiamondXY[i]=source.fDiamondXY[i];
195 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=source.fDiamondCovXY[i];
202 //______________________________________________________________________________
206 // Standard destructor
209 fHLTConfMapTracks.Delete();
210 fHLTHoughTracks.Delete();
211 fMuonTracks.Delete();
217 fCaloClusters.Delete();
220 // fEMCALTriggerPosition->Delete();
221 // fEMCALTriggerAmplitudes->Delete();
222 // fPHOSTriggerPosition->Delete();
223 // fPHOSTriggerAmplitudes->Delete();
224 // delete fEMCALTriggerPosition;
225 // delete fEMCALTriggerAmplitudes;
226 // delete fPHOSTriggerPosition;
227 // delete fPHOSTriggerAmplitudes;
232 //______________________________________________________________________________
235 fEventNumberInFile=0;
254 new (&fSPDVertex) AliESDVertex();
255 new (&fPrimaryVertex) AliESDVertex();
256 new (&fSPDMult) AliMultiplicity();
258 fHLTConfMapTracks.Clear();
259 fHLTHoughTracks.Clear();
265 fCaloClusters.Clear();
267 fFirstEMCALCluster=-1;
269 fFirstPHOSCluster=-1;
270 if (fESDFMD) fESDFMD->Clear();
271 // fEMCALTriggerPosition->Clear();
272 // fEMCALTriggerAmplitudes->Clear();
273 // fPHOSTriggerPosition->Clear();
274 // fPHOSTriggerAmplitudes->Clear();
278 Int_t AliESD::AddV0(const AliESDv0 *v) {
282 Int_t idx=fV0s.GetEntriesFast();
283 new(fV0s[idx]) AliESDv0(*v);
287 //______________________________________________________________________________
288 void AliESD::Print(Option_t *) const
291 // Print header information of the event
293 printf("ESD run information\n");
294 printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld Magnetic field %f \n",
295 GetEventNumberInFile(),
296 GetBunchCrossNumber(),
301 GetMagneticField() );
302 printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
303 fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
304 fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
305 fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
306 printf("Mean vertex in RUN: X=%.4f Y=%.4f cm\n",
307 GetDiamondX(),GetDiamondY());
308 printf("SPD Multiplicity. Number of tracklets %d \n",
309 fSPDMult.GetNumberOfTracklets());
310 printf("Event from reconstruction version %d \n",fRecoVersion);
311 printf("Number of tracks: \n");
312 printf(" charged %d\n", GetNumberOfTracks());
313 printf(" hlt CF %d\n", GetNumberOfHLTConfMapTracks());
314 printf(" hlt HT %d\n", GetNumberOfHLTHoughTracks());
315 printf(" muon %d\n", GetNumberOfMuonTracks());
316 printf(" pmd %d\n", GetNumberOfPmdTracks());
317 printf(" trd %d\n", GetNumberOfTrdTracks());
318 printf(" v0 %d\n", GetNumberOfV0s());
319 printf(" cascades %d\n", GetNumberOfCascades());
320 printf(" kinks %d\n", GetNumberOfKinks());
321 printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
322 printf(" phos %d\n", GetNumberOfPHOSClusters());
323 printf(" emcal %d\n", GetNumberOfEMCALClusters());
324 printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
325 printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
328 void AliESD::SetESDfriend(const AliESDfriend *ev) {
330 // Attaches the complementary info to the ESD
334 Int_t ntrk=ev->GetNumberOfTracks();
336 for (Int_t i=0; i<ntrk; i++) {
337 const AliESDfriendTrack *f=ev->GetTrack(i);
338 GetTrack(i)->SetFriendTrack(f);
342 void AliESD::GetESDfriend(AliESDfriend *ev) const {
344 // Extracts the complementary info from the ESD
348 Int_t ntrk=GetNumberOfTracks();
350 for (Int_t i=0; i<ntrk; i++) {
351 const AliESDtrack *t=GetTrack(i);
352 const AliESDfriendTrack *f=t->GetFriendTrack();