]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESD.cxx
Initialization of some data members (Alberto)
[u/mrichter/AliRoot.git] / STEER / AliESD.cxx
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
16 /* $Id$ */
17
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 //-----------------------------------------------------------------
24
25 #include "AliESD.h"
26 #include "AliESDfriend.h"
27
28 ClassImp(AliESD)
29
30 //______________________________________________________________________________
31 AliESD::AliESD():
32   fEventNumber(0),
33   fRunNumber(0),
34   fTriggerMask(0),
35   fTriggerCluster(0),
36   fRecoVersion(0),
37   fMagneticField(0),
38   fZDCN1Energy(0),
39   fZDCP1Energy(0),
40   fZDCN2Energy(0),
41   fZDCP2Energy(0),
42   fZDCEMEnergy(0),
43   fZDCParticipants(0),
44   fT0zVertex(0),
45   fSPDVertex(),
46   fPrimaryVertex(),
47   fSPDMult(),
48   fT0timeStart(0),
49   fTracks("AliESDtrack",15000),
50   fHLTConfMapTracks("AliESDHLTtrack",25000),
51   fHLTHoughTracks("AliESDHLTtrack",15000),
52   fMuonTracks("AliESDMuonTrack",30),
53   fPmdTracks("AliESDPmdTrack",3000),
54   fTrdTracks("AliESDTrdTrack",300),
55   fV0s("AliESDv0",200),  
56   fCascades("AliESDcascade",20),
57   fKinks("AliESDkink",4000),
58   fV0MIs("AliESDV0MI",4000),
59   fCaloClusters("AliESDCaloCluster",10000),
60   fEMCALClusters(0), 
61   fFirstEMCALCluster(-1),
62   fPHOSClusters(0), 
63   fFirstPHOSCluster(-1),
64   fESDFMD(0x0)
65 {
66   for (Int_t i=0; i<24; i++) {
67     fT0time[i] = 0;
68     fT0amplitude[i] = 0;
69   }
70 }
71 //______________________________________________________________________________
72 AliESD::AliESD(const AliESD& esd):
73   TObject(esd),
74   fEventNumber(esd.fEventNumber),
75   fRunNumber(esd.fRunNumber),
76   fTriggerMask(esd.fTriggerMask),
77   fTriggerCluster(esd.fTriggerCluster),
78   fRecoVersion(esd.fRecoVersion),
79   fMagneticField(esd.fMagneticField),
80   fZDCN1Energy(esd.fZDCN1Energy),
81   fZDCP1Energy(esd.fZDCP1Energy),
82   fZDCN2Energy(esd.fZDCN2Energy),
83   fZDCP2Energy(esd.fZDCP2Energy),
84   fZDCEMEnergy(esd.fZDCEMEnergy),
85   fZDCParticipants(esd.fZDCParticipants),
86   fT0zVertex(esd.fT0zVertex),
87   fSPDVertex(esd.fSPDVertex),
88   fPrimaryVertex(esd.fPrimaryVertex),
89   fT0timeStart(esd.fT0timeStart),
90   fTracks(*((TClonesArray*)esd.fTracks.Clone())),
91   fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
92   fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
93   fMuonTracks(*((TClonesArray*)esd.fMuonTracks.Clone())),
94   fPmdTracks(*((TClonesArray*)esd.fPmdTracks.Clone())),
95   fTrdTracks(*((TClonesArray*)esd.fTrdTracks.Clone())),
96   fV0s(*((TClonesArray*)esd.fV0s.Clone())),  
97   fCascades(*((TClonesArray*)esd.fCascades.Clone())),
98   fKinks(*((TClonesArray*)esd.fKinks.Clone())),
99   fV0MIs(*((TClonesArray*)esd.fV0MIs.Clone())),
100   fCaloClusters(*((TClonesArray*)esd.fCaloClusters.Clone())),
101   fEMCALClusters(esd.fEMCALClusters), 
102   fFirstEMCALCluster(esd.fFirstEMCALCluster),
103   fPHOSClusters(esd.fPHOSClusters), 
104   fFirstPHOSCluster(esd.fFirstPHOSCluster),
105   fESDFMD(esd.fESDFMD)
106 {
107   for (Int_t i=0; i<24; i++) {
108     fT0time[i] = esd.fT0time[i];
109     fT0amplitude[i] = esd.fT0amplitude[i];
110   }
111 }
112
113
114 //______________________________________________________________________________
115 AliESD::~AliESD()
116 {
117   //
118   // Standard destructor
119   //
120   fTracks.Delete();
121   fHLTConfMapTracks.Delete();
122   fHLTHoughTracks.Delete();
123   fMuonTracks.Delete();
124   fPmdTracks.Delete();
125   fTrdTracks.Delete();
126   fV0s.Delete();
127   fCascades.Delete();
128   fKinks.Delete();
129   fV0MIs.Delete();
130   fCaloClusters.Delete();
131   delete fESDFMD;
132 }
133
134 void AliESD::UpdateV0PIDs()
135 {
136   //
137   //
138   //
139   Int_t nV0 = GetNumberOfV0MIs();
140   for (Int_t i=0;i<nV0;i++){
141     AliESDV0MI * v0 = GetV0MI(i);
142     AliESDtrack* tp = GetTrack(v0->GetIndex(0));
143     AliESDtrack* tm = GetTrack(v0->GetIndex(1));
144     if (!tm || !tp){
145       printf("BBBUUUUUUUGGGG\n");
146     }
147     Double_t pp[5],pm[5];
148     tp->GetESDpid(pp);
149     tm->GetESDpid(pm);
150     v0->UpdatePID(pp,pm);    
151   }
152 }
153
154 //______________________________________________________________________________
155 void AliESD::Reset()
156 {
157   fEventNumber=0;
158   fRunNumber=0;
159   fTriggerMask=0;
160   fTriggerCluster=0;
161   fRecoVersion=0;
162   fMagneticField=0;
163   fZDCN1Energy=0;
164   fZDCP1Energy=0;
165   fZDCN2Energy=0;
166   fZDCP2Energy=0;
167   fZDCEMEnergy=0;
168   fZDCParticipants=0;
169   fT0zVertex=0;
170   fT0timeStart = 0;
171   new (&fSPDVertex) AliESDVertex();
172   new (&fPrimaryVertex) AliESDVertex();
173   new (&fSPDMult) AliMultiplicity();
174   fTracks.Clear();
175   fHLTConfMapTracks.Clear();
176   fHLTHoughTracks.Clear();
177   fMuonTracks.Clear();
178   fPmdTracks.Clear();
179   fTrdTracks.Clear();
180   fV0s.Clear();
181   fCascades.Clear();
182   fCaloClusters.Clear();
183   fEMCALClusters=0; 
184   fFirstEMCALCluster=-1; 
185   fPHOSClusters=0; 
186   fFirstPHOSCluster=-1; 
187   if (fESDFMD) fESDFMD->Clear();
188 }
189
190 //______________________________________________________________________________
191 void AliESD::Print(Option_t *) const 
192 {
193   //
194   // Print header information of the event
195   //
196   printf("ESD run information\n");
197   printf("Event # %d Run # %d Trigger %lld Magnetic field %f \n",
198          GetEventNumber(),
199          GetRunNumber(),
200          GetTriggerMask(),
201          GetMagneticField() );
202     printf("Vertex: (%.4f +- %.4f, %.4f +- %.4f, %.4f +- %.4f) cm\n",
203            fPrimaryVertex.GetXv(), fPrimaryVertex.GetXRes(),
204            fPrimaryVertex.GetYv(), fPrimaryVertex.GetYRes(),
205            fPrimaryVertex.GetZv(), fPrimaryVertex.GetZRes());
206     printf("SPD Multiplicity. Number of tracklets %d \n",
207            fSPDMult.GetNumberOfTracklets());
208   printf("Event from reconstruction version %d \n",fRecoVersion);
209   printf("Number of tracks: \n");
210   printf("                 charged   %d\n", GetNumberOfTracks());
211   printf("                 hlt CF    %d\n", GetNumberOfHLTConfMapTracks());
212   printf("                 hlt HT    %d\n", GetNumberOfHLTHoughTracks());
213   printf("                 muon      %d\n", GetNumberOfMuonTracks());
214   printf("                 pmd       %d\n", GetNumberOfPmdTracks());
215   printf("                 trd       %d\n", GetNumberOfTrdTracks());
216   printf("                 v0        %d\n", GetNumberOfV0s());
217   printf("                 cascades  %d\n", GetNumberOfCascades());
218   printf("                 kinks     %d\n", GetNumberOfKinks());
219   printf("                 V0MIs     %d\n", GetNumberOfV0MIs());
220   printf("                 CaloClusters %d\n", GetNumberOfCaloClusters());
221   printf("                 phos      %d\n", GetNumberOfPHOSClusters());
222   printf("                 emcal     %d\n", GetNumberOfEMCALClusters());
223   printf("                 FMD       %s\n", (fESDFMD ? "yes" : "no"));
224 }
225
226 void AliESD::SetESDfriend(const AliESDfriend *ev) {
227   //
228   // Attaches the complementary info to the ESD
229   //
230   if (!ev) return;
231
232   Int_t ntrk=ev->GetNumberOfTracks();
233
234   for (Int_t i=0; i<ntrk; i++) {
235     const AliESDfriendTrack *f=ev->GetTrack(i);
236     GetTrack(i)->SetFriendTrack(f);
237   }
238 }
239
240 void AliESD::GetESDfriend(AliESDfriend *ev) const {
241   //
242   // Extracts the complementary info from the ESD
243   //
244   if (!ev) return;
245
246   Int_t ntrk=GetNumberOfTracks();
247
248   for (Int_t i=0; i<ntrk; i++) {
249     const AliESDtrack *t=GetTrack(i);
250     const AliESDfriendTrack *f=t->GetFriendTrack();
251     ev->AddTrack(f);
252   }
253 }