1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch) -->
6 <!-- Date: Tue Apr 3 16:12:51 2001 -->
9 <title>AliPHOSAnalyze - source file</title>
10 <link rev=made href="mailto:rootdev@root.cern.ch">
11 <meta name="rating" content="General">
12 <meta name="objecttype" content="Manual">
13 <meta name="keywords" content="software development, oo, object oriented, unix, x11, windows, c++, html, rene brun, fons rademakers">
14 <meta name="description" content="ROOT - An Object Oriented Framework For Large Scale Data Analysis.">
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
19 /**************************************************************************
20 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
22 * Author: The ALICE Off-line Project. *
23 * Contributors are mentioned in the code where appropriate. *
25 * Permission to use, copy, modify and distribute this software and its *
26 * documentation strictly for non-commercial purposes is hereby granted *
27 * without fee, provided that the above copyright notice appears in all *
28 * copies and that both the copyright notice and this permission notice *
29 * appear in the supporting documentation. The authors make no claims *
30 * about the suitability of this software for any purpose. It is *
31 * provided "as is" without express or implied warranty. *
32 **************************************************************************/
36 <b>//_________________________________________________________________________</b>
37 <b>// Algorythm class to analyze PHOSv1 events:</b>
38 <b>// Construct histograms and displays them.</b>
39 <b>// Use the macro EditorBar.C for best access to the functionnalities</b>
41 <b>//*-- Author: Y. Schutz (SUBATECH) & Gines Martinez (SUBATECH)</b>
42 <b>//////////////////////////////////////////////////////////////////////////////</b>
44 <b>// --- ROOT system ---</b>
51 #include "TParticle.h"
52 #include "TClonesArray.h"
58 <b>// --- Standard library ---</b>
60 #include <iostream.h>
61 #include <stdio.h>
63 <b>// --- AliRoot header files ---</b>
66 #include "AliPHOSv1.h"
67 #include "AliPHOSAnalyze.h"
68 #include "AliPHOSClusterizerv1.h"
69 #include "AliPHOSTrackSegmentMakerv1.h"
70 #include "AliPHOSPIDv1.h"
71 #include "<a href="../AliPHOSReconstructioner.h">AliPHOSReconstructioner.h</a>"
72 #include "AliPHOSDigit.h"
73 #include "AliPHOSTrackSegment.h"
74 #include "AliPHOSRecParticle.h"
75 #include "AliPHOSIndexToObject.h"
76 #include "AliPHOSHit.h"
77 #include "AliPHOSCpvRecPoint.h"
78 #include "AliPHOSPpsdRecPoint.h"
80 ClassImp(AliPHOSAnalyze)
82 <b>//____________________________________________________________________________</b>
83 <a name="AliPHOSAnalyze:AliPHOSAnalyze"> </a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AliPHOSAnalyze">AliPHOSAnalyze::AliPHOSAnalyze</a>()
85 <b> // default ctor (useless)</b>
87 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a> = 0 ;
90 <b>//____________________________________________________________________________</b>
91 <a name="AliPHOSAnalyze:AliPHOSAnalyze"> </a><a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AliPHOSAnalyze">AliPHOSAnalyze::AliPHOSAnalyze</a>(<a href="../ListOfTypes.html#Text_t">Text_t</a> * name)
93 <b> // ctor: analyze events from root file "name"</b>
95 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> ok = <a href="#AliPHOSAnalyze:OpenRootFile">OpenRootFile</a>(name) ;
97 cout << " <a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> > Error opening " << name << endl ;
100 <b> //========== Get AliRun object from file </b>
101 gAlice = (AliRun*) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->Get("gAlice") ;
103 <b> //=========== Get the PHOS object and associated geometry from the file </b>
104 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a> = (<a href=".././AliPHOSv1.html">AliPHOSv1</a> *)gAlice->GetDetector("PHOS") ;
105 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a> = <a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetInstance">AliPHOSGeometry::GetInstance</a>( <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetGeometry()->GetName(), <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetGeometry()->GetTitle() );
107 <b> //========== Initializes the Index to Object converter</b>
108 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fObjGetter">fObjGetter</a> = <a href=".././AliPHOSIndexToObject.html#AliPHOSIndexToObject:GetInstance">AliPHOSIndexToObject::GetInstance</a>() ; // <--- To be redone
109 <b> //========== Current event <a href="../ListOfTypes.html#number">number</a> </b>
110 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fEvt">fEvt</a> = -999 ;
113 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fDebugLevel">fDebugLevel</a> = 0;
114 <b> // fClu = 0 ;</b>
115 <b> // fPID = 0 ;</b>
116 <b> // fTrs = 0 ;</b>
117 <b> // fRec = 0 ;</b>
118 <a href="#AliPHOSAnalyze:ResetHistograms">ResetHistograms</a>() ;
121 <b>//____________________________________________________________________________</b>
122 <a name="AliPHOSAnalyze:AliPHOSAnalyze"> </a><a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AliPHOSAnalyze">AliPHOSAnalyze::AliPHOSAnalyze</a>(const <a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> & ana)
125 ( (<a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> &)ana ).<a href="#AliPHOSAnalyze:Copy">Copy</a>(*this) ;
128 <b>//____________________________________________________________________________</b>
129 <a name="AliPHOSAnalyze:Copy"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:Copy">AliPHOSAnalyze::Copy</a>(TObject & obj)
131 <b> // copy an analysis into an other one</b>
132 TObject::<a href="#AliPHOSAnalyze:Copy">Copy</a>(obj) ;
133 <b> // I do nothing more because the copy is silly but the Code checkers requires one</b>
136 <b>//____________________________________________________________________________</b>
137 <a name="AliPHOSAnalyze:~AliPHOSAnalyze"> </a><a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a>::~<a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a>()
141 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->IsOpen()) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->Close() ;
142 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>) {delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a> ; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>=0 ;}
143 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>) {delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a> ; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a> =0 ;}
144 <b> // if(fClu) {delete fClu ; fClu =0 ;}</b>
145 <b> // if(fPID) {delete fPID ; fPID =0 ;}</b>
146 <b> // if(fRec) {delete fRec ; fRec =0 ;}</b>
147 <b> // if(fTrs) {delete fTrs ; fTrs =0 ;}</b>
150 <b>//____________________________________________________________________________</b>
151 <a name="AliPHOSAnalyze:DrawRecon"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:DrawRecon">AliPHOSAnalyze::DrawRecon</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> Nevent,<a href="../ListOfTypes.html#Int_t">Int_t</a> Nmod){
152 <b> //Draws pimary particles and reconstructed </b>
153 <b> //digits, RecPoints, RecPartices etc </b>
154 <b> //for event Nevent in the module Nmod.</b>
156 TH2F * digitOccupancy = new TH2F("digitOccupancy","EMC digits", 64,-71.,71.,64,-71.,71.);
157 TH2F * sdigitOccupancy = new TH2F("sdigitOccupancy","EMC sdigits", 64,-71.,71.,64,-71.,71.);
158 TH2F * emcOccupancy = new TH2F("emcOccupancy","EMC RecPoints",64,-71.,71.,64,-71.,71.);
159 TH2F * ppsdUp = new TH2F("ppsdUp","PPSD Up digits", 128,-71.,71.,128,-71.,71.) ;
160 TH2F * ppsdUpCl = new TH2F("ppsdUpCl","PPSD Up RecPoints",128,-71.,71.,128,-71.,71.) ;
161 TH2F * ppsdLow = new TH2F("ppsdLow","PPSD Low digits", 128,-71.,71.,128,-71.,71.) ;
162 TH2F * ppsdLowCl = new TH2F("ppsdLowCl","PPSD Low RecPoints",128,-71.,71.,128,-71.,71.) ;
163 TH2F * nbar = new TH2F("nbar","Primary nbar", 64,-71.,71.,64,-71.,71.);
164 TH2F * phot = new TH2F("phot","Primary Photon", 64,-71.,71.,64,-71.,71.);
165 TH2F * charg = new TH2F("charg","Primary charged",64,-71.,71.,64,-71.,71.);
166 TH2F * recPhot = new TH2F("recPhot","RecParticles with primary Photon",64,-71.,71.,64,-71.,71.);
167 TH2F * recNbar = new TH2F("recNbar","RecParticles with primary Nbar", 64,-71.,71.,64,-71.,71.);
169 <b> //========== Create the Clusterizer</b>
170 <b> // fClu = new <a href=".././AliPHOSClusterizerv1.html">AliPHOSClusterizerv1</a>() ; </b>
172 gAlice->GetEvent(Nevent);
174 TParticle * primary ;
175 <a href="../ListOfTypes.html#Int_t">Int_t</a> iPrimary ;
176 for ( iPrimary = 0 ; iPrimary < gAlice->GetNtrack() ; iPrimary++)
178 primary = gAlice->Particle(iPrimary) ;
179 <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary->GetPdgCode() ;
180 if( (primaryType == 211)||(primaryType == -211)||(primaryType == 2212)||(primaryType == -2212) ) {
181 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
182 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
183 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
184 if(moduleNumber==Nmod)
185 charg->Fill(primZ,primX,primary->Energy()) ;
187 if( primaryType == 22 ) {
188 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
189 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
190 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
191 if(moduleNumber==Nmod)
192 phot->Fill(primZ,primX,primary->Energy()) ;
195 if( primaryType == -2112 ) {
196 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
197 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
198 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
199 if(moduleNumber==Nmod)
200 nbar->Fill(primZ,primX,primary->Energy()) ;
205 <b> //Set TreeS here and get AliPHOSSdigitizer</b>
208 gAlice->TreeS()->GetEvent(0) ;
210 <a href="../ListOfTypes.html#Int_t">Int_t</a> iSDigit ;
211 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * sdigit ;
213 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits()){
214 for(iSDigit = 0; iSDigit < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits()->GetEntries(); iSDigit++)
216 sdigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits()->At(iSDigit) ;
217 <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4];
218 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(sdigit->GetId(), relid) ;
219 <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ;
220 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ;
221 <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1 ; //<--- <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Calibrate(sdigit->GetAmp()) ;
223 if(relid[1]==0) //EMC
224 sdigitOccupancy->Fill(x,z,e) ;
225 if((relid[1]>0)&&(relid[1]<17))
226 ppsdUp->Fill(x,z,e) ;
228 ppsdLow->Fill(x,z,e) ;
233 cout << "No SDigits read " << endl ;
236 gAlice->TreeD()->GetEvent(0) ;
238 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()){
239 <a href="../ListOfTypes.html#Int_t">Int_t</a> iDigit ;
240 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit ;
241 for(iDigit = 0; iDigit < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()->GetEntries(); iDigit++)
243 digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()->At(iDigit) ;
244 <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4];
245 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(digit->GetId(), relid) ;
246 <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ;
247 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ;
248 <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1; //<--- fClu->Calibrate(digit->GetAmp()) ;
250 if(relid[1]==0) //EMC
251 digitOccupancy->Fill(x,z,e) ;
252 if((relid[1]>0)&&(relid[1]<17))
253 ppsdUp->Fill(x,z,e) ;
255 ppsdLow->Fill(x,z,e) ;
260 cout << "No Digits read " << endl ;
263 gAlice->TreeR()->GetEvent(0) ;
265 TObjArray * emcRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->EmcRecPoints() ;
266 TObjArray * ppsdRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ;
267 TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ;
270 <a href="../ListOfTypes.html#Int_t">Int_t</a> irecp ;
274 for(irecp = 0; irecp < emcRecPoints->GetEntries() ; irecp ++){
275 <a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a> * emc= (<a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a>*)emcRecPoints->At(irecp) ;
276 if(emc->GetPHOSMod()==Nmod){
277 emc->GetLocalPosition(pos) ;
278 emcOccupancy->Fill(pos.X(),pos.Z(),emc->GetEnergy());
283 cout << "No EMC rec points read " << endl ;
287 for(irecp = 0; irecp < ppsdRecPoints->GetEntries() ; irecp ++){
288 <a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> * ppsd= (<a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> *)ppsdRecPoints->At(irecp) ;
290 ppsd->GetLocalPosition(pos) ;
291 cout << "PPSD " << irecp << " " << ppsd->GetPHOSMod() << " " << pos.X() << " " << pos.Z() << endl ;
293 if(ppsd->GetPHOSMod()==Nmod){
294 ppsd->GetLocalPosition(pos) ;
296 ppsdUpCl->Fill(pos.X(),pos.Z(),ppsd->GetEnergy());
298 ppsdLowCl->Fill(pos.X(),pos.Z(),ppsd->GetEnergy());
303 cout << "No PPSD/CPV rec points read " << endl ;
306 <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;
307 <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;
308 if(recParticleList ){
309 for(iRecParticle = 0; iRecParticle < recParticleList->GetEntries() ;iRecParticle++ )
311 recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->At(iRecParticle) ;
313 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumberRec ;
314 <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;
315 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
316 if(moduleNumberRec == Nmod){
318 <a href="../ListOfTypes.html#Double_t">Double_t</a> minDistance = 5. ;
319 <a href="../ListOfTypes.html#Int_t">Int_t</a> closestPrimary = -1 ;
321 <a href="../ListOfTypes.html#Int_t">Int_t</a> numberofprimaries ;
322 <a href="../ListOfTypes.html#Int_t">Int_t</a> * listofprimaries = recParticle->GetPrimaries(numberofprimaries) ;
323 <a href="../ListOfTypes.html#Int_t">Int_t</a> index ;
324 TParticle * primary ;
325 <a href="../ListOfTypes.html#Double_t">Double_t</a> distance = minDistance ;
327 for ( index = 0 ; index < numberofprimaries ; index++){
328 primary = gAlice->Particle(listofprimaries[index]) ;
329 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
330 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
331 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
332 if(moduleNumberRec == moduleNumber)
333 distance = TMath::Sqrt((recX-primX)*(recX-primX)+(recZ-primZ)*(recZ-primZ) ) ;
334 if(minDistance > distance)
336 minDistance = distance ;
337 closestPrimary = listofprimaries[index] ;
341 if(closestPrimary >=0 ){
343 <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice->Particle(closestPrimary)->GetPdgCode() ;
346 recPhot->Fill(recZ,recX,recParticle->Energy()) ;
348 if(primaryType==-2112)
349 recNbar->Fill(recZ,recX,recParticle->Energy()) ;
355 cout << "Not Rec Prticles read " << endl ;
358 digitOccupancy->Draw("box") ;
359 sdigitOccupancy->SetLineColor(5) ;
360 sdigitOccupancy->Draw("box") ;
361 emcOccupancy->SetLineColor(2) ;
362 emcOccupancy->Draw("boxsame") ;
363 ppsdUp->SetLineColor(3) ;
364 ppsdUp->Draw("boxsame") ;
365 ppsdLow->SetLineColor(4) ;
366 ppsdLow->Draw("boxsame") ;
367 phot->SetLineColor(8) ;
368 phot->Draw("boxsame") ;
369 nbar->SetLineColor(6) ;
370 nbar->Draw("boxsame") ;
373 <b>// //____________________________________________________________________________</b>
374 <b>// <a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:Reconstruct">AliPHOSAnalyze::Reconstruct</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> nevents,<a href="../ListOfTypes.html#Int_t">Int_t</a> firstEvent ) </b>
377 <b>// // Performs reconstruction of EMC and CPV (GPS2, IHEP or MIXT)</b>
378 <b>// // for events from FirstEvent to Nevents</b>
380 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent ; </b>
381 <b>// for ( ievent=firstEvent; ievent<nevents; ievent++) { </b>
382 <b>// if (ievent==firstEvent) {</b>
383 <b>// cout << "Analyze > Starting Reconstructing " << endl ; </b>
384 <b>// //========== Create the Clusterizer</b>
385 <b>// fClu = new <a href=".././AliPHOSClusterizerv1.html">AliPHOSClusterizerv1</a>() ; </b>
387 <b>// //========== Creates the track <a href="../ListOfTypes.html#segment">segment</a> maker</b>
388 <b>// fTrs = new <a href=".././AliPHOSTrackSegmentMakerv1.html">AliPHOSTrackSegmentMakerv1</a>() ;</b>
389 <b>// // fTrs->UnsetUnfoldFlag() ; </b>
391 <b>// //========== Creates the particle identifier</b>
392 <b>// fPID = new <a href=".././AliPHOSPIDv1.html">AliPHOSPIDv1</a>() ;</b>
393 <b>// fPID->SetShowerProfileCuts(0.3, 1.8, 0.3, 1.8 ) ; </b>
395 <b>// //========== Creates the Reconstructioner</b>
396 <b>// fRec = new <a href=".././AliPHOSReconstructioner.html">AliPHOSReconstructioner</a>(fClu, fTrs, fPID) ; </b>
397 <b>// if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fDebugLevel">fDebugLevel</a> != 0) fRec -> SetDebugReconstruction(kTRUE); </b>
400 <b>// if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fDebugLevel">fDebugLevel</a> != 0 ||</b>
401 <b>// (ievent+1) % (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Power( 10, (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Log10(ievent+1) ) == 0)</b>
402 <b>// cout << "======= Analyze ======> Event " << ievent+1 << endl ;</b>
405 <b>// gAlice->GetEvent(ievent) ;</b>
406 <b>// gAlice->SetEvent(ievent) ;</b>
408 <b>// if(gAlice->TreeS() == 0) gAlice->MakeTree("S");</b>
409 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-><a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("S") ; </b>
411 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Hits2SDigits() ; </b>
413 <b>// if(gAlice->TreeD() == 0) gAlice->MakeTree("D");</b>
414 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-><a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("D") ; </b>
416 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits2Digits() ;</b>
418 <b>// if(gAlice->TreeR() == 0) gAlice->MakeTree("R");</b>
420 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Reconstruction(fRec); </b>
422 <b>// gAlice->TreeS()->Fill() ;</b>
423 <b>// gAlice->TreeS()->Write(0,TObject::kOverwrite); </b>
425 <b>// gAlice->TreeD()->Fill() ;</b>
426 <b>// gAlice->TreeD()->Write(0,TObject::kOverwrite); </b>
430 <b>// if(fClu) {delete fClu ; fClu =0 ;}</b>
431 <b>// if(fPID) {delete fPID ; fPID =0 ;}</b>
432 <b>// if(fRec) {delete fRec ; fRec =0 ;}</b>
433 <b>// if(fTrs) {delete fTrs ; fTrs =0 ;}</b>
437 <b>//-------------------------------------------------------------------------------------</b>
438 <a name="AliPHOSAnalyze:ReadAndPrintCPV"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:ReadAndPrintCPV">AliPHOSAnalyze::ReadAndPrintCPV</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> EvFirst, <a href="../ListOfTypes.html#Int_t">Int_t</a> EvLast)
441 <b>// // Read and print generated and reconstructed hits in CPV</b>
442 <b>// // for events from EvFirst to Nevent.</b>
443 <b>// // If only EvFirst is defined, print only this one event.</b>
444 <b>// // Author: Yuri Kharlov</b>
445 <b>// // 12 October 2000</b>
448 <b>// if (EvFirst!=0 && EvLast==0) EvLast=EvFirst;</b>
449 <b>// for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=EvFirst; ievent<=EvLast; ievent++) { </b>
451 <b>// //========== Event Number></b>
452 <b>// cout << endl << "==== ReadAndPrintCPV ====> Event is " << ievent+1 << endl ;</b>
454 <b>// //=========== Connects the various Tree's for evt</b>
455 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b>
457 <b>// //========== Creating branches ===================================</b>
458 <b>// <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** emcRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->EmcRecPoints() ;</b>
459 <b>// gAlice->TreeR()->SetBranchAddress( "PHOSEmcRP" , emcRecPoints ) ;</b>
461 <b>// <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** cpvRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ;</b>
462 <b>// gAlice->TreeR()->SetBranchAddress( "PHOSPpsdRP", cpvRecPoints ) ;</b>
464 <b>// // Read and print CPV hits</b>
466 <b>// AliPHOSCPVModule cpvModule;</b>
467 <b>// TClonesArray *cpvHits;</b>
468 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPVhits;</b>
469 <b>// AliPHOSCPVHit *cpvHit;</b>
470 <b>// TLorentzVector p;</b>
471 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xgen, zgen;</b>
472 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ipart;</b>
473 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nGenHits = 0;</b>
474 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack<ntracks; itrack++) {</b>
475 <b>// //=========== Get the Hits Tree for the Primary track itrack</b>
476 <b>// gAlice->ResetHits();</b>
477 <b>// gAlice->TreeH()->GetEvent(itrack);</b>
478 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ; </b>
479 <b>// for (iModule=0; iModule < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNCPVModules">GetNCPVModules</a>(); iModule++) {</b>
480 <b>// cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetCPVModule(iModule);</b>
481 <b>// cpvHits = cpvModule.Hits();</b>
482 <b>// nCPVhits = cpvHits->GetEntriesFast();</b>
483 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b>
484 <b>// nGenHits++;</b>
485 <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b>
486 <b>// p = cpvHit->GetMomentum();</b>
487 <b>// xgen = cpvHit->X();</b>
488 <b>// zgen = cpvHit->Y();</b>
489 <b>// ipart = cpvHit->GetIpart();</b>
490 <b>// printf("CPV hit in module %d: ",iModule+1);</b>
491 <b>// printf(" p = (%f, %f, %f, %f) GeV,n",</b>
492 <b>// p.Px(),p.Py(),p.Pz(),p.Energy());</b>
493 <b>// printf(" (X,Z) = (%8.4f, %8.4f) cm, ipart = %dn",</b>
494 <b>// xgen,zgen,ipart);</b>
499 <b>// // Read and print CPV reconstructed points</b>
501 <b>// //=========== Gets the Reconstruction TTree</b>
502 <b>// gAlice->TreeR()->GetEvent(0) ;</b>
503 <b>// printf("Recpoints: %dn",(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->CpvRecPoints())->GetEntries());</b>
504 <b>// TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->CpvRecPoints() ) ;</b>
505 <b>// <a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *cpvRecPoint ;</b>
506 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nRecPoints = 0;</b>
507 <b>// while( ( cpvRecPoint = (<a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *)nextRP() ) ) {</b>
508 <b>// nRecPoints++;</b>
509 <b>// TVector3 locpos;</b>
510 <b>// cpvRecPoint->GetLocalPosition(locpos);</b>
511 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint->GetPHOSMod();</b>
512 <b>// printf("CPV recpoint in module %d: (X,Z) = (%f,%f) cmn",</b>
513 <b>// phosModule,locpos.X(),locpos.Z());</b>
515 <b>// printf("This event has %d generated hits and %d reconstructed pointsn",</b>
516 <b>// nGenHits,nRecPoints);</b>
520 <b>//____________________________________________________________________________</b>
521 <a name="AliPHOSAnalyze:AnalyzeCPV"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AnalyzeCPV">AliPHOSAnalyze::AnalyzeCPV</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> Nevents)
524 <b>// // Analyzes CPV characteristics</b>
525 <b>// // Author: Yuri Kharlov</b>
526 <b>// // 9 October 2000</b>
529 <b>// // Book histograms</b>
531 <b>// TH1F *hDx = new TH1F("hDx" ,"CPV x-resolution@reconstruction",100,-5. , 5.);</b>
532 <b>// TH1F *hDz = new TH1F("hDz" ,"CPV z-resolution@reconstruction",100,-5. , 5.);</b>
533 <b>// TH1F *hDr = new TH1F("hDr" ,"CPV r-resolution@reconstruction",100, 0. , 5.);</b>
534 <b>// TH1S *hNrp = new TH1S("hNrp" ,"CPV rec.<a href="../ListOfTypes.html#point">point</a> multiplicity", 21,-0.5,20.5);</b>
535 <b>// TH1S *hNrpX = new TH1S("hNrpX","CPV rec.<a href="../ListOfTypes.html#point">point</a> Phi-length" , 21,-0.5,20.5);</b>
536 <b>// TH1S *hNrpZ = new TH1S("hNrpZ","CPV rec.<a href="../ListOfTypes.html#point">point</a> Z-length" , 21,-0.5,20.5);</b>
538 <b>// cout << "Start CPV Analysis"<< endl ;</b>
539 <b>// for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent<Nevents; ievent++) { </b>
541 <b>// //========== Event Number> </b>
542 <b>// // if ( (ievent+1) % (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Power( 10, (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Log10(ievent+1) ) == 0)</b>
543 <b>// cout << endl << "==== AnalyzeCPV ====> Event is " << ievent+1 << endl ;</b>
545 <b>// //=========== Connects the various Tree's for evt</b>
546 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b>
548 <b>// //========== Creating branches ===================================</b>
549 <b>// <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** emcRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->EmcRecPoints() ;</b>
550 <b>// gAlice->TreeR()->SetBranchAddress( "PHOSEmcRP" , emcRecPoints ) ;</b>
552 <b>// <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** cpvRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ;</b>
553 <b>// gAlice->TreeR()->SetBranchAddress( "PHOSPpsdRP", cpvRecPoints ) ;</b>
555 <b>// // Create and fill arrays of hits for each CPV module</b>
557 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nOfModules = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>();</b>
558 <b>// TClonesArray **hitsPerModule = new TClonesArray *[nOfModules];</b>
559 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0; </b>
560 <b>// for (iModule=0; iModule < nOfModules; iModule++)</b>
561 <b>// hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b>
563 <b>// AliPHOSCPVModule cpvModule;</b>
564 <b>// TClonesArray *cpvHits;</b>
565 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPVhits;</b>
566 <b>// AliPHOSCPVHit *cpvHit;</b>
567 <b>// TLorentzVector p;</b>
568 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xzgen[2];</b>
569 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ipart;</b>
571 <b>// // First go through all primary tracks and fill the arrays</b>
572 <b>// // of hits per each CPV module</b>
574 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack<ntracks; itrack++) {</b>
575 <b>// // Get the Hits Tree for the Primary track itrack</b>
576 <b>// gAlice->ResetHits();</b>
577 <b>// gAlice->TreeH()->GetEvent(itrack);</b>
578 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule < nOfModules; iModule++) {</b>
579 <b>// cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetCPVModule(iModule);</b>
580 <b>// cpvHits = cpvModule.Hits();</b>
581 <b>// nCPVhits = cpvHits->GetEntriesFast();</b>
582 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b>
583 <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b>
584 <b>// p = cpvHit->GetMomentum();</b>
585 <b>// xzgen[0] = cpvHit->X();</b>
586 <b>// xzgen[1] = cpvHit->Y();</b>
587 <b>// ipart = cpvHit->GetIpart();</b>
588 <b>// TClonesArray &lhits = *(TClonesArray *)hitsPerModule[iModule];</b>
589 <b>// new(lhits[hitsPerModule[iModule]->GetEntriesFast()]) AliPHOSCPVHit(*cpvHit);</b>
591 <b>// cpvModule.Clear();</b>
594 <b>// for (iModule=0; iModule < nOfModules; iModule++) {</b>
595 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nsum = hitsPerModule[iModule]->GetEntriesFast();</b>
596 <b>// printf("Module %d has %d hitsn",iModule,nsum);</b>
599 <b>// // Then go through reconstructed points and for each find</b>
600 <b>// // the closeset hit</b>
601 <b>// // The distance from the rec.<a href="../ListOfTypes.html#point">point</a> to the closest hit</b>
602 <b>// // gives the coordinate resolution of the CPV</b>
604 <b>// // Get the Reconstruction Tree</b>
605 <b>// gAlice->TreeR()->GetEvent(0) ;</b>
606 <b>// TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ) ;</b>
607 <b>// <a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *cpvRecPoint ;</b>
608 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xgen, zgen;</b>
609 <b>// while( ( cpvRecPoint = (<a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *)nextRP() ) ) {</b>
610 <b>// TVector3 locpos;</b>
611 <b>// cpvRecPoint->GetLocalPosition(locpos);</b>
612 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint->GetPHOSMod();</b>
613 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMult = cpvRecPoint->GetDigitsMultiplicity();</b>
614 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMultX, rpMultZ;</b>
615 <b>// cpvRecPoint->GetClusterLengths(rpMultX,rpMultZ);</b>
616 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xrec = locpos.X();</b>
617 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> zrec = locpos.Z();</b>
618 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dxmin = 1.e+10;</b>
619 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dzmin = 1.e+10;</b>
620 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> r2min = 1.e+10;</b>
621 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> r2;</b>
623 <b>// cpvHits = hitsPerModule[phosModule-1];</b>
624 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPVhits = cpvHits->GetEntriesFast();</b>
625 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b>
626 <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b>
627 <b>// xgen = cpvHit->X();</b>
628 <b>// zgen = cpvHit->Y();</b>
629 <b>// r2 = TMath::Power((xgen-xrec),2) + TMath::Power((zgen-zrec),2);</b>
630 <b>// if ( r2 < r2min ) {</b>
631 <b>// r2min = r2;</b>
632 <b>// dxmin = xgen - xrec;</b>
633 <b>// dzmin = zgen - zrec;</b>
636 <b>// hDx ->Fill(dxmin);</b>
637 <b>// hDz ->Fill(dzmin);</b>
638 <b>// hDr ->Fill(TMath::Sqrt(r2min));</b>
639 <b>// hNrp ->Fill(rpMult);</b>
640 <b>// hNrpX->Fill(rpMultX);</b>
641 <b>// hNrpZ->Fill(rpMultZ);</b>
643 <b>// delete [] hitsPerModule;</b>
645 <b>// // Save histograms</b>
647 <b>// <a href="../ListOfTypes.html#Text_t">Text_t</a> outputname[80] ;</b>
648 <b>// sprintf(outputname,"%s.analyzed",<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->GetName());</b>
649 <b>// TFile output(outputname,"RECREATE");</b>
650 <b>// output.cd();</b>
652 <b>// hDx ->Write() ;</b>
653 <b>// hDz ->Write() ;</b>
654 <b>// hDr ->Write() ;</b>
655 <b>// hNrp ->Write() ;</b>
656 <b>// hNrpX->Write() ;</b>
657 <b>// hNrpZ->Write() ;</b>
659 <b>// // Plot histograms</b>
661 <b>// TCanvas *cpvCanvas = new TCanvas("CPV","CPV analysis",20,20,800,400);</b>
662 <b>// gStyle->SetOptStat(111111);</b>
663 <b>// gStyle->SetOptFit(1);</b>
664 <b>// gStyle->SetOptDate(1);</b>
665 <b>// cpvCanvas->Divide(3,2);</b>
667 <b>// cpvCanvas->cd(1);</b>
668 <b>// gPad->SetFillColor(10);</b>
669 <b>// hNrp->SetFillColor(16);</b>
670 <b>// hNrp->Draw();</b>
672 <b>// cpvCanvas->cd(2);</b>
673 <b>// gPad->SetFillColor(10);</b>
674 <b>// hNrpX->SetFillColor(16);</b>
675 <b>// hNrpX->Draw();</b>
677 <b>// cpvCanvas->cd(3);</b>
678 <b>// gPad->SetFillColor(10);</b>
679 <b>// hNrpZ->SetFillColor(16);</b>
680 <b>// hNrpZ->Draw();</b>
682 <b>// cpvCanvas->cd(4);</b>
683 <b>// gPad->SetFillColor(10);</b>
684 <b>// hDx->SetFillColor(16);</b>
685 <b>// hDx->Fit("gaus");</b>
686 <b>// hDx->Draw();</b>
688 <b>// cpvCanvas->cd(5);</b>
689 <b>// gPad->SetFillColor(10);</b>
690 <b>// hDz->SetFillColor(16);</b>
691 <b>// hDz->Fit("gaus");</b>
692 <b>// hDz->Draw();</b>
694 <b>// cpvCanvas->cd(6);</b>
695 <b>// gPad->SetFillColor(10);</b>
696 <b>// hDr->SetFillColor(16);</b>
697 <b>// hDr->Draw();</b>
699 <b>// cpvCanvas->Print("CPV.ps");</b>
703 <b>//____________________________________________________________________________</b>
704 <a name="AliPHOSAnalyze:InvariantMass"> </a> <a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:InvariantMass">AliPHOSAnalyze::InvariantMass</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> Nevents )
706 <b> // Calculates Real and Mixed invariant mass distributions</b>
708 const <a href="../ListOfTypes.html#Int_t">Int_t</a> knMixedEvents = 4 ; //# of events used for calculation of 'mixed' distribution
709 <a href="../ListOfTypes.html#Int_t">Int_t</a> mixedLoops = (<a href="../ListOfTypes.html#Int_t">Int_t</a> )TMath::Ceil(Nevents/knMixedEvents) ;
711 <b> //========== Booking Histograms</b>
712 TH2D * hRealEM = new TH2D("hRealEM", "Real for EM particles", 250,0.,1.,40,0.,4.) ;
713 TH2D * hRealPhot = new TH2D("hRealPhot", "Real for kPhoton particles", 250,0.,1.,40,0.,4.) ;
714 TH2D * hMixedEM = new TH2D("hMixedEM", "Mixed for EM particles", 250,0.,1.,40,0.,4.) ;
715 TH2D * hMixedPhot= new TH2D("hMixedPhot","Mixed for kPhoton particles",250,0.,1.,40,0.,4.) ;
717 <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;
718 <a href="../ListOfTypes.html#Int_t">Int_t</a> eventInMixedLoop ;
720 <a href="../ListOfTypes.html#Int_t">Int_t</a> nRecParticles[4];//knMixedEvents] ;
722 <a href=".././AliPHOSRecParticle.html#AliPHOSRecParticle:RecParticlesList">AliPHOSRecParticle::RecParticlesList</a> * allRecParticleList = new TClonesArray("<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>", knMixedEvents*1000) ;
724 for(eventInMixedLoop = 0; eventInMixedLoop < mixedLoops; eventInMixedLoop++ ){
725 <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecPhot = 0 ;
727 for ( ievent=0; ievent < knMixedEvents; ievent++){
729 <a href="../ListOfTypes.html#Int_t">Int_t</a> absEventNumber = eventInMixedLoop*knMixedEvents + ievent ;
731 <b> //=========== Connects the various Tree's for evt</b>
732 gAlice->GetEvent(absEventNumber);
734 <b> //========== Creating branches =================================== </b>
735 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;
737 gAlice->TreeD()->GetEvent(0) ;
738 gAlice->TreeR()->GetEvent(0) ;
740 TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ;
743 <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;
744 <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;
745 for(iRecParticle = 0; iRecParticle < recParticleList->GetEntries() ;iRecParticle++ )
747 recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->At(iRecParticle) ;
748 if((recParticle->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)||
749 (recParticle->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALEM">AliPHOSFastRecParticle::kNEUTRALEM</a>)){
750 new( (*allRecParticleList)[iRecPhot] ) <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>(*recParticle) ;
755 nRecParticles[ievent] = iRecPhot-1 ;
758 <b> //Now calculate invariant mass:</b>
759 <a href="../ListOfTypes.html#Int_t">Int_t</a> irp1,irp2 ;
760 <a href="../ListOfTypes.html#Int_t">Int_t</a> nCurEvent = 0 ;
762 for(irp1 = 0; irp1 < allRecParticleList->GetEntries()-1; irp1++){
763 <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp1 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList->At(irp1) ;
765 for(irp2 = irp1+1; irp2 < allRecParticleList->GetEntries(); irp2++){
766 <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp2 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList->At(irp2) ;
768 <a href="../ListOfTypes.html#Double_t">Double_t</a> invMass ;
769 invMass = (rp1->Energy()+rp2->Energy())*(rp1->Energy()+rp2->Energy())-
770 (rp1->Px()+rp2->Px())*(rp1->Px()+rp2->Px())-
771 (rp1->Py()+rp2->Py())*(rp1->Py()+rp2->Py())-
772 (rp1->Pz()+rp2->Pz())*(rp1->Pz()+rp2->Pz()) ;
775 invMass = TMath::Sqrt(invMass);
777 <a href="../ListOfTypes.html#Double_t">Double_t</a> pt ;
778 pt = TMath::Sqrt((rp1->Px()+rp2->Px() )*( rp1->Px()+rp2->Px() ) +(rp1->Py()+rp2->Py())*(rp1->Py()+rp2->Py()));
780 if(irp1 > nRecParticles[nCurEvent])
783 if(irp2 <= nRecParticles[nCurEvent]){ //'Real' event
784 hRealEM->Fill(invMass,pt);
785 if((rp1->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&&(rp2->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>))
786 hRealPhot->Fill(invMass,pt);
789 hMixedEM->Fill(invMass,pt);
790 if((rp1->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&&(rp2->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>))
791 hMixedPhot->Fill(invMass,pt);
794 } //loop over second rp
795 }//loop over first rp
796 allRecParticleList->Delete() ;
799 delete allRecParticleList ;
801 <b> //writing output</b>
802 TFile output("invmass.root","RECREATE");
805 hRealEM->Write() ;
806 hRealPhot->Write() ;
807 hMixedEM->Write() ;
808 hMixedPhot->Write() ;
815 <b>//____________________________________________________________________________</b>
816 <a name="AliPHOSAnalyze:ReadAndPrintEMC"> </a> <a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:ReadAndPrintEMC">AliPHOSAnalyze::ReadAndPrintEMC</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> EvFirst, <a href="../ListOfTypes.html#Int_t">Int_t</a> EvLast)
819 <b>// // Read and print generated and reconstructed hits in EMC</b>
820 <b>// // for events from EvFirst to Nevent.</b>
821 <b>// // If only EvFirst is defined, print only this one event.</b>
822 <b>// // Author: Yuri Kharlov</b>
823 <b>// // 24 November 2000</b>
826 <b>// if (EvFirst!=0 && EvLast==0) EvLast=EvFirst;</b>
827 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;</b>
828 <b>// for (ievent=EvFirst; ievent<=EvLast; ievent++) { </b>
830 <b>// //========== Event Number></b>
831 <b>// cout << endl << "==== ReadAndPrintEMC ====> Event is " << ievent+1 << endl ;</b>
833 <b>// //=========== Connects the various Tree's for evt</b>
834 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b>
835 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;</b>
837 <b>// gAlice->TreeD()->GetEvent(0) ;</b>
838 <b>// gAlice->TreeR()->GetEvent(0) ;</b>
840 <b>// // Loop over reconstructed particles</b>
842 <b>// TClonesArray ** recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ; </b>
843 <b>// <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;</b>
844 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;</b>
845 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> *primList;</b>
846 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nPrimary;</b>
847 <b>// for(iRecParticle = 0; iRecParticle < (*recParticleList)->GetEntries() ;iRecParticle++ ) {</b>
848 <b>// recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)->At(iRecParticle) ;</b>
849 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle->Energy();</b>
850 <b>// primList = recParticle->GetPrimaries(nPrimary);</b>
851 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumberRec ;</b>
852 <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;</b>
853 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;</b>
854 <b>// printf("Rec <a href="../ListOfTypes.html#point">point</a>: module %d, (X,Z) = (%8.4f,%8.4f) cm, E = %.3f GeV, primary = %dn",</b>
855 <b>// moduleNumberRec,recX,recZ,recE,*primList);</b>
858 <b>// // Read and print EMC hits from EMCn branches</b>
860 <b>// AliPHOSCPVModule emcModule;</b>
861 <b>// TClonesArray *emcHits;</b>
862 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMChits;</b>
863 <b>// AliPHOSCPVHit *emcHit;</b>
864 <b>// TLorentzVector p;</b>
865 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xgen, zgen;</b>
866 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ipart, primary;</b>
867 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nGenHits = 0;</b>
868 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack<ntracks; itrack++) {</b>
869 <b>// //=========== Get the Hits Tree for the Primary track itrack</b>
870 <b>// gAlice->ResetHits();</b>
871 <b>// gAlice->TreeH()->GetEvent(itrack);</b>
872 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ;</b>
873 <b>// for (iModule=0; iModule < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); iModule++) {</b>
874 <b>// emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetEMCModule(iModule);</b>
875 <b>// emcHits = emcModule.Hits();</b>
876 <b>// nEMChits = emcHits->GetEntriesFast();</b>
877 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b>
878 <b>// nGenHits++;</b>
879 <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b>
880 <b>// p = emcHit->GetMomentum();</b>
881 <b>// xgen = emcHit->X();</b>
882 <b>// zgen = emcHit->Y();</b>
883 <b>// ipart = emcHit->GetIpart();</b>
884 <b>// primary= emcHit->GetTrack();</b>
885 <b>// printf("EMC hit A: module %d, ",iModule+1);</b>
886 <b>// printf(" p = (%f .4, %f .4, %f .4, %f .4) GeV,n",</b>
887 <b>// p.Px(),p.Py(),p.Pz(),p.Energy());</b>
888 <b>// printf(" (X,Z) = (%8.4f, %8.4f) cm, ipart = %d, primary = %dn",</b>
889 <b>// xgen,zgen,ipart,primary);</b>
894 <b>// // // Read and print EMC hits from PHOS branch</b>
896 <b>// // for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack<ntracks; itrack++) {</b>
897 <b>// // //=========== Get the Hits Tree for the Primary track itrack</b>
898 <b>// // gAlice->ResetHits();</b>
899 <b>// // gAlice->TreeH()->GetEvent(itrack);</b>
900 <b>// // TClonesArray *hits = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Hits();</b>
901 <b>// // <a href=".././AliPHOSHit.html">AliPHOSHit</a> *hit ;</b>
902 <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> ihit;</b>
903 <b>// // for ( ihit = 0 ; ihit < hits->GetEntries() ; ihit++ ) {</b>
904 <b>// // hit = (<a href=".././AliPHOSHit.html">AliPHOSHit</a>*)hits->At(ihit) ;</b>
905 <b>// // <a href="../ListOfTypes.html#Float_t">Float_t</a> hitXYZ[3];</b>
906 <b>// // hitXYZ[0] = hit->X();</b>
907 <b>// // hitXYZ[1] = hit->Y();</b>
908 <b>// // hitXYZ[2] = hit->Z();</b>
909 <b>// // ipart = hit->GetPid();</b>
910 <b>// // primary = hit->GetPrimary();</b>
911 <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> absId = hit->GetId();</b>
912 <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> relId[4];</b>
913 <b>// // <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(absId, relId) ;</b>
914 <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> module = relId[0];</b>
915 <b>// // if (relId[1]==0 && !(hitXYZ[0]==0 && hitXYZ[2]==0))</b>
916 <b>// // printf("EMC hit B: module %d, (X,Z) = (%8.4f, %8.4f) cm, ipart = %d, primary = %dn",</b>
917 <b>// // module,hitXYZ[0],hitXYZ[2],ipart,primary);</b>
924 <b>//____________________________________________________________________________</b>
925 <a name="AliPHOSAnalyze:AnalyzeEMC"> </a> <a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AnalyzeEMC">AliPHOSAnalyze::AnalyzeEMC</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> Nevents)
928 <b>// // Read generated and reconstructed hits in EMC for Nevents events.</b>
929 <b>// // Plots the coordinate and energy resolution histograms.</b>
930 <b>// // Coordinate resolution is a difference between the reconstructed</b>
931 <b>// // coordinate and the exact coordinate on the face of the PHOS</b>
932 <b>// // Author: Yuri Kharlov</b>
933 <b>// // 27 November 2000</b>
936 <b>// // Book histograms</b>
938 <b>// TH1F *hDx1 = new TH1F("hDx1" ,"EMC x-resolution", 100,-5. , 5.);</b>
939 <b>// TH1F *hDz1 = new TH1F("hDz1" ,"EMC z-resolution", 100,-5. , 5.);</b>
940 <b>// TH1F *hDE1 = new TH1F("hDE1" ,"EMC E-resolution", 100,-2. , 2.);</b>
942 <b>// TH2F *hDx2 = new TH2F("hDx2" ,"EMC x-resolution", 100, 0., 10., 100,-5. , 5.);</b>
943 <b>// TH2F *hDz2 = new TH2F("hDz2" ,"EMC z-resolution", 100, 0., 10., 100,-5. , 5.);</b>
944 <b>// TH2F *hDE2 = new TH2F("hDE2" ,"EMC E-resolution", 100, 0., 10., 100, 0. , 5.);</b>
946 <b>// cout << "Start EMC Analysis"<< endl ;</b>
947 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent<Nevents; ievent++) { </b>
949 <b>// //========== Event Number> </b>
950 <b>// if ( (ievent+1) % (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Power( 10, (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Log10(ievent+1) ) == 0)</b>
951 <b>// cout << "==== AnalyzeEMC ====> Event is " << ievent+1 << endl ;</b>
953 <b>// //=========== Connects the various Tree's for evt</b>
954 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b>
956 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;</b>
958 <b>// gAlice->TreeD()->GetEvent(0) ;</b>
959 <b>// gAlice->TreeR()->GetEvent(0) ;</b>
961 <b>// // Create and fill arrays of hits for each EMC module</b>
963 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nOfModules = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>();</b>
964 <b>// TClonesArray **hitsPerModule = new TClonesArray *[nOfModules];</b>
965 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule;</b>
966 <b>// for (iModule=0; iModule < nOfModules; iModule++)</b>
967 <b>// hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b>
969 <b>// AliPHOSCPVModule emcModule;</b>
970 <b>// TClonesArray *emcHits;</b>
971 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMChits;</b>
972 <b>// AliPHOSCPVHit *emcHit;</b>
974 <b>// // First go through all primary tracks and fill the arrays</b>
975 <b>// // of hits per each EMC module</b>
977 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack<ntracks; itrack++) {</b>
978 <b>// // Get the Hits Tree for the Primary track itrack</b>
979 <b>// gAlice->ResetHits();</b>
980 <b>// gAlice->TreeH()->GetEvent(itrack);</b>
981 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule < nOfModules; iModule++) {</b>
982 <b>// emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetEMCModule(iModule);</b>
983 <b>// emcHits = emcModule.Hits();</b>
984 <b>// nEMChits = emcHits->GetEntriesFast();</b>
985 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b>
986 <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b>
987 <b>// TClonesArray &lhits = *(TClonesArray *)hitsPerModule[iModule];</b>
988 <b>// new(lhits[hitsPerModule[iModule]->GetEntriesFast()]) AliPHOSCPVHit(*emcHit);</b>
990 <b>// emcModule.Clear();</b>
994 <b>// // Loop over reconstructed particles</b>
996 <b>// TClonesArray ** recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ; </b>
997 <b>// <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;</b>
998 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMCrecs = (*recParticleList)->GetEntries();</b>
999 <b>// if (nEMCrecs == 1) {</b>
1000 <b>// recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)->At(0) ;</b>
1001 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle->Energy();</b>
1002 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule;</b>
1003 <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;</b>
1004 <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), phosModule, recX, recZ) ;</b>
1006 <b>// // for this rec.<a href="../ListOfTypes.html#point">point</a> take the hit list in the same PHOS module</b>
1008 <b>// emcHits = hitsPerModule[phosModule-1];</b>
1009 <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMChits = emcHits->GetEntriesFast();</b>
1010 <b>// if (nEMChits == 1) {</b>
1011 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> genX, genZ, genE;</b>
1012 <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b>
1013 <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b>
1014 <b>// genX = emcHit->X();</b>
1015 <b>// genZ = emcHit->Y();</b>
1016 <b>// genE = emcHit->GetMomentum().E();</b>
1018 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dx = recX - genX;</b>
1019 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dz = recZ - genZ;</b>
1020 <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> de = recE - genE;</b>
1021 <b>// hDx1 ->Fill(dx);</b>
1022 <b>// hDz1 ->Fill(dz);</b>
1023 <b>// hDE1 ->Fill(de);</b>
1024 <b>// hDx2 ->Fill(genE,dx);</b>
1025 <b>// hDz2 ->Fill(genE,dz);</b>
1026 <b>// hDE2 ->Fill(genE,recE);</b>
1029 <b>// delete [] hitsPerModule;</b>
1031 <b>// // Save histograms</b>
1033 <b>// <a href="../ListOfTypes.html#Text_t">Text_t</a> outputname[80] ;</b>
1034 <b>// sprintf(outputname,"%s.analyzed",<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->GetName());</b>
1035 <b>// TFile output(outputname,"RECREATE");</b>
1036 <b>// output.cd();</b>
1038 <b>// hDx1 ->Write() ;</b>
1039 <b>// hDz1 ->Write() ;</b>
1040 <b>// hDE1 ->Write() ;</b>
1041 <b>// hDx2 ->Write() ;</b>
1042 <b>// hDz2 ->Write() ;</b>
1043 <b>// hDE2 ->Write() ;</b>
1045 <b>// // Plot histograms</b>
1047 <b>// TCanvas *emcCanvas = new TCanvas("EMC","EMC analysis",20,20,700,300);</b>
1048 <b>// gStyle->SetOptStat(111111);</b>
1049 <b>// gStyle->SetOptFit(1);</b>
1050 <b>// gStyle->SetOptDate(1);</b>
1051 <b>// emcCanvas->Divide(3,1);</b>
1053 <b>// emcCanvas->cd(1);</b>
1054 <b>// gPad->SetFillColor(10);</b>
1055 <b>// hDx1->SetFillColor(16);</b>
1056 <b>// hDx1->Draw();</b>
1058 <b>// emcCanvas->cd(2);</b>
1059 <b>// gPad->SetFillColor(10);</b>
1060 <b>// hDz1->SetFillColor(16);</b>
1061 <b>// hDz1->Draw();</b>
1063 <b>// emcCanvas->cd(3);</b>
1064 <b>// gPad->SetFillColor(10);</b>
1065 <b>// hDE1->SetFillColor(16);</b>
1066 <b>// hDE1->Draw();</b>
1068 <b>// emcCanvas->Print("EMC.ps");</b>
1072 <b>//____________________________________________________________________________</b>
1073 <a name="AliPHOSAnalyze:AnalyzeResolutions"> </a> <a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AnalyzeResolutions">AliPHOSAnalyze::AnalyzeResolutions</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> Nevents )
1075 <b> // analyzes Nevents events and calculate Energy and Position resolution as well as</b>
1076 <b> // probaility of correct indentifiing of the incident particle</b>
1078 <b> //========== Booking Histograms</b>
1079 cout << "AnalyzeResolutions > " << "Booking Histograms" << endl ;
1080 <a href="#AliPHOSAnalyze:BookResolutionHistograms">BookResolutionHistograms</a>();
1082 <a href="../ListOfTypes.html#Int_t">Int_t</a> counter[9][5] ;
1083 <a href="../ListOfTypes.html#Int_t">Int_t</a> i1,i2,totalInd = 0 ;
1084 for(i1 = 0; i1<9; i1++)
1085 for(i2 = 0; i2<5; i2++)
1086 counter[i1][i2] = 0 ;
1088 <a href="../ListOfTypes.html#Int_t">Int_t</a> totalPrimary = 0 ;
1089 <a href="../ListOfTypes.html#Int_t">Int_t</a> totalRecPart = 0 ;
1090 <a href="../ListOfTypes.html#Int_t">Int_t</a> totalRPwithPrim = 0 ;
1091 <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;
1093 cout << "Start Analysing"<< endl ;
1094 for ( ievent=0; ievent<Nevents; ievent++)
1097 <b> //========== Event Number> </b>
1098 <b> // if ( ( log10((<a href="../ListOfTypes.html#Float_t">Float_t</a>)(ievent+1)) - (<a href="../ListOfTypes.html#Int_t">Int_t</a>)(log10((<a href="../ListOfTypes.html#Float_t">Float_t</a>)(ievent+1))) ) == 0. ) </b>
1099 cout << "AnalyzeResolutions > " << "Event is " << ievent << endl ;
1101 <b> //=========== Connects the various Tree's for evt</b>
1102 gAlice->GetEvent(ievent);
1104 <b> //=========== Gets the Kine TTree</b>
1105 gAlice->TreeK()->GetEvent(0) ;
1107 <b> //=========== Gets the list of Primari Particles</b>
1109 TParticle * primary ;
1110 <a href="../ListOfTypes.html#Int_t">Int_t</a> iPrimary ;
1111 for ( iPrimary = 0 ; iPrimary < gAlice->GetNtrack() ; iPrimary++)
1113 primary = gAlice->Particle(iPrimary) ;
1114 <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary->GetPdgCode() ;
1115 if( primaryType == 22 ) {
1116 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
1117 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
1118 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
1120 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>->Fill(primary->Energy()) ;
1121 if(primary->Energy() > 0.3)
1127 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;
1129 gAlice->TreeD()->GetEvent(0) ;
1130 gAlice->TreeR()->GetEvent(0) ;
1132 TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ;
1134 <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;
1135 <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;
1136 for(iRecParticle = 0; iRecParticle < recParticleList->GetEntries() ;iRecParticle++ )
1138 recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->At(iRecParticle) ;
1139 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy())) ;
1141 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumberRec ;
1142 <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;
1143 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
1145 <a href="../ListOfTypes.html#Double_t">Double_t</a> minDistance = 100. ;
1146 <a href="../ListOfTypes.html#Int_t">Int_t</a> closestPrimary = -1 ;
1148 <a href="../ListOfTypes.html#Int_t">Int_t</a> numberofprimaries ;
1149 <a href="../ListOfTypes.html#Int_t">Int_t</a> * listofprimaries = recParticle->GetPrimaries(numberofprimaries) ;
1150 <a href="../ListOfTypes.html#Int_t">Int_t</a> index ;
1151 TParticle * primary ;
1152 <a href="../ListOfTypes.html#Double_t">Double_t</a> distance = minDistance ;
1153 <a href="../ListOfTypes.html#Double_t">Double_t</a> dX, dZ;
1154 <a href="../ListOfTypes.html#Double_t">Double_t</a> dXmin = 0.;
1155 <a href="../ListOfTypes.html#Double_t">Double_t</a> dZmin = 0. ;
1156 for ( index = 0 ; index < numberofprimaries ; index++){
1157 primary = gAlice->Particle(listofprimaries[index]) ;
1158 <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ;
1159 <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ;
1160 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
1161 if(moduleNumberRec == moduleNumber) {
1164 distance = TMath::Sqrt(dX*dX + dZ*dZ) ;
1165 if(minDistance > distance) {
1166 minDistance = distance ;
1169 closestPrimary = listofprimaries[index] ;
1175 if(closestPrimary >=0 ){
1178 <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice->Particle(closestPrimary)->GetPdgCode() ;
1179 <b>// TParticlePDG* pDGparticle = gAlice->ParticleAt(closestPrimary)->GetPDG();</b>
1180 <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> charge = PDGparticle->Charge() ;</b>
1181 <b>// if(charge)</b>
1182 <b>// cout <<"Primary " <<primaryType << " E " << ((TParticle *)primaryList->At(closestPrimary))->Energy() << endl ;</b>
1183 <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryCode ;
1187 primaryCode = 0; //Photon
1188 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a> ->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy()) ;
1189 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> ->Fill(gAlice->Particle(closestPrimary)->Energy(), minDistance) ;
1190 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>->Fill(dXmin);
1191 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>->Fill(dZmin);
1194 primaryCode = 1; //Electron
1197 primaryCode = 1; //positron
1200 primaryCode = 4; //K+
1203 primaryCode = 4; //K-
1206 primaryCode = 4; //K0s
1209 primaryCode = 4; //K0l
1212 primaryCode = 2; //K0l
1215 primaryCode = 2; //K0l
1218 primaryCode = 2; //K0l
1221 primaryCode = 2; //K0l
1224 primaryCode = 3; //ELSE
1228 switch(recParticle->GetType())
1230 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>:
1231 if(primaryType == 22){
1232 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ;
1233 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ;
1234 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ;
1236 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ;
1237 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ;
1238 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ;
1240 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1241 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1242 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1244 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1246 if(primaryType == 2112){ //neutron
1247 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1248 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1249 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1252 if(primaryType == -2112){ //neutron ~
1253 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1254 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1255 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1258 if(primaryCode == 2){
1259 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1260 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1261 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1264 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1265 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1266 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1267 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1268 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1269 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1270 counter[0][primaryCode]++;
1272 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kELECTRON">AliPHOSFastRecParticle::kELECTRON</a>:
1273 if(primaryType == 22){
1274 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1275 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ;
1276 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ;
1277 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1278 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1280 if(primaryType == 2112){ //neutron
1281 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1282 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1285 if(primaryType == -2112){ //neutron ~
1286 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1287 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1290 if(primaryCode == 2){
1291 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1292 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1295 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1296 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1297 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1298 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1299 counter[1][primaryCode]++;
1301 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALHA">AliPHOSFastRecParticle::kNEUTRALHA</a>:
1302 if(primaryType == 22)
1303 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1305 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1306 counter[2][primaryCode]++;
1308 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALEM">AliPHOSFastRecParticle::kNEUTRALEM</a>:
1309 if(primaryType == 22){
1310 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),recParticle->Energy() ) ;
1311 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance ) ;
1313 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1314 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1316 if(primaryType == 2112) //neutron
1317 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1319 if(primaryType == -2112) //neutron ~
1320 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1322 if(primaryCode == 2)
1323 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1325 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1326 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1327 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1329 counter[3][primaryCode]++;
1331 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kCHARGEDHA">AliPHOSFastRecParticle::kCHARGEDHA</a>:
1332 if(primaryType == 22) //photon
1333 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1335 counter[4][primaryCode]++ ;
1337 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMAHA">AliPHOSFastRecParticle::kGAMMAHA</a>:
1338 if(primaryType == 22){ //photon
1339 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1340 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ;
1341 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ;
1342 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1344 if(primaryType == 2112){ //neutron
1345 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1348 if(primaryType == -2112){ //neutron ~
1349 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1351 if(primaryCode == 2){
1352 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1355 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1356 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1357 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1358 counter[5][primaryCode]++ ;
1360 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kABSURDEM">AliPHOSFastRecParticle::kABSURDEM</a>:
1361 counter[6][primaryCode]++ ;
1362 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ;
1364 case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kABSURDHA">AliPHOSFastRecParticle::kABSURDHA</a>:
1365 counter[7][primaryCode]++ ;
1368 counter[8][primaryCode]++ ;
1374 <a href="#AliPHOSAnalyze:SaveHistograms">SaveHistograms</a>();
1375 cout << "Resolutions: Analyzed " << Nevents << " event(s)" << endl ;
1376 cout << "Resolutions: Total primary " << totalPrimary << endl ;
1377 cout << "Resoluitons: Total reconstracted " << totalRecPart << endl ;
1378 cout << "TotalReconstructed with Primarie " << totalRPwithPrim << endl ;
1379 cout << " Primary: Photon Electron Ch. Hadr. Neutr. Hadr Kaons" << endl ;
1380 cout << " Detected as photon " << counter[0][0] << " " << counter[0][1] << " " << counter[0][2] << " " <<counter[0][3] << " " << counter[0][4] << endl ;
1381 cout << " Detected as electron " << counter[1][0] << " " << counter[1][1] << " " << counter[1][2] << " " <<counter[1][3] << " " << counter[1][4] << endl ;
1382 cout << " Detected as neutral hadron " << counter[2][0] << " " << counter[2][1] << " " << counter[2][2] << " " <<counter[2][3] << " " << counter[2][4] << endl ;
1383 cout << " Detected as neutral EM " << counter[3][0] << " " << counter[3][1] << " " << counter[3][2] << " " <<counter[3][3] << " " << counter[3][4] << endl ;
1384 cout << " Detected as charged hadron " << counter[4][0] << " " << counter[4][1] << " " << counter[4][2] << " " <<counter[4][3] << " " << counter[4][4] << endl ;
1385 cout << " Detected as gamma-hadron " << counter[5][0] << " " << counter[5][1] << " " << counter[5][2] << " " <<counter[5][3] << " " << counter[5][4] << endl ;
1386 cout << " Detected as Absurd EM " << counter[6][0] << " " << counter[6][1] << " " << counter[6][2] << " " <<counter[6][3] << " " << counter[6][4] << endl ;
1387 cout << " Detected as absurd hadron " << counter[7][0] << " " << counter[7][1] << " " << counter[7][2] << " " <<counter[7][3] << " " << counter[7][4] << endl ;
1388 cout << " Detected as undefined " << counter[8][0] << " " << counter[8][1] << " " << counter[8][2] << " " <<counter[8][3] << " " << counter[8][4] << endl ;
1390 for(i1 = 0; i1<9; i1++)
1391 for(i2 = 0; i2<5; i2++)
1392 totalInd+=counter[i1][i2] ;
1393 cout << "Indentified particles " << totalInd << endl ;
1398 <b>//____________________________________________________________________________</b>
1399 <a name="AliPHOSAnalyze:BookingHistograms"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:BookingHistograms">AliPHOSAnalyze::BookingHistograms</a>()
1401 <b> // Books the histograms where the results of the analysis are stored (to be changed)</b>
1403 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcDigit">fhEmcDigit</a> ;
1404 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoDigit">fhVetoDigit</a> ;
1405 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorDigit">fhConvertorDigit</a> ;
1406 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcCluster">fhEmcCluster</a> ;
1407 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoCluster">fhVetoCluster</a> ;
1408 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorCluster">fhConvertorCluster</a> ;
1409 delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorEmc">fhConvertorEmc</a> ;
1411 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcDigit">fhEmcDigit</a> = new TH1F("hEmcDigit", "hEmcDigit", 1000, 0. , 25.);
1412 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoDigit">fhVetoDigit</a> = new TH1F("hVetoDigit", "hVetoDigit", 500, 0. , 3.e-5);
1413 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorDigit">fhConvertorDigit</a> = new TH1F("hConvertorDigit","hConvertorDigit", 500, 0. , 3.e-5);
1414 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcCluster">fhEmcCluster</a> = new TH1F("hEmcCluster", "hEmcCluster", 1000, 0. , 30.);
1415 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoCluster">fhVetoCluster</a> = new TH1F("hVetoCluster", "hVetoCluster", 500, 0. , 3.e-5);
1416 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorCluster">fhConvertorCluster</a> = new TH1F("hConvertorCluster","hConvertorCluster",500, 0. , 3.e-5);
1417 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorEmc">fhConvertorEmc</a> = new TH2F("hConvertorEmc", "hConvertorEmc", 200, 1. , 3., 200, 0., 3.e-5);
1420 <b>//____________________________________________________________________________</b>
1421 <a name="AliPHOSAnalyze:BookResolutionHistograms"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:BookResolutionHistograms">AliPHOSAnalyze::BookResolutionHistograms</a>()
1423 <b> // Books the histograms where the results of the Resolution analysis are stored</b>
1425 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>)</b>
1426 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a> ;</b>
1427 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>)</b>
1428 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a> ;</b>
1429 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>)</b>
1430 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a> ;</b>
1431 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>)</b>
1432 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a> ;</b>
1435 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a> = new TH2F("hAllEnergy", "Energy of any RP with primary photon",100, 0., 5., 100, 0., 5.);
1436 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a> = new TH2F("hPhotEnergy", "Energy of kGAMMA with primary photon",100, 0., 5., 100, 0., 5.);
1437 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a> = new TH2F("hEMEnergy", "Energy of EM with primary photon", 100, 0., 5., 100, 0., 5.);
1438 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a> = new TH2F("hPPSDEnergy", "Energy of PPSD with primary photon", 100, 0., 5., 100, 0., 5.);
1440 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>)</b>
1441 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> ;</b>
1442 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>)</b>
1443 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a> ;</b>
1444 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>)</b>
1445 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a> ;</b>
1446 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>)</b>
1447 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a> ;</b>
1450 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> = new TH2F("hAllPosition", "Position of any RP with primary photon",100, 0., 5., 100, 0., 5.);
1451 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a> = new TH2F("hPhotPosition", "Position of kGAMMA with primary photon",100, 0., 5., 100, 0., 5.);
1452 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a> = new TH2F("hEMPosition", "Position of EM with primary photon", 100, 0., 5., 100, 0., 5.);
1453 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a> = new TH2F("hPPSDPosition", "Position of PPSD with primary photon", 100, 0., 5., 100, 0., 5.);
1455 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a> = new TH1F("hAllPositionX", "#Delta X of any RP with primary photon",100, -2., 2.);
1456 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a> = new TH1F("hAllPositionZ", "#Delta X of any RP with primary photon",100, -2., 2.);
1458 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>)</b>
1459 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a> ;</b>
1460 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>)</b>
1461 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a> ;</b>
1462 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>)</b>
1463 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a> ;</b>
1464 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>)</b>
1465 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a> ;</b>
1466 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>)</b>
1467 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a> ;</b>
1469 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a> = new TH1F("hAllReg", "All primaries registered as photon", 100, 0., 5.);
1470 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a> = new TH1F("hPhotReg", "Photon registered as photon", 100, 0., 5.);
1471 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a> = new TH1F("hNReg", "N registered as photon", 100, 0., 5.);
1472 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a> = new TH1F("hNBarReg", "NBar registered as photon", 100, 0., 5.);
1473 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>= new TH1F("hChargedReg", "Charged hadron registered as photon",100, 0., 5.);
1475 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>)</b>
1476 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a> ;</b>
1477 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>)</b>
1478 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a> ;</b>
1479 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>)</b>
1480 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a> ;</b>
1481 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>)</b>
1482 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a> ;</b>
1483 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>)</b>
1484 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a> ;</b>
1486 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a> = new TH1F("hAllEM", "All primary registered as EM",100, 0., 5.);
1487 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a> = new TH1F("hPhotEM", "Photon registered as EM", 100, 0., 5.);
1488 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a> = new TH1F("hNEM", "N registered as EM", 100, 0., 5.);
1489 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a> = new TH1F("hNBarEM", "NBar registered as EM", 100, 0., 5.);
1490 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>= new TH1F("hChargedEM","Charged registered as EM",100, 0., 5.);
1492 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>)</b>
1493 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a> ;</b>
1494 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>)</b>
1495 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a> ;</b>
1496 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>)</b>
1497 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a> ;</b>
1498 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>)</b>
1499 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a> ;</b>
1500 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>)</b>
1501 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a> ;</b>
1503 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a> = new TH1F("hAllPPSD", "All primary registered as PPSD",100, 0., 5.);
1504 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a> = new TH1F("hPhotPPSD", "Photon registered as PPSD", 100, 0., 5.);
1505 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a> = new TH1F("hNPPSD", "N registered as PPSD", 100, 0., 5.);
1506 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a> = new TH1F("hNBarPPSD", "NBar registered as PPSD", 100, 0., 5.);
1507 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>= new TH1F("hChargedPPSD","Charged registered as PPSD",100, 0., 5.);
1509 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>)</b>
1510 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a> ;</b>
1511 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>= new TH1F("hPrimary", "hPrimary", 100, 0., 5.);
1513 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>)</b>
1514 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a> ;</b>
1515 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>)</b>
1516 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a> ;</b>
1517 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>)</b>
1518 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a> ;</b>
1519 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>)</b>
1520 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a> ;</b>
1522 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a> = new TH1F("hAllRP","All Reconstructed particles", 100, 0., 5.);
1523 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a> = new TH1F("hVeto", "All uncharged particles", 100, 0., 5.);
1524 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a> = new TH1F("hShape","All particles with EM shaower",100, 0., 5.);
1525 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a> = new TH1F("hPPSD", "All PPSD photon particles", 100, 0., 5.);
1528 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>)</b>
1529 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a> ;</b>
1530 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>)</b>
1531 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a> ;</b>
1532 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>)</b>
1533 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a> ;</b>
1534 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>)</b>
1535 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a> ;</b>
1536 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>)</b>
1537 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a> ;</b>
1538 <b>// if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>)</b>
1539 <b>// delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a> ;</b>
1541 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a> = new TH1F("hPhotPhot","hPhotPhot", 100, 0., 5.); //Photon registered as photon
1542 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a> = new TH1F("hPhotElec","hPhotElec", 100, 0., 5.); //Photon registered as Electron
1543 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a> = new TH1F("hPhotNeuH","hPhotNeuH", 100, 0., 5.); //Photon registered as Neutral Hadron
1544 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a> = new TH1F("hPhotNuEM","hPhotNuEM", 100, 0., 5.); //Photon registered as Neutral EM
1545 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a> = new TH1F("hPhotChHa","hPhotChHa", 100, 0., 5.); //Photon registered as Charged Hadron
1546 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a> = new TH1F("hPhotGaHa","hPhotGaHa", 100, 0., 5.); //Photon registered as Gamma-Hadron
1549 <b>//____________________________________________________________________________</b>
1550 <a name="AliPHOSAnalyze:OpenRootFile"> </a><a href="../ListOfTypes.html#Bool_t">Bool_t</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:OpenRootFile">AliPHOSAnalyze::OpenRootFile</a>(<a href="../ListOfTypes.html#Text_t">Text_t</a> * name)
1552 <b> // Open the root file named "name"</b>
1554 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a> = new TFile(name, "update") ;
1555 return <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->IsOpen() ;
1558 <b>//____________________________________________________________________________</b>
1559 <a name="AliPHOSAnalyze:SaveHistograms"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:SaveHistograms">AliPHOSAnalyze::SaveHistograms</a>()
1561 <b> // Saves the histograms in a root file named "name.analyzed" </b>
1563 <a href="../ListOfTypes.html#Text_t">Text_t</a> outputname[80] ;
1564 sprintf(outputname,"%s.analyzed",<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->GetName());
1565 TFile output(outputname,"RECREATE");
1568 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>)
1569 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>->Write() ;
1570 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>)
1571 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>->Write() ;
1572 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>)
1573 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Write() ;
1574 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>)
1575 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Write() ;
1576 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>)
1577 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>->Write() ;
1578 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>)
1579 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>->Write() ;
1580 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>)
1581 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>->Write() ;
1582 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>)
1583 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>->Write() ;
1584 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>)
1585 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Write() ;
1586 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>)
1587 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Write() ;
1588 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>)
1589 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>->Write() ;
1590 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>)
1591 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>->Write() ;
1592 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>)
1593 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>->Write() ;
1594 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>)
1595 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>->Write() ;
1596 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>)
1597 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>->Write() ;
1598 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>)
1599 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Write() ;
1600 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>)
1601 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Write() ;
1602 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>)
1603 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Write() ;
1604 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>)
1605 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Write() ;
1606 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>)
1607 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Write() ;
1608 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>)
1609 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Write() ;
1610 if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>)
1611 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Write() ;
1612 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>)
1613 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Write() ;
1614 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>)
1615 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Write() ;
1616 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>)
1617 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Write() ;
1618 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>)
1619 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>->Write() ;
1620 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>)
1621 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>->Write() ;
1622 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>)
1623 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Write() ;
1624 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>)
1625 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Write() ;
1626 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>)
1627 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Write() ;
1628 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>)
1629 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>->Write() ;
1630 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>)
1631 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>->Write() ;
1632 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>)
1633 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>->Write() ;
1634 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>)
1635 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Write() ;
1636 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>)
1637 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Write() ;
1638 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>)
1639 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>->Write() ;
1640 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>)
1641 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>->Write() ;
1642 if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>)
1643 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>->Write() ;
1648 <b>//____________________________________________________________________________</b>
1649 <a name="AliPHOSAnalyze:CorrectEnergy"> </a><a href="../ListOfTypes.html#Float_t">Float_t</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:CorrectEnergy">AliPHOSAnalyze::CorrectEnergy</a>(<a href="../ListOfTypes.html#Float_t">Float_t</a> ERecPart)
1651 return ERecPart/0.8783 ;
1654 <b>//____________________________________________________________________________</b>
1655 <a name="AliPHOSAnalyze:ResetHistograms"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:ResetHistograms">AliPHOSAnalyze::ResetHistograms</a>()
1657 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a> = 0 ; //Energy correlations between Eloss in Convertor and PPSD(2)
1659 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcDigit">fhEmcDigit</a> = 0 ; // Histo of digit energies in the Emc
1660 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoDigit">fhVetoDigit</a> = 0 ; // Histo of digit energies in the Veto
1661 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorDigit">fhConvertorDigit</a> = 0 ; // Histo of digit energies in the Convertor
1662 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEmcCluster">fhEmcCluster</a> = 0 ; // Histo of Cluster energies in Emc
1663 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVetoCluster">fhVetoCluster</a> = 0 ; // Histo of Cluster energies in Veto
1664 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorCluster">fhConvertorCluster</a> = 0 ; // Histo of Cluster energies in Convertor
1665 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhConvertorEmc">fhConvertorEmc</a> = 0 ; // 2d Convertor versus Emc energies
1667 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a> = 0 ;
1668 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a> = 0 ; // Total spectrum of detected photons
1669 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a> = 0 ; // Spectrum of detected electrons with electron primary
1670 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a> = 0 ;
1671 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> = 0 ;
1672 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a> = 0 ;
1673 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a> = 0 ;
1674 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a> = 0 ;
1675 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a> = 0 ;
1676 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a> = 0 ;
1678 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a> = 0 ;
1679 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a> = 0 ;
1680 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a> = 0 ;
1681 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a> = 0 ;
1682 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a> = 0 ;
1683 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a> = 0 ;
1684 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a> = 0 ;
1685 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a> = 0 ;
1686 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a> = 0 ;
1687 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a> = 0 ;
1688 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a> = 0 ;
1689 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a> = 0 ;
1690 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a> = 0 ;
1691 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a> = 0 ;
1692 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a> = 0 ;
1694 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a> = 0 ;
1696 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a> = 0 ;
1697 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a> = 0 ;
1698 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a> = 0 ;
1699 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a> = 0 ;
1700 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a> = 0 ;
1701 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a> = 0 ;
1711 <a href="http://root.cern.ch/root/Welcome.html">ROOT page</a> - <a href="../ClassIndex.html">Class index</a> - <a href="#TopOfPage">Top of the page</a><br>
1713 <hr>This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to <a href="mailto:rootdev@root.cern.ch">ROOT support</a>, or contact <a href="mailto:rootdev@root.cern.ch">the developers</a> with any questions or problems regarding ROOT.