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),
53 fTracks("AliESDtrack",15000),
54 fHLTConfMapTracks("AliESDHLTtrack",25000),
55 fHLTHoughTracks("AliESDHLTtrack",15000),
56 fMuonTracks("AliESDMuonTrack",30),
57 fPmdTracks("AliESDPmdTrack",3000),
58 fTrdTracks("AliESDTrdTrack",300),
60 fCascades("AliESDcascade",20),
61 fKinks("AliESDkink",4000),
62 fCaloClusters("AliESDCaloCluster",10000),
64 fFirstEMCALCluster(-1),
65 fEMCALTriggerPosition(0x0),
66 fEMCALTriggerAmplitudes(0x0),
68 fFirstPHOSCluster(-1),
69 fPHOSTriggerPosition(0x0),
70 fPHOSTriggerAmplitudes(0x0),
75 for (Int_t i=0; i<24; i++) {
80 //______________________________________________________________________________
81 AliESD::AliESD(const AliESD& esd):
83 fEventNumberInFile(esd.fEventNumberInFile),
84 fBunchCrossNumber(esd.fBunchCrossNumber),
85 fOrbitNumber(esd.fOrbitNumber),
86 fRunNumber(esd.fRunNumber),
87 fTimeStamp(esd.fTimeStamp),
88 fEventType(esd.fEventType),
89 fTriggerMask(esd.fTriggerMask),
90 fTriggerCluster(esd.fTriggerCluster),
91 fRecoVersion(esd.fRecoVersion),
92 fMagneticField(esd.fMagneticField),
93 fZDCN1Energy(esd.fZDCN1Energy),
94 fZDCP1Energy(esd.fZDCP1Energy),
95 fZDCN2Energy(esd.fZDCN2Energy),
96 fZDCP2Energy(esd.fZDCP2Energy),
97 fZDCEMEnergy(esd.fZDCEMEnergy),
98 fZDCParticipants(esd.fZDCParticipants),
99 fT0zVertex(esd.fT0zVertex),
100 fSPDVertex(esd.fSPDVertex),
101 fPrimaryVertex(esd.fPrimaryVertex),
102 fSPDMult(esd.fSPDMult),
103 fT0timeStart(esd.fT0timeStart),
104 fTracks(*((TClonesArray*)esd.fTracks.Clone())),
105 fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
106 fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
107 fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
108 fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
109 fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
110 fV0s(*((TClonesArray*)esd.fV0s.Clone())),
111 fCascades(*((TClonesArray*)esd.fCascades.Clone())),
112 fKinks(*((TClonesArray*)esd.fKinks.Clone())),
113 fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
114 fEMCALClusters(esd.fEMCALClusters),
115 fFirstEMCALCluster(esd.fFirstEMCALCluster),
116 fEMCALTriggerPosition(esd. fEMCALTriggerPosition),
117 fEMCALTriggerAmplitudes(esd.fEMCALTriggerAmplitudes),
118 fPHOSClusters(esd.fPHOSClusters),
119 fFirstPHOSCluster(esd.fFirstPHOSCluster),
120 fPHOSTriggerPosition(esd.fPHOSTriggerPosition),
121 fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
122 fESDFMD(esd.fESDFMD),
123 fESDVZERO(esd.fESDVZERO)
125 for (Int_t i=0; i<24; i++) {
126 fT0time[i] = esd.fT0time[i];
127 fT0amplitude[i] = esd.fT0amplitude[i];
131 //______________________________________________________________________________
132 AliESD & AliESD::operator=(const AliESD& source) {
134 // Assignment operator
136 if(&source == this) return *this;
138 fEventNumberInFile = source.fEventNumberInFile;
139 fBunchCrossNumber = source.fBunchCrossNumber;
140 fOrbitNumber = source.fOrbitNumber;
141 fRunNumber = source.fRunNumber;
142 fTimeStamp = source.fTimeStamp;
143 fEventType = source.fEventType;
144 fTriggerMask = source.fTriggerMask;
145 fTriggerCluster = source.fTriggerCluster;
146 fRecoVersion = source.fRecoVersion;
147 fMagneticField = source.fMagneticField;
148 fZDCN1Energy = source.fZDCN1Energy;
149 fZDCP1Energy = source.fZDCP1Energy;
150 fZDCN2Energy = source.fZDCN2Energy;
151 fZDCP2Energy = source.fZDCP2Energy;
152 fZDCEMEnergy = source.fZDCEMEnergy;
153 fZDCParticipants = source.fZDCParticipants;
154 fT0zVertex = source.fT0zVertex;
155 fSPDVertex = source.fSPDVertex;
156 fPrimaryVertex = source.fPrimaryVertex;
157 fSPDMult = source.fSPDMult;
158 fT0timeStart = source.fT0timeStart;
159 fTracks = *((TClonesArray*)source.fTracks.Clone());
160 fHLTConfMapTracks = *((TClonesArray*)source.fHLTConfMapTracks.Clone());
161 fHLTHoughTracks = *((TClonesArray*)source.fHLTHoughTracks.Clone());
162 fMuonTracks = *((TClonesArray*)source.fMuonTracks.Clone());
163 fPmdTracks = *((TClonesArray*)source.fPmdTracks.Clone());
164 fTrdTracks = *((TClonesArray*)source.fTrdTracks.Clone());
165 fV0s = *((TClonesArray*)source.fV0s.Clone());
166 fCascades = *((TClonesArray*)source.fCascades.Clone());
167 fKinks = *((TClonesArray*)source.fKinks.Clone());
168 fCaloClusters = *((TClonesArray*)source.fCaloClusters.Clone());
169 fEMCALClusters = source.fEMCALClusters;
170 fFirstEMCALCluster = source.fFirstEMCALCluster;
171 fPHOSClusters = source.fPHOSClusters;
172 fFirstPHOSCluster = source.fFirstPHOSCluster;
173 fESDFMD = source.fESDFMD;
174 fESDVZERO = source.fESDVZERO;
175 fEMCALTriggerPosition=source. fEMCALTriggerPosition;
176 fEMCALTriggerAmplitudes=source.fEMCALTriggerAmplitudes;
177 fPHOSTriggerPosition=source.fPHOSTriggerPosition;
178 fPHOSTriggerAmplitudes=source.fPHOSTriggerAmplitudes;
180 for (Int_t i=0; i<24; i++) {
181 fT0time[i] = source.fT0time[i];
182 fT0amplitude[i] = source.fT0amplitude[i];
190 //______________________________________________________________________________
194 // Standard destructor
197 fHLTConfMapTracks.Delete();
198 fHLTHoughTracks.Delete();
199 fMuonTracks.Delete();
205 fCaloClusters.Delete();
208 // fEMCALTriggerPosition->Delete();
209 // fEMCALTriggerAmplitudes->Delete();
210 // fPHOSTriggerPosition->Delete();
211 // fPHOSTriggerAmplitudes->Delete();
212 // delete fEMCALTriggerPosition;
213 // delete fEMCALTriggerAmplitudes;
214 // delete fPHOSTriggerPosition;
215 // delete fPHOSTriggerAmplitudes;
219 //______________________________________________________________________________
222 fEventNumberInFile=0;
240 new (&fSPDVertex) AliESDVertex();
241 new (&fPrimaryVertex) AliESDVertex();
242 new (&fSPDMult) AliMultiplicity();
244 fHLTConfMapTracks.Clear();
245 fHLTHoughTracks.Clear();
251 fCaloClusters.Clear();
253 fFirstEMCALCluster=-1;
255 fFirstPHOSCluster=-1;
256 if (fESDFMD) fESDFMD->Clear();
257 // fEMCALTriggerPosition->Clear();
258 // fEMCALTriggerAmplitudes->Clear();
259 // fPHOSTriggerPosition->Clear();
260 // fPHOSTriggerAmplitudes->Clear();
263 Int_t AliESD::AddV0(const AliESDv0 *v) {
267 Int_t idx=fV0s.GetEntriesFast();
268 new(fV0s[idx]) AliESDv0(*v);
272 //______________________________________________________________________________
273 void AliESD::Print(Option_t *) const
276 // Print header information of the event
278 printf("ESD run information\n");
279 printf("Event # in file %d Bunch crossing # %d Orbit # %d Run # %d Trigger %lld Magnetic field %f \n",
280 GetEventNumberInFile(),
281 GetBunchCrossNumber(),
285 GetMagneticField() );
286 printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
287 fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
288 fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
289 fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
290 printf("SPD Multiplicity. Number of tracklets %d \n",
291 fSPDMult.GetNumberOfTracklets());
292 printf("Event from reconstruction version %d \n",fRecoVersion);
293 printf("Number of tracks: \n");
294 printf(" charged %d\n", GetNumberOfTracks());
295 printf(" hlt CF %d\n", GetNumberOfHLTConfMapTracks());
296 printf(" hlt HT %d\n", GetNumberOfHLTHoughTracks());
297 printf(" muon %d\n", GetNumberOfMuonTracks());
298 printf(" pmd %d\n", GetNumberOfPmdTracks());
299 printf(" trd %d\n", GetNumberOfTrdTracks());
300 printf(" v0 %d\n", GetNumberOfV0s());
301 printf(" cascades %d\n", GetNumberOfCascades());
302 printf(" kinks %d\n", GetNumberOfKinks());
303 printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
304 printf(" phos %d\n", GetNumberOfPHOSClusters());
305 printf(" emcal %d\n", GetNumberOfEMCALClusters());
306 printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
307 printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
310 void AliESD::SetESDfriend(const AliESDfriend *ev) {
312 // Attaches the complementary info to the ESD
316 Int_t ntrk=ev->GetNumberOfTracks();
318 for (Int_t i=0; i<ntrk; i++) {
319 const AliESDfriendTrack *f=ev->GetTrack(i);
320 GetTrack(i)->SetFriendTrack(f);
324 void AliESD::GetESDfriend(AliESDfriend *ev) const {
326 // Extracts the complementary info from the ESD
330 Int_t ntrk=GetNumberOfTracks();
332 for (Int_t i=0; i<ntrk; i++) {
333 const AliESDtrack *t=GetTrack(i);
334 const AliESDfriendTrack *f=t->GetFriendTrack();