]>
Commit | Line | Data |
---|---|---|
aa7c9120 | 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) & 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 <iostream.h> | |
61 | #include <stdio.h> | |
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 << " <a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> > Error opening " << name << endl ; | |
98 | } | |
99 | else { | |
100 | <b> //========== Get AliRun object from file </b> | |
101 | gAlice = (AliRun*) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->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->GetDetector("PHOS") ; | |
105 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a> = <a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetInstance">AliPHOSGeometry::GetInstance</a>( <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetGeometry()->GetName(), <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetGeometry()->GetTitle() ); | |
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>() ; // <--- 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> & ana) | |
123 | { | |
124 | <b> // copy ctor</b> | |
125 | ( (<a href=".././AliPHOSAnalyze.html">AliPHOSAnalyze</a> &)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 & 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>->IsOpen()) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>->Close() ; | |
142 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>) {delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a> ; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fRootFile">fRootFile</a>=0 ;} | |
143 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>) {delete <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a> ; <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a> =0 ;} | |
144 | <b> // if(fClu) {delete fClu ; fClu =0 ;}</b> | |
145 | <b> // if(fPID) {delete fPID ; fPID =0 ;}</b> | |
146 | <b> // if(fRec) {delete fRec ; fRec =0 ;}</b> | |
147 | <b> // if(fTrs) {delete fTrs ; fTrs =0 ;}</b> | |
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->GetEvent(Nevent); | |
173 | ||
174 | TParticle * primary ; | |
175 | <a href="../ListOfTypes.html#Int_t">Int_t</a> iPrimary ; | |
176 | for ( iPrimary = 0 ; iPrimary < gAlice->GetNtrack() ; iPrimary++) | |
177 | { | |
178 | primary = gAlice->Particle(iPrimary) ; | |
179 | <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary->GetPdgCode() ; | |
180 | if( (primaryType == 211)||(primaryType == -211)||(primaryType == 2212)||(primaryType == -2212) ) { | |
181 | <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ; | |
182 | <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ; | |
183 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
184 | if(moduleNumber==Nmod) | |
185 | charg->Fill(primZ,primX,primary->Energy()) ; | |
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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
191 | if(moduleNumber==Nmod) | |
192 | phot->Fill(primZ,primX,primary->Energy()) ; | |
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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
199 | if(moduleNumber==Nmod) | |
200 | nbar->Fill(primZ,primX,primary->Energy()) ; | |
201 | } | |
202 | } | |
203 | } | |
204 | ||
205 | <b> //Set TreeS here and get AliPHOSSdigitizer</b> | |
206 | ||
207 | ||
208 | gAlice->TreeS()->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>->SDigits()){ | |
214 | for(iSDigit = 0; iSDigit < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits()->GetEntries(); iSDigit++) | |
215 | { | |
216 | sdigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits()->At(iSDigit) ; | |
217 | <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4]; | |
218 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(sdigit->GetId(), relid) ; | |
219 | <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ; | |
220 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ; | |
221 | <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1 ; //<--- <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Calibrate(sdigit->GetAmp()) ; | |
222 | if(relid[0]==Nmod){ | |
223 | if(relid[1]==0) //EMC | |
224 | sdigitOccupancy->Fill(x,z,e) ; | |
225 | if((relid[1]>0)&&(relid[1]<17)) | |
226 | ppsdUp->Fill(x,z,e) ; | |
227 | if(relid[1]>16) | |
228 | ppsdLow->Fill(x,z,e) ; | |
229 | } | |
230 | } | |
231 | } | |
232 | else{ | |
233 | cout << "No SDigits read " << endl ; | |
234 | } | |
235 | ||
236 | gAlice->TreeD()->GetEvent(0) ; | |
237 | ||
238 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()){ | |
239 | <a href="../ListOfTypes.html#Int_t">Int_t</a> iDigit ; | |
240 | <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit ; | |
241 | for(iDigit = 0; iDigit < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()->GetEntries(); iDigit++) | |
242 | { | |
243 | digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Digits()->At(iDigit) ; | |
244 | <a href="../ListOfTypes.html#Int_t">Int_t</a> relid[4]; | |
245 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(digit->GetId(), relid) ; | |
246 | <a href="../ListOfTypes.html#Float_t">Float_t</a> x,z ; | |
247 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:RelPosInModule">RelPosInModule</a>(relid,x,z) ; | |
248 | <a href="../ListOfTypes.html#Float_t">Float_t</a> e = 1; //<--- fClu->Calibrate(digit->GetAmp()) ; | |
249 | if(relid[0]==Nmod){ | |
250 | if(relid[1]==0) //EMC | |
251 | digitOccupancy->Fill(x,z,e) ; | |
252 | if((relid[1]>0)&&(relid[1]<17)) | |
253 | ppsdUp->Fill(x,z,e) ; | |
254 | if(relid[1]>16) | |
255 | ppsdLow->Fill(x,z,e) ; | |
256 | } | |
257 | } | |
258 | } | |
259 | else{ | |
260 | cout << "No Digits read " << endl ; | |
261 | } | |
262 | ||
263 | gAlice->TreeR()->GetEvent(0) ; | |
264 | ||
265 | TObjArray * emcRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->EmcRecPoints() ; | |
266 | TObjArray * ppsdRecPoints = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ; | |
267 | TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ; | |
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 < emcRecPoints->GetEntries() ; irecp ++){ | |
275 | <a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a> * emc= (<a href=".././AliPHOSEmcRecPoint.html">AliPHOSEmcRecPoint</a>*)emcRecPoints->At(irecp) ; | |
276 | if(emc->GetPHOSMod()==Nmod){ | |
277 | emc->GetLocalPosition(pos) ; | |
278 | emcOccupancy->Fill(pos.X(),pos.Z(),emc->GetEnergy()); | |
279 | } | |
280 | } | |
281 | } | |
282 | else{ | |
283 | cout << "No EMC rec points read " << endl ; | |
284 | } | |
285 | ||
286 | if(ppsdRecPoints ){ | |
287 | for(irecp = 0; irecp < ppsdRecPoints->GetEntries() ; irecp ++){ | |
288 | <a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> * ppsd= (<a href=".././AliPHOSPpsdRecPoint.html">AliPHOSPpsdRecPoint</a> *)ppsdRecPoints->At(irecp) ; | |
289 | ||
290 | ppsd->GetLocalPosition(pos) ; | |
291 | cout << "PPSD " << irecp << " " << ppsd->GetPHOSMod() << " " << pos.X() << " " << pos.Z() << endl ; | |
292 | ||
293 | if(ppsd->GetPHOSMod()==Nmod){ | |
294 | ppsd->GetLocalPosition(pos) ; | |
295 | if(ppsd->GetUp()) | |
296 | ppsdUpCl->Fill(pos.X(),pos.Z(),ppsd->GetEnergy()); | |
297 | else | |
298 | ppsdLowCl->Fill(pos.X(),pos.Z(),ppsd->GetEnergy()); | |
299 | } | |
300 | } | |
301 | } | |
302 | else{ | |
303 | cout << "No PPSD/CPV rec points read " << 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 < recParticleList->GetEntries() ;iRecParticle++ ) | |
310 | { | |
311 | recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->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->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 < numberofprimaries ; index++){ | |
328 | primary = gAlice->Particle(listofprimaries[index]) ; | |
329 | <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ; | |
330 | <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ; | |
331 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
332 | if(moduleNumberRec == moduleNumber) | |
333 | distance = TMath::Sqrt((recX-primX)*(recX-primX)+(recZ-primZ)*(recZ-primZ) ) ; | |
334 | if(minDistance > distance) | |
335 | { | |
336 | minDistance = distance ; | |
337 | closestPrimary = listofprimaries[index] ; | |
338 | } | |
339 | } | |
340 | ||
341 | if(closestPrimary >=0 ){ | |
342 | ||
343 | <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice->Particle(closestPrimary)->GetPdgCode() ; | |
344 | ||
345 | if(primaryType==22) | |
346 | recPhot->Fill(recZ,recX,recParticle->Energy()) ; | |
347 | else | |
348 | if(primaryType==-2112) | |
349 | recNbar->Fill(recZ,recX,recParticle->Energy()) ; | |
350 | } | |
351 | } | |
352 | } | |
353 | } | |
354 | else{ | |
355 | cout << "Not Rec Prticles read " << endl ; | |
356 | } | |
357 | ||
358 | digitOccupancy->Draw("box") ; | |
359 | sdigitOccupancy->SetLineColor(5) ; | |
360 | sdigitOccupancy->Draw("box") ; | |
361 | emcOccupancy->SetLineColor(2) ; | |
362 | emcOccupancy->Draw("boxsame") ; | |
363 | ppsdUp->SetLineColor(3) ; | |
364 | ppsdUp->Draw("boxsame") ; | |
365 | ppsdLow->SetLineColor(4) ; | |
366 | ppsdLow->Draw("boxsame") ; | |
367 | phot->SetLineColor(8) ; | |
368 | phot->Draw("boxsame") ; | |
369 | nbar->SetLineColor(6) ; | |
370 | nbar->Draw("boxsame") ; | |
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<nevents; ievent++) { </b> | |
382 | <b>// if (ievent==firstEvent) {</b> | |
383 | <b>// cout << "Analyze > Starting Reconstructing " << endl ; </b> | |
384 | <b>// //========== Create the Clusterizer</b> | |
385 | <b>// fClu = new <a href=".././AliPHOSClusterizerv1.html">AliPHOSClusterizerv1</a>() ; </b> | |
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->UnsetUnfoldFlag() ; </b> | |
390 | ||
391 | <b>// //========== Creates the particle identifier</b> | |
392 | <b>// fPID = new <a href=".././AliPHOSPIDv1.html">AliPHOSPIDv1</a>() ;</b> | |
393 | <b>// fPID->SetShowerProfileCuts(0.3, 1.8, 0.3, 1.8 ) ; </b> | |
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 -> 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 << "======= Analyze ======> Event " << ievent+1 << endl ;</b> | |
403 | ||
404 | ||
405 | <b>// gAlice->GetEvent(ievent) ;</b> | |
406 | <b>// gAlice->SetEvent(ievent) ;</b> | |
407 | ||
408 | <b>// if(gAlice->TreeS() == 0) gAlice->MakeTree("S");</b> | |
409 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-><a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("S") ; </b> | |
410 | ||
411 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Hits2SDigits() ; </b> | |
412 | ||
413 | <b>// if(gAlice->TreeD() == 0) gAlice->MakeTree("D");</b> | |
414 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>-><a href=".././AliPHOSv1.html#AliPHOSv1:MakeBranch">MakeBranch</a>("D") ; </b> | |
415 | ||
416 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SDigits2Digits() ;</b> | |
417 | ||
418 | <b>// if(gAlice->TreeR() == 0) gAlice->MakeTree("R");</b> | |
419 | ||
420 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Reconstruction(fRec); </b> | |
421 | ||
422 | <b>// gAlice->TreeS()->Fill() ;</b> | |
423 | <b>// gAlice->TreeS()->Write(0,TObject::kOverwrite); </b> | |
424 | ||
425 | <b>// gAlice->TreeD()->Fill() ;</b> | |
426 | <b>// gAlice->TreeD()->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 && EvLast==0) EvLast=EvFirst;</b> | |
449 | <b>// for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=EvFirst; ievent<=EvLast; ievent++) { </b> | |
450 | ||
451 | <b>// //========== Event Number></b> | |
452 | <b>// cout << endl << "==== ReadAndPrintCPV ====> Event is " << ievent+1 << 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->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>->EmcRecPoints() ;</b> | |
459 | <b>// gAlice->TreeR()->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>->PpsdRecPoints() ;</b> | |
462 | <b>// gAlice->TreeR()->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<ntracks; itrack++) {</b> | |
475 | <b>// //=========== Get the Hits Tree for the Primary track itrack</b> | |
476 | <b>// gAlice->ResetHits();</b> | |
477 | <b>// gAlice->TreeH()->GetEvent(itrack);</b> | |
478 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ; </b> | |
479 | <b>// for (iModule=0; iModule < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNCPVModules">GetNCPVModules</a>(); iModule++) {</b> | |
480 | <b>// cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetCPVModule(iModule);</b> | |
481 | <b>// cpvHits = cpvModule.Hits();</b> | |
482 | <b>// nCPVhits = cpvHits->GetEntriesFast();</b> | |
483 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b> | |
484 | <b>// nGenHits++;</b> | |
485 | <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b> | |
486 | <b>// p = cpvHit->GetMomentum();</b> | |
487 | <b>// xgen = cpvHit->X();</b> | |
488 | <b>// zgen = cpvHit->Y();</b> | |
489 | <b>// ipart = cpvHit->GetIpart();</b> | |
490 | <b>// printf("CPV hit in module %d: ",iModule+1);</b> | |
491 | <b>// printf(" p = (%f, %f, %f, %f) GeV,n",</b> | |
492 | <b>// p.Px(),p.Py(),p.Pz(),p.Energy());</b> | |
493 | <b>// printf(" (X,Z) = (%8.4f, %8.4f) cm, ipart = %dn",</b> | |
494 | <b>// xgen,zgen,ipart);</b> | |
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->TreeR()->GetEvent(0) ;</b> | |
503 | <b>// printf("Recpoints: %dn",(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->CpvRecPoints())->GetEntries());</b> | |
504 | <b>// TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->CpvRecPoints() ) ;</b> | |
505 | <b>// <a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *cpvRecPoint ;</b> | |
506 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nRecPoints = 0;</b> | |
507 | <b>// while( ( cpvRecPoint = (<a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *)nextRP() ) ) {</b> | |
508 | <b>// nRecPoints++;</b> | |
509 | <b>// TVector3 locpos;</b> | |
510 | <b>// cpvRecPoint->GetLocalPosition(locpos);</b> | |
511 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint->GetPHOSMod();</b> | |
512 | <b>// printf("CPV recpoint in module %d: (X,Z) = (%f,%f) cmn",</b> | |
513 | <b>// phosModule,locpos.X(),locpos.Z());</b> | |
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 << "Start CPV Analysis"<< endl ;</b> | |
539 | <b>// for ( <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent<Nevents; ievent++) { </b> | |
540 | ||
541 | <b>// //========== Event Number> </b> | |
542 | <b>// // if ( (ievent+1) % (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Power( 10, (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Log10(ievent+1) ) == 0)</b> | |
543 | <b>// cout << endl << "==== AnalyzeCPV ====> Event is " << ievent+1 << endl ;</b> | |
544 | ||
545 | <b>// //=========== Connects the various Tree's for evt</b> | |
546 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b> | |
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>->EmcRecPoints() ;</b> | |
550 | <b>// gAlice->TreeR()->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>->PpsdRecPoints() ;</b> | |
553 | <b>// gAlice->TreeR()->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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>();</b> | |
558 | <b>// TClonesArray **hitsPerModule = new TClonesArray *[nOfModules];</b> | |
559 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0; </b> | |
560 | <b>// for (iModule=0; iModule < nOfModules; iModule++)</b> | |
561 | <b>// hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b> | |
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<ntracks; itrack++) {</b> | |
575 | <b>// // Get the Hits Tree for the Primary track itrack</b> | |
576 | <b>// gAlice->ResetHits();</b> | |
577 | <b>// gAlice->TreeH()->GetEvent(itrack);</b> | |
578 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule < nOfModules; iModule++) {</b> | |
579 | <b>// cpvModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetCPVModule(iModule);</b> | |
580 | <b>// cpvHits = cpvModule.Hits();</b> | |
581 | <b>// nCPVhits = cpvHits->GetEntriesFast();</b> | |
582 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b> | |
583 | <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b> | |
584 | <b>// p = cpvHit->GetMomentum();</b> | |
585 | <b>// xzgen[0] = cpvHit->X();</b> | |
586 | <b>// xzgen[1] = cpvHit->Y();</b> | |
587 | <b>// ipart = cpvHit->GetIpart();</b> | |
588 | <b>// TClonesArray &lhits = *(TClonesArray *)hitsPerModule[iModule];</b> | |
589 | <b>// new(lhits[hitsPerModule[iModule]->GetEntriesFast()]) AliPHOSCPVHit(*cpvHit);</b> | |
590 | <b>// }</b> | |
591 | <b>// cpvModule.Clear();</b> | |
592 | <b>// }</b> | |
593 | <b>// }</b> | |
594 | <b>// for (iModule=0; iModule < nOfModules; iModule++) {</b> | |
595 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nsum = hitsPerModule[iModule]->GetEntriesFast();</b> | |
596 | <b>// printf("Module %d has %d hitsn",iModule,nsum);</b> | |
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->TreeR()->GetEvent(0) ;</b> | |
606 | <b>// TIter nextRP(*<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->PpsdRecPoints() ) ;</b> | |
607 | <b>// <a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *cpvRecPoint ;</b> | |
608 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xgen, zgen;</b> | |
609 | <b>// while( ( cpvRecPoint = (<a href=".././AliPHOSCpvRecPoint.html">AliPHOSCpvRecPoint</a> *)nextRP() ) ) {</b> | |
610 | <b>// TVector3 locpos;</b> | |
611 | <b>// cpvRecPoint->GetLocalPosition(locpos);</b> | |
612 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule = cpvRecPoint->GetPHOSMod();</b> | |
613 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMult = cpvRecPoint->GetDigitsMultiplicity();</b> | |
614 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> rpMultX, rpMultZ;</b> | |
615 | <b>// cpvRecPoint->GetClusterLengths(rpMultX,rpMultZ);</b> | |
616 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> xrec = locpos.X();</b> | |
617 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> zrec = locpos.Z();</b> | |
618 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dxmin = 1.e+10;</b> | |
619 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> dzmin = 1.e+10;</b> | |
620 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> r2min = 1.e+10;</b> | |
621 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> r2;</b> | |
622 | ||
623 | <b>// cpvHits = hitsPerModule[phosModule-1];</b> | |
624 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPVhits = cpvHits->GetEntriesFast();</b> | |
625 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nCPVhits; ihit++) {</b> | |
626 | <b>// cpvHit = (AliPHOSCPVHit*)cpvHits->UncheckedAt(ihit);</b> | |
627 | <b>// xgen = cpvHit->X();</b> | |
628 | <b>// zgen = cpvHit->Y();</b> | |
629 | <b>// r2 = TMath::Power((xgen-xrec),2) + TMath::Power((zgen-zrec),2);</b> | |
630 | <b>// if ( r2 < r2min ) {</b> | |
631 | <b>// r2min = r2;</b> | |
632 | <b>// dxmin = xgen - xrec;</b> | |
633 | <b>// dzmin = zgen - zrec;</b> | |
634 | <b>// }</b> | |
635 | <b>// }</b> | |
636 | <b>// hDx ->Fill(dxmin);</b> | |
637 | <b>// hDz ->Fill(dzmin);</b> | |
638 | <b>// hDr ->Fill(TMath::Sqrt(r2min));</b> | |
639 | <b>// hNrp ->Fill(rpMult);</b> | |
640 | <b>// hNrpX->Fill(rpMultX);</b> | |
641 | <b>// hNrpZ->Fill(rpMultZ);</b> | |
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>->GetName());</b> | |
649 | <b>// TFile output(outputname,"RECREATE");</b> | |
650 | <b>// output.cd();</b> | |
651 | ||
652 | <b>// hDx ->Write() ;</b> | |
653 | <b>// hDz ->Write() ;</b> | |
654 | <b>// hDr ->Write() ;</b> | |
655 | <b>// hNrp ->Write() ;</b> | |
656 | <b>// hNrpX->Write() ;</b> | |
657 | <b>// hNrpZ->Write() ;</b> | |
658 | ||
659 | <b>// // Plot histograms</b> | |
660 | ||
661 | <b>// TCanvas *cpvCanvas = new TCanvas("CPV","CPV analysis",20,20,800,400);</b> | |
662 | <b>// gStyle->SetOptStat(111111);</b> | |
663 | <b>// gStyle->SetOptFit(1);</b> | |
664 | <b>// gStyle->SetOptDate(1);</b> | |
665 | <b>// cpvCanvas->Divide(3,2);</b> | |
666 | ||
667 | <b>// cpvCanvas->cd(1);</b> | |
668 | <b>// gPad->SetFillColor(10);</b> | |
669 | <b>// hNrp->SetFillColor(16);</b> | |
670 | <b>// hNrp->Draw();</b> | |
671 | ||
672 | <b>// cpvCanvas->cd(2);</b> | |
673 | <b>// gPad->SetFillColor(10);</b> | |
674 | <b>// hNrpX->SetFillColor(16);</b> | |
675 | <b>// hNrpX->Draw();</b> | |
676 | ||
677 | <b>// cpvCanvas->cd(3);</b> | |
678 | <b>// gPad->SetFillColor(10);</b> | |
679 | <b>// hNrpZ->SetFillColor(16);</b> | |
680 | <b>// hNrpZ->Draw();</b> | |
681 | ||
682 | <b>// cpvCanvas->cd(4);</b> | |
683 | <b>// gPad->SetFillColor(10);</b> | |
684 | <b>// hDx->SetFillColor(16);</b> | |
685 | <b>// hDx->Fit("gaus");</b> | |
686 | <b>// hDx->Draw();</b> | |
687 | ||
688 | <b>// cpvCanvas->cd(5);</b> | |
689 | <b>// gPad->SetFillColor(10);</b> | |
690 | <b>// hDz->SetFillColor(16);</b> | |
691 | <b>// hDz->Fit("gaus");</b> | |
692 | <b>// hDz->Draw();</b> | |
693 | ||
694 | <b>// cpvCanvas->cd(6);</b> | |
695 | <b>// gPad->SetFillColor(10);</b> | |
696 | <b>// hDr->SetFillColor(16);</b> | |
697 | <b>// hDr->Draw();</b> | |
698 | ||
699 | <b>// cpvCanvas->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 < mixedLoops; eventInMixedLoop++ ){ | |
725 | <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecPhot = 0 ; | |
726 | ||
727 | for ( ievent=0; ievent < 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->GetEvent(absEventNumber); | |
733 | ||
734 | <b> //========== Creating branches =================================== </b> | |
735 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ; | |
736 | ||
737 | gAlice->TreeD()->GetEvent(0) ; | |
738 | gAlice->TreeR()->GetEvent(0) ; | |
739 | ||
740 | TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->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 < recParticleList->GetEntries() ;iRecParticle++ ) | |
746 | { | |
747 | recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->At(iRecParticle) ; | |
748 | if((recParticle->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)|| | |
749 | (recParticle->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kNEUTRALEM">AliPHOSFastRecParticle::kNEUTRALEM</a>)){ | |
750 | new( (*allRecParticleList)[iRecPhot] ) <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a>(*recParticle) ; | |
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 < allRecParticleList->GetEntries()-1; irp1++){ | |
763 | <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp1 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList->At(irp1) ; | |
764 | ||
765 | for(irp2 = irp1+1; irp2 < allRecParticleList->GetEntries(); irp2++){ | |
766 | <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * rp2 = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *)allRecParticleList->At(irp2) ; | |
767 | ||
768 | <a href="../ListOfTypes.html#Double_t">Double_t</a> invMass ; | |
769 | invMass = (rp1->Energy()+rp2->Energy())*(rp1->Energy()+rp2->Energy())- | |
770 | (rp1->Px()+rp2->Px())*(rp1->Px()+rp2->Px())- | |
771 | (rp1->Py()+rp2->Py())*(rp1->Py()+rp2->Py())- | |
772 | (rp1->Pz()+rp2->Pz())*(rp1->Pz()+rp2->Pz()) ; | |
773 | ||
774 | if(invMass> 0) | |
775 | invMass = TMath::Sqrt(invMass); | |
776 | ||
777 | <a href="../ListOfTypes.html#Double_t">Double_t</a> pt ; | |
778 | pt = TMath::Sqrt((rp1->Px()+rp2->Px() )*( rp1->Px()+rp2->Px() ) +(rp1->Py()+rp2->Py())*(rp1->Py()+rp2->Py())); | |
779 | ||
780 | if(irp1 > nRecParticles[nCurEvent]) | |
781 | nCurEvent++; | |
782 | ||
783 | if(irp2 <= nRecParticles[nCurEvent]){ //'Real' event | |
784 | hRealEM->Fill(invMass,pt); | |
785 | if((rp1->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&&(rp2->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)) | |
786 | hRealPhot->Fill(invMass,pt); | |
787 | } | |
788 | else{ | |
789 | hMixedEM->Fill(invMass,pt); | |
790 | if((rp1->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)&&(rp2->GetType() == <a href=".././AliPHOSFastRecParticle.html#AliPHOSFastRecParticle:kGAMMA">AliPHOSFastRecParticle::kGAMMA</a>)) | |
791 | hMixedPhot->Fill(invMass,pt); | |
792 | } //real-mixed | |
793 | ||
794 | } //loop over second rp | |
795 | }//loop over first rp | |
796 | allRecParticleList->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->Write() ; | |
806 | hRealPhot->Write() ; | |
807 | hMixedEM->Write() ; | |
808 | hMixedPhot->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 && EvLast==0) EvLast=EvFirst;</b> | |
827 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ievent;</b> | |
828 | <b>// for (ievent=EvFirst; ievent<=EvLast; ievent++) { </b> | |
829 | ||
830 | <b>// //========== Event Number></b> | |
831 | <b>// cout << endl << "==== ReadAndPrintEMC ====> Event is " << ievent+1 << 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->GetEvent(ievent);</b> | |
835 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;</b> | |
836 | ||
837 | <b>// gAlice->TreeD()->GetEvent(0) ;</b> | |
838 | <b>// gAlice->TreeR()->GetEvent(0) ;</b> | |
839 | ||
840 | <b>// // Loop over reconstructed particles</b> | |
841 | ||
842 | <b>// TClonesArray ** recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->RecParticles() ; </b> | |
843 | <b>// <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;</b> | |
844 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iRecParticle ;</b> | |
845 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> *primList;</b> | |
846 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nPrimary;</b> | |
847 | <b>// for(iRecParticle = 0; iRecParticle < (*recParticleList)->GetEntries() ;iRecParticle++ ) {</b> | |
848 | <b>// recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)->At(iRecParticle) ;</b> | |
849 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle->Energy();</b> | |
850 | <b>// primList = recParticle->GetPrimaries(nPrimary);</b> | |
851 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumberRec ;</b> | |
852 | <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;</b> | |
853 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;</b> | |
854 | <b>// printf("Rec <a href="../ListOfTypes.html#point">point</a>: module %d, (X,Z) = (%8.4f,%8.4f) cm, E = %.3f GeV, primary = %dn",</b> | |
855 | <b>// moduleNumberRec,recX,recZ,recE,*primList);</b> | |
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<ntracks; itrack++) {</b> | |
869 | <b>// //=========== Get the Hits Tree for the Primary track itrack</b> | |
870 | <b>// gAlice->ResetHits();</b> | |
871 | <b>// gAlice->TreeH()->GetEvent(itrack);</b> | |
872 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule = 0 ;</b> | |
873 | <b>// for (iModule=0; iModule < <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>(); iModule++) {</b> | |
874 | <b>// emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetEMCModule(iModule);</b> | |
875 | <b>// emcHits = emcModule.Hits();</b> | |
876 | <b>// nEMChits = emcHits->GetEntriesFast();</b> | |
877 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b> | |
878 | <b>// nGenHits++;</b> | |
879 | <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b> | |
880 | <b>// p = emcHit->GetMomentum();</b> | |
881 | <b>// xgen = emcHit->X();</b> | |
882 | <b>// zgen = emcHit->Y();</b> | |
883 | <b>// ipart = emcHit->GetIpart();</b> | |
884 | <b>// primary= emcHit->GetTrack();</b> | |
885 | <b>// printf("EMC hit A: module %d, ",iModule+1);</b> | |
886 | <b>// printf(" p = (%f .4, %f .4, %f .4, %f .4) GeV,n",</b> | |
887 | <b>// p.Px(),p.Py(),p.Pz(),p.Energy());</b> | |
888 | <b>// printf(" (X,Z) = (%8.4f, %8.4f) cm, ipart = %d, primary = %dn",</b> | |
889 | <b>// xgen,zgen,ipart,primary);</b> | |
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<ntracks; itrack++) {</b> | |
897 | <b>// // //=========== Get the Hits Tree for the Primary track itrack</b> | |
898 | <b>// // gAlice->ResetHits();</b> | |
899 | <b>// // gAlice->TreeH()->GetEvent(itrack);</b> | |
900 | <b>// // TClonesArray *hits = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->Hits();</b> | |
901 | <b>// // <a href=".././AliPHOSHit.html">AliPHOSHit</a> *hit ;</b> | |
902 | <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> ihit;</b> | |
903 | <b>// // for ( ihit = 0 ; ihit < hits->GetEntries() ; ihit++ ) {</b> | |
904 | <b>// // hit = (<a href=".././AliPHOSHit.html">AliPHOSHit</a>*)hits->At(ihit) ;</b> | |
905 | <b>// // <a href="../ListOfTypes.html#Float_t">Float_t</a> hitXYZ[3];</b> | |
906 | <b>// // hitXYZ[0] = hit->X();</b> | |
907 | <b>// // hitXYZ[1] = hit->Y();</b> | |
908 | <b>// // hitXYZ[2] = hit->Z();</b> | |
909 | <b>// // ipart = hit->GetPid();</b> | |
910 | <b>// // primary = hit->GetPrimary();</b> | |
911 | <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> absId = hit->GetId();</b> | |
912 | <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> relId[4];</b> | |
913 | <b>// // <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:AbsToRelNumbering">AbsToRelNumbering</a>(absId, relId) ;</b> | |
914 | <b>// // <a href="../ListOfTypes.html#Int_t">Int_t</a> module = relId[0];</b> | |
915 | <b>// // if (relId[1]==0 && !(hitXYZ[0]==0 && hitXYZ[2]==0))</b> | |
916 | <b>// // printf("EMC hit B: module %d, (X,Z) = (%8.4f, %8.4f) cm, ipart = %d, primary = %dn",</b> | |
917 | <b>// // module,hitXYZ[0],hitXYZ[2],ipart,primary);</b> | |
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 << "Start EMC Analysis"<< endl ;</b> | |
947 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ievent=0; ievent<Nevents; ievent++) { </b> | |
948 | ||
949 | <b>// //========== Event Number> </b> | |
950 | <b>// if ( (ievent+1) % (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Power( 10, (<a href="../ListOfTypes.html#Int_t">Int_t</a>)TMath::Log10(ievent+1) ) == 0)</b> | |
951 | <b>// cout << "==== AnalyzeEMC ====> Event is " << ievent+1 << endl ;</b> | |
952 | ||
953 | <b>// //=========== Connects the various Tree's for evt</b> | |
954 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> ntracks = gAlice->GetEvent(ievent);</b> | |
955 | ||
956 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ;</b> | |
957 | ||
958 | <b>// gAlice->TreeD()->GetEvent(0) ;</b> | |
959 | <b>// gAlice->TreeR()->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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetNModules">GetNModules</a>();</b> | |
964 | <b>// TClonesArray **hitsPerModule = new TClonesArray *[nOfModules];</b> | |
965 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> iModule;</b> | |
966 | <b>// for (iModule=0; iModule < nOfModules; iModule++)</b> | |
967 | <b>// hitsPerModule[iModule] = new TClonesArray("AliPHOSCPVHit",100);</b> | |
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<ntracks; itrack++) {</b> | |
978 | <b>// // Get the Hits Tree for the Primary track itrack</b> | |
979 | <b>// gAlice->ResetHits();</b> | |
980 | <b>// gAlice->TreeH()->GetEvent(itrack);</b> | |
981 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> iModule=0; iModule < nOfModules; iModule++) {</b> | |
982 | <b>// emcModule = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->GetEMCModule(iModule);</b> | |
983 | <b>// emcHits = emcModule.Hits();</b> | |
984 | <b>// nEMChits = emcHits->GetEntriesFast();</b> | |
985 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b> | |
986 | <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b> | |
987 | <b>// TClonesArray &lhits = *(TClonesArray *)hitsPerModule[iModule];</b> | |
988 | <b>// new(lhits[hitsPerModule[iModule]->GetEntriesFast()]) AliPHOSCPVHit(*emcHit);</b> | |
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>->RecParticles() ; </b> | |
997 | <b>// <a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> * recParticle ;</b> | |
998 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMCrecs = (*recParticleList)->GetEntries();</b> | |
999 | <b>// if (nEMCrecs == 1) {</b> | |
1000 | <b>// recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) (*recParticleList)->At(0) ;</b> | |
1001 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> recE = recParticle->Energy();</b> | |
1002 | <b>// <a href="../ListOfTypes.html#Int_t">Int_t</a> phosModule;</b> | |
1003 | <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> recX, recZ ;</b> | |
1004 | <b>// <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->Phi(), phosModule, recX, recZ) ;</b> | |
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->GetEntriesFast();</b> | |
1010 | <b>// if (nEMChits == 1) {</b> | |
1011 | <b>// <a href="../ListOfTypes.html#Float_t">Float_t</a> genX, genZ, genE;</b> | |
1012 | <b>// for (<a href="../ListOfTypes.html#Int_t">Int_t</a> ihit=0; ihit<nEMChits; ihit++) {</b> | |
1013 | <b>// emcHit = (AliPHOSCPVHit*)emcHits->UncheckedAt(ihit);</b> | |
1014 | <b>// genX = emcHit->X();</b> | |
1015 | <b>// genZ = emcHit->Y();</b> | |
1016 | <b>// genE = emcHit->GetMomentum().E();</b> | |
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 ->Fill(dx);</b> | |
1022 | <b>// hDz1 ->Fill(dz);</b> | |
1023 | <b>// hDE1 ->Fill(de);</b> | |
1024 | <b>// hDx2 ->Fill(genE,dx);</b> | |
1025 | <b>// hDz2 ->Fill(genE,dz);</b> | |
1026 | <b>// hDE2 ->Fill(genE,recE);</b> | |
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>->GetName());</b> | |
1035 | <b>// TFile output(outputname,"RECREATE");</b> | |
1036 | <b>// output.cd();</b> | |
1037 | ||
1038 | <b>// hDx1 ->Write() ;</b> | |
1039 | <b>// hDz1 ->Write() ;</b> | |
1040 | <b>// hDE1 ->Write() ;</b> | |
1041 | <b>// hDx2 ->Write() ;</b> | |
1042 | <b>// hDz2 ->Write() ;</b> | |
1043 | <b>// hDE2 ->Write() ;</b> | |
1044 | ||
1045 | <b>// // Plot histograms</b> | |
1046 | ||
1047 | <b>// TCanvas *emcCanvas = new TCanvas("EMC","EMC analysis",20,20,700,300);</b> | |
1048 | <b>// gStyle->SetOptStat(111111);</b> | |
1049 | <b>// gStyle->SetOptFit(1);</b> | |
1050 | <b>// gStyle->SetOptDate(1);</b> | |
1051 | <b>// emcCanvas->Divide(3,1);</b> | |
1052 | ||
1053 | <b>// emcCanvas->cd(1);</b> | |
1054 | <b>// gPad->SetFillColor(10);</b> | |
1055 | <b>// hDx1->SetFillColor(16);</b> | |
1056 | <b>// hDx1->Draw();</b> | |
1057 | ||
1058 | <b>// emcCanvas->cd(2);</b> | |
1059 | <b>// gPad->SetFillColor(10);</b> | |
1060 | <b>// hDz1->SetFillColor(16);</b> | |
1061 | <b>// hDz1->Draw();</b> | |
1062 | ||
1063 | <b>// emcCanvas->cd(3);</b> | |
1064 | <b>// gPad->SetFillColor(10);</b> | |
1065 | <b>// hDE1->SetFillColor(16);</b> | |
1066 | <b>// hDE1->Draw();</b> | |
1067 | ||
1068 | <b>// emcCanvas->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 << "AnalyzeResolutions > " << "Booking Histograms" << 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<9; i1++) | |
1085 | for(i2 = 0; i2<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 << "Start Analysing"<< endl ; | |
1094 | for ( ievent=0; ievent<Nevents; ievent++) | |
1095 | { | |
1096 | ||
1097 | <b> //========== Event Number> </b> | |
1098 | <b> // if ( ( log10((<a href="../ListOfTypes.html#Float_t">Float_t</a>)(ievent+1)) - (<a href="../ListOfTypes.html#Int_t">Int_t</a>)(log10((<a href="../ListOfTypes.html#Float_t">Float_t</a>)(ievent+1))) ) == 0. ) </b> | |
1099 | cout << "AnalyzeResolutions > " << "Event is " << ievent << endl ; | |
1100 | ||
1101 | <b> //=========== Connects the various Tree's for evt</b> | |
1102 | gAlice->GetEvent(ievent); | |
1103 | ||
1104 | <b> //=========== Gets the Kine TTree</b> | |
1105 | gAlice->TreeK()->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 < gAlice->GetNtrack() ; iPrimary++) | |
1112 | { | |
1113 | primary = gAlice->Particle(iPrimary) ; | |
1114 | <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = primary->GetPdgCode() ; | |
1115 | if( primaryType == 22 ) { | |
1116 | <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ; | |
1117 | <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ; | |
1118 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
1119 | if(moduleNumber){ | |
1120 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>->Fill(primary->Energy()) ; | |
1121 | if(primary->Energy() > 0.3) | |
1122 | totalPrimary++ ; | |
1123 | } | |
1124 | } | |
1125 | } | |
1126 | ||
1127 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->SetTreeAddress() ; | |
1128 | ||
1129 | gAlice->TreeD()->GetEvent(0) ; | |
1130 | gAlice->TreeR()->GetEvent(0) ; | |
1131 | ||
1132 | TClonesArray * recParticleList = <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fPHOS">fPHOS</a>->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 < recParticleList->GetEntries() ;iRecParticle++ ) | |
1137 | { | |
1138 | recParticle = (<a href=".././AliPHOSRecParticle.html">AliPHOSRecParticle</a> *) recParticleList->At(iRecParticle) ; | |
1139 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy())) ; | |
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>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(recParticle->Theta(), recParticle->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->GetPrimaries(numberofprimaries) ; | |
1150 | <a href="../ListOfTypes.html#Int_t">Int_t</a> index ; | |
1151 | TParticle * primary ; | |
1152 | <a href="../ListOfTypes.html#Double_t">Double_t</a> distance = minDistance ; | |
1153 | <a href="../ListOfTypes.html#Double_t">Double_t</a> dX, dZ; | |
1154 | <a href="../ListOfTypes.html#Double_t">Double_t</a> dXmin = 0.; | |
1155 | <a href="../ListOfTypes.html#Double_t">Double_t</a> dZmin = 0. ; | |
1156 | for ( index = 0 ; index < numberofprimaries ; index++){ | |
1157 | primary = gAlice->Particle(listofprimaries[index]) ; | |
1158 | <a href="../ListOfTypes.html#Int_t">Int_t</a> moduleNumber ; | |
1159 | <a href="../ListOfTypes.html#Double_t">Double_t</a> primX, primZ ; | |
1160 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fGeom">fGeom</a>-><a href=".././AliPHOSGeometry.html#AliPHOSGeometry:ImpactOnEmc">ImpactOnEmc</a>(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ; | |
1161 | if(moduleNumberRec == moduleNumber) { | |
1162 | dX = recX - primX; | |
1163 | dZ = recZ - primZ; | |
1164 | distance = TMath::Sqrt(dX*dX + dZ*dZ) ; | |
1165 | if(minDistance > distance) { | |
1166 | minDistance = distance ; | |
1167 | dXmin = dX; | |
1168 | dZmin = dZ; | |
1169 | closestPrimary = listofprimaries[index] ; | |
1170 | } | |
1171 | } | |
1172 | } | |
1173 | totalRecPart++ ; | |
1174 | ||
1175 | if(closestPrimary >=0 ){ | |
1176 | totalRPwithPrim++; | |
1177 | ||
1178 | <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryType = gAlice->Particle(closestPrimary)->GetPdgCode() ; | |
1179 | <b>// TParticlePDG* pDGparticle = gAlice->ParticleAt(closestPrimary)->GetPDG();</b> | |
1180 | <b>// <a href="../ListOfTypes.html#Double_t">Double_t</a> charge = PDGparticle->Charge() ;</b> | |
1181 | <b>// if(charge)</b> | |
1182 | <b>// cout <<"Primary " <<primaryType << " E " << ((TParticle *)primaryList->At(closestPrimary))->Energy() << endl ;</b> | |
1183 | <a href="../ListOfTypes.html#Int_t">Int_t</a> primaryCode ; | |
1184 | switch(primaryType) | |
1185 | { | |
1186 | case 22: | |
1187 | primaryCode = 0; //Photon | |
1188 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEnergy">fhAllEnergy</a> ->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy()) ; | |
1189 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a> ->Fill(gAlice->Particle(closestPrimary)->Energy(), minDistance) ; | |
1190 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>->Fill(dXmin); | |
1191 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>->Fill(dZmin); | |
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->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>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ; | |
1233 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ; | |
1234 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ; | |
1235 | ||
1236 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ; | |
1237 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ; | |
1238 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ; | |
1239 | ||
1240 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1241 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1242 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1243 | ||
1244 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1245 | } | |
1246 | if(primaryType == 2112){ //neutron | |
1247 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1248 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1249 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1250 | } | |
1251 | ||
1252 | if(primaryType == -2112){ //neutron ~ | |
1253 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1254 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1255 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1256 | ||
1257 | } | |
1258 | if(primaryCode == 2){ | |
1259 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1260 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1261 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1262 | } | |
1263 | ||
1264 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1265 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1266 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1267 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1268 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1269 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1270 | counter[0][primaryCode]++; | |
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>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1275 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ; | |
1276 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ; | |
1277 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1278 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1279 | } | |
1280 | if(primaryType == 2112){ //neutron | |
1281 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1282 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1283 | } | |
1284 | ||
1285 | if(primaryType == -2112){ //neutron ~ | |
1286 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1287 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1288 | ||
1289 | } | |
1290 | if(primaryCode == 2){ | |
1291 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1292 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1293 | } | |
1294 | ||
1295 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1296 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1297 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1298 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1299 | counter[1][primaryCode]++; | |
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>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1304 | ||
1305 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->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>->Fill(gAlice->Particle(closestPrimary)->Energy(),recParticle->Energy() ) ; | |
1311 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance ) ; | |
1312 | ||
1313 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1314 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1315 | } | |
1316 | if(primaryType == 2112) //neutron | |
1317 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1318 | ||
1319 | if(primaryType == -2112) //neutron ~ | |
1320 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1321 | ||
1322 | if(primaryCode == 2) | |
1323 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1324 | ||
1325 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1326 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1327 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
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>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->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>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1340 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Fill(gAlice->Particle(closestPrimary)->Energy(), recParticle->Energy() ) ; | |
1341 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Fill(gAlice->Particle(closestPrimary)->Energy(),minDistance) ; | |
1342 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1343 | } | |
1344 | if(primaryType == 2112){ //neutron | |
1345 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1346 | } | |
1347 | ||
1348 | if(primaryType == -2112){ //neutron ~ | |
1349 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1350 | } | |
1351 | if(primaryCode == 2){ | |
1352 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1353 | } | |
1354 | ||
1355 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1356 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1357 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->Energy()) ) ; | |
1358 | counter[5][primaryCode]++ ; | |
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>->Fill(<a href="#AliPHOSAnalyze:CorrectEnergy">CorrectEnergy</a>(recParticle->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 << "Resolutions: Analyzed " << Nevents << " event(s)" << endl ; | |
1376 | cout << "Resolutions: Total primary " << totalPrimary << endl ; | |
1377 | cout << "Resoluitons: Total reconstracted " << totalRecPart << endl ; | |
1378 | cout << "TotalReconstructed with Primarie " << totalRPwithPrim << endl ; | |
1379 | cout << " Primary: Photon Electron Ch. Hadr. Neutr. Hadr Kaons" << endl ; | |
1380 | cout << " Detected as photon " << counter[0][0] << " " << counter[0][1] << " " << counter[0][2] << " " <<counter[0][3] << " " << counter[0][4] << endl ; | |
1381 | cout << " Detected as electron " << counter[1][0] << " " << counter[1][1] << " " << counter[1][2] << " " <<counter[1][3] << " " << counter[1][4] << endl ; | |
1382 | cout << " Detected as neutral hadron " << counter[2][0] << " " << counter[2][1] << " " << counter[2][2] << " " <<counter[2][3] << " " << counter[2][4] << endl ; | |
1383 | cout << " Detected as neutral EM " << counter[3][0] << " " << counter[3][1] << " " << counter[3][2] << " " <<counter[3][3] << " " << counter[3][4] << endl ; | |
1384 | cout << " Detected as charged hadron " << counter[4][0] << " " << counter[4][1] << " " << counter[4][2] << " " <<counter[4][3] << " " << counter[4][4] << endl ; | |
1385 | cout << " Detected as gamma-hadron " << counter[5][0] << " " << counter[5][1] << " " << counter[5][2] << " " <<counter[5][3] << " " << counter[5][4] << endl ; | |
1386 | cout << " Detected as Absurd EM " << counter[6][0] << " " << counter[6][1] << " " << counter[6][2] << " " <<counter[6][3] << " " << counter[6][4] << endl ; | |
1387 | cout << " Detected as absurd hadron " << counter[7][0] << " " << counter[7][1] << " " << counter[7][2] << " " <<counter[7][3] << " " << counter[7][4] << endl ; | |
1388 | cout << " Detected as undefined " << counter[8][0] << " " << counter[8][1] << " " << counter[8][2] << " " <<counter[8][3] << " " << counter[8][4] << endl ; | |
1389 | ||
1390 | for(i1 = 0; i1<9; i1++) | |
1391 | for(i2 = 0; i2<5; i2++) | |
1392 | totalInd+=counter[i1][i2] ; | |
1393 | cout << "Indentified particles " << totalInd << endl ; | |
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>->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>->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>->Write() ; | |
1570 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>) | |
1571 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEnergy">fhPhotEnergy</a>->Write() ; | |
1572 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>) | |
1573 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMEnergy">fhEMEnergy</a>->Write() ; | |
1574 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>) | |
1575 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDEnergy">fhPPSDEnergy</a>->Write() ; | |
1576 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>) | |
1577 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPosition">fhAllPosition</a>->Write() ; | |
1578 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>) | |
1579 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionX">fhAllPositionX</a>->Write() ; | |
1580 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>) | |
1581 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPositionZ">fhAllPositionZ</a>->Write() ; | |
1582 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>) | |
1583 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPosition">fhPhotPosition</a>->Write() ; | |
1584 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>) | |
1585 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEMPosition">fhEMPosition</a>->Write() ; | |
1586 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>) | |
1587 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSDPosition">fhPPSDPosition</a>->Write() ; | |
1588 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>) | |
1589 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllReg">fhAllReg</a>->Write() ; | |
1590 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>) | |
1591 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotReg">fhPhotReg</a>->Write() ; | |
1592 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>) | |
1593 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNReg">fhNReg</a>->Write() ; | |
1594 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>) | |
1595 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarReg">fhNBarReg</a>->Write() ; | |
1596 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>) | |
1597 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedReg">fhChargedReg</a>->Write() ; | |
1598 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>) | |
1599 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllEM">fhAllEM</a>->Write() ; | |
1600 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>) | |
1601 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotEM">fhPhotEM</a>->Write() ; | |
1602 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>) | |
1603 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNEM">fhNEM</a>->Write() ; | |
1604 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>) | |
1605 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarEM">fhNBarEM</a>->Write() ; | |
1606 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>) | |
1607 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedEM">fhChargedEM</a>->Write() ; | |
1608 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>) | |
1609 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllPPSD">fhAllPPSD</a>->Write() ; | |
1610 | if (<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>) | |
1611 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPPSD">fhPhotPPSD</a>->Write() ; | |
1612 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>) | |
1613 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNPPSD">fhNPPSD</a>->Write() ; | |
1614 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>) | |
1615 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhNBarPPSD">fhNBarPPSD</a>->Write() ; | |
1616 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>) | |
1617 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhChargedPPSD">fhChargedPPSD</a>->Write() ; | |
1618 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>) | |
1619 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPrimary">fhPrimary</a>->Write() ; | |
1620 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>) | |
1621 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhAllRP">fhAllRP</a>->Write() ; | |
1622 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>) | |
1623 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhVeto">fhVeto</a>->Write() ; | |
1624 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>) | |
1625 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhShape">fhShape</a>->Write() ; | |
1626 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>) | |
1627 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPPSD">fhPPSD</a>->Write() ; | |
1628 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>) | |
1629 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotPhot">fhPhotPhot</a>->Write() ; | |
1630 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>) | |
1631 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotElec">fhPhotElec</a>->Write() ; | |
1632 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>) | |
1633 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNeuH">fhPhotNeuH</a>->Write() ; | |
1634 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>) | |
1635 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Write() ; | |
1636 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>) | |
1637 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotNuEM">fhPhotNuEM</a>->Write() ; | |
1638 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>) | |
1639 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotChHa">fhPhotChHa</a>->Write() ; | |
1640 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>) | |
1641 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhPhotGaHa">fhPhotGaHa</a>->Write() ; | |
1642 | if(<a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>) | |
1643 | <a href=".././AliPHOSAnalyze.html#AliPHOSAnalyze:fhEnergyCorrelations">fhEnergyCorrelations</a>->Write() ; | |
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> |