]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESD.cxx
Consistency changes, bug fix, and new conditions on the kITSrefit and kTPCrefit bits...
[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
b545009a 25#include "AliESD.h"
26#include "AliESDfriend.h"
53203d32 27
28ClassImp(AliESD)
29
30//______________________________________________________________________________
31AliESD::AliESD():
af885e0f 32 fEventNumberInFile(0),
33 fBunchCrossNumber(0),
34 fOrbitNumber(0),
35 fPeriodNumber(0),
36 fRunNumber(0),
37 fTimeStamp(0),
38 fEventType(0),
39 fTriggerMask(0),
40 fTriggerCluster(0),
41 fRecoVersion(0),
42 fMagneticField(0),
43 fZDCN1Energy(0),
44 fZDCP1Energy(0),
45 fZDCN2Energy(0),
46 fZDCP2Energy(0),
47 fZDCEMEnergy(0),
48 fZDCParticipants(0),
49 fT0zVertex(0),
50 fSPDVertex(),
51 fPrimaryVertex(),
52 fSPDMult(),
53 fT0timeStart(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),
60 fV0s("AliESDv0",200),
61 fCascades("AliESDcascade",20),
62 fKinks("AliESDkink",4000),
63 fCaloClusters("AliESDCaloCluster",10000),
85c60a8e 64 fEMCALClusters(0),
65 fFirstEMCALCluster(-1),
af885e0f 66 fEMCALTriggerPosition(0x0),
67 fEMCALTriggerAmplitudes(0x0),
85c60a8e 68 fPHOSClusters(0),
af885e0f 69 fFirstPHOSCluster(-1),
70 fPHOSTriggerPosition(0x0),
71 fPHOSTriggerAmplitudes(0x0),
72 fESDFMD(0x0),
73 fESDVZERO(0x0),
74 fErrorLogs("AliRawDataErrorLog",5)
75
9da38871 76{
af885e0f 77 for (Int_t i=0; i<24; i++) {
78 fT0time[i] = 0;
79 fT0amplitude[i] = 0;
80 }
81 for (Int_t i=0; i<2; i++) fDiamondXY[i]=0.;
82 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=0.;
873f1f73 83}
e149da78 84
c028b974 85//______________________________________________________________________________
86AliESD::AliESD(const AliESD& esd):
87 TObject(esd),
af885e0f 88 fEventNumberInFile(esd.fEventNumberInFile),
89 fBunchCrossNumber(esd.fBunchCrossNumber),
90 fOrbitNumber(esd.fOrbitNumber),
91 fPeriodNumber(esd.fPeriodNumber),
92 fRunNumber(esd.fRunNumber),
93 fTimeStamp(esd.fTimeStamp),
94 fEventType(esd.fEventType),
95 fTriggerMask(esd.fTriggerMask),
96 fTriggerCluster(esd.fTriggerCluster),
97 fRecoVersion(esd.fRecoVersion),
98 fMagneticField(esd.fMagneticField),
99 fZDCN1Energy(esd.fZDCN1Energy),
100 fZDCP1Energy(esd.fZDCP1Energy),
101 fZDCN2Energy(esd.fZDCN2Energy),
102 fZDCP2Energy(esd.fZDCP2Energy),
103 fZDCEMEnergy(esd.fZDCEMEnergy),
104 fZDCParticipants(esd.fZDCParticipants),
105 fT0zVertex(esd.fT0zVertex),
106 fSPDVertex(esd.fSPDVertex),
107 fPrimaryVertex(esd.fPrimaryVertex),
108 fSPDMult(esd.fSPDMult),
109 fT0timeStart(esd.fT0timeStart),
110 fTracks(*((TClonesArray*)esd.fTracks.Clone())),
111 fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
112 fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
113 fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
114 fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
115 fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
116 fV0s(*((TClonesArray*)esd.fV0s.Clone())),
117 fCascades(*((TClonesArray*)esd.fCascades.Clone())),
118 fKinks(*((TClonesArray*)esd.fKinks.Clone())),
119 fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
c028b974 120 fEMCALClusters(esd.fEMCALClusters),
121 fFirstEMCALCluster(esd.fFirstEMCALCluster),
af885e0f 122 fEMCALTriggerPosition(esd. fEMCALTriggerPosition),
123 fEMCALTriggerAmplitudes(esd.fEMCALTriggerAmplitudes),
c028b974 124 fPHOSClusters(esd.fPHOSClusters),
af885e0f 125 fFirstPHOSCluster(esd.fFirstPHOSCluster),
126 fPHOSTriggerPosition(esd.fPHOSTriggerPosition),
127 fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
128 fESDFMD(esd.fESDFMD),
129 fESDVZERO(esd.fESDVZERO),
130 fErrorLogs(*((TClonesArray*)esd.fErrorLogs.Clone()))
c028b974 131{
af885e0f 132 for (Int_t i=0; i<24; i++) {
133 fT0time[i] = esd.fT0time[i];
134 fT0amplitude[i] = esd.fT0amplitude[i];
135 }
136 for (Int_t i=0; i<2; i++) fDiamondXY[i]=esd.fDiamondXY[i];
137 for (Int_t i=0; i<3; i++) fDiamondCovXY[i]=esd.fDiamondCovXY[i];
c028b974 138}
139
af7ba10c 140//______________________________________________________________________________
141AliESD::~AliESD()
142{
143 //
144 // Standard destructor
145 //
af885e0f 146 fTracks.Delete();
8bbc564d 147 fHLTConfMapTracks.Delete();
148 fHLTHoughTracks.Delete();
af885e0f 149 fMuonTracks.Delete();
af7ba10c 150 fPmdTracks.Delete();
0ee00e25 151 fTrdTracks.Delete();
af7ba10c 152 fV0s.Delete();
153 fCascades.Delete();
51ad6848 154 fKinks.Delete();
85c60a8e 155 fCaloClusters.Delete();
af885e0f 156 delete fESDFMD;
157 delete fESDVZERO;
64df000d 158// fEMCALTriggerPosition->Delete();
159// fEMCALTriggerAmplitudes->Delete();
160// fPHOSTriggerPosition->Delete();
161// fPHOSTriggerAmplitudes->Delete();
162// delete fEMCALTriggerPosition;
163// delete fEMCALTriggerAmplitudes;
164// delete fPHOSTriggerPosition;
165// delete fPHOSTriggerAmplitudes;
af885e0f 166 fErrorLogs.Delete();
64df000d 167
51ad6848 168}
169
bf25155c 170//______________________________________________________________________________
171void AliESD::Reset()
172{
af885e0f 173 fEventNumberInFile=0;
174 fBunchCrossNumber=0;
175 fOrbitNumber=0;
176 fPeriodNumber=0;
177 fRunNumber=0;
178 fTimeStamp = 0;
179 fEventType = 0;
180 fTriggerMask=0;
181 fTriggerCluster=0;
182 fRecoVersion=0;
183 fMagneticField=0;
184 fZDCN1Energy=0;
185 fZDCP1Energy=0;
186 fZDCN2Energy=0;
187 fZDCP2Energy=0;
188 fZDCEMEnergy=0;
189 fZDCParticipants=0;
190 fT0zVertex=0;
191 fT0timeStart = 0;
192 new (&fSPDVertex) AliESDVertex();
193 new (&fPrimaryVertex) AliESDVertex();
194 new (&fSPDMult) AliMultiplicity();
195 fTracks.Clear();
196 fHLTConfMapTracks.Clear();
197 fHLTHoughTracks.Clear();
198 fMuonTracks.Clear();
199 fPmdTracks.Clear();
200 fTrdTracks.Clear();
201 fV0s.Clear();
202 fCascades.Clear();
203 fCaloClusters.Clear();
85c60a8e 204 fEMCALClusters=0;
205 fFirstEMCALCluster=-1;
206 fPHOSClusters=0;
207 fFirstPHOSCluster=-1;
af885e0f 208 if (fESDFMD) fESDFMD->Clear();
209// fEMCALTriggerPosition->Clear();
210// fEMCALTriggerAmplitudes->Clear();
211// fPHOSTriggerPosition->Clear();
212// fPHOSTriggerAmplitudes->Clear();
213 fErrorLogs.Clear();
bf25155c 214}
af7ba10c 215
d64bd07d 216Bool_t AliESD::RemoveTrack(Int_t /*i*/) {
217 // ---------------------------------------------------------
218 // Remove track
219 // ---------------------------------------------------------
220
221 // Check if this track comes from a reconstructed decay
222 // if (yes) return kFALSE
223
224 // Remap the indices of the daughters of recosntructed decays
225
226 // Remove the track
227 // delete fTracks->RemoveAt(i);
228
229 // Compress the array with tracks
230 // fTracks->Compress();
231
232 return kTRUE;
233}
234
d6a49f20 235Int_t AliESD::AddV0(const AliESDv0 *v) {
236 //
237 // Add V0
238 //
af885e0f 239 Int_t idx=fV0s.GetEntriesFast();
240 new(fV0s[idx]) AliESDv0(*v);
241 return idx;
d6a49f20 242}
243
af7ba10c 244//______________________________________________________________________________
245void AliESD::Print(Option_t *) const
246{
247 //
248 // Print header information of the event
249 //
5f7789fc 250 printf("ESD run information\n");
4d422cad 251 printf("Event # in file %d Bunch crossing # %d Orbit # %d Period # %d Run # %d Trigger %lld Magnetic field %f \n",
31fd97b2 252 GetEventNumberInFile(),
253 GetBunchCrossNumber(),
254 GetOrbitNumber(),
4d422cad 255 GetPeriodNumber(),
ef278eae 256 GetRunNumber(),
b647652d 257 GetTriggerMask(),
ef278eae 258 GetMagneticField() );
af885e0f 259 printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
260 fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
261 fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
262 fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
9f57c1aa 263 printf("Mean vertex in RUN: X=%.4f Y=%.4f cm\n",
264 GetDiamondX(),GetDiamondY());
32e449be 265 printf("SPD Multiplicity. Number of tracklets %d \n",
af885e0f 266 fSPDMult.GetNumberOfTracklets());
267 printf("Event from reconstruction version %d \n",fRecoVersion);
ef278eae 268 printf("Number of tracks: \n");
85c60a8e 269 printf(" charged %d\n", GetNumberOfTracks());
af885e0f 270 printf(" hlt CF %d\n", GetNumberOfHLTConfMapTracks());
271 printf(" hlt HT %d\n", GetNumberOfHLTHoughTracks());
ef278eae 272 printf(" muon %d\n", GetNumberOfMuonTracks());
a2882fb4 273 printf(" pmd %d\n", GetNumberOfPmdTracks());
0ee00e25 274 printf(" trd %d\n", GetNumberOfTrdTracks());
ef278eae 275 printf(" v0 %d\n", GetNumberOfV0s());
667ee8bf 276 printf(" cascades %d\n", GetNumberOfCascades());
277 printf(" kinks %d\n", GetNumberOfKinks());
667ee8bf 278 printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
279 printf(" phos %d\n", GetNumberOfPHOSClusters());
280 printf(" emcal %d\n", GetNumberOfEMCALClusters());
281 printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
dd735cf0 282 printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
ef278eae 283}
d75007f6 284
285void AliESD::SetESDfriend(const AliESDfriend *ev) {
286 //
287 // Attaches the complementary info to the ESD
288 //
289 if (!ev) return;
290
291 Int_t ntrk=ev->GetNumberOfTracks();
af885e0f 292
d75007f6 293 for (Int_t i=0; i<ntrk; i++) {
294 const AliESDfriendTrack *f=ev->GetTrack(i);
295 GetTrack(i)->SetFriendTrack(f);
296 }
297}
298
299void AliESD::GetESDfriend(AliESDfriend *ev) const {
300 //
301 // Extracts the complementary info from the ESD
302 //
303 if (!ev) return;
304
305 Int_t ntrk=GetNumberOfTracks();
306
307 for (Int_t i=0; i<ntrk; i++) {
80799a5f 308 AliESDtrack *t=GetTrack(i);
d75007f6 309 const AliESDfriendTrack *f=t->GetFriendTrack();
310 ev->AddTrack(f);
80799a5f 311
312 t->ReleaseESDfriendTrack();// Not to have two copies of "friendTrack"
313
d75007f6 314 }
315}