1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //_________________________________________________________________________
18 // Split clusters with some criteria and calculate invariant mass
19 // to identify them as pi0 or conversion
22 //-- Author: Gustavo Conesa (LPSC-Grenoble)
23 //_________________________________________________________________________
25 //////////////////////////////////////////////////////////////////////////////
28 // --- ROOT system ---
30 #include <TClonesArray.h>
31 #include <TObjString.h>
33 #include <TDatabasePDG.h>
35 // --- Analysis system ---
36 #include "AliAnaInsideClusterInvariantMass.h"
37 #include "AliCaloTrackReader.h"
38 #include "AliMCAnalysisUtils.h"
40 #include "AliFiducialCut.h"
41 #include "TParticle.h"
42 #include "AliVCluster.h"
43 #include "AliAODEvent.h"
44 #include "AliAODMCParticle.h"
45 #include "AliEMCALGeoParams.h"
48 //#include "AliPHOSGeoUtils.h"
49 #include "AliEMCALGeometry.h"
51 ClassImp(AliAnaInsideClusterInvariantMass)
53 //__________________________________________________________________
54 AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
55 AliAnaCaloTrackCorrBaseClass(),
57 fMinNCells(0), fMinBadDist(0),
58 fHistoECut(0), fCheckSplitDistToBad(0),
59 fFillAngleHisto(kFALSE),
61 fFillTMResidualHisto(kFALSE),
62 fFillSSExtraHisto(kFALSE),
64 fFillSSWeightHisto(kFALSE),
66 fFillMCOverlapHisto(0),
70 fFillHighMultHisto(0),
71 fFillArmenterosHisto(0),
72 fSSWeightN(0), fSSECellCutN(0),
74 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
75 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
76 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
77 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
78 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
79 fhMCGenFracAfterCutsNLocMax1MCPi0(0),
80 fhMCGenFracAfterCutsNLocMax2MCPi0(0),
81 fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
82 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),
83 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),
84 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
85 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
86 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
87 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
88 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
89 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
90 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
91 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
92 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
93 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
94 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
95 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
96 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
97 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
98 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
99 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
100 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
101 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
102 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
103 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
104 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
105 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
106 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
107 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
108 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
109 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
110 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
111 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
112 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
113 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
114 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
115 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
116 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
120 // Init array of histograms
121 for(Int_t i = 0; i < 7; i++)
123 for(Int_t j = 0; j < 2; j++)
125 fhMassNLocMax1[i][j] = 0;
126 fhMassNLocMax2[i][j] = 0;
127 fhMassNLocMaxN[i][j] = 0;
129 fhNLocMaxM02Cut[i][j] = 0;
130 fhSplitClusterENLocMax [i][j] = 0;
131 fhSplitClusterEPi0NLocMax[i][j] = 0;
132 fhM02NLocMax1[i][j] = 0;
133 fhM02NLocMax2[i][j] = 0;
134 fhM02NLocMaxN[i][j] = 0;
135 fhNCellNLocMax1[i][j] = 0;
136 fhNCellNLocMax2[i][j] = 0;
137 fhNCellNLocMaxN[i][j] = 0;
138 fhM02Pi0NLocMax1[i][j] = 0;
139 fhM02EtaNLocMax1[i][j] = 0;
140 fhM02ConNLocMax1[i][j] = 0;
141 fhM02Pi0NLocMax2[i][j] = 0;
142 fhM02EtaNLocMax2[i][j] = 0;
143 fhM02ConNLocMax2[i][j] = 0;
144 fhM02Pi0NLocMaxN[i][j] = 0;
145 fhM02EtaNLocMaxN[i][j] = 0;
146 fhM02ConNLocMaxN[i][j] = 0;
148 fhMassPi0NLocMax1[i][j] = 0;
149 fhMassEtaNLocMax1[i][j] = 0;
150 fhMassConNLocMax1[i][j] = 0;
151 fhMassPi0NLocMax2[i][j] = 0;
152 fhMassEtaNLocMax2[i][j] = 0;
153 fhMassConNLocMax2[i][j] = 0;
154 fhMassPi0NLocMaxN[i][j] = 0;
155 fhMassEtaNLocMaxN[i][j] = 0;
156 fhMassConNLocMaxN[i][j] = 0;
158 fhNCellPi0NLocMax1[i][j] = 0;
159 fhNCellEtaNLocMax1[i][j] = 0;
160 fhNCellPi0NLocMax2[i][j] = 0;
161 fhNCellEtaNLocMax2[i][j] = 0;
162 fhNCellPi0NLocMaxN[i][j] = 0;
163 fhNCellEtaNLocMaxN[i][j] = 0;
165 fhAsyPi0NLocMax1[i][j] = 0;
166 fhAsyEtaNLocMax1[i][j] = 0;
167 fhAsyConNLocMax1[i][j] = 0;
168 fhAsyPi0NLocMax2[i][j] = 0;
169 fhAsyEtaNLocMax2[i][j] = 0;
170 fhAsyConNLocMax2[i][j] = 0;
171 fhAsyPi0NLocMaxN[i][j] = 0;
172 fhAsyEtaNLocMaxN[i][j] = 0;
173 fhAsyConNLocMaxN[i][j] = 0;
175 fhMassM02NLocMax1[i][j]= 0;
176 fhMassM02NLocMax2[i][j]= 0;
177 fhMassM02NLocMaxN[i][j]= 0;
178 fhMassDispEtaNLocMax1[i][j]= 0;
179 fhMassDispEtaNLocMax2[i][j]= 0;
180 fhMassDispEtaNLocMaxN[i][j]= 0;
181 fhMassDispPhiNLocMax1[i][j]= 0;
182 fhMassDispPhiNLocMax2[i][j]= 0;
183 fhMassDispPhiNLocMaxN[i][j]= 0;
184 fhMassDispAsyNLocMax1[i][j]= 0;
185 fhMassDispAsyNLocMax2[i][j]= 0;
186 fhMassDispAsyNLocMaxN[i][j]= 0;
188 fhSplitEFractionNLocMax1[i][j]=0;
189 fhSplitEFractionNLocMax2[i][j]=0;
190 fhSplitEFractionNLocMaxN[i][j]=0;
192 fhMCGenFracNLocMax1[i][j]= 0;
193 fhMCGenFracNLocMax2[i][j]= 0;
194 fhMCGenFracNLocMaxN[i][j]= 0;
196 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
197 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
198 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
200 fhMCGenSplitEFracNLocMax1[i][j]= 0;
201 fhMCGenSplitEFracNLocMax2[i][j]= 0;
202 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
204 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
205 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
206 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
208 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
209 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
210 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
212 fhMCGenEvsSplitENLocMax1[i][j]= 0;
213 fhMCGenEvsSplitENLocMax2[i][j]= 0;
214 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
216 fhAsymNLocMax1 [i][j] = 0;
217 fhAsymNLocMax2 [i][j] = 0;
218 fhAsymNLocMaxN [i][j] = 0;
220 fhMassAfterCutsNLocMax1[i][j] = 0;
221 fhMassAfterCutsNLocMax2[i][j] = 0;
222 fhMassAfterCutsNLocMaxN[i][j] = 0;
225 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
226 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
227 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
230 for(Int_t jj = 0; jj < 4; jj++)
232 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
233 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
234 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
236 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
237 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
238 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
240 fhMCGenFracNLocMaxEbin[i][jj] = 0;
241 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
243 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
244 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
245 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
248 fhTrackMatchedDEtaNLocMax1[i] = 0;
249 fhTrackMatchedDPhiNLocMax1[i] = 0;
250 fhTrackMatchedDEtaNLocMax2[i] = 0;
251 fhTrackMatchedDPhiNLocMax2[i] = 0;
252 fhTrackMatchedDEtaNLocMaxN[i] = 0;
253 fhTrackMatchedDPhiNLocMaxN[i] = 0;
255 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
256 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
257 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
258 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
259 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
260 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
262 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
263 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
264 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
265 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
266 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
267 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
269 for(Int_t nlm = 0; nlm < 3; nlm++)
271 fhMCEM02Overlap0 [nlm][i] = 0;
272 fhMCEM02Overlap1 [nlm][i] = 0;
273 fhMCEM02OverlapN [nlm][i] = 0;
274 fhMCEM02Overlap0Match[nlm][i] = 0;
275 fhMCEM02Overlap1Match[nlm][i] = 0;
276 fhMCEM02OverlapNMatch[nlm][i] = 0;
278 fhMCEMassOverlap0 [nlm][i] = 0;
279 fhMCEMassOverlap1 [nlm][i] = 0;
280 fhMCEMassOverlapN [nlm][i] = 0;
281 fhMCEMassOverlap0Match[nlm][i] = 0;
282 fhMCEMassOverlap1Match[nlm][i] = 0;
283 fhMCEMassOverlapNMatch[nlm][i] = 0;
285 fhMCEAsymOverlap0 [nlm][i] = 0;
286 fhMCEAsymOverlap1 [nlm][i] = 0;
287 fhMCEAsymOverlapN [nlm][i] = 0;
288 fhMCEAsymOverlap0Match[nlm][i] = 0;
289 fhMCEAsymOverlap1Match[nlm][i] = 0;
290 fhMCEAsymOverlapNMatch[nlm][i] = 0;
292 fhMCENCellOverlap0 [nlm][i] = 0;
293 fhMCENCellOverlap1 [nlm][i] = 0;
294 fhMCENCellOverlapN [nlm][i] = 0;
295 fhMCENCellOverlap0Match[nlm][i] = 0;
296 fhMCENCellOverlap1Match[nlm][i] = 0;
297 fhMCENCellOverlapNMatch[nlm][i] = 0;
299 fhMCEEpriOverlap0 [nlm][i] = 0;
300 fhMCEEpriOverlap1 [nlm][i] = 0;
301 fhMCEEpriOverlapN [nlm][i] = 0;
302 fhMCEEpriOverlap0Match[nlm][i] = 0;
303 fhMCEEpriOverlap1Match[nlm][i] = 0;
304 fhMCEEpriOverlapNMatch[nlm][i] = 0;
306 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
307 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
308 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
310 fhMCESplitEFracOverlap0 [nlm][i] = 0;
311 fhMCESplitEFracOverlap1 [nlm][i] = 0;
312 fhMCESplitEFracOverlapN [nlm][i] = 0;
313 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
314 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
315 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
317 fhMCENOverlaps [nlm][i] = 0;
318 fhMCENOverlapsMatch [nlm][i] = 0;
322 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
323 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
324 fhMCPi0MassM02OverlapN [nlm][i] = 0;
325 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
326 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
327 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
331 for(Int_t i = 0; i < 2; i++)
333 fhAnglePairNLocMax1 [i] = 0;
334 fhAnglePairNLocMax2 [i] = 0;
335 fhAnglePairNLocMaxN [i] = 0;
336 fhAnglePairMassNLocMax1[i] = 0;
337 fhAnglePairMassNLocMax2[i] = 0;
338 fhAnglePairMassNLocMaxN[i] = 0;
339 fhSplitEFractionvsAsyNLocMax1[i] = 0;
340 fhSplitEFractionvsAsyNLocMax2[i] = 0;
341 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
344 for(Int_t i = 0; i < 4; i++)
346 fhMassM02NLocMax1Ebin[i] = 0 ;
347 fhMassM02NLocMax2Ebin[i] = 0 ;
348 fhMassM02NLocMaxNEbin[i] = 0 ;
350 fhMassAsyNLocMax1Ebin[i] = 0 ;
351 fhMassAsyNLocMax2Ebin[i] = 0 ;
352 fhMassAsyNLocMaxNEbin[i] = 0 ;
354 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
355 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
356 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
358 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
359 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
360 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
362 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
363 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
364 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
366 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
367 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
368 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
370 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
371 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
372 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
375 for(Int_t nlm = 0; nlm < 3; nlm++)
378 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
379 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
380 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
381 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
383 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
384 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
385 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
386 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
388 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
389 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
390 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
391 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
393 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
394 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
395 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
396 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
398 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
399 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
400 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
401 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
402 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
403 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
405 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
406 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
407 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
408 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
409 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
410 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
412 fhPi0CellE [nlm] = 0 ;
413 fhPi0CellEFrac [nlm] = 0 ;
414 fhPi0CellLogEFrac[nlm] = 0 ;
416 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
417 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
418 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
420 fhPi0CellEMaxFrac [nlm] = 0 ;
421 fhPi0CellEMax2Frac[nlm] = 0 ;
423 for(Int_t i = 0; i < 10; i++)
425 fhM02WeightPi0 [nlm][i] = 0;
426 fhM02ECellCutPi0[nlm][i] = 0;
429 fhMassBadDistClose[nlm] = 0;
430 fhM02BadDistClose [nlm] = 0;
431 fhMassOnBorder [nlm] = 0;
432 fhM02OnBorder [nlm] = 0;
434 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
435 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
439 for(Int_t i = 0; i < 7; i++)
441 for(Int_t j = 0; j < 4; j++)
444 fhArmNLocMax1[i][j] = 0;
445 fhArmNLocMax2[i][j] = 0;
446 fhArmNLocMaxN[i][j] = 0;
448 fhArmPi0NLocMax1[i][j] = 0;
449 fhArmPi0NLocMax2[i][j] = 0;
450 fhArmPi0NLocMaxN[i][j] = 0;
452 fhArmAfterCutsNLocMax1[i][j] = 0;
453 fhArmAfterCutsNLocMax2[i][j] = 0;
454 fhArmAfterCutsNLocMaxN[i][j] = 0;
463 //_______________________________________________________________________________________________________
464 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,const Int_t mcindex, const Int_t noverlaps,
465 const Float_t e1, const Float_t e2, const Float_t mass)
467 //TLorentzVector l1, TLorentzVector l2)
469 // Check origin NLM tower of the cluster, when MC gives merged pi0
471 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
473 const UInt_t nc = cluster->GetNCells();
476 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
481 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
482 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
484 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
486 // printf("** N max %d - Overlaps = %d **, mass %2.2f, m02 %2.2f, Cl1(E,eta,phi)=(%2.2f,%2.2f,%2.2f),Cl2(E,eta,phi)=(%2.2f,%2.2f,%2.2f), mass(1,2) %2.2f \n",
487 // nMax, noverlaps,mass,m02,
488 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
489 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
491 // // Study the mothers of cluster
492 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
493 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
495 // Int_t mclabel = cluster->GetLabels()[ilab];
498 // Int_t mpdg = -999999;
499 // Int_t mstatus = -1;
500 // Int_t grandLabel = -1;
501 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
503 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
504 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
506 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
508 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
510 // Int_t newLabel = -1;
511 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
512 // printf("\t grandmother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
513 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
514 // grandLabel = newLabel;
520 // printf("Cells in cluster %d\n",cluster->GetNCells() );
521 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
523 // Int_t absIdCell = cluster->GetCellAbsId(icell);
524 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
525 // GetReader()->RemapMCLabelForAODs(mcLabel);
526 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
527 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
529 // printf(" \t cell i %d, abs %d, amp %2.3f, mclabel %d, (sm,ieta,iphi)=(%d,%d,%d)\n",icell,absIdCell,GetEMCALCells()->GetCellAmplitude(absIdCell),mcLabel,smc,ietac,iphic);
535 //If only one maxima, consider all the towers in the cluster
538 for (UInt_t icell = 0; icell < nc; icell++ )
540 list [icell] = cluster->GetCellAbsId(icell);
541 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
545 Int_t nmaxima = nMax;
546 if(nMax==1) nmaxima = nc ;
548 //Find highest energy Local Maxima Towers
553 for(Int_t i = 0; i < nmaxima; i++)
555 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
562 //Find second highest
563 for(Int_t i = 0; i < nmaxima; i++)
565 if(i==imax) continue;
567 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
577 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
578 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
580 //---------------------------------------------------------
581 //---------------------------------------------------------
582 // Compare ancestors of all local maxima at cell MC level
583 //---------------------------------------------------------
584 //---------------------------------------------------------
586 // Check that the highest mc label and the max cluster label are the same
587 Int_t mcLabelMax = -1 ;
590 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
591 GetReader()->RemapMCLabelForAODs(mcLabelMax);
594 Int_t mcLabelMax2 = -1 ;
597 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
598 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
601 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
602 Bool_t matchHighLMAndHighMC = kFALSE;
604 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
606 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
608 matchHighLMAndHighMC = kTRUE;
609 //printf("\t *** MATCH cluster and LM maximum ***\n");
613 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
614 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
616 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
617 matchHighLMAndHighMC = kTRUE;
621 //printf("\t \t *** NO MATCH***\n");
622 matchHighLMAndHighMC = kFALSE;
626 // Compare the common ancestors of the 2 highest energy local maxima
627 Int_t ancPDG = 0, ancStatus = -1;
628 TLorentzVector momentum; TVector3 prodVertex;
630 Bool_t high = kFALSE;
633 // // print maxima origin
634 // for(Int_t i = 0; i < nMax; i++)
636 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
637 // GetReader()->RemapMCLabelForAODs(mcLabel1);
639 // Bool_t ok =kFALSE,gok = kFALSE;
640 // Int_t pdg = -22222, status = -1;
641 // Int_t gpdg = -22222, gstatus = -1;
642 // Int_t ggpdg = -22222, ggstatus = -1;
643 // Int_t gLabel = -1, ggLabel = -1;
644 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
645 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
646 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
647 // printf("Max index %d; mother: Label %d; PDG %d; E %2.2f - grand mother label %d; PDG %d; E %2.2f- great grand mother label %d; PDG %d; E %2.2f\n",
648 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
651 for(Int_t i = 0; i < nmaxima-1; i++)
653 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
654 GetReader()->RemapMCLabelForAODs(mcLabel1);
656 for(Int_t j = i+1; j < nmaxima; j++)
658 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
659 GetReader()->RemapMCLabelForAODs(mcLabel2);
661 if(mcLabel1 < 0 || mcLabel2 < 0 )
663 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
667 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
668 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
671 if((i==imax && j==imax2) || (j==imax && i==imax2))
676 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
678 // If both bits are set, it could be that one of the maxima had a conversion
679 // reset the bit in this case
682 //printf("\t Reset low bit\n");
688 Int_t pdg = -22222, status = -1;
689 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
690 //printf("\t i %d label %d - j %d label %d; ancestor label %d, PDG %d-%d; E %2.2f; high %d, any %d \n",i,mcLabel1,j,mcLabel2, ancLabel, ancPDG,pdg, primary.E(), high, low);
695 Float_t en = cluster->E();
697 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
698 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
702 if(matchHighLMAndHighMC)
704 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
705 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
706 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
707 else fhMCPi0NoneNLMPair->Fill(en,nMax);
711 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
712 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
713 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
714 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
719 if(matchHighLMAndHighMC)
721 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
722 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
723 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
724 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
728 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
729 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
730 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
731 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
735 //----------------------------------------------------------------------
736 //----------------------------------------------------------------------
737 // Compare MC decay photon projection to cell location and Local Maxima
738 //----------------------------------------------------------------------
739 //----------------------------------------------------------------------
741 // Get the mother pi0
744 Int_t pdg = -22222, status = -1;
747 Int_t label = cluster->GetLabel();
748 TLorentzVector pi0Kine;
750 while( pdg!=111 && label>=0 )
752 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
755 if(pdg!=111 || label < 0)
757 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
761 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
765 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
769 // Get daughter photon kinematics
770 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
771 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
772 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
773 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
775 if(pdg1!=22 || pdg0 != 22)
777 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
781 // In what cells did the photons hit
782 Float_t eta0 = photon0Kine.Eta();
783 Float_t eta1 = photon1Kine.Eta();
785 Float_t phi0 = photon0Kine.Phi();
786 Float_t phi1 = photon1Kine.Phi();
788 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
790 // printf("MC pi0 label %d E %2.2f, eta %2.2f, phi %2.2f, mass (ph1, ph2) %2.2f: \n \t photon0 label %d E %2.2f, eta %2.2f, phi %2.2f \n \t photon1 label %d E %2.2f eta %2.2f, phi %2.2f\n",
791 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
792 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
793 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
795 // TLorentzVector momclus;
796 // cluster->GetMomentum(momclus,GetVertex(0));
797 // printf("Cluster E %2.2F eta %2.2f, phi %2.2f, dist to bad %2.2f\n",momclus.E(),momclus.Eta(),momclus.Phi()*TMath::RadToDeg(), cluster->GetDistanceToBadChannel());
800 if(phi0 < 0 ) phi0+=TMath::TwoPi();
801 if(phi1 < 0 ) phi1+=TMath::TwoPi();
803 Int_t absId0=-1, absId1=-1;
804 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
805 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
807 if(absId1 < 0 || absId1 < 0)
809 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
813 //-----------------------------------------------
814 // Check that the 2 photons hit the Local Maxima
815 //-----------------------------------------------
818 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
820 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
821 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
823 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
824 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
825 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
826 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
828 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
829 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
831 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
832 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
833 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
834 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
836 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
837 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
841 if(inlm > 2) inlm = 2;
843 Bool_t match0 = kFALSE;
844 Bool_t match1 = kFALSE;
847 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
849 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
850 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
852 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
853 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
856 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
858 // If one or the 2 not matched, check with the other MC labels
859 // only in case there was a conversion
861 Int_t absId0second = -1;
862 Int_t absId1second = -1;
863 Int_t secLabel0 = -1;
864 Int_t secLabel1 = -1;
868 Int_t secpdg = -999999;
869 Int_t secstatus = -1;
870 Int_t secgrandLabel = -1;
872 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
873 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
875 if((!match0 || !match1) && mcindex == kmcPi0Conv)
877 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
879 Int_t mclabel = cluster->GetLabels()[ilab];
881 //printf("Check label %d - %d\n",ilab,mclabel);
883 if(mclabel == label0 || mclabel == label1)
885 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
886 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
887 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
891 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
893 // match mc label and parent photon
894 Int_t tmplabel = mclabel;
895 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
897 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
899 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
901 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
903 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
904 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
905 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
908 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
910 tmplabel = secgrandLabel;
914 // Get the position of the found secondaries mother
915 if(!match0 && secLabel0 > 0)
917 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
919 //Float_t eta = mother.Eta();
920 //Float_t phi = mother.Phi();
921 //if(phi < 0 ) phi+=TMath::TwoPi();
922 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
924 //printf("Secondary MC0 label %d, absId %d E %2.2F eta %2.2f, phi %f\n", secLabel0,absId0second, mother.E(),mother.Eta(),mother.Phi()*TMath::RadToDeg());
926 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
927 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
930 if(!match1 && secLabel1 > 0)
932 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
934 //Float_t eta = mother.Eta();
935 //Float_t phi = mother.Phi();
936 //if(phi < 0 ) phi+=TMath::TwoPi();
937 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
939 //printf("Secondary MC1 label %d absId %d E %2.2F eta %2.2f, phi %f\n",secLabel1, absId1second, mother.E(),mother.Eta(),mother.Phi()*TMath::RadToDeg());
941 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
942 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
945 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
949 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
950 if( match0 && match1 )
952 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
953 // printf("a) Both Photons hit local maxima \n");
957 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
958 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
959 if(match0 && imatch0 == imax)
961 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
962 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
966 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
967 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
972 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
973 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
974 if(match0 && imatch0 == imax )
976 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
977 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
981 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
982 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
990 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
991 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
993 //---------------------------------------------
994 // Check the adjacent cells to the local maxima
995 //---------------------------------------------
999 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1000 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1001 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1002 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1007 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1008 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1010 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1011 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1014 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1016 if(match0 && match1)
1018 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1019 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1023 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1024 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1026 if(match0 && imatch0 == imax)
1028 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1029 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1033 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1034 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1039 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1040 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1041 if(match0 && imatch0 == imax)
1043 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1044 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1048 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1049 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1056 // Decay photon cells are adjacent?
1058 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1060 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1061 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1064 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1065 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1069 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1070 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1076 //--------------------
1077 // Other Local maxima
1078 //--------------------
1080 Bool_t matchMCHitOtherLM = kFALSE;
1083 for(Int_t i = 0; i < nmaxima; i++)
1085 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1091 for(Int_t i = 0; i < nmaxima; i++)
1093 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1097 if(matchMCHitOtherLM)
1099 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1100 // printf("d) One Photon hits a local maxima, the other another not high \n");
1104 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1105 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1106 if(match0 && imatch0 == imax)
1108 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1109 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1113 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1114 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1119 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1120 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1121 if(match0 && imatch0 == imax)
1123 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1124 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1128 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1129 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1136 // Adjacent to other maxima
1138 Bool_t adjacentOther1 = kFALSE;
1141 for(Int_t i = 0; i < nmaxima; i++)
1143 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1144 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1146 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1148 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1150 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1154 Bool_t adjacentOther0 = kFALSE;
1157 for(Int_t i = 0; i < nmaxima; i++)
1159 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1160 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1162 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1164 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1166 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1170 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1173 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1174 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1178 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1179 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1180 if(match0 && imatch0 == imax)
1182 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1183 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1187 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1188 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1193 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1194 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1195 if(match0 && imatch0 == imax)
1197 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1198 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1202 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1203 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1210 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1211 // printf("f) No hit found \n");
1214 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1215 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1219 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1220 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1225 //___________________________________________________________________________________________________________________
1226 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched,
1227 const Float_t en, const Float_t angle, const Float_t mass)
1229 // Fill histograms related to opening angle
1233 fhAnglePairNLocMax1[matched]->Fill(en,angle);
1234 if( en > fHistoECut ) fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
1238 fhAnglePairNLocMax2[matched]->Fill(en,angle);
1239 if( en > fHistoECut ) fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
1243 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
1244 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
1249 //______________________________________________________________________________________________________________________
1250 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(const Int_t nMax, const Int_t ebin, const Int_t mcIndex,
1251 TLorentzVector pi0, TLorentzVector g1, TLorentzVector g2,
1252 const Float_t m02, const Int_t pid)
1254 // Fill Armeteros type histograms
1255 Float_t en = pi0.Energy();
1256 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1258 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1259 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1260 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1261 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1263 // TO DO THE CALCULATIONS
1264 Float_t epsilon = 0;
1266 // Float_t angle = g2.Angle(g1.Vect());
1267 // Float_t phiPi0 = pi0.Phi();
1268 // Float_t phiGam1 = g1.Phi();
1269 // Float_t phiGam2 = g2.Phi();
1271 // printf("Phi: Pi0 %f, G1 %f, G2, %f, OpAng %f, G1-G2 %f, Pi0-G1 %f, Pi0-G2 %f, \n",phiPi0,phiGam1,phiGam2,angle,phiGam2-phiGam1,phiPi0-phiGam1,phiPi0-phiGam2);
1275 fhArmNLocMax1[0][ebin]->Fill(epsilon,alpha);
1276 if((m02OK && asyOK) && (asyOn || m02On))
1277 fhArmAfterCutsNLocMax1[0][ebin]->Fill(epsilon,alpha);
1278 if(pid==AliCaloPID::kPi0)
1279 fhArmPi0NLocMax1[0][ebin]->Fill(epsilon,alpha);
1283 fhArmNLocMax2[0][ebin]->Fill(epsilon,alpha);
1284 if((m02OK && asyOK) && (asyOn || m02On))
1285 fhArmAfterCutsNLocMax2[0][ebin]->Fill(epsilon,alpha);
1286 if(pid==AliCaloPID::kPi0)
1287 fhArmPi0NLocMax2[0][ebin]->Fill(epsilon,alpha);
1291 fhArmNLocMaxN[0][ebin]->Fill(epsilon,alpha);
1292 if((m02OK && asyOK) && (asyOn || m02On))
1293 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(epsilon,alpha);
1294 if(pid==AliCaloPID::kPi0)
1295 fhArmPi0NLocMaxN[0][ebin]->Fill(epsilon,alpha);
1298 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1302 fhArmNLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1303 if((m02OK && asyOK) && (asyOn || m02On))
1304 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1305 if(pid==AliCaloPID::kPi0)
1306 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1310 fhArmNLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1311 if((m02OK && asyOK) && (asyOn || m02On))
1312 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1313 if(pid==AliCaloPID::kPi0)
1314 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1318 fhArmNLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1319 if((m02OK && asyOK) && (asyOn || m02On))
1320 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1321 if(pid==AliCaloPID::kPi0)
1322 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1329 //__________________________________________________________________________________________________________________________________________
1330 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1331 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1333 // Fill some histograms integrating in few energy bins
1337 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1338 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1340 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1341 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1345 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1346 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1348 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1349 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1353 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1354 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1356 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1357 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1362 //________________________________________________________________________________________________________________________
1363 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1364 const Int_t nMax, const Float_t mass, const Float_t l0,
1365 const Float_t eta, const Float_t phi,
1366 const Bool_t matched, const Int_t mcindex)
1368 // Fill histograms for clusters before any selection after spliting
1370 Float_t splitFrac = (e1+e2)/en;
1373 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1375 fhNLocMax[0][matched]->Fill(en,nMax);
1376 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1377 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1379 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1381 fhNLocMax[mcindex][matched]->Fill(en,nMax);
1382 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1383 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1388 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1389 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1391 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1393 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1394 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1399 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1400 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1402 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1403 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1406 else if( nMax == 2 )
1408 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1409 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1411 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1413 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1414 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1419 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1420 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1422 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1423 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1426 else if( nMax >= 3 )
1428 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1429 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1431 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1433 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1434 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1440 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1441 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1443 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1444 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1451 //________________________________________________________________________________________________________________________
1452 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1453 const Float_t e1, const Float_t e2,
1454 const Int_t nMax, const Float_t mass, const Float_t l0,
1455 const Bool_t matched, const Int_t mcindex)
1457 // Fill histograms for clusters passing the first M02 selection
1459 Float_t efrac = eprim/en;
1460 Float_t efracSplit = 0;
1461 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1463 Float_t splitFrac = (e1+e2)/en;
1466 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1468 Int_t inlm = nMax-1;
1469 if(inlm > 2) inlm = 2;
1470 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1472 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1473 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1474 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1475 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1477 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1481 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1482 if(IsDataMC() && mcindex > 0 && mcindex < 7) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1487 fhMassNLocMax1[0][matched]->Fill(en,mass );
1488 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1490 // Effect of cuts in mass histograms
1492 if(!matched && asyOK && asyOn )
1494 fhMassAsyCutNLocMax1->Fill(en,mass);
1495 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1498 if(!matched && m02OK && m02On )
1500 fhMassM02CutNLocMax1->Fill(en,mass);
1501 fhAsymM02CutNLocMax1->Fill(en,asym );
1502 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1505 if((m02OK && asyOK) && (asyOn || m02On))
1507 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1508 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1510 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1512 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1513 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1519 fhMassNLocMax2[0][matched]->Fill(en,mass );
1520 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1522 // Effect of cuts in mass histograms
1524 if(!matched && asyOK && asyOn )
1526 fhMassAsyCutNLocMax2->Fill(en,mass);
1527 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1530 if(!matched && m02OK && m02On )
1532 fhMassM02CutNLocMax2->Fill(en,mass);
1533 fhAsymM02CutNLocMax2->Fill(en,asym );
1534 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1537 if((m02OK && asyOK) && (asyOn || m02On))
1539 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1540 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1542 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1544 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1545 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1551 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1552 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1554 // Effect of cuts in mass histograms
1556 if(!matched && asyOK && asyOn )
1558 fhMassAsyCutNLocMaxN->Fill(en,mass);
1559 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1562 if(!matched && m02OK && m02On )
1564 fhMassM02CutNLocMaxN->Fill(en,mass);
1565 fhAsymM02CutNLocMaxN->Fill(en,asym );
1566 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1569 if((m02OK && asyOK) && (asyOn || m02On))
1571 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1572 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1574 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1576 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1577 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1582 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1586 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1587 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1589 if((m02OK && asyOK) && (asyOn || m02On))
1591 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1592 if(splitFrac > splitFracMin)
1593 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1598 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1599 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1601 if((m02OK && asyOK) && (asyOn || m02On))
1603 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1604 if(splitFrac >splitFracMin)
1605 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1610 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1611 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1613 if((m02OK && asyOK) && (asyOn || m02On))
1615 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1616 if(splitFrac > splitFracMin )
1617 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1620 }//Work with MC truth
1624 //________________________________________________________________________________________________________________________
1625 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1626 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1627 const Float_t mass, const Float_t l0,
1628 const Float_t eta, const Float_t phi,
1629 const Bool_t matched, const Int_t mcindex)
1631 // Fill histograms for clusters passing the pi0 selection
1634 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1636 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
1637 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
1639 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1641 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
1642 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
1647 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1648 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1649 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1650 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1654 if(fFillHighMultHisto)
1656 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1657 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1659 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1660 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1665 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1666 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1667 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1668 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1672 if(fFillHighMultHisto)
1674 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1675 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1677 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1678 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1683 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1684 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1685 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1686 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1690 if(fFillHighMultHisto)
1692 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1693 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1695 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1696 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1700 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1704 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1705 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1706 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1707 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1712 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1713 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1714 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1715 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1719 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
1720 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1721 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
1722 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1724 }//Work with MC truth
1727 //________________________________________________________________________________________________________________________
1728 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1729 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1730 const Float_t mass, const Float_t l0,
1731 const Float_t eta, const Float_t phi,
1732 const Bool_t matched, const Int_t mcindex)
1734 // Fill histograms for clusters passing the eta selection
1737 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1741 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1742 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1743 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1744 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1748 if(fFillHighMultHisto)
1750 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1751 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1753 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1754 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1759 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
1760 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
1761 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
1762 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
1766 if(fFillHighMultHisto)
1768 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
1769 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
1771 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
1772 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1777 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
1778 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
1779 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
1780 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
1784 if(fFillHighMultHisto)
1786 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
1787 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1789 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
1790 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1794 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1798 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
1799 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
1800 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
1801 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
1805 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
1806 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
1807 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
1808 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
1813 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1814 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1815 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1816 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1818 }//Work with MC truth
1822 //_____________________________________________________________________________________________________________________
1823 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
1824 const Float_t mass, const Float_t l0,
1825 const Bool_t matched, const Int_t mcindex)
1827 // Fill histograms for clusters passing the photon selection
1831 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
1832 fhMassConNLocMax1[0][matched]->Fill(en,mass);
1833 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
1837 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
1838 fhMassConNLocMax2[0][matched]->Fill(en,mass);
1839 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
1843 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
1844 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
1845 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
1848 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1852 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
1853 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
1854 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
1858 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
1859 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
1860 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
1864 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
1865 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
1866 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
1869 }//Work with MC truth
1872 //_____________________________________________________________________________________________________________________
1873 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
1874 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
1875 const Float_t l0, const Float_t mass,
1876 const Int_t nMax, const Bool_t matched,
1877 const Float_t splitFrac, const Float_t asym,
1878 const Float_t eprim, const Float_t asymGen)
1880 // Fill histograms needing some MC input
1882 Float_t efrac = eprim/en;
1883 Float_t efracSplit = 0;
1884 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1885 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
1887 //printf("e1 %2.2f, e2 %2.2f, eprim %2.2f, ereco %2.2f, esplit/ereco %2.2f, egen/ereco %2.2f, egen/esplit %2.2f\n",
1888 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1890 if(ebin >= 0 && fFillEbinHisto)
1892 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1893 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1898 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1899 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
1900 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1901 if(asym > 0 && !matched)
1903 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
1904 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
1909 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
1910 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1913 if( en > fHistoECut )
1915 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1917 if(!matched && ebin >= 0 && fFillEbinHisto)
1919 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1920 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1922 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1924 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1925 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
1932 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1933 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1934 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1936 if(asym > 0 && !matched)
1938 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
1939 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
1944 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
1945 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1948 if( en > fHistoECut )
1950 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1952 if(!matched && ebin >= 0 && fFillEbinHisto)
1954 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1955 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1956 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1958 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1959 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
1967 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1968 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1969 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1970 if(asym > 0 && !matched)
1972 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
1973 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
1978 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
1979 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
1982 if( en > fHistoECut )
1984 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
1986 if(!matched && ebin >= 0 && fFillEbinHisto)
1988 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1989 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1991 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1993 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
1994 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2001 //__________________________________________________________________________________________________________________________________________________
2002 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
2003 const Int_t nc, const Float_t mass, const Float_t l0,
2004 const Float_t asym, const Float_t splitFrac,
2005 const Int_t inlm, const Int_t ebin, const Bool_t matched,
2006 const Int_t mcindex, const Int_t noverlaps)
2008 // Fill histograms for MC Overlaps
2010 //printf("en %f,mass %f,l0 %f,inlm %d,ebin %d,matched %d,mcindex %d,noverlaps %d \n",en,mass,l0,inlm,ebin,matched,mcindex,noverlaps);
2012 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2016 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2020 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2021 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2022 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2023 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2024 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2025 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2026 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2028 else if(noverlaps == 1)
2030 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2031 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2032 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2033 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2034 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2035 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2036 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2038 else if(noverlaps > 1)
2040 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2041 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2042 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2043 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2044 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2045 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2046 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2049 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
2051 else if(fFillTMHisto)
2053 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2057 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2058 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2059 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2060 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2061 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2062 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2063 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2065 else if(noverlaps == 1)
2067 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2068 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2069 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2070 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2071 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2072 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2073 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2075 else if(noverlaps > 1)
2077 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2078 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2079 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2080 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2081 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2082 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2083 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2086 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
2091 //__________________________________________________________________________________________________
2092 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
2093 const Bool_t matched, const Int_t mcindex,
2094 const Float_t mass , const Float_t l0)
2097 // Fill optional histograms with more SS parameters
2101 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2102 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2104 if (mcindex==kmcPi0 && !matched)
2106 if( energy > fHistoECut)
2108 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2109 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2113 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2114 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2118 else if( nMax == 2 )
2120 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2121 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2124 if (mcindex==kmcPi0 && !matched)
2126 if( energy > fHistoECut)
2128 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2129 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2133 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2134 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2138 else if( nMax >= 3 )
2140 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2141 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2143 if (mcindex==kmcPi0 && !matched)
2145 if( energy > fHistoECut)
2147 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2148 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2152 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2153 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2159 //______________________________________________________________________________________________________
2160 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
2161 const Bool_t matched, const Int_t mcindex,
2162 const Float_t mass , const Int_t ebin)
2164 // Fill optional histograms with more SS parameters
2166 Float_t en = cluster->E();
2168 // Get more Shower Shape parameters
2169 Float_t ll0 = 0., ll1 = 0.;
2170 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2171 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2173 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2174 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2176 Float_t dispAsy = -1;
2177 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2181 if( en > fHistoECut )
2183 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2184 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2185 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2187 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2189 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2190 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2191 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2195 if(!matched && ebin >= 0 && fFillEbinHisto)
2197 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2198 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2199 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2202 else if( nMax == 2 )
2204 if( en > fHistoECut )
2206 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2207 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2208 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2210 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2212 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2213 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2214 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2218 if(!matched && ebin >= 0 && fFillEbinHisto)
2220 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2221 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2222 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2226 else if( nMax >= 3 )
2228 if( en > fHistoECut )
2230 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2231 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2232 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2234 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2236 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2237 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2238 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2242 if(!matched && ebin >= 0 && fFillEbinHisto)
2244 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2245 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2246 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2253 //__________________________________________________________________________________________________
2254 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
2255 const Int_t absId1, const Int_t absId2)
2257 // Calculate weights and fill histograms
2259 AliVCaloCells* cells = 0;
2260 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2261 else cells = GetPHOSCells();
2263 // First recalculate energy in case non linearity was applied
2265 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2268 Int_t id = clus->GetCellsAbsId()[ipos];
2270 //Recalibrate cell energy if needed
2271 Float_t amp = cells->GetCellAmplitude(id);
2272 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2280 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
2284 //Get amplitude of main local maxima, recalibrate if needed
2285 Float_t amp1 = cells->GetCellAmplitude(absId1);
2286 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2287 Float_t amp2 = cells->GetCellAmplitude(absId2);
2288 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2290 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2291 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2293 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2294 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2295 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2297 //Get the ratio and log ratio to all cells in cluster
2298 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2300 Int_t id = clus->GetCellsAbsId()[ipos];
2302 //Recalibrate cell energy if needed
2303 Float_t amp = cells->GetCellAmplitude(id);
2304 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2306 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2307 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2308 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2310 if (id!=absId1 && id!=absId2)
2312 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2313 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2318 //Recalculate shower shape for different W0
2319 if(fCalorimeter=="EMCAL")
2321 Float_t l0org = clus->GetM02();
2322 Float_t l1org = clus->GetM20();
2323 Float_t dorg = clus->GetDispersion();
2324 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2326 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2328 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2329 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2331 Float_t l0 = 0., l1 = 0.;
2332 Float_t disp = 0., dEta = 0., dPhi = 0.;
2333 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2335 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2336 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2339 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2343 // Set the original values back
2344 clus->SetM02(l0org);
2345 clus->SetM20(l1org);
2346 clus->SetDispersion(dorg);
2347 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2349 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2351 Float_t l0 = 0., l1 = 0.;
2352 Float_t disp = 0., dEta = 0., dPhi = 0.;
2353 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2355 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2356 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2358 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2359 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2366 //________________________________________________________________________________________
2367 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster, const Int_t nMax,
2368 const Int_t mcindex)
2370 // Fill histograms related to track matching
2372 Float_t dZ = cluster->GetTrackDz();
2373 Float_t dR = cluster->GetTrackDx();
2374 Float_t en = cluster->E();
2376 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2378 dR = 2000., dZ = 2000.;
2379 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2382 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2384 if(TMath::Abs(dR) < 999)
2386 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2387 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2388 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2390 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2392 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2393 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2394 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2397 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2399 Bool_t positive = kFALSE;
2400 if(track) positive = (track->Charge()>0);
2406 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2407 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2408 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2410 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2412 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2413 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2414 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2419 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2420 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2421 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2423 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2425 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2426 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2427 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2436 //_______________________________________________________________
2437 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2439 //Save parameters used for analysis
2440 TString parList ; //this will be list of parameters used for this analysis.
2441 const Int_t buffersize = 255;
2442 char onePar[buffersize] ;
2444 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2447 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2449 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2451 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2453 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2455 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2457 if(fFillSSWeightHisto)
2459 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2463 return new TObjString(parList) ;
2467 //________________________________________________________________
2468 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2470 // Create histograms to be saved in output file and
2471 // store them in outputContainer
2472 TList * outputContainer = new TList() ;
2473 outputContainer->SetName("InsideClusterHistos") ;
2475 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2476 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2477 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2478 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2479 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2480 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2482 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2483 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2484 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2485 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2486 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2487 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2489 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2490 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2491 Bool_t splitOn = kFALSE;
2492 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2493 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2494 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2496 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
2497 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
2498 TString snlm [] = {"1","2","N"};
2502 if(IsDataMC()) n = 7;
2504 Int_t nMaxBins = 10;
2506 TString sMatched[] = {"","Matched"};
2509 if(!fFillTMHisto) nMatched = 1;
2511 if(fCheckSplitDistToBad)
2513 for(Int_t inlm = 0; inlm < 3; inlm++)
2515 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
2516 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2517 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2518 fhMassBadDistClose[inlm]->SetYTitle("M (GeV/c^{2})");
2519 fhMassBadDistClose[inlm]->SetXTitle("E (GeV)");
2520 outputContainer->Add(fhMassBadDistClose[inlm]) ;
2522 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
2523 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2524 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2525 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
2526 fhM02BadDistClose[inlm]->SetXTitle("E (GeV)");
2527 outputContainer->Add(fhM02BadDistClose[inlm]) ;
2529 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
2530 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2531 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2532 fhMassOnBorder[inlm]->SetYTitle("M (GeV/c^{2})");
2533 fhMassOnBorder[inlm]->SetXTitle("E (GeV)");
2534 outputContainer->Add(fhMassOnBorder[inlm]) ;
2536 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
2537 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2538 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2539 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
2540 fhM02OnBorder[inlm]->SetXTitle("E (GeV)");
2541 outputContainer->Add(fhM02OnBorder[inlm]) ;
2546 for(Int_t i = 0; i < n; i++)
2548 for(Int_t j = 0; j < nMatched; j++)
2551 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2552 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2553 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2554 fhNLocMax[i][j] ->SetYTitle("N maxima");
2555 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2556 outputContainer->Add(fhNLocMax[i][j]) ;
2558 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2559 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
2560 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2561 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
2562 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
2563 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
2566 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2567 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
2568 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2569 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
2570 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
2571 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
2575 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2576 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2577 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2578 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2579 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2580 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2582 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2583 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2584 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2585 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2586 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2587 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2590 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2591 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2592 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2593 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2594 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2595 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2598 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2599 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2600 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2601 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2602 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2603 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2605 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2606 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2607 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2608 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2609 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2610 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2612 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2613 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2614 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2615 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2616 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2617 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2619 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2620 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2621 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2622 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2623 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2624 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2626 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2627 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2628 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2629 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2630 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2631 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2633 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2634 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2635 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2636 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2637 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2638 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2640 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2641 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2642 nptbins,ptmin,ptmax,200,-1,1);
2643 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2644 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2645 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2647 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2648 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2649 nptbins,ptmin,ptmax,200,-1,1);
2650 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2651 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2652 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2654 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2655 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2656 nptbins,ptmin,ptmax,200,-1,1);
2657 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2658 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2659 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2661 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2662 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2663 nptbins,ptmin,ptmax,120,0,1.2);
2664 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2665 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2666 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2668 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2669 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2670 nptbins,ptmin,ptmax,120,0,1.2);
2671 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2672 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2673 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2675 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2676 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2677 nptbins,ptmin,ptmax,120,0,1.2);
2678 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2679 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2680 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
2686 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2687 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2688 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
2689 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
2690 outputContainer->Add(fhMassM02CutNLocMax1) ;
2692 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2693 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2694 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
2695 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
2696 outputContainer->Add(fhMassM02CutNLocMax2) ;
2698 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2699 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2700 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2701 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
2702 outputContainer->Add(fhMassM02CutNLocMaxN) ;
2704 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2705 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2706 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
2707 outputContainer->Add(fhAsymM02CutNLocMax1) ;
2709 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2710 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2711 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
2712 outputContainer->Add(fhAsymM02CutNLocMax2) ;
2714 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2715 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2716 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
2717 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
2720 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
2721 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2722 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
2723 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
2724 outputContainer->Add(fhMassSplitECutNLocMax1) ;
2726 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2727 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2728 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
2729 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
2730 outputContainer->Add(fhMassSplitECutNLocMax2) ;
2732 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2733 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2734 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2735 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
2736 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
2742 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2743 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2744 fhMassAsyCutNLocMax1->SetYTitle("M (GeV/c^{2})");
2745 fhMassAsyCutNLocMax1->SetXTitle("E (GeV)");
2746 outputContainer->Add(fhMassAsyCutNLocMax1) ;
2748 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2749 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2750 fhMassAsyCutNLocMax2->SetYTitle("M (GeV/c^{2})");
2751 fhMassAsyCutNLocMax2->SetXTitle("E (GeV)");
2752 outputContainer->Add(fhMassAsyCutNLocMax2) ;
2754 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2755 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2756 fhMassAsyCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2757 fhMassAsyCutNLocMaxN->SetXTitle("E (GeV)");
2758 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
2760 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of NLM=1 vs cluster Energy, AsyCut, no TM",
2761 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2762 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
2763 fhM02AsyCutNLocMax1->SetXTitle("E (GeV)");
2764 outputContainer->Add(fhM02AsyCutNLocMax1) ;
2766 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of NLM=2 vs cluster Energy, AsyCut, no TM",
2767 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2768 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
2769 fhM02AsyCutNLocMax2->SetXTitle("E (GeV)");
2770 outputContainer->Add(fhM02AsyCutNLocMax2) ;
2772 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
2773 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2774 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
2775 fhM02AsyCutNLocMaxN->SetXTitle("E (GeV)");
2776 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
2782 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2783 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2784 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2785 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2786 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
2787 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
2789 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2790 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2791 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2792 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2793 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
2794 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
2797 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2798 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2799 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2800 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2801 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2802 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
2804 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2805 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
2806 nptbins,ptmin,ptmax,120,0,1.2);
2807 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2808 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2809 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
2811 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2812 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
2813 nptbins,ptmin,ptmax,120,0,1.2);
2814 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2815 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2816 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
2818 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2819 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
2820 nptbins,ptmin,ptmax,120,0,1.2);
2821 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2822 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2823 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
2826 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2827 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2828 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2829 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2830 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
2831 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
2833 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2834 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2835 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2836 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2837 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
2838 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
2840 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2841 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2842 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2843 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2844 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
2845 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
2847 if(fFillSSExtraHisto)
2849 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2850 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2851 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2852 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2853 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2854 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
2856 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2857 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2858 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2859 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2860 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2861 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
2863 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2864 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2865 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2866 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2867 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2868 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
2870 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2871 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2872 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2873 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2874 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2875 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
2877 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2878 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2879 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2880 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2881 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2882 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
2884 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2885 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2886 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2887 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2888 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2889 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
2891 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2892 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2893 200,-1,1,mbins,mmin,mmax);
2894 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2895 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2896 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
2898 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2899 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2900 200,-1,1,mbins,mmin,mmax);
2901 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2902 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2903 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
2905 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2906 Form("Invariant mass of N>2 local maxima cells vsA = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s %s",ptype[i].Data(),sMatched[j].Data()),
2907 200,-1,1,mbins,mmin,mmax);
2908 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2909 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2910 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
2916 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2917 Form("Number of local maxima in cluster %s, M02 cut",ptype[i].Data()),
2918 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2919 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2920 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2921 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2924 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
2926 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2927 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2928 nptbins,ptmin,ptmax,200,0,2);
2929 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2930 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2931 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
2933 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2934 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2935 nptbins,ptmin,ptmax,200,0,2);
2936 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2937 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2938 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
2940 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2941 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2942 nptbins,ptmin,ptmax,200,0,2);
2943 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2944 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2945 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
2947 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2948 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2949 nptbins,ptmin,ptmax,200,0,2);
2950 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2951 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2952 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
2954 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2955 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2956 nptbins,ptmin,ptmax,200,0,2);
2957 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2958 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2959 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
2961 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2962 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2963 nptbins,ptmin,ptmax,200,0,2);
2964 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2965 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2966 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
2969 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2970 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2971 nptbins,ptmin,ptmax,200,0,2);
2972 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2973 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2974 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
2976 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2977 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2978 nptbins,ptmin,ptmax,200,0,2);
2979 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2980 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2981 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
2983 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2984 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2985 nptbins,ptmin,ptmax,200,0,2);
2986 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2987 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2988 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
2990 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2991 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2992 nptbins,ptmin,ptmax,200,0,2);
2993 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2994 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2995 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
2997 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2998 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2999 nptbins,ptmin,ptmax,200,0,2);
3000 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3001 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3002 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3004 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3005 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3006 nptbins,ptmin,ptmax,200,0,2);
3007 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3008 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3009 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3011 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3012 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3014 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3015 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3016 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3018 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3019 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3021 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3022 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3023 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3026 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3027 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3029 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3030 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3031 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3034 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3035 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3036 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3037 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3038 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
3039 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3041 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3042 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3043 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3044 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3045 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
3046 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3049 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3050 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3051 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3052 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3053 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
3054 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3057 // Histograms after cluster identification
3062 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3063 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3064 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3065 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3066 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3067 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3069 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3070 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3071 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3072 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3073 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3074 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3076 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3077 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3078 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3079 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3080 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3081 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3083 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3084 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3085 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3086 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3087 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3088 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3090 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3091 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
3092 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3093 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3094 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3095 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3097 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3098 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3099 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3100 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3101 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3102 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3104 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3105 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3106 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3107 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
3108 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3109 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3111 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3112 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3113 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3114 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
3115 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3116 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3118 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3119 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3120 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3121 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
3122 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3123 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3127 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3128 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3129 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3130 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
3131 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3132 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3134 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3135 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3136 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3137 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
3138 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3139 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3141 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3142 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3143 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3144 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
3145 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3146 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3153 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3154 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3155 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3156 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3157 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3158 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3161 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3162 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3163 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3164 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3165 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3166 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3168 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3169 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3170 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3171 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3172 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3173 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3175 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3176 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3177 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3178 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3179 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3180 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3182 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3183 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3184 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3185 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3186 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3187 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3189 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3190 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3191 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3192 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3193 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3194 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3196 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3197 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3198 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3199 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
3200 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3201 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3203 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3204 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3205 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3206 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
3207 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3208 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
3210 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3211 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3212 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3213 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3214 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3215 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
3219 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3220 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3221 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3222 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
3223 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3224 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
3226 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3227 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3228 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3229 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
3230 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3231 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
3233 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3234 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3235 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3236 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
3237 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3238 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
3243 if(fFillIdConvHisto)
3245 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3246 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3247 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3248 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3249 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3250 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
3252 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3253 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3254 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3255 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3256 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3257 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
3259 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3260 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3261 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3262 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3263 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3264 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
3267 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3268 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3269 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3270 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3271 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3272 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
3274 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3275 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3276 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3277 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3278 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3279 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
3281 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3282 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3283 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3284 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3285 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3286 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
3288 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3289 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3290 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3291 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
3292 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3293 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
3295 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3296 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3297 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3298 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
3299 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3300 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
3302 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3303 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3304 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3305 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3306 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3307 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
3311 } // matched, not matched
3315 for(Int_t j = 0; j < 4; j++)
3318 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
3319 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3320 120,0,1.2,mbins,mmin,mmax);
3321 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3322 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3323 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
3325 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
3326 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3327 120,0,1.2,mbins,mmin,mmax);
3328 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3329 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3330 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
3332 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
3333 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3334 120,0,1.2,mbins,mmin,mmax);
3335 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3336 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3337 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
3339 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
3341 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
3342 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
3343 200,0,2,nMaxBins,0,nMaxBins);
3344 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
3345 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3346 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
3348 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
3349 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
3350 200,0,2,nMaxBins,0,nMaxBins);
3351 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
3352 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
3353 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
3355 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3356 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
3357 200,0,2,mbins,mmin,mmax);
3358 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3359 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3360 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
3362 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3363 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
3364 200,0,2,mbins,mmin,mmax);
3365 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3366 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3367 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
3369 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3370 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
3371 200,0,2,mbins,mmin,mmax);
3372 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3373 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3374 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
3376 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3377 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
3378 200,0,2,ssbins,ssmin,ssmax);
3379 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3380 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3381 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
3383 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3384 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
3385 200,0,2,ssbins,ssmin,ssmax);
3386 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3387 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3388 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
3390 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3391 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
3392 200,0,2,ssbins,ssmin,ssmax);
3393 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3394 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3395 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
3399 } // MC particle list
3401 if(fFillHighMultHisto)
3405 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
3406 "E vs Centrality, selected pi0 cluster with NLM=1",
3407 nptbins,ptmin,ptmax,100,0,100);
3408 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
3409 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
3410 outputContainer->Add(fhCentralityPi0NLocMax1) ;
3412 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
3413 "E vs Centrality, selected pi0 cluster with NLM=2",
3414 nptbins,ptmin,ptmax,100,0,100);
3415 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
3416 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
3417 outputContainer->Add(fhCentralityPi0NLocMax2) ;
3419 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
3420 "E vs Centrality, selected pi0 cluster with NLM>1",
3421 nptbins,ptmin,ptmax,100,0,100);
3422 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
3423 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
3424 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
3428 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
3429 "E vs Centrality, selected pi0 cluster with NLM=1",
3430 nptbins,ptmin,ptmax,100,0,100);
3431 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
3432 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
3433 outputContainer->Add(fhCentralityEtaNLocMax1) ;
3435 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3436 "E vs Centrality, selected pi0 cluster with NLM=2",
3437 nptbins,ptmin,ptmax,100,0,100);
3438 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3439 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3440 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3442 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3443 "E vs Centrality, selected pi0 cluster with NLM>1",
3444 nptbins,ptmin,ptmax,100,0,100);
3445 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3446 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3447 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3450 // E vs Event plane angle
3452 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3453 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3454 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3455 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3456 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3458 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3459 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3460 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3461 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3462 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3464 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3465 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3466 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3467 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3468 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3472 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3473 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3474 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3475 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3476 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3478 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3479 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3480 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3481 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3482 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3484 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3485 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3486 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3487 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3488 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3494 for(Int_t i = 0; i < 4; i++)
3496 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3497 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3498 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3499 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3500 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3501 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3503 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3504 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3505 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3506 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3507 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3508 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3510 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3511 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3512 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3513 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3514 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3515 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3518 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3519 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
3520 200,-1,1,mbins,mmin,mmax);
3521 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3522 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3523 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3525 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3526 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
3527 200,-1,1,mbins,mmin,mmax);
3528 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3529 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3530 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3532 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3533 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
3534 200,-1,1,mbins,mmin,mmax);
3535 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3536 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3537 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3540 if(IsDataMC() && fFillMCHisto)
3542 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3543 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3544 ssbins,ssmin,ssmax,100,0,1);
3545 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3546 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3547 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3549 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3550 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3551 ssbins,ssmin,ssmax,100,0,1);
3552 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3553 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3554 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3556 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3557 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3558 ssbins,ssmin,ssmax,100,0,1);
3559 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3560 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3561 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3564 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3565 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
3567 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3568 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3569 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3571 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3572 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
3574 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3575 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3576 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3578 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3579 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
3581 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3582 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3583 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3586 if(fFillSSExtraHisto)
3588 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3589 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3590 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3591 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3592 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3593 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3595 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3596 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3597 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3598 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3599 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3600 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3602 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3603 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
3604 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3605 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3606 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3607 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3609 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3610 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3611 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3612 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3613 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3614 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3616 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3617 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3618 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3619 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3620 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3621 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3623 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3624 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
3625 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3626 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3627 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3628 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3630 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3631 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
3632 200,-1,1,mbins,mmin,mmax);
3633 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3634 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3635 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3637 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3638 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
3639 200,-1,1,mbins,mmin,mmax);
3640 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3641 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3642 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3644 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3645 Form("Invariant mass of N>2 local maxima cells vs A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
3646 200,-1,1,mbins,mmin,mmax);
3647 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3648 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3649 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3654 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3656 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3657 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3658 nptbins,ptmin,ptmax,200,0,2);
3659 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3660 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3661 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3663 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3664 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3665 nptbins,ptmin,ptmax,200,0,2);
3666 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3667 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3668 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3671 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3672 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3673 nptbins,ptmin,ptmax,200,0,2);
3674 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3675 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3676 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3678 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3679 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3680 nptbins,ptmin,ptmax,200,0,2);
3681 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3682 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3683 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3685 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3686 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3687 nptbins,ptmin,ptmax,200,0,2);
3688 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3689 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3690 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3693 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3694 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3695 nptbins,ptmin,ptmax,200,0,2);
3696 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3697 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3698 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
3702 if(fFillTMResidualHisto && fFillTMHisto)
3704 for(Int_t i = 0; i < n; i++)
3707 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
3708 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
3709 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3710 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3711 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
3712 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3714 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
3715 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
3716 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3717 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3718 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
3719 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3721 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
3722 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
3724 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
3725 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
3726 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3727 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3728 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
3729 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3731 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
3732 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
3733 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3734 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3735 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
3736 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3738 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
3739 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
3741 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
3742 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
3743 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3744 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3745 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
3746 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3748 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
3749 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
3750 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3751 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3752 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
3753 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3755 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
3756 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
3758 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
3759 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
3760 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3761 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3762 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
3763 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3765 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
3766 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
3767 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3768 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3769 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
3770 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3772 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
3773 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
3775 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
3776 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
3777 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3778 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3779 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
3780 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3782 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
3783 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
3784 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3785 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3786 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
3787 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3789 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
3790 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
3792 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
3793 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
3794 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3795 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3796 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
3797 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3799 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
3800 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
3801 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3802 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3803 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
3804 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3806 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
3807 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
3809 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
3810 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
3811 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3812 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3813 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
3814 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3816 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
3817 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
3818 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3819 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3820 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
3821 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3823 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
3824 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
3826 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
3827 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
3828 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3829 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3830 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
3831 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3833 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
3834 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
3835 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3836 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3837 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
3838 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3840 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
3841 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
3843 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
3844 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
3845 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3846 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3847 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
3848 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3850 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
3851 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
3852 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3853 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3854 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
3855 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3857 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
3858 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
3865 for(Int_t j = 0; j < nMatched; j++)
3868 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
3869 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
3870 nptbins,ptmin,ptmax,200,0,0.2);
3871 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
3872 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
3873 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
3875 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
3876 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3877 nptbins,ptmin,ptmax,200,0,0.2);
3878 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
3879 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
3880 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
3882 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
3883 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3884 nptbins,ptmin,ptmax,200,0,0.2);
3885 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
3886 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
3887 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
3889 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
3890 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3891 mbins,mmin,mmax,200,0,0.2);
3892 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
3893 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
3894 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
3896 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
3897 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3898 mbins,mmin,mmax,200,0,0.2);
3899 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
3900 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
3901 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
3903 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
3904 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3905 mbins,mmin,mmax,200,0,0.2);
3906 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
3907 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
3908 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
3913 for(Int_t j = 0; j < nMatched; j++)
3915 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
3916 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
3917 100,-1,1,120,0,1.2);
3918 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3919 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3920 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
3922 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
3923 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
3924 100,-1,1,120,0,1.2);
3925 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3926 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3927 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
3929 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
3930 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
3931 100,-1,1,120,0,1.2);
3932 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3933 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3934 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
3938 fhClusterEtaPhiNLocMax1 = new TH2F
3939 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3940 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3941 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
3942 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
3944 fhClusterEtaPhiNLocMax2 = new TH2F
3945 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3946 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3947 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
3948 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
3950 fhClusterEtaPhiNLocMaxN = new TH2F
3951 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3952 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3953 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
3954 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
3956 fhPi0EtaPhiNLocMax1 = new TH2F
3957 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3958 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
3959 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
3960 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
3962 fhPi0EtaPhiNLocMax2 = new TH2F
3963 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3964 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
3965 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
3966 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
3968 fhPi0EtaPhiNLocMaxN = new TH2F
3969 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3970 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3971 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
3972 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
3976 fhEtaEtaPhiNLocMax1 = new TH2F
3977 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3978 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3979 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
3980 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
3982 fhEtaEtaPhiNLocMax2 = new TH2F
3983 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3984 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3985 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
3986 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
3988 fhEtaEtaPhiNLocMaxN = new TH2F
3989 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3990 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3991 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
3992 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
3995 if(fFillSSWeightHisto)
3997 for(Int_t nlm = 0; nlm < 3; nlm++)
3999 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
4000 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
4001 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
4002 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
4003 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
4004 outputContainer->Add(fhPi0CellE[nlm]) ;
4006 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
4007 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
4008 nptbins,ptmin,ptmax, 100,0,1);
4009 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
4010 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
4011 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
4013 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
4014 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
4015 nptbins,ptmin,ptmax, 100,-10,0);
4016 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
4017 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
4018 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
4021 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
4022 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
4023 nptbins,ptmin,ptmax, 100,0,1);
4024 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
4025 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4026 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
4028 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
4029 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
4030 nptbins,ptmin,ptmax, 100,0,1);
4031 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
4032 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
4033 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
4035 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
4036 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
4037 nptbins,ptmin,ptmax, 100,0,1);
4038 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
4039 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
4040 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
4042 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
4043 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
4044 nptbins,ptmin,ptmax, 100,0,1);
4045 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
4046 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
4047 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
4049 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
4050 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
4051 nptbins,ptmin,ptmax, 200,0,2);
4052 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
4053 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4054 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
4057 for(Int_t i = 0; i < fSSWeightN; i++)
4059 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
4060 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
4061 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4062 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4063 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
4064 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
4067 for(Int_t i = 0; i < fSSECellCutN; i++)
4069 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
4070 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
4071 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4072 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4073 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
4074 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
4080 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
4082 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4083 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4084 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4085 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
4087 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4088 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4089 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4090 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
4092 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4093 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4094 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4095 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
4099 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4100 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4101 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4102 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
4104 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4105 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4106 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4107 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
4109 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4110 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4111 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4112 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
4115 if(fFillNCellHisto && IsDataMC())
4118 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4119 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4120 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
4121 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
4123 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4124 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4125 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
4126 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
4128 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4129 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4130 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
4131 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
4133 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4134 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4135 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
4136 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
4138 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4139 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4140 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
4141 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
4143 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4144 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4145 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
4146 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
4148 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4149 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4150 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
4151 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
4153 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4154 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4155 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
4156 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
4158 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4159 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4160 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
4161 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
4163 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4164 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4165 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
4166 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
4168 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4169 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4170 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
4171 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
4173 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4174 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4175 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
4176 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
4180 if(IsDataMC() && fFillMCOverlapHisto)
4182 for(Int_t i = 1; i < n; i++)
4184 for(Int_t j = 0; j < 3; j++)
4186 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4187 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4188 nptbins,ptmin,ptmax,10,0,10);
4189 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
4190 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
4191 outputContainer->Add(fhMCENOverlaps[j][i]) ;
4193 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4194 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4195 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4196 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
4197 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
4198 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
4200 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4201 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4202 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4203 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
4204 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
4205 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
4207 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4208 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4209 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4210 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
4211 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
4212 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
4214 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4215 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4216 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4217 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4218 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
4219 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
4221 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4222 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4223 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4224 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4225 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
4226 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
4228 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4229 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4230 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4231 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
4232 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
4233 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
4235 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4236 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4237 nptbins,ptmin,ptmax,100,0,1);
4238 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
4239 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
4240 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
4242 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4243 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4244 nptbins,ptmin,ptmax,100,0,1);
4245 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
4246 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
4247 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
4249 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4250 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4251 nptbins,ptmin,ptmax,100,0,1);
4252 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
4253 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
4254 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
4259 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4260 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4261 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4262 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
4263 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
4264 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
4266 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4267 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4268 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4269 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
4270 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
4271 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
4273 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4274 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4275 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4276 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
4277 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
4278 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
4281 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4282 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4283 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4284 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
4285 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
4286 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
4288 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4289 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4290 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4291 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
4292 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
4293 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
4295 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4296 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4297 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4298 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
4299 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
4300 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
4303 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4304 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4305 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4306 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4307 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4308 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
4310 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4311 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4312 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4313 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4314 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4315 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
4317 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4318 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4319 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4320 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4321 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4322 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
4325 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4326 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4327 nptbins,ptmin,ptmax,120,0,1.2);
4328 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4329 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
4330 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
4332 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4333 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4334 nptbins,ptmin,ptmax,120,0,1.2);
4335 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4336 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
4337 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
4339 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4340 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4341 nptbins,ptmin,ptmax,120,0,1.2);
4342 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4343 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
4344 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
4348 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
4349 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4350 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4351 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
4352 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4353 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
4355 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
4356 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4357 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4358 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
4359 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4360 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
4362 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
4363 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4364 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4365 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
4366 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4367 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
4372 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4373 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4374 nptbins,ptmin,ptmax,10,0,10);
4375 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
4376 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
4377 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
4379 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4380 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4381 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4382 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4383 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
4384 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
4386 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4387 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4388 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4389 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4390 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
4391 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
4393 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4394 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4395 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4396 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
4397 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4398 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
4400 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4401 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4402 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4403 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4404 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4405 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
4407 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4408 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4409 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4410 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4411 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4412 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
4414 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4415 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4416 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4417 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4418 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4419 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
4422 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4423 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4424 nptbins,ptmin,ptmax,100,0,1);
4425 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
4426 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4427 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
4429 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4430 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4431 nptbins,ptmin,ptmax,100,0,1);
4432 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
4433 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4434 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
4436 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4437 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4438 nptbins,ptmin,ptmax,100,0,1);
4439 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
4440 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4441 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
4444 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4445 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4446 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4447 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
4448 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4449 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
4451 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4452 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4453 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4454 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
4455 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4456 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4458 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4459 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4460 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4461 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4462 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4463 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4465 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4466 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4467 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4468 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4469 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4470 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4472 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4473 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4474 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4475 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4476 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4477 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
4479 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4480 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4481 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4482 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
4483 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
4484 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
4487 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4488 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4489 nptbins,ptmin,ptmax,120,0,1.2);
4490 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4491 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4492 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
4494 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4495 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4496 nptbins,ptmin,ptmax,120,0,1.2);
4497 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4498 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4499 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
4501 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4502 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4503 nptbins,ptmin,ptmax,120,0,1.2);
4504 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4505 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4506 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
4511 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4512 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4513 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4514 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4515 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4516 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4518 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4519 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4520 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4521 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4522 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4523 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
4525 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4526 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4527 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4528 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
4529 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4530 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
4538 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4539 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4540 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
4541 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
4542 outputContainer->Add(fhMCPi0HighNLMPair) ;
4544 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4545 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4546 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
4547 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
4548 outputContainer->Add(fhMCPi0LowNLMPair) ;
4550 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4551 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4552 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
4553 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
4554 outputContainer->Add(fhMCPi0AnyNLMPair) ;
4556 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4557 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4558 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
4559 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
4560 outputContainer->Add(fhMCPi0NoneNLMPair) ;
4563 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4564 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4565 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
4566 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4567 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
4569 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4570 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4571 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
4572 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4573 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
4575 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4576 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4577 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
4578 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4579 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
4581 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4582 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4583 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
4584 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4585 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
4588 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4589 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4590 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
4591 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
4592 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
4594 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4595 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4596 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
4597 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
4598 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
4600 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4601 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4602 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
4603 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
4604 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
4606 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4607 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4608 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
4609 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
4610 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
4612 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4613 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4614 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4615 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4616 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
4618 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4619 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4620 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4621 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4622 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
4624 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4625 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4626 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4627 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4628 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
4630 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4631 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4632 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4633 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4634 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
4637 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
4638 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4639 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
4640 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
4641 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
4643 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
4644 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4645 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
4646 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
4647 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
4649 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
4650 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4651 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
4652 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
4653 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
4655 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
4656 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4657 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
4658 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
4659 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
4661 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
4662 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4663 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
4664 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
4665 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
4667 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
4668 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4669 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
4670 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
4671 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
4674 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
4675 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4676 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
4677 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
4678 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
4680 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
4681 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4682 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
4683 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
4684 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
4686 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
4687 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4688 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
4689 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
4690 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
4692 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
4693 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4694 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
4695 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
4696 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
4698 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
4699 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4700 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
4701 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
4702 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
4704 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
4705 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4706 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
4707 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
4708 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
4711 for(Int_t nlm = 0; nlm < 3; nlm++)
4713 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
4714 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
4715 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4716 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4717 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("E (GeV)");
4718 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
4720 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
4721 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
4722 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4723 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4724 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("E (GeV)");
4725 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
4727 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
4728 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
4729 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4730 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4731 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("E (GeV)");
4732 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
4734 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
4735 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
4736 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4737 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4738 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("E (GeV)");
4739 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
4741 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
4742 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
4743 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4744 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4745 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("E (GeV)");
4746 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
4748 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
4749 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
4750 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4751 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4752 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("E (GeV)");
4753 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
4756 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
4757 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
4758 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4759 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4760 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4761 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
4763 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
4764 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
4765 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4766 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4767 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4768 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
4770 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
4771 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4772 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4773 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4774 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4775 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
4777 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
4778 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4779 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4780 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4781 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4782 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
4784 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
4785 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
4786 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4787 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4788 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("E (GeV)");
4789 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
4791 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
4792 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
4793 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4794 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4795 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4796 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
4798 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
4799 Form("(E_{reco}-E_{gen})/E_{gen} vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
4800 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4801 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4802 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4803 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
4805 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
4806 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
4807 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4808 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4809 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E (GeV)");
4810 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
4812 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
4813 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
4814 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4815 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4816 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4817 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
4819 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
4820 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
4821 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4822 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4823 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4824 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
4826 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
4827 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
4828 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4829 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4830 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4831 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
4833 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
4834 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
4835 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4836 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4837 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4838 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
4840 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
4841 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4842 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4843 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4844 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4845 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
4847 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
4848 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4849 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4850 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4851 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4852 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
4854 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
4855 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
4856 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4857 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4858 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4859 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
4861 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
4862 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
4863 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4864 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4865 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4866 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
4868 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
4869 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
4870 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4871 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4872 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4873 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
4875 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
4876 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
4877 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4878 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4879 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4880 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
4882 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
4883 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
4884 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4885 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4886 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4887 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
4889 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
4890 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
4891 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4892 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4893 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4894 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
4896 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
4897 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4898 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4899 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4900 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4901 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
4903 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
4904 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4905 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4906 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4907 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4908 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
4912 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
4913 nptbins,ptmin,ptmax,5,0,5);
4914 //fhMCEOverlapType ->SetYTitle("Overlap Type");
4915 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
4916 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4917 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4918 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4919 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
4920 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
4921 outputContainer->Add(fhMCEOverlapType) ;
4923 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
4924 nptbins,ptmin,ptmax,5,0,5);
4925 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
4926 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
4927 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4928 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4929 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4930 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
4931 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
4932 outputContainer->Add(fhMCEOverlapTypeMatch) ;
4934 }// MC analysis, check overlaps
4939 for(Int_t inlm = 0; inlm < 3; inlm++)
4941 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
4942 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0",inlm),
4943 nptbins,ptmin,ptmax,200,-1,1);
4944 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("A_{reco} - A_{gen}");
4945 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("E (GeV)");
4946 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
4948 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
4949 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0Conv",inlm),
4950 nptbins,ptmin,ptmax,200,-1,1);
4951 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("A_{reco} - A_{gen}");
4952 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("E (GeV)");
4953 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
4957 if(fFillArmenterosHisto)
4959 for(Int_t i = 0; i < 7; i++) // MC bin
4961 for(Int_t j = 0; j < 4; j++) // E bin
4963 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
4964 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
4965 200, -1, 1, nptbins,ptmin,ptmax);
4966 fhArmNLocMax1[i][j]->SetYTitle("#epsilon");
4967 fhArmNLocMax1[i][j]->SetXTitle("#alpha");
4968 outputContainer->Add(fhArmNLocMax1[i][j]) ;
4970 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
4971 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
4972 200, -1, 1, nptbins,ptmin,ptmax);
4973 fhArmNLocMax2[i][j]->SetYTitle("#epsilon");
4974 fhArmNLocMax2[i][j]->SetXTitle("#alpha");
4975 outputContainer->Add(fhArmNLocMax2[i][j]) ;
4977 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
4978 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
4979 200, -1, 1, nptbins,ptmin,ptmax);
4980 fhArmNLocMaxN[i][j]->SetYTitle("#epsilon");
4981 fhArmNLocMaxN[i][j]->SetXTitle("#alpha");
4982 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
4986 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
4987 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
4988 200, -1, 1, nptbins,ptmin,ptmax);
4989 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#epsilon");
4990 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha");
4991 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
4993 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
4994 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
4995 200, -1, 1, nptbins,ptmin,ptmax);
4996 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#epsilon");
4997 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha");
4998 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
5000 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
5001 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
5002 200, -1, 1, nptbins,ptmin,ptmax);
5003 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#epsilon");
5004 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha");
5005 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
5008 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
5009 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
5010 200, -1, 1, nptbins,ptmin,ptmax);
5011 fhArmPi0NLocMax1[i][j]->SetYTitle("#epsilon");
5012 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha");
5013 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
5015 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
5016 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
5017 200, -1, 1, nptbins,ptmin,ptmax);
5018 fhArmPi0NLocMax2[i][j]->SetYTitle("#epsilon");
5019 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha");
5020 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
5022 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
5023 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
5024 200, -1, 1, nptbins,ptmin,ptmax);
5025 fhArmPi0NLocMaxN[i][j]->SetYTitle("#epsilon");
5026 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha");
5027 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
5033 return outputContainer ;
5037 //_____________________________________________________________________________
5038 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
5039 Int_t & mcindex, Int_t & tag)
5042 // Assign mc index depending on MC bit set, to be used in histograms arrays
5044 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
5046 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
5047 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
5048 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
5049 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
5050 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5051 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
5052 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5053 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
5054 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
5056 //printf("MC index %d\n",mcindex);
5060 //______________________________________________________________________________________________________________
5061 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
5062 const Int_t mctag, const Bool_t matched,
5063 Float_t & eprim, Float_t & asymGen, Int_t & noverlaps )
5065 // Check origin of the candidates, get primary kinematics if overlapped meson decay
5068 Int_t mcLabel = cluster->GetLabel();
5070 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
5071 eprim = primary.E();
5073 Int_t mesonLabel = -1;
5075 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
5077 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
5079 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
5080 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
5081 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5085 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
5086 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
5087 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5091 if(!fFillMCOverlapHisto) return;
5093 const UInt_t nlabels = cluster->GetNLabels();
5094 Int_t overpdg[nlabels];
5095 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
5097 for(Int_t iover = 0; iover < noverlaps; iover++)
5099 Float_t histobin = -1;
5100 Int_t mpdg = overpdg[iover];
5102 if (mpdg==22) histobin = 0.5;
5103 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
5104 else if(mpdg==-999999) histobin = 4.5;
5107 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
5108 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
5109 else histobin = 3.5;
5110 //printf("charge %f\n",charge);
5113 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
5116 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
5117 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
5122 //___________________________________________
5123 void AliAnaInsideClusterInvariantMass::Init()
5127 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
5129 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
5132 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
5134 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
5138 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
5140 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
5147 //_____________________________________________________
5148 void AliAnaInsideClusterInvariantMass::InitParameters()
5150 //Initialize the parameters of the analysis.
5151 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
5153 fCalorimeter = "EMCAL" ;
5161 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
5162 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
5165 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
5166 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
5171 //__________________________________________________________________
5172 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
5174 //Search for pi0 in fCalorimeter with shower shape analysis
5176 TObjArray * pl = 0x0;
5177 AliVCaloCells* cells = 0x0;
5179 //Select the Calorimeter of the photon
5180 if(fCalorimeter == "PHOS")
5182 pl = GetPHOSClusters();
5183 cells = GetPHOSCells();
5185 else if (fCalorimeter == "EMCAL")
5187 pl = GetEMCALClusters();
5188 cells = GetEMCALCells();
5193 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
5197 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
5199 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
5201 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
5203 //-------------------------------------------
5204 // Get cluster parameters, do some rejection
5205 //-------------------------------------------
5207 Float_t en = cluster->E();
5208 Float_t l0 = cluster->GetM02();
5209 Int_t nc = cluster->GetNCells();
5210 Float_t bd = cluster->GetDistanceToBadChannel() ;
5212 //If too small or big E or low number of cells, or close to a bad channel skip it
5214 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
5216 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
5218 // Track-cluster matching
5220 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
5221 if(!fFillTMHisto && matched) continue ;
5223 // Get cluster angles
5226 cluster->GetMomentum(lv, GetVertex(0));
5227 Float_t eta = lv.Eta();
5228 Float_t phi = lv.Phi();
5229 if(phi<0) phi=+TMath::TwoPi();
5231 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
5232 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
5234 // Get PID, N local maximum, *** split cluster ***
5237 Double_t mass = 0., angle = 0.;
5238 TLorentzVector lv1, lv2;
5239 Int_t absId1 =-1; Int_t absId2 =-1;
5240 Float_t distbad1 =-1; Float_t distbad2 =-1;
5241 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
5243 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
5244 GetVertex(0), nMax, mass, angle,
5245 lv1,lv2,absId1,absId2,
5246 distbad1,distbad2,fidcut1,fidcut2);
5250 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5255 // Set some index for array histograms
5258 if (nMax == 1) inlm = 0;
5259 else if(nMax == 2) inlm = 1;
5260 else if(nMax > 2) inlm = 2;
5261 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
5263 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
5264 if( (fCheckSplitDistToBad) &&
5265 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
5268 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
5269 distbad1,distbad2, fidcut1,fidcut2);
5271 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
5273 fhMassBadDistClose[inlm]->Fill(en,mass);
5274 fhM02BadDistClose [inlm]->Fill(en,l0 );
5277 if(!fidcut1 || !fidcut2)
5279 fhMassOnBorder[inlm]->Fill(en,mass);
5280 fhM02OnBorder [inlm]->Fill(en,l0 );
5286 // Get sub-cluster parameters
5288 Float_t e1 = lv1.Energy();
5289 Float_t e2 = lv2.Energy();
5291 Double_t tof1 = cells->GetCellTime(absId1);
5292 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5295 Double_t tof2 = cells->GetCellTime(absId2);
5296 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5299 Double_t t12diff = tof1-tof2;
5301 Float_t splitFrac = (e1+e2)/en;
5304 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
5309 if(en > 8 && en <= 12) ebin = 0;
5310 if(en > 12 && en <= 16) ebin = 1;
5311 if(en > 16 && en <= 20) ebin = 2;
5312 if(en > 20) ebin = 3;
5314 // MC data histograms and some related calculations
5315 // mc tag, n overlaps, asym of generated mesons
5320 Float_t asymGen = -2;
5321 Int_t noverlaps = 0;
5327 GetMCIndex(cluster,mcindex,mctag);
5329 // MC primary kine, generation fractions
5331 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,noverlaps);
5333 // For cluster with MC pi0 and more than 1 maxima
5339 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
5344 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
5348 if(fFillSSExtraHisto)
5349 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
5353 if(!matched && ebin >= 0 && fFillEbinHisto)
5354 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
5359 FillAngleHistograms(matched,nMax,en,angle,mass);
5361 if(fFillArmenterosHisto && ebin >= 0)
5362 FillArmenterosHistograms(nMax, ebin, mcindex, lv, lv1, lv2, l0, pidTag);
5364 //---------------------------------------------------------------------
5365 // From here start applying some cuts
5366 //---------------------------------------------------------------------
5368 // If set, check just on MC clusters when SS cut is applied
5369 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
5371 // For cluster with MC pi0 and more than 1 maxima
5373 if(fFillMCOverlapHisto)
5374 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
5380 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
5381 nMax,matched,splitFrac, asym, eprim,asymGen);
5385 if(fFillMCOverlapHisto)
5386 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
5390 // Fill few histograms, some still without cuts
5391 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
5393 if(pidTag==AliCaloPID::kPi0)
5395 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
5397 if(fFillSSWeightHisto)
5398 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
5400 if(fFillTMHisto && fFillTMResidualHisto)
5401 FillTrackMatchingHistograms(cluster,nMax,mcindex);
5403 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
5405 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
5406 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
5407 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
5410 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
5412 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
5414 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
5416 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
5421 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
5425 //______________________________________________________________________
5426 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
5428 //Print some relevant parameters set for the analysis
5432 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
5433 AliAnaCaloTrackCorrBaseClass::Print("");
5434 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
5435 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
5436 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
5437 printf("Min. N Cells =%d \n", fMinNCells) ;
5438 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
5439 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
5445 //___________________________________________________________________________________________________________________
5446 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
5447 AliVCaloCells* cells,
5448 AliVCluster * cluster,
5449 Float_t & l0, Float_t & l1,
5450 Float_t & disp, Float_t & dEta, Float_t & dPhi,
5451 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
5454 // Calculates new center of gravity in the local EMCAL-module coordinates
5455 // and tranfers into global ALICE coordinates
5456 // Calculates Dispersion and main axis
5460 AliInfo("Cluster pointer null!");
5464 Double_t eCell = 0.;
5465 Float_t fraction = 1.;
5466 Float_t recalFactor = 1.;
5474 Double_t etai = -1.;
5475 Double_t phii = -1.;
5480 Double_t etaMean = 0.;
5481 Double_t phiMean = 0.;
5483 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
5484 // and to check if the cluster is between 2 SM in eta
5486 Bool_t shared = kFALSE;
5489 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5491 //Get from the absid the supermodule, tower and eta/phi numbers
5492 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5493 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5495 //Check if there are cells of different SM
5496 if (iDigit == 0 ) iSM0 = iSupMod;
5497 else if(iSupMod!= iSM0) shared = kTRUE;
5499 //Get the cell energy, if recalibration is on, apply factors
5500 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5501 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5503 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5505 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5508 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5510 if(eCell > eCellMin) energy += eCell;
5514 //Loop on cells, get weighted parameters
5515 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5517 //Get from the absid the supermodule, tower and eta/phi numbers
5518 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5519 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5521 //Get the cell energy, if recalibration is on, apply factors
5522 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5523 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5525 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5527 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5530 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5532 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
5533 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
5534 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
5536 if(energy > 0 && eCell > eCellMin)
5538 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
5540 //correct weight, ONLY in simulation
5541 w *= (1 - fWSimu * w );
5543 etai=(Double_t)ieta;
5544 phii=(Double_t)iphi;
5551 sEta += w * etai * etai ;
5552 etaMean += w * etai ;
5553 sPhi += w * phii * phii ;
5554 phiMean += w * phii ;
5555 sEtaPhi += w * etai * phii ;
5558 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
5562 //Normalize to the weight
5569 AliError(Form("Wrong weight %f\n", wtot));
5571 //Calculate dispersion
5572 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5574 //Get from the absid the supermodule, tower and eta/phi numbers
5575 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5576 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5578 //Get the cell energy, if recalibration is on, apply factors
5579 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5580 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5581 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5583 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5586 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5588 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
5589 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
5590 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
5592 if(energy > 0 && eCell > eCellMin)
5594 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
5596 //correct weight, ONLY in simulation
5597 w *= (1 - fWSimu * w );
5599 etai=(Double_t)ieta;
5600 phii=(Double_t)iphi;
5603 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
5604 dEta += w * (etai-etaMean)*(etai-etaMean) ;
5605 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
5608 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
5611 //Normalize to the weigth and set shower shape parameters
5612 if (wtot > 0 && nstat > 1)
5621 sEta -= etaMean * etaMean ;
5622 sPhi -= phiMean * phiMean ;
5623 sEtaPhi -= etaMean * phiMean ;
5625 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
5626 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
5632 dEta = 0. ; dPhi = 0. ; disp = 0. ;
5633 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;