]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliESD.cxx
Storing the alignable volume matrices. The matrixes transform from the tracking V2...
[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():
32 fEventNumber(0),
33 fRunNumber(0),
001397cd 34 fTimeStamp(0),
35 fEventType(0),
b647652d 36 fTriggerMask(0),
37 fTriggerCluster(0),
e2afb3b6 38 fRecoVersion(0),
a866ac60 39 fMagneticField(0),
32a5cab4 40 fZDCN1Energy(0),
41 fZDCP1Energy(0),
32a5cab4 42 fZDCN2Energy(0),
43 fZDCP2Energy(0),
0ee00e25 44 fZDCEMEnergy(0),
878bc0c2 45 fZDCParticipants(0),
4a78b8c5 46 fT0zVertex(0),
15b965a7 47 fSPDVertex(),
48 fPrimaryVertex(),
32e449be 49 fSPDMult(),
6d45eaef 50 fT0timeStart(0),
e23730c7 51 fTracks("AliESDtrack",15000),
482070f2 52 fHLTConfMapTracks("AliESDHLTtrack",25000),
53 fHLTHoughTracks("AliESDHLTtrack",15000),
672b5f43 54 fMuonTracks("AliESDMuonTrack",30),
561b7b31 55 fPmdTracks("AliESDPmdTrack",3000),
0ee00e25 56 fTrdTracks("AliESDTrdTrack",300),
51ad6848 57 fV0s("AliESDv0",200),
a2882fb4 58 fCascades("AliESDcascade",20),
51ad6848 59 fKinks("AliESDkink",4000),
85c60a8e 60 fCaloClusters("AliESDCaloCluster",10000),
61 fEMCALClusters(0),
62 fFirstEMCALCluster(-1),
64df000d 63 fEMCALTriggerPosition(0x0),
64 fEMCALTriggerAmplitudes(0x0),
85c60a8e 65 fPHOSClusters(0),
66 fFirstPHOSCluster(-1),
64df000d 67 fPHOSTriggerPosition(0x0),
68 fPHOSTriggerAmplitudes(0x0),
dd735cf0 69 fESDFMD(0x0),
70 fESDVZERO(0x0)
64df000d 71
9da38871 72{
6d45eaef 73 for (Int_t i=0; i<24; i++) {
74 fT0time[i] = 0;
75 fT0amplitude[i] = 0;
76 }
873f1f73 77}
c028b974 78//______________________________________________________________________________
79AliESD::AliESD(const AliESD& esd):
80 TObject(esd),
81 fEventNumber(esd.fEventNumber),
82 fRunNumber(esd.fRunNumber),
001397cd 83 fTimeStamp(esd.fTimeStamp),
84 fEventType(esd.fEventType),
c028b974 85 fTriggerMask(esd.fTriggerMask),
86 fTriggerCluster(esd.fTriggerCluster),
87 fRecoVersion(esd.fRecoVersion),
88 fMagneticField(esd.fMagneticField),
89 fZDCN1Energy(esd.fZDCN1Energy),
90 fZDCP1Energy(esd.fZDCP1Energy),
91 fZDCN2Energy(esd.fZDCN2Energy),
92 fZDCP2Energy(esd.fZDCP2Energy),
93 fZDCEMEnergy(esd.fZDCEMEnergy),
94 fZDCParticipants(esd.fZDCParticipants),
95 fT0zVertex(esd.fT0zVertex),
96 fSPDVertex(esd.fSPDVertex),
97 fPrimaryVertex(esd.fPrimaryVertex),
fe12e09c 98 fSPDMult(esd.fSPDMult),
c028b974 99 fT0timeStart(esd.fT0timeStart),
100 fTracks(*((TClonesArray*)esd.fTracks.Clone())),
101 fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
102 fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
103 fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
104 fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
105 fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
106 fV0s(*((TClonesArray*)esd.fV0s.Clone())),
107 fCascades(*((TClonesArray*)esd.fCascades.Clone())),
108 fKinks(*((TClonesArray*)esd.fKinks.Clone())),
c028b974 109 fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
110 fEMCALClusters(esd.fEMCALClusters),
111 fFirstEMCALCluster(esd.fFirstEMCALCluster),
64df000d 112 fEMCALTriggerPosition(esd. fEMCALTriggerPosition),
113 fEMCALTriggerAmplitudes(esd.fEMCALTriggerAmplitudes),
c028b974 114 fPHOSClusters(esd.fPHOSClusters),
115 fFirstPHOSCluster(esd.fFirstPHOSCluster),
64df000d 116 fPHOSTriggerPosition(esd.fPHOSTriggerPosition),
117 fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
dd735cf0 118 fESDFMD(esd.fESDFMD),
119 fESDVZERO(esd.fESDVZERO)
c028b974 120{
121 for (Int_t i=0; i<24; i++) {
122 fT0time[i] = esd.fT0time[i];
123 fT0amplitude[i] = esd.fT0amplitude[i];
124 }
125}
126
fe12e09c 127//______________________________________________________________________________
128AliESD & AliESD::operator=(const AliESD& source) {
129
130 // Assignment operator
131
132 if(&source == this) return *this;
133
134 fEventNumber = source.fEventNumber;
135 fRunNumber = source.fRunNumber;
001397cd 136 fTimeStamp = source.fTimeStamp;
137 fEventType = source.fEventType;
fe12e09c 138 fTriggerMask = source.fTriggerMask;
139 fTriggerCluster = source.fTriggerCluster;
140 fRecoVersion = source.fRecoVersion;
141 fMagneticField = source.fMagneticField;
142 fZDCN1Energy = source.fZDCN1Energy;
143 fZDCP1Energy = source.fZDCP1Energy;
144 fZDCN2Energy = source.fZDCN2Energy;
145 fZDCP2Energy = source.fZDCP2Energy;
146 fZDCEMEnergy = source.fZDCEMEnergy;
147 fZDCParticipants = source.fZDCParticipants;
148 fT0zVertex = source.fT0zVertex;
149 fSPDVertex = source.fSPDVertex;
150 fPrimaryVertex = source.fPrimaryVertex;
151 fSPDMult = source.fSPDMult;
152 fT0timeStart = source.fT0timeStart;
153 fTracks = *((TClonesArray*)source.fTracks.Clone());
154 fHLTConfMapTracks = *((TClonesArray*)source.fHLTConfMapTracks.Clone());
155 fHLTHoughTracks = *((TClonesArray*)source.fHLTHoughTracks.Clone());
156 fMuonTracks = *((TClonesArray*)source.fMuonTracks.Clone());
157 fPmdTracks = *((TClonesArray*)source.fPmdTracks.Clone());
158 fTrdTracks = *((TClonesArray*)source.fTrdTracks.Clone());
159 fV0s = *((TClonesArray*)source.fV0s.Clone());
160 fCascades = *((TClonesArray*)source.fCascades.Clone());
161 fKinks = *((TClonesArray*)source.fKinks.Clone());
fe12e09c 162 fCaloClusters = *((TClonesArray*)source.fCaloClusters.Clone());
163 fEMCALClusters = source.fEMCALClusters;
164 fFirstEMCALCluster = source.fFirstEMCALCluster;
165 fPHOSClusters = source.fPHOSClusters;
166 fFirstPHOSCluster = source.fFirstPHOSCluster;
167 fESDFMD = source.fESDFMD;
dd735cf0 168 fESDVZERO = source.fESDVZERO;
64df000d 169 fEMCALTriggerPosition=source. fEMCALTriggerPosition;
170 fEMCALTriggerAmplitudes=source.fEMCALTriggerAmplitudes;
171 fPHOSTriggerPosition=source.fPHOSTriggerPosition;
172 fPHOSTriggerAmplitudes=source.fPHOSTriggerAmplitudes;
173
fe12e09c 174 for (Int_t i=0; i<24; i++) {
175 fT0time[i] = source.fT0time[i];
176 fT0amplitude[i] = source.fT0amplitude[i];
177 }
178
179 return *this;
180
181}
182
e2afb3b6 183
af7ba10c 184//______________________________________________________________________________
185AliESD::~AliESD()
186{
187 //
188 // Standard destructor
189 //
190 fTracks.Delete();
8bbc564d 191 fHLTConfMapTracks.Delete();
192 fHLTHoughTracks.Delete();
af7ba10c 193 fMuonTracks.Delete();
194 fPmdTracks.Delete();
0ee00e25 195 fTrdTracks.Delete();
af7ba10c 196 fV0s.Delete();
197 fCascades.Delete();
51ad6848 198 fKinks.Delete();
85c60a8e 199 fCaloClusters.Delete();
9da38871 200 delete fESDFMD;
dd735cf0 201 delete fESDVZERO;
64df000d 202// fEMCALTriggerPosition->Delete();
203// fEMCALTriggerAmplitudes->Delete();
204// fPHOSTriggerPosition->Delete();
205// fPHOSTriggerAmplitudes->Delete();
206// delete fEMCALTriggerPosition;
207// delete fEMCALTriggerAmplitudes;
208// delete fPHOSTriggerPosition;
209// delete fPHOSTriggerAmplitudes;
210
51ad6848 211}
212
bf25155c 213//______________________________________________________________________________
214void AliESD::Reset()
215{
216 fEventNumber=0;
217 fRunNumber=0;
001397cd 218 fTimeStamp = 0;
219 fEventType = 0;
b647652d 220 fTriggerMask=0;
221 fTriggerCluster=0;
bf25155c 222 fRecoVersion=0;
223 fMagneticField=0;
32a5cab4 224 fZDCN1Energy=0;
225 fZDCP1Energy=0;
32a5cab4 226 fZDCN2Energy=0;
227 fZDCP2Energy=0;
0ee00e25 228 fZDCEMEnergy=0;
bf25155c 229 fZDCParticipants=0;
230 fT0zVertex=0;
6d45eaef 231 fT0timeStart = 0;
15b965a7 232 new (&fSPDVertex) AliESDVertex();
233 new (&fPrimaryVertex) AliESDVertex();
32e449be 234 new (&fSPDMult) AliMultiplicity();
bf25155c 235 fTracks.Clear();
236 fHLTConfMapTracks.Clear();
237 fHLTHoughTracks.Clear();
238 fMuonTracks.Clear();
239 fPmdTracks.Clear();
0ee00e25 240 fTrdTracks.Clear();
bf25155c 241 fV0s.Clear();
242 fCascades.Clear();
85c60a8e 243 fCaloClusters.Clear();
244 fEMCALClusters=0;
245 fFirstEMCALCluster=-1;
246 fPHOSClusters=0;
247 fFirstPHOSCluster=-1;
9da38871 248 if (fESDFMD) fESDFMD->Clear();
64df000d 249// fEMCALTriggerPosition->Clear();
250// fEMCALTriggerAmplitudes->Clear();
251// fPHOSTriggerPosition->Clear();
252// fPHOSTriggerAmplitudes->Clear();
bf25155c 253}
af7ba10c 254
d6a49f20 255Int_t AliESD::AddV0(const AliESDv0 *v) {
256 //
257 // Add V0
258 //
259 Int_t idx=fV0s.GetEntriesFast();
b75d63a7 260 new(fV0s[idx]) AliESDv0(*v);
d6a49f20 261 return idx;
262}
263
af7ba10c 264//______________________________________________________________________________
265void AliESD::Print(Option_t *) const
266{
267 //
268 // Print header information of the event
269 //
5f7789fc 270 printf("ESD run information\n");
b647652d 271 printf("Event # %d Run # %d Trigger %lld Magnetic field %f \n",
ef278eae 272 GetEventNumber(),
273 GetRunNumber(),
b647652d 274 GetTriggerMask(),
ef278eae 275 GetMagneticField() );
8497bca0 276 printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
15b965a7 277 fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
278 fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
279 fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
32e449be 280 printf("SPD Multiplicity. Number of tracklets %d \n",
281 fSPDMult.GetNumberOfTracklets());
ef278eae 282 printf("Event from reconstruction version %d \n",fRecoVersion);
283 printf("Number of tracks: \n");
85c60a8e 284 printf(" charged %d\n", GetNumberOfTracks());
482070f2 285 printf(" hlt CF %d\n", GetNumberOfHLTConfMapTracks());
286 printf(" hlt HT %d\n", GetNumberOfHLTHoughTracks());
ef278eae 287 printf(" muon %d\n", GetNumberOfMuonTracks());
a2882fb4 288 printf(" pmd %d\n", GetNumberOfPmdTracks());
0ee00e25 289 printf(" trd %d\n", GetNumberOfTrdTracks());
ef278eae 290 printf(" v0 %d\n", GetNumberOfV0s());
667ee8bf 291 printf(" cascades %d\n", GetNumberOfCascades());
292 printf(" kinks %d\n", GetNumberOfKinks());
667ee8bf 293 printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
294 printf(" phos %d\n", GetNumberOfPHOSClusters());
295 printf(" emcal %d\n", GetNumberOfEMCALClusters());
296 printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
dd735cf0 297 printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
ef278eae 298}
d75007f6 299
300void AliESD::SetESDfriend(const AliESDfriend *ev) {
301 //
302 // Attaches the complementary info to the ESD
303 //
304 if (!ev) return;
305
306 Int_t ntrk=ev->GetNumberOfTracks();
307
308 for (Int_t i=0; i<ntrk; i++) {
309 const AliESDfriendTrack *f=ev->GetTrack(i);
310 GetTrack(i)->SetFriendTrack(f);
311 }
312}
313
314void AliESD::GetESDfriend(AliESDfriend *ev) const {
315 //
316 // Extracts the complementary info from the ESD
317 //
318 if (!ev) return;
319
320 Int_t ntrk=GetNumberOfTracks();
321
322 for (Int_t i=0; i<ntrk; i++) {
323 const AliESDtrack *t=GetTrack(i);
324 const AliESDfriendTrack *f=t->GetFriendTrack();
325 ev->AddTrack(f);
326 }
327}