]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/html/src/AliPHOSAnalyze.cxx.html
new html documentatin
[u/mrichter/AliRoot.git] / PHOS / html / src / AliPHOSAnalyze.cxx.html
1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
2 <html>
3 <!--                                             -->
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch)  -->
5 <!--                                             -->
6 <!--   Date: Tue Apr  3 16:12:51 2001            -->
7 <!--                                             -->
8 <head>
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.">
15 </head>
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
18 <pre>
19 /**************************************************************************
20  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
21  *                                                                        *
22  * Author: The ALICE Off-line Project.                                    *
23  * Contributors are mentioned in the code where appropriate.              *
24  *                                                                        *
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  **************************************************************************/
33
34 /* $Id$ */
35
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>
40 <b>//*--</b>
41 <b>//*-- Author: Y. Schutz (SUBATECH) &amp; Gines Martinez (SUBATECH)</b>
42 <b>//////////////////////////////////////////////////////////////////////////////</b>
43
44 <b>// --- ROOT system ---</b>
45
46 #include "TFile.h"
47 #include "TH1.h"
48 #include "TPad.h"
49 #include "TH2.h"
50 #include "TH2.h"
51 #include "TParticle.h"
52 #include "TClonesArray.h"
53 #include "TTree.h"
54 #include "TMath.h"
55 #include "TCanvas.h" 
56 #include "TStyle.h" 
57
58 <b>// --- Standard library ---</b>
59
60 #include &lt;iostream.h&gt;
61 #include &lt;stdio.h&gt;
62
63 <b>// --- AliRoot header files ---</b>
64
65 #include "AliRun.h"
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"
79
80 ClassImp(AliPHOSAnalyze)
81
82 <b>//____________________________________________________________________________</b>
83 <a name="AliPHOSAnalyze:AliPHOSAnalyze"> </a>  <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:AliPHOSAnalyze">AliPHOSAnalyze::AliPHOSAnalyze</a>()
84 {
85 <b>  // default ctor (useless)</b>
86   
87   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a> = 0 ; 
88 }
89
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)
92 {
93 <b>  // ctor: analyze events from root file "name"</b>
94   
95   <a href="../ListOfTypes.html#Bool_t">Bool_t</a> ok = <a href="#AliPHOSAnalyze:OpenRootFile">OpenRootFile</a>(name)  ; 
96   if ( !ok ) {
97     cout &lt;&lt; " <a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> &gt; Error opening " &lt;&lt; name &lt;&lt; endl ; 
98   }
99   else { 
100 <b>      //========== Get AliRun object from file </b>
101       gAlice = (AliRun*) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>-&gt;Get("gAlice") ;
102
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-&gt;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>-&gt;GetGeometry()-&gt;GetName(), <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;GetGeometry()-&gt;GetTitle() );
106  
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>() ; // &lt;--- 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 ; 
111
112   }
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>() ;
119 }
120
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> &amp; ana)
123 {
124 <b>  // copy ctor</b>
125   ( (<a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> &amp;)ana ).<a href="#AliPHOSAnalyze:Copy">Copy</a>(*this) ;
126 }
127
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 &amp; obj)
130 {
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>
134 }
135
136 <b>//____________________________________________________________________________</b>
137 <a name="AliPHOSAnalyze:~AliPHOSAnalyze"> </a><a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a>::~<a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a>()
138 {
139 <b>  // dtor</b>
140
141   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>-&gt;IsOpen()) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>-&gt;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>
148
149 }
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>
155
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.);
168
169 <b>  //========== Create the Clusterizer</b>
170 <b>  // fClu = new <a href=".././AliPHOSClusterizerv1.html">AliPHOSClusterizerv1</a>() ; </b>
171   
172   gAlice-&gt;GetEvent(Nevent);
173   
174   TParticle * primary ;
175   <a href="../ListOfTypes.html#Int_t">Int_t</a> iPrimary ;
176   for ( iPrimary = 0 ; iPrimary &lt; gAlice-&gt;GetNtrack() ; iPrimary++)
177     {
178       primary = gAlice-&gt;Particle(iPrimary) ;
179       <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
184         if(moduleNumber==Nmod)
185           charg-&gt;Fill(primZ,primX,primary-&gt;Energy()) ;
186       }
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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
191         if(moduleNumber==Nmod)
192           phot-&gt;Fill(primZ,primX,primary-&gt;Energy()) ;
193       }
194       else{
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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
199           if(moduleNumber==Nmod)
200             nbar-&gt;Fill(primZ,primX,primary-&gt;Energy()) ;
201         }
202       }
203     }  
204
205 <b>  //Set TreeS here and get AliPHOSSdigitizer</b>
206
207
208   gAlice-&gt;TreeS()-&gt;GetEvent(0) ;
209
210   <a href="../ListOfTypes.html#Int_t">Int_t</a> iSDigit ;
211   <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * sdigit ;
212   
213   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SDigits()){
214     for(iSDigit = 0; iSDigit &lt; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SDigits()-&gt;GetEntries(); iSDigit++)
215       {
216         sdigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SDigits()-&gt;At(iSDigit) ;
217         <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4];
218         <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(sdigit-&gt;GetId(), relid) ;
219         <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ;
220         <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ;
221         <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1 ; //&lt;---  <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;Calibrate(sdigit-&gt;GetAmp()) ;
222         if(relid[0]==Nmod){
223           if(relid[1]==0)  //EMC
224             sdigitOccupancy-&gt;Fill(x,z,e) ;
225           if((relid[1]&gt;0)&amp;&amp;(relid[1]&lt;17))
226             ppsdUp-&gt;Fill(x,z,e) ;
227           if(relid[1]&gt;16)
228             ppsdLow-&gt;Fill(x,z,e) ;
229         }
230       }
231   }
232   else{
233     cout &lt;&lt; "No SDigits read " &lt;&lt; endl ;
234   }
235   
236   gAlice-&gt;TreeD()-&gt;GetEvent(0) ;
237   
238   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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 &lt; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;Digits()-&gt;GetEntries(); iDigit++)
242       {
243         digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;Digits()-&gt;At(iDigit) ;
244         <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4];
245         <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(digit-&gt;GetId(), relid) ;
246         <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ;
247         <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ;
248         <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1;   //&lt;--- fClu-&gt;Calibrate(digit-&gt;GetAmp()) ;
249         if(relid[0]==Nmod){
250           if(relid[1]==0)  //EMC
251             digitOccupancy-&gt;Fill(x,z,e) ;
252           if((relid[1]&gt;0)&amp;&amp;(relid[1]&lt;17))
253             ppsdUp-&gt;Fill(x,z,e) ;
254           if(relid[1]&gt;16)
255             ppsdLow-&gt;Fill(x,z,e) ;
256         }
257       }
258   }
259   else{
260     cout &lt;&lt; "No Digits read " &lt;&lt; endl ;
261   }
262
263   gAlice-&gt;TreeR()-&gt;GetEvent(0) ;
264   
265   TObjArray * emcRecPoints =  <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;EmcRecPoints() ;
266   TObjArray * ppsdRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;PpsdRecPoints() ;
267   TClonesArray * recParticleList  = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;RecParticles() ;
268
269   
270   <a href="../ListOfTypes.html#Int_t">Int_t</a> irecp ;
271   TVector3 pos ;
272   
273   if(emcRecPoints ){
274     for(irecp = 0; irecp &lt; emcRecPoints-&gt;GetEntries() ; irecp ++){
275       <a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a> * emc= (<a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a>*)emcRecPoints-&gt;At(irecp) ;
276       if(emc-&gt;GetPHOSMod()==Nmod){
277         emc-&gt;GetLocalPosition(pos) ;
278         emcOccupancy-&gt;Fill(pos.X(),pos.Z(),emc-&gt;GetEnergy());
279       }
280     }
281   }
282   else{
283     cout &lt;&lt; "No EMC rec points read " &lt;&lt; endl ;
284   }
285
286   if(ppsdRecPoints ){
287     for(irecp = 0; irecp &lt; ppsdRecPoints-&gt;GetEntries() ; irecp ++){
288       <a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> * ppsd= (<a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> *)ppsdRecPoints-&gt;At(irecp) ;
289
290       ppsd-&gt;GetLocalPosition(pos) ;
291       cout &lt;&lt; "PPSD " &lt;&lt; irecp &lt;&lt; " " &lt;&lt; ppsd-&gt;GetPHOSMod() &lt;&lt; "  " &lt;&lt; pos.X() &lt;&lt; "  " &lt;&lt; pos.Z() &lt;&lt; endl ;
292
293       if(ppsd-&gt;GetPHOSMod()==Nmod){
294         ppsd-&gt;GetLocalPosition(pos) ;
295         if(ppsd-&gt;GetUp())
296           ppsdUpCl-&gt;Fill(pos.X(),pos.Z(),ppsd-&gt;GetEnergy());
297         else
298           ppsdLowCl-&gt;Fill(pos.X(),pos.Z(),ppsd-&gt;GetEnergy());
299       }
300     }
301   }
302   else{
303     cout &lt;&lt; "No PPSD/CPV rec points read " &lt;&lt; endl ;
304   }
305     
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 &lt; recParticleList-&gt;GetEntries() ;iRecParticle++ )
310       {
311         recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList-&gt;At(iRecParticle) ;
312         
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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle-&gt;Theta(), recParticle-&gt;Phi(), moduleNumberRec, recX, recZ) ;
316         if(moduleNumberRec == Nmod){
317           
318           <a href="../ListOfTypes.html#Double_t">Double_t</a> minDistance = 5. ;
319           <a href="../ListOfTypes.html#Int_t">Int_t</a> closestPrimary = -1 ;
320           
321           <a href="../ListOfTypes.html#Int_t">Int_t</a> numberofprimaries ;
322           <a href="../ListOfTypes.html#Int_t">Int_t</a> * listofprimaries  = recParticle-&gt;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 ;
326           
327           for ( index = 0 ; index &lt; numberofprimaries ; index++){
328             primary = gAlice-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
332             if(moduleNumberRec == moduleNumber)
333               distance = TMath::Sqrt((recX-primX)*(recX-primX)+(recZ-primZ)*(recZ-primZ) ) ;
334             if(minDistance &gt; distance)
335               {
336                 minDistance = distance ;
337                 closestPrimary = listofprimaries[index] ;
338               }
339           }
340           
341           if(closestPrimary &gt;=0 ){
342             
343             <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice-&gt;Particle(closestPrimary)-&gt;GetPdgCode() ;
344             
345             if(primaryType==22)
346               recPhot-&gt;Fill(recZ,recX,recParticle-&gt;Energy()) ;
347             else
348               if(primaryType==-2112)
349                 recNbar-&gt;Fill(recZ,recX,recParticle-&gt;Energy()) ; 
350           }
351         }
352       }
353   }
354   else{
355     cout &lt;&lt; "Not Rec Prticles read " &lt;&lt; endl ;
356   }
357   
358   digitOccupancy-&gt;Draw("box") ;
359   sdigitOccupancy-&gt;SetLineColor(5) ;
360   sdigitOccupancy-&gt;Draw("box") ;
361   emcOccupancy-&gt;SetLineColor(2) ;
362   emcOccupancy-&gt;Draw("boxsame") ;
363   ppsdUp-&gt;SetLineColor(3) ;
364   ppsdUp-&gt;Draw("boxsame") ;
365   ppsdLow-&gt;SetLineColor(4) ;
366   ppsdLow-&gt;Draw("boxsame") ;
367   phot-&gt;SetLineColor(8) ;
368   phot-&gt;Draw("boxsame") ;
369   nbar-&gt;SetLineColor(6) ;
370   nbar-&gt;Draw("boxsame") ;
371   
372 }
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>
375 <b>// {     </b>
376
377 <b>//   // Performs reconstruction of EMC and CPV (GPS2, IHEP or MIXT)</b>
378 <b>//   // for events from FirstEvent to Nevents</b>
379
380 <b>//   <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent ;   </b>
381 <b>//   for ( ievent=firstEvent; ievent&lt;nevents; ievent++) {  </b>
382 <b>//     if (ievent==firstEvent) {</b>
383 <b>//       cout &lt;&lt; "Analyze &gt; Starting Reconstructing " &lt;&lt; endl ; </b>
384 <b>//       //========== Create the Clusterizer</b>
385 <b>//       fClu = new <a href=".././AliPHOSClusterizerv1.html">AliPHOSClusterizerv1</a>() ; </b>
386       
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-&gt;UnsetUnfoldFlag() ; </b>
390      
391 <b>//       //========== Creates the particle identifier</b>
392 <b>//       fPID = new <a href=".././AliPHOSPIDv1.html">AliPHOSPIDv1</a>() ;</b>
393 <b>//       fPID-&gt;SetShowerProfileCuts(0.3, 1.8, 0.3, 1.8 ) ;       </b>
394       
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 -&gt; SetDebugReconstruction(kTRUE);     </b>
398 <b>//     }</b>
399     
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 &lt;&lt;  "======= Analyze ======&gt; Event " &lt;&lt; ievent+1 &lt;&lt; endl ;</b>
403
404
405 <b>//     gAlice-&gt;GetEvent(ievent) ;</b>
406 <b>//     gAlice-&gt;SetEvent(ievent) ;</b>
407
408 <b>//     if(gAlice-&gt;TreeS() == 0)      gAlice-&gt;MakeTree("S");</b>
409 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;<a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("S") ; </b>
410     
411 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;Hits2SDigits() ;  </b>
412     
413 <b>//     if(gAlice-&gt;TreeD() == 0) gAlice-&gt;MakeTree("D");</b>
414 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;<a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("D") ; </b>
415
416 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SDigits2Digits() ;</b>
417
418 <b>//     if(gAlice-&gt;TreeR() == 0) gAlice-&gt;MakeTree("R");</b>
419         
420 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;Reconstruction(fRec);    </b>
421
422 <b>//     gAlice-&gt;TreeS()-&gt;Fill() ;</b>
423 <b>//     gAlice-&gt;TreeS()-&gt;Write(0,TObject::kOverwrite); </b>
424
425 <b>//     gAlice-&gt;TreeD()-&gt;Fill() ;</b>
426 <b>//     gAlice-&gt;TreeD()-&gt;Write(0,TObject::kOverwrite); </b>
427     
428 <b>//   }</b>
429   
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>
434   
435 <b>// }</b>
436
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)
439 {
440 <b>//   //</b>
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>
446 <b>//   //</b>
447
448 <b>//   if (EvFirst!=0 &amp;&amp; EvLast==0) EvLast=EvFirst;</b>
449 <b>//   for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=EvFirst; ievent&lt;=EvLast; ievent++) {  </b>
450     
451 <b>//     //========== Event Number&gt;</b>
452 <b>//     cout &lt;&lt; endl &lt;&lt;  "==== ReadAndPrintCPV ====&gt; Event is " &lt;&lt; ievent+1 &lt;&lt; endl ;</b>
453     
454 <b>//     //=========== Connects the various Tree's for evt</b>
455 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice-&gt;GetEvent(ievent);</b>
456
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>-&gt;EmcRecPoints() ;</b>
459 <b>//     gAlice-&gt;TreeR()-&gt;SetBranchAddress( "PHOSEmcRP" , emcRecPoints  ) ;</b>
460     
461 <b>//     <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** cpvRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;PpsdRecPoints() ;</b>
462 <b>//     gAlice-&gt;TreeR()-&gt;SetBranchAddress( "PHOSPpsdRP", cpvRecPoints ) ;</b>
463
464 <b>//     // Read and print CPV hits</b>
465       
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&lt;ntracks; itrack++) {</b>
475 <b>//       //=========== Get the Hits Tree for the Primary track itrack</b>
476 <b>//       gAlice-&gt;ResetHits();</b>
477 <b>//       gAlice-&gt;TreeH()-&gt;GetEvent(itrack);</b>
478 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ;         </b>
479 <b>//       for (iModule=0; iModule &lt; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNCPVModules">GetNCPVModules</a>(); iModule++) {</b>
480 <b>//   cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;GetCPVModule(iModule);</b>
481 <b>//   cpvHits   = cpvModule.Hits();</b>
482 <b>//   nCPVhits  = cpvHits-&gt;GetEntriesFast();</b>
483 <b>//   for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit&lt;nCPVhits; ihit++) {</b>
484 <b>//     nGenHits++;</b>
485 <b>//     cpvHit = (AliPHOSCPVHit*)cpvHits-&gt;UncheckedAt(ihit);</b>
486 <b>//     p      = cpvHit-&gt;GetMomentum();</b>
487 <b>//     xgen   = cpvHit-&gt;X();</b>
488 <b>//     zgen   = cpvHit-&gt;Y();</b>
489 <b>//     ipart  = cpvHit-&gt;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>
495 <b>//   }</b>
496 <b>//       }</b>
497 <b>//     }</b>
498
499 <b>//     // Read and print CPV reconstructed points</b>
500
501 <b>//     //=========== Gets the Reconstruction TTree</b>
502 <b>//     gAlice-&gt;TreeR()-&gt;GetEvent(0) ;</b>
503 <b>//     printf("Recpoints: %dn",(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;CpvRecPoints())-&gt;GetEntries());</b>
504 <b>//     TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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-&gt;GetLocalPosition(locpos);</b>
511 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint-&gt;GetPHOSMod();</b>
512 <b>//       printf("CPV recpoint in module %d: (X,Z) = (%f,%f) cmn",</b>
513 <b>//        phosModule,locpos.X(),locpos.Z());</b>
514 <b>//     }</b>
515 <b>//     printf("This event has %d generated hits and %d reconstructed pointsn",</b>
516 <b>//      nGenHits,nRecPoints);</b>
517 <b>//   }</b>
518 }
519
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)
522 {
523 <b>//   //</b>
524 <b>//   // Analyzes CPV characteristics</b>
525 <b>//   // Author: Yuri Kharlov</b>
526 <b>//   // 9 October 2000</b>
527 <b>//   //</b>
528
529 <b>//   // Book histograms</b>
530
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>
537
538 <b>//   cout &lt;&lt; "Start CPV Analysis"&lt;&lt; endl ;</b>
539 <b>//   for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent&lt;Nevents; ievent++) {  </b>
540       
541 <b>//     //========== Event Number&gt;         </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 &lt;&lt; endl &lt;&lt;  "==== AnalyzeCPV ====&gt; Event is " &lt;&lt; ievent+1 &lt;&lt; endl ;</b>
544     
545 <b>//     //=========== Connects the various Tree's for evt</b>
546 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice-&gt;GetEvent(ievent);</b>
547     
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>-&gt;EmcRecPoints() ;</b>
550 <b>//     gAlice-&gt;TreeR()-&gt;SetBranchAddress( "PHOSEmcRP" , emcRecPoints  ) ;</b>
551     
552 <b>//     <a href=".././AliPHOSRecPoint.html#AliPHOSRecPoint:RecPointsList">AliPHOSRecPoint::RecPointsList</a> ** cpvRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;PpsdRecPoints() ;</b>
553 <b>//     gAlice-&gt;TreeR()-&gt;SetBranchAddress( "PHOSPpsdRP", cpvRecPoints ) ;</b>
554
555 <b>//     // Create and fill arrays of hits for each CPV module</b>
556       
557 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> nOfModules = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<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 &lt; nOfModules; iModule++)</b>
561 <b>//       hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b>
562
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>
570
571 <b>//     // First go through all primary tracks and fill the arrays</b>
572 <b>//     // of hits per each CPV module</b>
573
574 <b>//     for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack&lt;ntracks; itrack++) {</b>
575 <b>//       // Get the Hits Tree for the Primary track itrack</b>
576 <b>//       gAlice-&gt;ResetHits();</b>
577 <b>//       gAlice-&gt;TreeH()-&gt;GetEvent(itrack);</b>
578 <b>//       for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule &lt; nOfModules; iModule++) {</b>
579 <b>//   cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;GetCPVModule(iModule);</b>
580 <b>//   cpvHits   = cpvModule.Hits();</b>
581 <b>//   nCPVhits  = cpvHits-&gt;GetEntriesFast();</b>
582 <b>//   for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit&lt;nCPVhits; ihit++) {</b>
583 <b>//     cpvHit   = (AliPHOSCPVHit*)cpvHits-&gt;UncheckedAt(ihit);</b>
584 <b>//     p        = cpvHit-&gt;GetMomentum();</b>
585 <b>//     xzgen[0] = cpvHit-&gt;X();</b>
586 <b>//     xzgen[1] = cpvHit-&gt;Y();</b>
587 <b>//     ipart    = cpvHit-&gt;GetIpart();</b>
588 <b>//     TClonesArray &amp;lhits = *(TClonesArray *)hitsPerModule[iModule];</b>
589 <b>//     new(lhits[hitsPerModule[iModule]-&gt;GetEntriesFast()]) AliPHOSCPVHit(*cpvHit);</b>
590 <b>//   }</b>
591 <b>//   cpvModule.Clear();</b>
592 <b>//       }</b>
593 <b>//     }</b>
594 <b>//     for (iModule=0; iModule &lt; nOfModules; iModule++) {</b>
595 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> nsum = hitsPerModule[iModule]-&gt;GetEntriesFast();</b>
596 <b>//       printf("Module %d has %d hitsn",iModule,nsum);</b>
597 <b>//     }</b>
598
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>
603
604 <b>//     // Get the Reconstruction Tree</b>
605 <b>//     gAlice-&gt;TreeR()-&gt;GetEvent(0) ;</b>
606 <b>//     TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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-&gt;GetLocalPosition(locpos);</b>
612 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint-&gt;GetPHOSMod();</b>
613 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMult     = cpvRecPoint-&gt;GetDigitsMultiplicity();</b>
614 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMultX, rpMultZ;</b>
615 <b>//       cpvRecPoint-&gt;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>
622
623 <b>//       cpvHits = hitsPerModule[phosModule-1];</b>
624 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPVhits  = cpvHits-&gt;GetEntriesFast();</b>
625 <b>//       for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit&lt;nCPVhits; ihit++) {</b>
626 <b>//   cpvHit = (AliPHOSCPVHit*)cpvHits-&gt;UncheckedAt(ihit);</b>
627 <b>//   xgen   = cpvHit-&gt;X();</b>
628 <b>//   zgen   = cpvHit-&gt;Y();</b>
629 <b>//   r2 = TMath::Power((xgen-xrec),2) + TMath::Power((zgen-zrec),2);</b>
630 <b>//   if ( r2 &lt; r2min ) {</b>
631 <b>//     r2min = r2;</b>
632 <b>//     dxmin = xgen - xrec;</b>
633 <b>//     dzmin = zgen - zrec;</b>
634 <b>//   }</b>
635 <b>//       }</b>
636 <b>//       hDx  -&gt;Fill(dxmin);</b>
637 <b>//       hDz  -&gt;Fill(dzmin);</b>
638 <b>//       hDr  -&gt;Fill(TMath::Sqrt(r2min));</b>
639 <b>//       hNrp -&gt;Fill(rpMult);</b>
640 <b>//       hNrpX-&gt;Fill(rpMultX);</b>
641 <b>//       hNrpZ-&gt;Fill(rpMultZ);</b>
642 <b>//     }</b>
643 <b>//     delete [] hitsPerModule;</b>
644 <b>//   }</b>
645 <b>//   // Save histograms</b>
646
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>-&gt;GetName());</b>
649 <b>//   TFile output(outputname,"RECREATE");</b>
650 <b>//   output.cd();</b>
651
652 <b>//   hDx  -&gt;Write() ;</b>
653 <b>//   hDz  -&gt;Write() ;</b>
654 <b>//   hDr  -&gt;Write() ;</b>
655 <b>//   hNrp -&gt;Write() ;</b>
656 <b>//   hNrpX-&gt;Write() ;</b>
657 <b>//   hNrpZ-&gt;Write() ;</b>
658
659 <b>//   // Plot histograms</b>
660
661 <b>//   TCanvas *cpvCanvas = new TCanvas("CPV","CPV analysis",20,20,800,400);</b>
662 <b>//   gStyle-&gt;SetOptStat(111111);</b>
663 <b>//   gStyle-&gt;SetOptFit(1);</b>
664 <b>//   gStyle-&gt;SetOptDate(1);</b>
665 <b>//   cpvCanvas-&gt;Divide(3,2);</b>
666
667 <b>//   cpvCanvas-&gt;cd(1);</b>
668 <b>//   gPad-&gt;SetFillColor(10);</b>
669 <b>//   hNrp-&gt;SetFillColor(16);</b>
670 <b>//   hNrp-&gt;Draw();</b>
671
672 <b>//   cpvCanvas-&gt;cd(2);</b>
673 <b>//   gPad-&gt;SetFillColor(10);</b>
674 <b>//   hNrpX-&gt;SetFillColor(16);</b>
675 <b>//   hNrpX-&gt;Draw();</b>
676
677 <b>//   cpvCanvas-&gt;cd(3);</b>
678 <b>//   gPad-&gt;SetFillColor(10);</b>
679 <b>//   hNrpZ-&gt;SetFillColor(16);</b>
680 <b>//   hNrpZ-&gt;Draw();</b>
681
682 <b>//   cpvCanvas-&gt;cd(4);</b>
683 <b>//   gPad-&gt;SetFillColor(10);</b>
684 <b>//   hDx-&gt;SetFillColor(16);</b>
685 <b>//   hDx-&gt;Fit("gaus");</b>
686 <b>//   hDx-&gt;Draw();</b>
687
688 <b>//   cpvCanvas-&gt;cd(5);</b>
689 <b>//   gPad-&gt;SetFillColor(10);</b>
690 <b>//   hDz-&gt;SetFillColor(16);</b>
691 <b>//   hDz-&gt;Fit("gaus");</b>
692 <b>//   hDz-&gt;Draw();</b>
693
694 <b>//   cpvCanvas-&gt;cd(6);</b>
695 <b>//   gPad-&gt;SetFillColor(10);</b>
696 <b>//   hDr-&gt;SetFillColor(16);</b>
697 <b>//   hDr-&gt;Draw();</b>
698
699 <b>//   cpvCanvas-&gt;Print("CPV.ps");</b>
700
701 }
702
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 )    
705 {
706 <b>  // Calculates Real and Mixed invariant mass distributions</b>
707
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) ;
710   
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.) ;
716   
717   <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;
718   <a href="../ListOfTypes.html#Int_t">Int_t</a> eventInMixedLoop ;
719   
720   <a href="../ListOfTypes.html#Int_t">Int_t</a> nRecParticles[4];//knMixedEvents] ;
721   
722   <a href=".././AliPHOSRecParticle.html#AliPHOSRecParticle:RecParticlesList">AliPHOSRecParticle::RecParticlesList</a> * allRecParticleList  = new TClonesArray("<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>", knMixedEvents*1000) ;
723   
724   for(eventInMixedLoop = 0; eventInMixedLoop &lt; mixedLoops; eventInMixedLoop++  ){
725     <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecPhot = 0 ;
726     
727     for ( ievent=0; ievent &lt; knMixedEvents; ievent++){        
728       
729       <a href="../ListOfTypes.html#Int_t">Int_t</a> absEventNumber = eventInMixedLoop*knMixedEvents + ievent ;
730       
731 <b>      //=========== Connects the various Tree's for evt</b>
732       gAlice-&gt;GetEvent(absEventNumber);
733
734 <b>      //========== Creating branches ===================================       </b>
735       <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SetTreeAddress() ;
736       
737       gAlice-&gt;TreeD()-&gt;GetEvent(0) ;
738       gAlice-&gt;TreeR()-&gt;GetEvent(0) ;
739       
740       TClonesArray * recParticleList  = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;RecParticles() ;
741       
742             
743       <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;
744       <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;
745       for(iRecParticle = 0; iRecParticle &lt; recParticleList-&gt;GetEntries() ;iRecParticle++ )
746         {
747           recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList-&gt;At(iRecParticle) ;
748           if((recParticle-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)||
749              (recParticle-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALEM">AliPHOSFastRecParticle::kNEUTRALEM</a>)){ 
750             new( (*allRecParticleList)[iRecPhot] ) <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>(*recParticle) ;
751             iRecPhot++;
752           }
753         }
754       
755         nRecParticles[ievent] = iRecPhot-1 ;  
756     }
757     
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 ;
761
762     for(irp1 = 0; irp1 &lt; allRecParticleList-&gt;GetEntries()-1; irp1++){
763       <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp1 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList-&gt;At(irp1) ;
764
765       for(irp2 = irp1+1; irp2 &lt; allRecParticleList-&gt;GetEntries(); irp2++){
766         <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp2 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList-&gt;At(irp2) ;
767             
768         <a href="../ListOfTypes.html#Double_t">Double_t</a> invMass ;
769         invMass = (rp1-&gt;Energy()+rp2-&gt;Energy())*(rp1-&gt;Energy()+rp2-&gt;Energy())-
770           (rp1-&gt;Px()+rp2-&gt;Px())*(rp1-&gt;Px()+rp2-&gt;Px())-
771           (rp1-&gt;Py()+rp2-&gt;Py())*(rp1-&gt;Py()+rp2-&gt;Py())-
772           (rp1-&gt;Pz()+rp2-&gt;Pz())*(rp1-&gt;Pz()+rp2-&gt;Pz()) ;
773         
774         if(invMass&gt; 0)
775           invMass = TMath::Sqrt(invMass);
776         
777         <a href="../ListOfTypes.html#Double_t">Double_t</a> pt ; 
778         pt = TMath::Sqrt((rp1-&gt;Px()+rp2-&gt;Px() )*( rp1-&gt;Px()+rp2-&gt;Px() ) +(rp1-&gt;Py()+rp2-&gt;Py())*(rp1-&gt;Py()+rp2-&gt;Py()));
779
780         if(irp1 &gt; nRecParticles[nCurEvent])
781           nCurEvent++;
782             
783         if(irp2 &lt;= nRecParticles[nCurEvent]){ //'Real' event
784           hRealEM-&gt;Fill(invMass,pt);
785           if((rp1-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&amp;&amp;(rp2-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>))
786             hRealPhot-&gt;Fill(invMass,pt);
787         }
788         else{
789           hMixedEM-&gt;Fill(invMass,pt);
790           if((rp1-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&amp;&amp;(rp2-&gt;GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>))
791             hMixedPhot-&gt;Fill(invMass,pt);
792         } //real-mixed
793             
794       } //loop over second rp
795     }//loop over first rp
796     allRecParticleList-&gt;Delete() ;
797   } //Loop over events
798   
799   delete allRecParticleList ;
800   
801 <b>  //writing output</b>
802   TFile output("invmass.root","RECREATE");
803   output.cd();
804   
805   hRealEM-&gt;Write() ;
806   hRealPhot-&gt;Write() ;
807   hMixedEM-&gt;Write() ;
808   hMixedPhot-&gt;Write() ;
809   
810   output.Write();
811   output.Close();
812
813 }
814
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)    
817 {
818 <b>//   //</b>
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>
824 <b>//   //</b>
825
826 <b>//   if (EvFirst!=0 &amp;&amp; EvLast==0) EvLast=EvFirst;</b>
827 <b>//   <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;</b>
828 <b>//   for (ievent=EvFirst; ievent&lt;=EvLast; ievent++) {  </b>
829     
830 <b>//     //========== Event Number&gt;</b>
831 <b>//     cout &lt;&lt; endl &lt;&lt;  "==== ReadAndPrintEMC ====&gt; Event is " &lt;&lt; ievent+1 &lt;&lt; endl ;</b>
832
833 <b>//     //=========== Connects the various Tree's for evt</b>
834 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice-&gt;GetEvent(ievent);</b>
835 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SetTreeAddress() ;</b>
836     
837 <b>//     gAlice-&gt;TreeD()-&gt;GetEvent(0) ;</b>
838 <b>//     gAlice-&gt;TreeR()-&gt;GetEvent(0) ;</b>
839
840 <b>//     // Loop over reconstructed particles</b>
841       
842 <b>//     TClonesArray ** recParticleList  = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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 &lt; (*recParticleList)-&gt;GetEntries() ;iRecParticle++ ) {</b>
848 <b>//       recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)-&gt;At(iRecParticle) ;</b>
849 <b>//       <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle-&gt;Energy();</b>
850 <b>//       primList     = recParticle-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle-&gt;Theta(), recParticle-&gt;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>
856 <b>//     }</b>
857
858 <b>//     // Read and print EMC hits from EMCn branches</b>
859       
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&lt;ntracks; itrack++) {</b>
869 <b>//       //=========== Get the Hits Tree for the Primary track itrack</b>
870 <b>//       gAlice-&gt;ResetHits();</b>
871 <b>//       gAlice-&gt;TreeH()-&gt;GetEvent(itrack);</b>
872 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ;</b>
873 <b>//       for (iModule=0; iModule &lt; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); iModule++) {</b>
874 <b>//   emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;GetEMCModule(iModule);</b>
875 <b>//   emcHits   = emcModule.Hits();</b>
876 <b>//   nEMChits  = emcHits-&gt;GetEntriesFast();</b>
877 <b>//   for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit&lt;nEMChits; ihit++) {</b>
878 <b>//     nGenHits++;</b>
879 <b>//     emcHit = (AliPHOSCPVHit*)emcHits-&gt;UncheckedAt(ihit);</b>
880 <b>//     p      = emcHit-&gt;GetMomentum();</b>
881 <b>//     xgen   = emcHit-&gt;X();</b>
882 <b>//     zgen   = emcHit-&gt;Y();</b>
883 <b>//     ipart  = emcHit-&gt;GetIpart();</b>
884 <b>//     primary= emcHit-&gt;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>
890 <b>//   }</b>
891 <b>//       }</b>
892 <b>//     }</b>
893
894 <b>// //      // Read and print EMC hits from PHOS branch</b>
895
896 <b>// //      for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack&lt;ntracks; itrack++) {</b>
897 <b>// //        //=========== Get the Hits Tree for the Primary track itrack</b>
898 <b>// //        gAlice-&gt;ResetHits();</b>
899 <b>// //        gAlice-&gt;TreeH()-&gt;GetEvent(itrack);</b>
900 <b>// //        TClonesArray *hits = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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 &lt; hits-&gt;GetEntries() ; ihit++ ) {</b>
904 <b>// //        hit = (<a href=".././AliPHOSHit.html">AliPHOSHit</a>*)hits-&gt;At(ihit) ;</b>
905 <b>// //        <a href="../ListOfTypes.html#Float_t">Float_t</a> hitXYZ[3];</b>
906 <b>// //        hitXYZ[0]   = hit-&gt;X();</b>
907 <b>// //        hitXYZ[1]   = hit-&gt;Y();</b>
908 <b>// //        hitXYZ[2]   = hit-&gt;Z();</b>
909 <b>// //        ipart       = hit-&gt;GetPid();</b>
910 <b>// //        primary     = hit-&gt;GetPrimary();</b>
911 <b>// //        <a href="../ListOfTypes.html#Int_t">Int_t</a> absId = hit-&gt;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>-&gt;<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 &amp;&amp; !(hitXYZ[0]==0 &amp;&amp; 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>
918 <b>// //        }</b>
919 <b>// //      }</b>
920
921 <b>//   }</b>
922 }
923
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)
926 {
927 <b>//   //</b>
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>
934 <b>//   //</b>
935
936 <b>//   // Book histograms</b>
937
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>
941
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>
945
946 <b>//   cout &lt;&lt; "Start EMC Analysis"&lt;&lt; endl ;</b>
947 <b>//   for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent&lt;Nevents; ievent++) {  </b>
948       
949 <b>//     //========== Event Number&gt;         </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 &lt;&lt; "==== AnalyzeEMC ====&gt; Event is " &lt;&lt; ievent+1 &lt;&lt; endl ;</b>
952     
953 <b>//     //=========== Connects the various Tree's for evt</b>
954 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice-&gt;GetEvent(ievent);</b>
955
956 <b>//     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SetTreeAddress() ;</b>
957     
958 <b>//     gAlice-&gt;TreeD()-&gt;GetEvent(0) ;</b>
959 <b>//     gAlice-&gt;TreeR()-&gt;GetEvent(0) ;</b>
960
961 <b>//     // Create and fill arrays of hits for each EMC module</b>
962       
963 <b>//     <a href="../ListOfTypes.html#Int_t">Int_t</a> nOfModules = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-&gt;<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 &lt; nOfModules; iModule++)</b>
967 <b>//       hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b>
968
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>
973
974 <b>//     // First go through all primary tracks and fill the arrays</b>
975 <b>//     // of hits per each EMC module</b>
976
977 <b>//     for (<a href="../ListOfTypes.html#Int_t">Int_t</a> itrack=0; itrack&lt;ntracks; itrack++) {</b>
978 <b>//       // Get the Hits Tree for the Primary track itrack</b>
979 <b>//       gAlice-&gt;ResetHits();</b>
980 <b>//       gAlice-&gt;TreeH()-&gt;GetEvent(itrack);</b>
981 <b>//       for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule &lt; nOfModules; iModule++) {</b>
982 <b>//   emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;GetEMCModule(iModule);</b>
983 <b>//   emcHits   = emcModule.Hits();</b>
984 <b>//   nEMChits  = emcHits-&gt;GetEntriesFast();</b>
985 <b>//   for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit&lt;nEMChits; ihit++) {</b>
986 <b>//     emcHit   = (AliPHOSCPVHit*)emcHits-&gt;UncheckedAt(ihit);</b>
987 <b>//     TClonesArray &amp;lhits = *(TClonesArray *)hitsPerModule[iModule];</b>
988 <b>//     new(lhits[hitsPerModule[iModule]-&gt;GetEntriesFast()]) AliPHOSCPVHit(*emcHit);</b>
989 <b>//   }</b>
990 <b>//   emcModule.Clear();</b>
991 <b>//       }</b>
992 <b>//     }</b>
993
994 <b>//     // Loop over reconstructed particles</b>
995       
996 <b>//     TClonesArray ** recParticleList  = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;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)-&gt;GetEntries();</b>
999 <b>//     if (nEMCrecs == 1) {</b>
1000 <b>//       recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)-&gt;At(0) ;</b>
1001 <b>//       <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle-&gt;Theta(), recParticle-&gt;Phi(), phosModule, recX, recZ) ;</b>
1005
1006 <b>//       // for this rec.<a href="../ListOfTypes.html#point">point</a> take the hit list in the same PHOS module</b>
1007
1008 <b>//       emcHits = hitsPerModule[phosModule-1];</b>
1009 <b>//       <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMChits  = emcHits-&gt;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&lt;nEMChits; ihit++) {</b>
1013 <b>//     emcHit = (AliPHOSCPVHit*)emcHits-&gt;UncheckedAt(ihit);</b>
1014 <b>//     genX   = emcHit-&gt;X();</b>
1015 <b>//     genZ   = emcHit-&gt;Y();</b>
1016 <b>//     genE   = emcHit-&gt;GetMomentum().E();</b>
1017 <b>//   }</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  -&gt;Fill(dx);</b>
1022 <b>//   hDz1  -&gt;Fill(dz);</b>
1023 <b>//   hDE1  -&gt;Fill(de);</b>
1024 <b>//   hDx2  -&gt;Fill(genE,dx);</b>
1025 <b>//   hDz2  -&gt;Fill(genE,dz);</b>
1026 <b>//   hDE2  -&gt;Fill(genE,recE);</b>
1027 <b>//       }</b>
1028 <b>//     }</b>
1029 <b>//     delete [] hitsPerModule;</b>
1030 <b>//   }</b>
1031 <b>//   // Save histograms</b>
1032
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>-&gt;GetName());</b>
1035 <b>//   TFile output(outputname,"RECREATE");</b>
1036 <b>//   output.cd();</b>
1037
1038 <b>//   hDx1  -&gt;Write() ;</b>
1039 <b>//   hDz1  -&gt;Write() ;</b>
1040 <b>//   hDE1  -&gt;Write() ;</b>
1041 <b>//   hDx2  -&gt;Write() ;</b>
1042 <b>//   hDz2  -&gt;Write() ;</b>
1043 <b>//   hDE2  -&gt;Write() ;</b>
1044
1045 <b>//   // Plot histograms</b>
1046
1047 <b>//   TCanvas *emcCanvas = new TCanvas("EMC","EMC analysis",20,20,700,300);</b>
1048 <b>//   gStyle-&gt;SetOptStat(111111);</b>
1049 <b>//   gStyle-&gt;SetOptFit(1);</b>
1050 <b>//   gStyle-&gt;SetOptDate(1);</b>
1051 <b>//   emcCanvas-&gt;Divide(3,1);</b>
1052
1053 <b>//   emcCanvas-&gt;cd(1);</b>
1054 <b>//   gPad-&gt;SetFillColor(10);</b>
1055 <b>//   hDx1-&gt;SetFillColor(16);</b>
1056 <b>//   hDx1-&gt;Draw();</b>
1057
1058 <b>//   emcCanvas-&gt;cd(2);</b>
1059 <b>//   gPad-&gt;SetFillColor(10);</b>
1060 <b>//   hDz1-&gt;SetFillColor(16);</b>
1061 <b>//   hDz1-&gt;Draw();</b>
1062
1063 <b>//   emcCanvas-&gt;cd(3);</b>
1064 <b>//   gPad-&gt;SetFillColor(10);</b>
1065 <b>//   hDE1-&gt;SetFillColor(16);</b>
1066 <b>//   hDE1-&gt;Draw();</b>
1067
1068 <b>//   emcCanvas-&gt;Print("EMC.ps");</b>
1069
1070 }
1071
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 )    
1074 {
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>
1077
1078 <b>  //========== Booking Histograms</b>
1079   cout &lt;&lt; "AnalyzeResolutions &gt; " &lt;&lt; "Booking Histograms" &lt;&lt; endl ; 
1080   <a href="#AliPHOSAnalyze:BookResolutionHistograms">BookResolutionHistograms</a>();
1081
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&lt;9; i1++)
1085     for(i2 = 0; i2&lt;5; i2++)
1086       counter[i1][i2] = 0 ;
1087   
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;
1092
1093   cout &lt;&lt; "Start Analysing"&lt;&lt; endl ;
1094   for ( ievent=0; ievent&lt;Nevents; ievent++)
1095     {  
1096       
1097 <b>      //========== Event Number&gt;         </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 &lt;&lt;  "AnalyzeResolutions &gt; " &lt;&lt; "Event is " &lt;&lt; ievent &lt;&lt; endl ;  
1100       
1101 <b>      //=========== Connects the various Tree's for evt</b>
1102       gAlice-&gt;GetEvent(ievent);
1103
1104 <b>      //=========== Gets the Kine TTree</b>
1105       gAlice-&gt;TreeK()-&gt;GetEvent(0) ;
1106       
1107 <b>      //=========== Gets the list of Primari Particles</b>
1108
1109       TParticle * primary ;
1110       <a href="../ListOfTypes.html#Int_t">Int_t</a> iPrimary ;
1111       for ( iPrimary = 0 ; iPrimary &lt; gAlice-&gt;GetNtrack() ; iPrimary++)
1112         {
1113           primary = gAlice-&gt;Particle(iPrimary) ;
1114           <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
1119             if(moduleNumber){
1120               <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>-&gt;Fill(primary-&gt;Energy()) ;
1121               if(primary-&gt;Energy() &gt; 0.3)
1122                 totalPrimary++ ;
1123             }
1124           } 
1125         }
1126       
1127       <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;SetTreeAddress() ;
1128       
1129       gAlice-&gt;TreeD()-&gt;GetEvent(0) ;
1130       gAlice-&gt;TreeR()-&gt;GetEvent(0) ;
1131       
1132       TClonesArray * recParticleList  = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-&gt;RecParticles() ;     
1133       
1134       <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;
1135       <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;
1136       for(iRecParticle = 0; iRecParticle &lt; recParticleList-&gt;GetEntries() ;iRecParticle++ )
1137         {
1138           recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList-&gt;At(iRecParticle) ;
1139           <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy())) ;
1140           
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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle-&gt;Theta(), recParticle-&gt;Phi(), moduleNumberRec, recX, recZ) ;
1144           
1145           <a href="../ListOfTypes.html#Double_t">Double_t</a> minDistance  = 100. ;
1146           <a href="../ListOfTypes.html#Int_t">Int_t</a> closestPrimary = -1 ;
1147           
1148           <a href="../ListOfTypes.html#Int_t">Int_t</a> numberofprimaries ;
1149           <a href="../ListOfTypes.html#Int_t">Int_t</a> * listofprimaries  = recParticle-&gt;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 &lt; numberofprimaries ; index++){
1157             primary = gAlice-&gt;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>-&gt;<a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary-&gt;Theta(), primary-&gt;Phi(), moduleNumber, primX, primZ) ;
1161             if(moduleNumberRec == moduleNumber) {
1162               dX = recX - primX;
1163               dZ = recZ - primZ;
1164               distance = TMath::Sqrt(dX*dX + dZ*dZ) ;
1165               if(minDistance &gt; distance) {
1166                 minDistance = distance ;
1167                 dXmin = dX;
1168                 dZmin = dZ;
1169                 closestPrimary = listofprimaries[index] ;
1170               }
1171             }
1172           }
1173           totalRecPart++ ;
1174
1175           if(closestPrimary &gt;=0 ){
1176             totalRPwithPrim++;
1177             
1178             <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice-&gt;Particle(closestPrimary)-&gt;GetPdgCode() ;
1179 <b>//       TParticlePDG* pDGparticle = gAlice-&gt;ParticleAt(closestPrimary)-&gt;GetPDG();</b>
1180 <b>//       <a href="../ListOfTypes.html#Double_t">Double_t</a> charge =  PDGparticle-&gt;Charge() ;</b>
1181 <b>//       if(charge)</b>
1182 <b>//         cout &lt;&lt;"Primary " &lt;&lt;primaryType &lt;&lt; " E " &lt;&lt; ((TParticle *)primaryList-&gt;At(closestPrimary))-&gt;Energy() &lt;&lt; endl ;</b>
1183             <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryCode ;
1184             switch(primaryType)
1185               {
1186               case 22:
1187                 primaryCode = 0;  //Photon
1188                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>   -&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy()) ;
1189                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> -&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), minDistance) ;
1190                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>-&gt;Fill(dXmin);
1191                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>-&gt;Fill(dZmin);
1192                 break;
1193               case 11 :
1194                 primaryCode = 1;  //Electron
1195                 break;
1196               case -11 :
1197                 primaryCode = 1;  //positron
1198                 break;
1199               case 321 :
1200                 primaryCode = 4;  //K+
1201                 break;
1202               case -321 :
1203                 primaryCode = 4;  //K-
1204                 break;
1205               case 310 :
1206                 primaryCode = 4;  //K0s
1207                 break;
1208               case 130 :
1209                 primaryCode = 4;  //K0l
1210                 break;
1211               case 211 :
1212                 primaryCode = 2;  //K0l
1213                 break;
1214               case -211 :
1215                 primaryCode = 2;  //K0l
1216                 break;
1217               case 2212 :
1218                 primaryCode = 2;  //K0l
1219                 break;
1220               case -2212 :
1221                 primaryCode = 2;  //K0l
1222                 break;
1223               default:
1224                 primaryCode = 3; //ELSE
1225                 break;
1226               }
1227             
1228             switch(recParticle-&gt;GetType())
1229               {
1230               case <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>:
1231                 if(primaryType == 22){
1232                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy() ) ; 
1233                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy() ) ; 
1234                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy() ) ; 
1235
1236                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance) ;
1237                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance) ;
1238                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance) ;
1239
1240                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1241                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1242                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1243
1244                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1245                 }
1246                 if(primaryType == 2112){ //neutron
1247                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1248                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1249                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1250                 }
1251                 
1252                 if(primaryType == -2112){ //neutron ~
1253                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1254                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1255                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1256                   
1257                 }
1258                 if(primaryCode == 2){
1259                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1260                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1261                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1262                 }
1263                 
1264                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1265                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1266                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1267                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1268                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1269                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1270                 counter[0][primaryCode]++;
1271                 break;
1272               case  <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kELECTRON">AliPHOSFastRecParticle::kELECTRON</a>:
1273                 if(primaryType == 22){ 
1274                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1275                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy() ) ; 
1276                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance) ;
1277                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1278                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1279                 }         
1280                 if(primaryType == 2112){ //neutron
1281                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1282                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1283                 }
1284                 
1285                 if(primaryType == -2112){ //neutron ~
1286                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1287                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1288                   
1289                 }
1290                 if(primaryCode == 2){
1291                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1292                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1293                 }
1294                 
1295                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1296                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1297                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1298                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1299                 counter[1][primaryCode]++;
1300                 break;
1301               case  <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALHA">AliPHOSFastRecParticle::kNEUTRALHA</a>:
1302                 if(primaryType == 22) 
1303                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1304
1305                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;            
1306                 counter[2][primaryCode]++;
1307                 break ;
1308               case  <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALEM">AliPHOSFastRecParticle::kNEUTRALEM</a>:
1309                 if(primaryType == 22){
1310                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),recParticle-&gt;Energy() ) ; 
1311                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance ) ;
1312                 
1313                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1314                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1315                 }
1316                 if(primaryType == 2112) //neutron
1317                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1318                 
1319                 if(primaryType == -2112) //neutron ~
1320                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1321                 
1322                 if(primaryCode == 2)
1323                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1324                 
1325                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1326                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1327                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1328
1329                 counter[3][primaryCode]++;
1330                 break ;
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>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1334                 
1335                 counter[4][primaryCode]++ ;
1336                 break ;
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>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1340                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(), recParticle-&gt;Energy() ) ; 
1341                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>-&gt;Fill(gAlice-&gt;Particle(closestPrimary)-&gt;Energy(),minDistance) ;
1342                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1343                   }
1344                   if(primaryType == 2112){ //neutron
1345                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1346                   }
1347                 
1348                   if(primaryType == -2112){ //neutron ~
1349                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ; 
1350                   }
1351                   if(primaryCode == 2){
1352                     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1353                   }
1354                 
1355                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1356                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1357                   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1358                   counter[5][primaryCode]++ ;
1359                   break ;       
1360               case  <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kABSURDEM">AliPHOSFastRecParticle::kABSURDEM</a>:        
1361                 counter[6][primaryCode]++ ;
1362                 <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>-&gt;Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle-&gt;Energy()) ) ;
1363                 break;
1364               case  <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kABSURDHA">AliPHOSFastRecParticle::kABSURDHA</a>:
1365                 counter[7][primaryCode]++ ;
1366                 break;
1367               default:
1368                 counter[8][primaryCode]++ ;
1369                 break;
1370               }
1371           }
1372         }  
1373     }   // endfor
1374   <a href="#AliPHOSAnalyze:SaveHistograms">SaveHistograms</a>();
1375   cout &lt;&lt; "Resolutions: Analyzed " &lt;&lt; Nevents &lt;&lt; " event(s)" &lt;&lt; endl ;
1376   cout &lt;&lt; "Resolutions: Total primary       " &lt;&lt; totalPrimary &lt;&lt; endl ;
1377   cout &lt;&lt; "Resoluitons: Total reconstracted " &lt;&lt; totalRecPart &lt;&lt; endl ;
1378   cout &lt;&lt; "TotalReconstructed with Primarie " &lt;&lt; totalRPwithPrim &lt;&lt; endl ;
1379   cout &lt;&lt; "                        Primary:   Photon   Electron   Ch. Hadr.  Neutr. Hadr  Kaons" &lt;&lt; endl ; 
1380   cout &lt;&lt; "             Detected as photon       " &lt;&lt; counter[0][0] &lt;&lt; "          " &lt;&lt; counter[0][1] &lt;&lt; "          " &lt;&lt; counter[0][2] &lt;&lt; "          " &lt;&lt;counter[0][3] &lt;&lt; "          " &lt;&lt; counter[0][4] &lt;&lt; endl ;
1381   cout &lt;&lt; "           Detected as electron       " &lt;&lt; counter[1][0] &lt;&lt; "          " &lt;&lt; counter[1][1] &lt;&lt; "          " &lt;&lt; counter[1][2] &lt;&lt; "          " &lt;&lt;counter[1][3] &lt;&lt; "          " &lt;&lt; counter[1][4] &lt;&lt; endl ; 
1382   cout &lt;&lt; "     Detected as neutral hadron       " &lt;&lt; counter[2][0] &lt;&lt; "          " &lt;&lt; counter[2][1] &lt;&lt; "          " &lt;&lt; counter[2][2] &lt;&lt; "          " &lt;&lt;counter[2][3] &lt;&lt; "          " &lt;&lt; counter[2][4] &lt;&lt; endl ;
1383   cout &lt;&lt; "         Detected as neutral EM       " &lt;&lt; counter[3][0] &lt;&lt; "          " &lt;&lt; counter[3][1] &lt;&lt; "          " &lt;&lt; counter[3][2] &lt;&lt; "          " &lt;&lt;counter[3][3] &lt;&lt; "          " &lt;&lt; counter[3][4] &lt;&lt; endl ;
1384   cout &lt;&lt; "     Detected as charged hadron       " &lt;&lt; counter[4][0] &lt;&lt; "          " &lt;&lt; counter[4][1] &lt;&lt; "          " &lt;&lt; counter[4][2] &lt;&lt; "          " &lt;&lt;counter[4][3] &lt;&lt; "          " &lt;&lt; counter[4][4] &lt;&lt; endl ;
1385   cout &lt;&lt; "       Detected as gamma-hadron       " &lt;&lt; counter[5][0] &lt;&lt; "          " &lt;&lt; counter[5][1] &lt;&lt; "          " &lt;&lt; counter[5][2] &lt;&lt; "          " &lt;&lt;counter[5][3] &lt;&lt; "          " &lt;&lt; counter[5][4] &lt;&lt; endl ;
1386   cout &lt;&lt; "          Detected as Absurd EM       " &lt;&lt; counter[6][0] &lt;&lt; "          " &lt;&lt; counter[6][1] &lt;&lt; "          " &lt;&lt; counter[6][2] &lt;&lt; "          " &lt;&lt;counter[6][3] &lt;&lt; "          " &lt;&lt; counter[6][4] &lt;&lt; endl ;
1387   cout &lt;&lt; "      Detected as absurd hadron       " &lt;&lt; counter[7][0] &lt;&lt; "          " &lt;&lt; counter[7][1] &lt;&lt; "          " &lt;&lt; counter[7][2] &lt;&lt; "          " &lt;&lt;counter[7][3] &lt;&lt; "          " &lt;&lt; counter[7][4] &lt;&lt; endl ;
1388   cout &lt;&lt; "          Detected as undefined       " &lt;&lt; counter[8][0] &lt;&lt; "          " &lt;&lt; counter[8][1] &lt;&lt; "          " &lt;&lt; counter[8][2] &lt;&lt; "          " &lt;&lt;counter[8][3] &lt;&lt; "          " &lt;&lt; counter[8][4] &lt;&lt; endl ;
1389       
1390       for(i1 = 0; i1&lt;9; i1++)
1391         for(i2 = 0; i2&lt;5; i2++)
1392           totalInd+=counter[i1][i2] ;
1393       cout &lt;&lt; "Indentified particles            " &lt;&lt; totalInd &lt;&lt; endl ;
1394       
1395 }           // endfunction
1396
1397
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>()
1400 {
1401 <b>  // Books the histograms where the results of the analysis are stored (to be changed)</b>
1402
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>  ;
1410   
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);
1418
1419 }
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>()
1422 {
1423 <b>  // Books the histograms where the results of the Resolution analysis are stored</b>
1424
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>
1433
1434
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.);
1439
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>
1448
1449
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.);
1454
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.);
1457
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>
1468   
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.);
1474   
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>
1485   
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.);
1491
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>
1502   
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.);
1508   
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.);
1512
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>
1521
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.);
1526
1527
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>
1540
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
1547 }
1548
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)
1551 {
1552 <b>  // Open the root file named "name"</b>
1553   
1554   <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>   = new TFile(name, "update") ;
1555   return  <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>-&gt;IsOpen() ; 
1556 }
1557
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>()
1560 {
1561 <b>  // Saves the histograms in a root file named "name.analyzed" </b>
1562
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>-&gt;GetName());
1565   TFile output(outputname,"RECREATE");
1566   output.cd();
1567
1568   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>)    
1569     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a>-&gt;Write() ;
1570   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>)    
1571     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>-&gt;Write() ;
1572   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>)
1573     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>-&gt;Write()  ;
1574   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>)
1575     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>-&gt;Write() ;
1576   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>)
1577     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>-&gt;Write() ;
1578   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>)
1579     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>-&gt;Write() ;
1580   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>)
1581     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>-&gt;Write() ;
1582   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>)
1583     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>-&gt;Write() ;
1584   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>)
1585     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>-&gt;Write() ;
1586   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>)
1587     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>-&gt;Write() ;
1588   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>) 
1589     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>-&gt;Write() ;
1590   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>) 
1591     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>-&gt;Write() ;
1592   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>)
1593     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>-&gt;Write() ;
1594   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>)
1595     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>-&gt;Write() ;
1596   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>)
1597     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>-&gt;Write() ;
1598   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>) 
1599     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>-&gt;Write() ;
1600   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>) 
1601     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>-&gt;Write() ;
1602   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>)
1603     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>-&gt;Write() ;
1604   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>)
1605     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>-&gt;Write() ;
1606   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>)
1607     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>-&gt;Write() ;
1608   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>) 
1609     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>-&gt;Write() ;
1610   if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>) 
1611     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>-&gt;Write() ;
1612   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>)
1613     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>-&gt;Write() ;
1614   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>)
1615     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>-&gt;Write() ;
1616   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>)
1617     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>-&gt;Write() ;
1618   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>)
1619     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>-&gt;Write() ;
1620   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>)
1621     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>-&gt;Write()  ;
1622   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>)
1623     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>-&gt;Write()  ;
1624   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>)
1625     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>-&gt;Write()  ;
1626   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>)
1627     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>-&gt;Write()  ;
1628   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>)
1629     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>-&gt;Write() ;
1630   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>)
1631     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>-&gt;Write() ;
1632   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>)
1633     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>-&gt;Write() ;
1634   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>)
1635     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>-&gt;Write() ;
1636   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>)
1637     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>-&gt;Write() ;
1638   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>)
1639     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>-&gt;Write() ;
1640   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>)
1641     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>-&gt;Write() ;
1642   if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>)
1643     <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>-&gt;Write() ;
1644   
1645   output.Write();
1646   output.Close();
1647 }
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)
1650 {
1651   return ERecPart/0.8783 ;
1652 }
1653
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>()
1656 {
1657    <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a> = 0 ;     //Energy correlations between Eloss in Convertor and PPSD(2)
1658
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
1666
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 ; 
1677
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 ;          
1693
1694    <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a> = 0 ;          
1695
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 ;
1702
1703 }
1704 </pre>
1705
1706 <!--SIGNATURE-->
1707 <br>
1708 <address>
1709 <hr>
1710 <center>
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>
1712 </center>
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.
1714 </address>
1715 </body>
1716 </html>