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(), fCalorimeter(""),
56 fMinNCells(0), fMinBadDist(0),
57 fHistoECut(0), fCheckSplitDistToBad(0), fFillAngleHisto(kFALSE),
58 fFillTMHisto(kFALSE), fFillTMResidualHisto(kFALSE), fFillSSExtraHisto(kFALSE),
59 fFillMCHisto(kFALSE), fFillSSWeightHisto(kFALSE),
60 fFillNLMDiffCutHisto(kFALSE), fFillEbinHisto(0),
61 fFillMCOverlapHisto(0), fFillNCellHisto(0), fFillIdConvHisto(0),
62 fFillIdEtaHisto(0), fFillHighMultHisto(0),
63 fFillArmenterosHisto(0), fFillThetaStarHisto(0),
64 fSSWeightN(0), fSSECellCutN(0),
65 fNLMSettingN(0), fWSimu(),
66 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
67 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
68 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
69 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
70 fhMassEnCutNLocMax1(0), fhMassEnCutNLocMax2(0), fhMassEnCutNLocMaxN(0),
71 fhM02EnCutNLocMax1(0), fhM02EnCutNLocMax2(0), fhM02EnCutNLocMaxN(0),
72 fhAsymEnCutNLocMax1(0), fhAsymEnCutNLocMax2(0), fhAsymEnCutNLocMaxN(0),
73 fhSplitEFracEnCutNLocMax1(0), fhSplitEFracEnCutNLocMax2(0), fhSplitEFracEnCutNLocMaxN(0),
74 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
75 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
76 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
77 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
78 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
79 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
80 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
81 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
82 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
83 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
84 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
85 fhAnglePairPrimPi0OverM02NLocMax1(0), fhAnglePairPrimPi0OverM02NLocMax2(0), fhAnglePairPrimPi0OverM02NLocMaxN(0),
86 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
87 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
88 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
89 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
90 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
91 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
92 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
93 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
94 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
95 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
96 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
97 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
98 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
99 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
100 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
101 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
102 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
103 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
104 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
105 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
106 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
107 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
108 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
109 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
110 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
111 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
115 // Init array of histograms
116 for(Int_t i = 0; i < 7; i++)
118 for(Int_t j = 0; j < 2; j++)
120 fhMassNLocMax1[i][j] = 0;
121 fhMassNLocMax2[i][j] = 0;
122 fhMassNLocMaxN[i][j] = 0;
123 fhMassSplitENLocMax1[i][j] = 0;
124 fhMassSplitENLocMax2[i][j] = 0;
125 fhMassSplitENLocMaxN[i][j] = 0;
127 fhNLocMaxM02Cut[i][j] = 0;
128 fhSplitClusterENLocMax [i][j] = 0;
129 fhSplitClusterEPi0NLocMax[i][j] = 0;
130 fhM02NLocMax1[i][j] = 0;
131 fhM02NLocMax2[i][j] = 0;
132 fhM02NLocMaxN[i][j] = 0;
133 fhNCellNLocMax1[i][j] = 0;
134 fhNCellNLocMax2[i][j] = 0;
135 fhNCellNLocMaxN[i][j] = 0;
136 fhM02Pi0NLocMax1[i][j] = 0;
137 fhM02EtaNLocMax1[i][j] = 0;
138 fhM02ConNLocMax1[i][j] = 0;
139 fhM02Pi0NLocMax2[i][j] = 0;
140 fhM02EtaNLocMax2[i][j] = 0;
141 fhM02ConNLocMax2[i][j] = 0;
142 fhM02Pi0NLocMaxN[i][j] = 0;
143 fhM02EtaNLocMaxN[i][j] = 0;
144 fhM02ConNLocMaxN[i][j] = 0;
146 fhMassPi0NLocMax1[i][j] = 0;
147 fhMassEtaNLocMax1[i][j] = 0;
148 fhMassConNLocMax1[i][j] = 0;
149 fhMassPi0NLocMax2[i][j] = 0;
150 fhMassEtaNLocMax2[i][j] = 0;
151 fhMassConNLocMax2[i][j] = 0;
152 fhMassPi0NLocMaxN[i][j] = 0;
153 fhMassEtaNLocMaxN[i][j] = 0;
154 fhMassConNLocMaxN[i][j] = 0;
156 fhNCellPi0NLocMax1[i][j] = 0;
157 fhNCellEtaNLocMax1[i][j] = 0;
158 fhNCellPi0NLocMax2[i][j] = 0;
159 fhNCellEtaNLocMax2[i][j] = 0;
160 fhNCellPi0NLocMaxN[i][j] = 0;
161 fhNCellEtaNLocMaxN[i][j] = 0;
163 fhAsyPi0NLocMax1[i][j] = 0;
164 fhAsyEtaNLocMax1[i][j] = 0;
165 fhAsyConNLocMax1[i][j] = 0;
166 fhAsyPi0NLocMax2[i][j] = 0;
167 fhAsyEtaNLocMax2[i][j] = 0;
168 fhAsyConNLocMax2[i][j] = 0;
169 fhAsyPi0NLocMaxN[i][j] = 0;
170 fhAsyEtaNLocMaxN[i][j] = 0;
171 fhAsyConNLocMaxN[i][j] = 0;
173 fhMassM02NLocMax1[i][j]= 0;
174 fhMassM02NLocMax2[i][j]= 0;
175 fhMassM02NLocMaxN[i][j]= 0;
177 fhMassSplitEPi0NLocMax1[i][j] = 0;
178 fhMassSplitEPi0NLocMax2[i][j] = 0;
179 fhMassSplitEPi0NLocMaxN[i][j] = 0;
181 fhMassSplitEAfterCutsNLocMax1[i][j] = 0;
182 fhMassSplitEAfterCutsNLocMax2[i][j] = 0;
183 fhMassSplitEAfterCutsNLocMaxN[i][j] = 0;
186 fhMassDispEtaNLocMax1[i][j]= 0;
187 fhMassDispEtaNLocMax2[i][j]= 0;
188 fhMassDispEtaNLocMaxN[i][j]= 0;
189 fhMassDispPhiNLocMax1[i][j]= 0;
190 fhMassDispPhiNLocMax2[i][j]= 0;
191 fhMassDispPhiNLocMaxN[i][j]= 0;
192 fhMassDispAsyNLocMax1[i][j]= 0;
193 fhMassDispAsyNLocMax2[i][j]= 0;
194 fhMassDispAsyNLocMaxN[i][j]= 0;
196 fhSplitEFractionNLocMax1[i][j]=0;
197 fhSplitEFractionNLocMax2[i][j]=0;
198 fhSplitEFractionNLocMaxN[i][j]=0;
200 fhAnglePairNLocMax1 [i][j] = 0;
201 fhAnglePairNLocMax2 [i][j] = 0;
202 fhAnglePairNLocMaxN [i][j] = 0;
204 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
205 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
206 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
208 fhAnglePairPi0NLocMax1 [i][j] = 0;
209 fhAnglePairPi0NLocMax2 [i][j] = 0;
210 fhAnglePairPi0NLocMaxN [i][j] = 0;
212 fhAnglePairMassNLocMax1 [i][j] = 0;
213 fhAnglePairMassNLocMax2 [i][j] = 0;
214 fhAnglePairMassNLocMaxN [i][j] = 0;
216 fhAnglePairM02NLocMax1 [i][j] = 0;
217 fhAnglePairM02NLocMax2 [i][j] = 0;
218 fhAnglePairM02NLocMaxN [i][j] = 0;
220 fhAnglePairOverM02NLocMax1 [i][j] = 0;
221 fhAnglePairOverM02NLocMax2 [i][j] = 0;
222 fhAnglePairOverM02NLocMaxN [i][j] = 0;
224 fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
225 fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
226 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
228 fhCosThStarNLocMax1 [i][j] = 0;
229 fhCosThStarNLocMax2 [i][j] = 0;
230 fhCosThStarNLocMaxN [i][j] = 0;
232 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
233 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
234 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
236 fhCosThStarPi0NLocMax1 [i][j] = 0;
237 fhCosThStarPi0NLocMax2 [i][j] = 0;
238 fhCosThStarPi0NLocMaxN [i][j] = 0;
240 fhMCGenFracNLocMax1[i][j]= 0;
241 fhMCGenFracNLocMax2[i][j]= 0;
242 fhMCGenFracNLocMaxN[i][j]= 0;
244 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
245 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
246 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
248 fhMCGenSplitEFracNLocMax1[i][j]= 0;
249 fhMCGenSplitEFracNLocMax2[i][j]= 0;
250 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
252 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
253 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
254 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
256 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
257 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
258 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
260 fhMCGenEvsSplitENLocMax1[i][j]= 0;
261 fhMCGenEvsSplitENLocMax2[i][j]= 0;
262 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
264 fhAsymNLocMax1 [i][j] = 0;
265 fhAsymNLocMax2 [i][j] = 0;
266 fhAsymNLocMaxN [i][j] = 0;
268 fhMassAfterCutsNLocMax1[i][j] = 0;
269 fhMassAfterCutsNLocMax2[i][j] = 0;
270 fhMassAfterCutsNLocMaxN[i][j] = 0;
273 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
274 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
275 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
278 for(Int_t jj = 0; jj < 4; jj++)
280 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
281 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
282 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
284 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
285 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
286 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
288 fhMCGenFracNLocMaxEbin[i][jj] = 0;
289 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
291 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
292 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
293 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
296 fhTrackMatchedDEtaNLocMax1[i] = 0;
297 fhTrackMatchedDPhiNLocMax1[i] = 0;
298 fhTrackMatchedDEtaNLocMax2[i] = 0;
299 fhTrackMatchedDPhiNLocMax2[i] = 0;
300 fhTrackMatchedDEtaNLocMaxN[i] = 0;
301 fhTrackMatchedDPhiNLocMaxN[i] = 0;
303 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
304 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
305 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
306 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
307 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
308 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
310 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
311 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
312 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
313 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
314 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
315 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
317 for(Int_t nlm = 0; nlm < 3; nlm++)
319 fhMCEM02Overlap0 [nlm][i] = 0;
320 fhMCEM02Overlap1 [nlm][i] = 0;
321 fhMCEM02OverlapN [nlm][i] = 0;
322 fhMCEM02Overlap0Match[nlm][i] = 0;
323 fhMCEM02Overlap1Match[nlm][i] = 0;
324 fhMCEM02OverlapNMatch[nlm][i] = 0;
326 fhMCEMassOverlap0 [nlm][i] = 0;
327 fhMCEMassOverlap1 [nlm][i] = 0;
328 fhMCEMassOverlapN [nlm][i] = 0;
329 fhMCEMassOverlap0Match[nlm][i] = 0;
330 fhMCEMassOverlap1Match[nlm][i] = 0;
331 fhMCEMassOverlapNMatch[nlm][i] = 0;
333 fhMCEAsymOverlap0 [nlm][i] = 0;
334 fhMCEAsymOverlap1 [nlm][i] = 0;
335 fhMCEAsymOverlapN [nlm][i] = 0;
336 fhMCEAsymOverlap0Match[nlm][i] = 0;
337 fhMCEAsymOverlap1Match[nlm][i] = 0;
338 fhMCEAsymOverlapNMatch[nlm][i] = 0;
340 fhMCENCellOverlap0 [nlm][i] = 0;
341 fhMCENCellOverlap1 [nlm][i] = 0;
342 fhMCENCellOverlapN [nlm][i] = 0;
343 fhMCENCellOverlap0Match[nlm][i] = 0;
344 fhMCENCellOverlap1Match[nlm][i] = 0;
345 fhMCENCellOverlapNMatch[nlm][i] = 0;
347 fhMCEEpriOverlap0 [nlm][i] = 0;
348 fhMCEEpriOverlap1 [nlm][i] = 0;
349 fhMCEEpriOverlapN [nlm][i] = 0;
350 fhMCEEpriOverlap0Match[nlm][i] = 0;
351 fhMCEEpriOverlap1Match[nlm][i] = 0;
352 fhMCEEpriOverlapNMatch[nlm][i] = 0;
354 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
355 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
356 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
358 fhMCESplitEFracOverlap0 [nlm][i] = 0;
359 fhMCESplitEFracOverlap1 [nlm][i] = 0;
360 fhMCESplitEFracOverlapN [nlm][i] = 0;
361 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
362 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
363 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
365 fhMCENOverlaps [nlm][i] = 0;
366 fhMCENOverlapsMatch [nlm][i] = 0;
370 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
371 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
372 fhMCPi0MassM02OverlapN [nlm][i] = 0;
373 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
374 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
375 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
379 for(Int_t i = 0; i < 2; i++)
381 fhSplitEFractionvsAsyNLocMax1[i] = 0;
382 fhSplitEFractionvsAsyNLocMax2[i] = 0;
383 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
386 for(Int_t i = 0; i < 4; i++)
388 fhMassM02NLocMax1Ebin[i] = 0 ;
389 fhMassM02NLocMax2Ebin[i] = 0 ;
390 fhMassM02NLocMaxNEbin[i] = 0 ;
392 fhMassAsyNLocMax1Ebin[i] = 0 ;
393 fhMassAsyNLocMax2Ebin[i] = 0 ;
394 fhMassAsyNLocMaxNEbin[i] = 0 ;
396 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
397 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
398 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
400 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
401 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
402 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
404 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
405 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
406 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
408 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
409 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
410 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
412 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
413 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
414 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
417 for(Int_t nlm = 0; nlm < 3; nlm++)
420 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
421 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
422 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
423 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
425 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
426 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
427 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
428 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
430 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
431 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
432 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
433 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
435 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
436 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
437 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
438 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
440 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
441 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
442 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
443 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
445 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
446 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
447 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
448 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
450 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
451 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
452 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
453 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
455 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
456 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
457 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
458 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
460 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
461 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
462 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
463 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
464 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
465 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
467 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
468 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
469 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
470 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
471 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
472 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
474 fhPi0CellE [nlm] = 0 ;
475 fhPi0CellEFrac [nlm] = 0 ;
476 fhPi0CellLogEFrac[nlm] = 0 ;
478 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
479 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
480 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
482 fhPi0CellEMaxFrac [nlm] = 0 ;
483 fhPi0CellEMax2Frac[nlm] = 0 ;
485 for(Int_t i = 0; i < 20; i++)
487 fhM02WeightPi0 [nlm][i] = 0;
488 fhM02ECellCutPi0[nlm][i] = 0;
491 fhMassBadDistClose[nlm] = 0;
492 fhM02BadDistClose [nlm] = 0;
493 fhMassOnBorder [nlm] = 0;
494 fhM02OnBorder [nlm] = 0;
496 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
497 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
501 for(Int_t i = 0; i < 7; i++)
503 for(Int_t j = 0; j < 4; j++)
506 fhArmNLocMax1[i][j] = 0;
507 fhArmNLocMax2[i][j] = 0;
508 fhArmNLocMaxN[i][j] = 0;
510 fhArmPi0NLocMax1[i][j] = 0;
511 fhArmPi0NLocMax2[i][j] = 0;
512 fhArmPi0NLocMaxN[i][j] = 0;
514 fhArmAfterCutsNLocMax1[i][j] = 0;
515 fhArmAfterCutsNLocMax2[i][j] = 0;
516 fhArmAfterCutsNLocMaxN[i][j] = 0;
521 for(Int_t i = 0; i < 5; i++)
523 for(Int_t j = 0; j < 5; j++)
525 fhNLocMaxDiffCut [i][j][0] = 0;
526 fhNLocMaxDiffCut [i][j][1] = 0;
527 fhNLocMaxDiffCutPi0[i][j][0] = 0;
528 fhNLocMaxDiffCutPi0[i][j][1] = 0;
529 for(Int_t k = 0; k < 3; k++)
531 fhM02NLocMaxDiffCut [i][j][k][0] = 0;
532 fhM02NLocMaxDiffCut [i][j][k][1] = 0;
533 fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
534 fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
535 fhMassNLocMaxDiffCut [i][j][k][0] = 0;
536 fhMassNLocMaxDiffCut [i][j][k][1] = 0;
537 fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
538 fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
547 //___________________________________________________________________________________________________________________
548 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
549 Float_t e1, Float_t e2, Float_t mass)
551 //TLorentzVector l1, TLorentzVector l2)
553 // Check origin NLM tower of the cluster, when MC gives merged pi0
555 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
557 const UInt_t nc = cluster->GetNCells();
560 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
565 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
566 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
568 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
570 // 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",
571 // nMax, noverlaps,mass,m02,
572 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
573 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
575 // // Study the mothers of cluster
576 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
577 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
579 // Int_t mclabel = cluster->GetLabels()[ilab];
582 // Int_t mpdg = -999999;
583 // Int_t mstatus = -1;
584 // Int_t grandLabel = -1;
585 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
587 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
588 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
590 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
592 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
594 // Int_t newLabel = -1;
595 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
596 // 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",
597 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
598 // grandLabel = newLabel;
604 // printf("Cells in cluster %d\n",cluster->GetNCells() );
605 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
607 // Int_t absIdCell = cluster->GetCellAbsId(icell);
608 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
609 // GetReader()->RemapMCLabelForAODs(mcLabel);
610 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
611 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
613 // 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);
619 //If only one maxima, consider all the towers in the cluster
622 for (UInt_t icell = 0; icell < nc; icell++ )
624 list [icell] = cluster->GetCellAbsId(icell);
625 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
629 Int_t nmaxima = nMax;
630 if(nMax==1) nmaxima = nc ;
632 //Find highest energy Local Maxima Towers
637 for(Int_t i = 0; i < nmaxima; i++)
639 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
647 //Find second highest
648 for(Int_t i = 0; i < nmaxima; i++)
650 if(i==imax) continue;
652 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
661 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
662 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
664 //---------------------------------------------------------
665 //---------------------------------------------------------
666 // Compare ancestors of all local maxima at cell MC level
667 //---------------------------------------------------------
668 //---------------------------------------------------------
670 // Check that the highest mc label and the max cluster label are the same
671 Int_t mcLabelMax = -1 ;
672 if(imax >=0 && imax < 999)
674 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
675 GetReader()->RemapMCLabelForAODs(mcLabelMax);
678 Int_t mcLabelMax2 = -1 ;
679 if(imax2 >=0 && imax2 < 999)
681 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
682 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
685 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
686 Bool_t matchHighLMAndHighMC = kFALSE;
688 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
690 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
692 matchHighLMAndHighMC = kTRUE;
693 //printf("\t *** MATCH cluster and LM maximum ***\n");
697 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
698 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
700 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
701 matchHighLMAndHighMC = kTRUE;
705 //printf("\t \t *** NO MATCH***\n");
706 matchHighLMAndHighMC = kFALSE;
710 // Compare the common ancestors of the 2 highest energy local maxima
711 Int_t ancPDG = 0, ancStatus = -1;
712 TLorentzVector momentum; TVector3 prodVertex;
714 Bool_t high = kFALSE;
717 // // print maxima origin
718 // for(Int_t i = 0; i < nMax; i++)
720 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
721 // GetReader()->RemapMCLabelForAODs(mcLabel1);
723 // Bool_t ok =kFALSE,gok = kFALSE;
724 // Int_t pdg = -22222, status = -1;
725 // Int_t gpdg = -22222, gstatus = -1;
726 // Int_t ggpdg = -22222, ggstatus = -1;
727 // Int_t gLabel = -1, ggLabel = -1;
728 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
729 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
730 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
731 // 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",
732 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
735 for(Int_t i = 0; i < nmaxima-1; i++)
737 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
738 GetReader()->RemapMCLabelForAODs(mcLabel1);
740 for(Int_t j = i+1; j < nmaxima; j++)
742 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
743 GetReader()->RemapMCLabelForAODs(mcLabel2);
745 if(mcLabel1 < 0 || mcLabel2 < 0 )
747 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
751 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
752 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
755 if((i==imax && j==imax2) || (j==imax && i==imax2))
760 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
762 // If both bits are set, it could be that one of the maxima had a conversion
763 // reset the bit in this case
766 //printf("\t Reset low bit\n");
772 Int_t pdg = -22222, status = -1;
773 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
774 //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);
779 Float_t en = cluster->E();
781 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
782 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
786 if(matchHighLMAndHighMC)
788 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
789 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
790 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
791 else fhMCPi0NoneNLMPair->Fill(en,nMax);
795 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
796 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
797 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
798 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
803 if(matchHighLMAndHighMC)
805 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
806 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
807 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
808 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
812 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
813 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
814 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
815 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
819 //----------------------------------------------------------------------
820 //----------------------------------------------------------------------
821 // Compare MC decay photon projection to cell location and Local Maxima
822 //----------------------------------------------------------------------
823 //----------------------------------------------------------------------
825 // Get the mother pi0
828 Int_t pdg = -22222, status = -1;
831 Int_t label = cluster->GetLabel();
832 TLorentzVector pi0Kine;
834 while( pdg!=111 && label>=0 )
836 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
839 if(pdg!=111 || label < 0)
841 Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
845 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
849 Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
853 // Get daughter photon kinematics
854 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
855 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
856 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
857 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
859 if(pdg1!=22 || pdg0 != 22)
861 Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
865 // In what cells did the photons hit
866 Float_t eta0 = photon0Kine.Eta();
867 Float_t eta1 = photon1Kine.Eta();
869 Float_t phi0 = photon0Kine.Phi();
870 Float_t phi1 = photon1Kine.Phi();
872 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
874 // 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",
875 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
876 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
877 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
879 // TLorentzVector momclus;
880 // cluster->GetMomentum(momclus,GetVertex(0));
881 // 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());
884 if(phi0 < 0 ) phi0+=TMath::TwoPi();
885 if(phi1 < 0 ) phi1+=TMath::TwoPi();
887 Int_t absId0=-1, absId1=-1;
888 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
889 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
891 if(absId0 < 0 || absId1 < 0)
893 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
897 //-----------------------------------------------
898 // Check that the 2 photons hit the Local Maxima
899 //-----------------------------------------------
902 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
904 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
905 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
907 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
908 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
909 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
910 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
912 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
913 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
915 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
916 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
917 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
918 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
920 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
921 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
925 if(inlm > 2) inlm = 2;
927 Bool_t match0 = kFALSE;
928 Bool_t match1 = kFALSE;
931 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
933 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
934 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
936 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
937 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
940 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
942 // If one or the 2 not matched, check with the other MC labels
943 // only in case there was a conversion
945 Int_t absId0second = -1;
946 Int_t absId1second = -1;
947 Int_t secLabel0 = -1;
948 Int_t secLabel1 = -1;
952 Int_t secpdg = -999999;
953 Int_t secstatus = -1;
954 Int_t secgrandLabel = -1;
956 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
957 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
959 if((!match0 || !match1) && mcindex == kmcPi0Conv)
961 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
963 Int_t mclabel = cluster->GetLabels()[ilab];
965 //printf("Check label %d - %d\n",ilab,mclabel);
967 if(mclabel == label0 || mclabel == label1)
969 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
970 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
971 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
975 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
977 // match mc label and parent photon
978 Int_t tmplabel = mclabel;
979 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
981 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
983 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
985 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
987 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
988 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
989 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
992 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
994 tmplabel = secgrandLabel;
998 // Get the position of the found secondaries mother
999 if(!match0 && secLabel0 > 0)
1001 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1003 //Float_t eta = mother.Eta();
1004 //Float_t phi = mother.Phi();
1005 //if(phi < 0 ) phi+=TMath::TwoPi();
1006 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1008 //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());
1010 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
1011 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1014 if(!match1 && secLabel1 > 0)
1016 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1018 //Float_t eta = mother.Eta();
1019 //Float_t phi = mother.Phi();
1020 //if(phi < 0 ) phi+=TMath::TwoPi();
1021 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1023 //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());
1025 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
1026 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1029 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1033 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1034 if( match0 && match1 )
1036 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1037 // printf("a) Both Photons hit local maxima \n");
1041 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
1042 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1043 if(match0 && imatch0 == imax)
1045 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1046 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1047 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1048 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1052 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1053 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1054 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1055 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1060 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1061 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1062 if(match0 && imatch0 == imax )
1064 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1065 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1066 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1067 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1071 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1072 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1073 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1074 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1082 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1083 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1085 //---------------------------------------------
1086 // Check the adjacent cells to the local maxima
1087 //---------------------------------------------
1091 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1092 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1093 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1094 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1099 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1100 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1102 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1103 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1106 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1108 if(match0 && match1)
1110 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1111 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1115 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1116 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1118 if(match0 && imatch0 == imax)
1120 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1121 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1122 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1123 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1127 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1128 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1129 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1130 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1135 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1136 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1137 if(match0 && imatch0 == imax)
1139 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1140 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1141 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1142 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1146 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1147 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1148 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1149 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1156 // Decay photon cells are adjacent?
1158 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1160 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1161 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1164 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1165 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1169 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1170 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1176 //--------------------
1177 // Other Local maxima
1178 //--------------------
1180 Bool_t matchMCHitOtherLM = kFALSE;
1183 for(Int_t i = 0; i < nmaxima; i++)
1185 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1191 for(Int_t i = 0; i < nmaxima; i++)
1193 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1197 if(matchMCHitOtherLM)
1199 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1200 // printf("d) One Photon hits a local maxima, the other another not high \n");
1204 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1205 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1206 if(match0 && imatch0 == imax)
1208 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1209 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1213 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1214 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1219 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1220 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1221 if(match0 && imatch0 == imax)
1223 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1224 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1228 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1229 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1236 // Adjacent to other maxima
1238 Bool_t adjacentOther1 = kFALSE;
1241 for(Int_t i = 0; i < nmaxima; i++)
1243 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1244 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1246 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1248 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1250 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1254 Bool_t adjacentOther0 = kFALSE;
1257 for(Int_t i = 0; i < nmaxima; i++)
1259 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1260 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1262 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1264 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1266 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1270 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1273 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1274 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1278 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1279 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1280 if(match0 && imatch0 == imax)
1282 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1283 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1287 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1288 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1293 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1294 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1295 if(match0 && imatch0 == imax)
1297 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1298 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1302 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1303 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1310 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1311 // printf("f) No hit found \n");
1314 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1315 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1319 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1320 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1325 //___________________________________________________________________________________________________________
1326 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1327 Float_t en, Float_t e1, Float_t e2,
1328 Float_t angle, Float_t mass,
1329 Float_t anglePrim, Float_t m02,
1330 Float_t asym, Int_t pid, Int_t noverlaps)
1332 // Fill histograms related to opening angle
1334 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1335 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1336 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1337 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1339 Bool_t eCutOK= kFALSE;
1340 Int_t inlm = nMax-1;
1341 if(inlm > 2 ) inlm = 2;
1342 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1343 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1344 else if(ensubcut < 0.1) eCutOK = kTRUE;
1348 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1350 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1351 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1352 if(pid==AliCaloPID::kPi0)
1353 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1357 fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1358 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1363 fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1364 fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1369 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1371 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1372 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1373 if(pid==AliCaloPID::kPi0)
1374 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1378 fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1379 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1382 if( en > fHistoECut )
1384 fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1385 fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1390 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1392 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1393 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1394 if(pid==AliCaloPID::kPi0)
1395 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1399 fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1400 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1403 if( en > fHistoECut )
1405 fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1406 fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1410 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1414 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1417 fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1418 fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1420 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1421 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1422 if(pid==AliCaloPID::kPi0)
1423 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1427 fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1428 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1431 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1433 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1434 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1435 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1441 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1442 if( en > fHistoECut )
1444 fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1445 fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1448 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1449 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1450 if(pid==AliCaloPID::kPi0)
1451 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1455 fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1456 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1459 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1461 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1462 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1463 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1468 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1469 if( en > fHistoECut )
1471 fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1472 fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1474 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1475 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1476 if(pid==AliCaloPID::kPi0)
1477 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1481 fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1482 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1485 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1487 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1488 if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1489 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1497 //______________________________________________________________________________________________________________________
1498 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1499 Float_t en, TLorentzVector g1, TLorentzVector g2,
1500 Float_t m02, Int_t pid)
1502 // Fill Armeteros type histograms
1504 // Get pTArm and AlphaArm
1505 TLorentzVector pi0 = g1+g2;
1506 Float_t momentumSquaredMother = pi0.P()*pi0.P();
1507 Float_t momentumDaughter1AlongMother = 0.;
1508 Float_t momentumDaughter2AlongMother = 0.;
1510 if (momentumSquaredMother > 0.)
1512 momentumDaughter1AlongMother = (g1.Px()*pi0.Px() + g1.Py()*pi0.Py()+ g1.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1513 momentumDaughter2AlongMother = (g2.Px()*pi0.Px() + g2.Py()*pi0.Py()+ g2.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1516 Float_t momentumSquaredDaughter1 = g1.P()*g1.P();
1517 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1520 if (ptArmSquared > 0.)
1521 pTArm = sqrt(ptArmSquared);
1523 Float_t alphaArm = 0.;
1524 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1525 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1527 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1529 if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1531 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1532 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1533 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1534 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1536 Bool_t eCutOK= kFALSE;
1537 Int_t inlm = nMax-1;
1538 if(inlm > 2 ) inlm = 2;
1539 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1540 if (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1541 else if(ensubcut < 0.1) eCutOK = kTRUE;
1546 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1547 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1548 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1549 if(pid==AliCaloPID::kPi0)
1550 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1554 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1555 if((m02OK && asyOK) && (asyOn || m02On))
1556 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1557 if(pid==AliCaloPID::kPi0)
1558 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1562 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1563 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1564 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1565 if(pid==AliCaloPID::kPi0)
1566 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1569 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1573 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1574 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1575 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1576 if(pid==AliCaloPID::kPi0)
1577 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1581 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1582 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1583 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1584 if(pid==AliCaloPID::kPi0)
1585 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1589 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1590 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1591 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1592 if(pid==AliCaloPID::kPi0)
1593 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1600 //______________________________________________________________________________________________________________
1601 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1602 Float_t en, TLorentzVector g1, TLorentzVector g2,
1603 Float_t m02, Int_t pid)
1605 // Fill cos Theta^star histograms
1608 // Get cos Theta^star
1609 TLorentzVector pi0 = g1+g2;
1610 TLorentzVector g1Boost = g1;
1611 g1Boost.Boost(-pi0.BoostVector());
1612 Float_t cosThStar=TMath::Cos(g1Boost.Vect().Angle(pi0.Vect()));
1614 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1616 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1617 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1618 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1619 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1621 Bool_t eCutOK= kFALSE;
1622 Int_t inlm = nMax-1;
1623 if(inlm > 2 ) inlm = 2;
1624 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1625 if (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1626 else if(ensubcut < 0.1) eCutOK = kTRUE;
1628 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1632 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1634 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1635 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1636 if(pid==AliCaloPID::kPi0)
1637 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1641 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1643 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1644 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1645 if(pid==AliCaloPID::kPi0)
1646 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1650 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1652 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1653 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1654 if(pid==AliCaloPID::kPi0)
1655 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1658 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1662 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1664 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1665 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1666 if(pid==AliCaloPID::kPi0)
1667 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1671 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1673 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1674 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1675 if(pid==AliCaloPID::kPi0)
1676 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1680 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1682 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1683 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1684 if(pid==AliCaloPID::kPi0)
1685 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1692 //__________________________________________________________________________________________________________________
1693 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t ebin , Int_t nMax, Int_t mcindex,
1694 Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1696 // Fill some histograms integrating in few energy bins
1700 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1701 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1703 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1704 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1708 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1709 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1711 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1712 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1716 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1717 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1719 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1720 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1725 //________________________________________________________________________________________________
1726 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en, Float_t e1, Float_t e2,
1727 Int_t nMax, Float_t mass, Float_t l0,
1728 Float_t eta, Float_t phi,
1729 Bool_t matched, Int_t mcindex)
1731 // Fill histograms for clusters before any selection after spliting
1733 Float_t splitFrac = (e1+e2)/en;
1736 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1738 fhNLocMax [0][matched]->Fill(en,nMax);
1739 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1740 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1741 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1742 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1744 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1746 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1747 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1748 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1749 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1750 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1755 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1756 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1758 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1760 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1761 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1766 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1767 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1769 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1770 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1773 else if( nMax == 2 )
1775 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1776 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1778 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1780 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1781 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1786 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1787 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1789 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1790 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1793 else if( nMax >= 3 )
1795 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1796 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1798 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1800 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1801 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1807 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1808 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1810 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1811 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1818 //________________________________________________________________________________________________
1819 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en, Float_t eprim,
1820 Float_t e1, Float_t e2,
1821 Int_t nMax, Float_t mass, Float_t l0,
1822 Bool_t matched, Int_t mcindex)
1824 // Fill histograms for clusters passing the first M02 selection
1826 Float_t efrac = eprim/en;
1827 Float_t efracSplit = 0;
1828 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1830 Float_t splitFrac = (e1+e2)/en;
1833 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1835 Int_t inlm = nMax-1;
1836 if(inlm > 2) inlm = 2;
1837 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1839 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1840 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1841 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1842 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1844 Bool_t eCutOK = kFALSE;
1845 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1846 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1847 else if(ensubcut < 0.1) eCutOK = kTRUE;
1849 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1853 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1854 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1855 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1856 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1858 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1859 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1860 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1866 fhMassNLocMax1[0][matched]->Fill(en,mass );
1867 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1868 fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1870 // Effect of cuts in mass histograms
1872 if(!matched && asyOK && asyOn )
1874 fhMassAsyCutNLocMax1->Fill(en,mass);
1875 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1878 if(!matched && m02OK && m02On )
1880 fhMassM02CutNLocMax1->Fill(en,mass);
1881 fhAsymM02CutNLocMax1->Fill(en,asym );
1882 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1885 if(!matched && eCutOK && ensubcut > 0.1)
1887 fhMassEnCutNLocMax1->Fill(en,mass );
1888 fhM02EnCutNLocMax1 ->Fill(en,l0 );
1889 fhAsymEnCutNLocMax1->Fill(en,asym );
1890 fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1893 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1895 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1896 if(splitFrac > splitFracMin)
1898 fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1899 fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1901 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1903 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1904 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1908 else if( nMax == 2 )
1910 fhMassNLocMax2[0][matched]->Fill(en,mass );
1911 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1912 fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1914 // Effect of cuts in mass histograms
1916 if(!matched && asyOK && asyOn )
1918 fhMassAsyCutNLocMax2->Fill(en,mass);
1919 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1922 if(!matched && m02OK && m02On )
1924 fhMassM02CutNLocMax2->Fill(en,mass);
1925 fhAsymM02CutNLocMax2->Fill(en,asym );
1926 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1929 if(!matched && eCutOK && ensubcut > 0.1)
1931 fhMassEnCutNLocMax2->Fill(en,mass );
1932 fhM02EnCutNLocMax2 ->Fill(en,l0 );
1933 fhAsymEnCutNLocMax2->Fill(en,asym );
1934 fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1937 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1939 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1940 if(splitFrac > splitFracMin)
1942 fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1943 fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1946 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1948 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1949 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1955 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1956 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1957 fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1959 // Effect of cuts in mass histograms
1961 if(!matched && asyOK && asyOn )
1963 fhMassAsyCutNLocMaxN->Fill(en,mass);
1964 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1967 if(!matched && m02OK && m02On )
1969 fhMassM02CutNLocMaxN->Fill(en,mass);
1970 fhAsymM02CutNLocMaxN->Fill(en,asym );
1971 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1974 if(!matched && eCutOK && ensubcut > 0.1 )
1976 fhMassEnCutNLocMaxN->Fill(en,mass );
1977 fhM02EnCutNLocMaxN ->Fill(en,l0 );
1978 fhAsymEnCutNLocMaxN->Fill(en,asym );
1979 fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1982 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1984 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1985 if(splitFrac > splitFracMin)
1987 fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1988 fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1991 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1993 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1994 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1999 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2003 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2004 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2005 fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2007 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2009 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2010 if(splitFrac > splitFracMin)
2012 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2013 fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2019 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2020 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2021 fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2023 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2025 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2026 if(splitFrac > splitFracMin)
2028 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2029 fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2036 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2037 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2038 fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2040 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2042 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2043 if(splitFrac > splitFracMin)
2045 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2046 fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2050 }//Work with MC truth
2054 //_________________________________________________________________________________________________________
2055 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en, Float_t e1, Float_t e2,
2056 Int_t nc, Int_t nMax, Float_t t12diff,
2057 Float_t mass, Float_t l0,
2058 Float_t eta, Float_t phi,
2059 Bool_t matched, Int_t mcindex)
2061 // Fill histograms for clusters passing the pi0 selection
2064 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2066 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
2067 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2068 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2070 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2071 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2073 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2075 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2076 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2081 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2082 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2083 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2084 fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2085 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2089 if(fFillHighMultHisto)
2091 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2092 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2094 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2095 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2100 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2101 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2102 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2103 fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2104 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2108 if(fFillHighMultHisto)
2110 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2111 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2113 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2114 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2119 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2120 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2121 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2122 fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2123 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2127 if(fFillHighMultHisto)
2129 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2130 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2132 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2133 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2137 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2139 fhNLocMaxIdPi0 [mcindex][matched]->Fill(en,nMax);
2140 fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2141 fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2145 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2146 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2147 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2148 fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2149 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2154 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2155 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2156 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2157 fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2158 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2162 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2163 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2164 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2165 fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2166 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2168 }//Work with MC truth
2171 //______________________________________________________________________________________________________
2172 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en, Float_t e1, Float_t e2,
2173 Int_t nc, Int_t nMax, Float_t t12diff,
2174 Float_t mass, Float_t l0,
2175 Float_t eta, Float_t phi,
2176 Bool_t matched, Int_t mcindex)
2178 // Fill histograms for clusters passing the eta selection
2181 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2185 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2186 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2187 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2188 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2192 if(fFillHighMultHisto)
2194 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2195 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2197 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2198 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2203 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2204 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2205 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2206 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2210 if(fFillHighMultHisto)
2212 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2213 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2215 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2216 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2221 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2222 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2223 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2224 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2228 if(fFillHighMultHisto)
2230 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2231 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2233 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2234 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2238 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2242 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2243 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2244 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2245 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2249 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2250 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2251 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2252 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2257 fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2258 fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2259 fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2260 if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2262 }//Work with MC truth
2266 //__________________________________________________________________________________________________
2267 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en, Int_t nMax, Float_t asym,
2268 Float_t mass, Float_t l0,
2269 Bool_t matched, Int_t mcindex)
2271 // Fill histograms for clusters passing the photon selection
2275 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2276 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2277 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2281 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2282 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2283 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2287 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2288 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2289 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2292 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2296 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2297 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2298 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2302 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2303 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2304 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2308 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2309 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2310 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2313 }//Work with MC truth
2316 //_______________________________________________________________________________________________________
2317 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en, Float_t e1 , Float_t e2,
2318 Int_t ebin, Int_t mcindex,Int_t noverlaps,
2319 Float_t l0, Float_t mass,
2320 Int_t nMax, Bool_t matched,
2321 Float_t splitFrac, Float_t asym,
2322 Float_t eprim, Float_t asymGen)
2324 // Fill histograms needing some MC input
2326 Float_t efrac = eprim/en;
2327 Float_t efracSplit = 0;
2328 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2329 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2331 //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",
2332 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2334 if(ebin >= 0 && fFillEbinHisto)
2336 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2337 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2342 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2343 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2344 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2345 if(asym > 0 && !matched)
2347 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2348 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2353 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2354 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2357 if( en > fHistoECut )
2359 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2361 if(!matched && ebin >= 0 && fFillEbinHisto)
2363 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2364 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2366 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2368 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2369 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2376 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2377 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2378 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2380 if(asym > 0 && !matched)
2382 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2383 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2388 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2389 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2392 if( en > fHistoECut )
2394 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2396 if(!matched && ebin >= 0 && fFillEbinHisto)
2398 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2399 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2400 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2402 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2403 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2411 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2412 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2413 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2414 if(asym > 0 && !matched)
2416 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2417 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2422 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2423 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2426 if( en > fHistoECut )
2428 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2430 if(!matched && ebin >= 0 && fFillEbinHisto)
2432 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2433 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2435 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2437 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2438 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2445 //__________________________________________________________________________________________________________
2446 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en, Float_t enprim,
2447 Int_t nc, Float_t mass, Float_t l0,
2448 Float_t asym, Float_t splitFrac,
2449 Int_t inlm, Int_t ebin, Bool_t matched,
2450 Int_t mcindex, Int_t noverlaps)
2452 // Fill histograms for MC Overlaps
2454 //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);
2456 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2460 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2464 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2465 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2466 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2467 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2468 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2469 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2470 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2472 else if(noverlaps == 1)
2474 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2475 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2476 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2477 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2478 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2479 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2480 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2482 else if(noverlaps > 1)
2484 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2485 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2486 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2487 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2488 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2489 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2490 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2493 Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2495 else if(fFillTMHisto)
2497 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2501 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2502 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2503 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2504 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2505 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2506 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2507 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2509 else if(noverlaps == 1)
2511 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2512 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2513 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2514 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2515 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2516 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2517 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2519 else if(noverlaps > 1)
2521 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2522 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2523 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2524 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2525 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2526 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2527 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2530 Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2535 //_____________________________________________________________________________________________________
2536 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t ncells, Float_t energy, Int_t nMax,
2537 Bool_t matched, Int_t mcindex,
2538 Float_t mass , Float_t l0)
2541 // Fill optional histograms with more SS parameters
2545 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2546 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2548 if (mcindex==kmcPi0 && !matched)
2550 if( energy > fHistoECut)
2552 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2553 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2557 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2558 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2562 else if( nMax == 2 )
2564 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2565 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2568 if (mcindex==kmcPi0 && !matched)
2570 if( energy > fHistoECut)
2572 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2573 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2577 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2578 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2582 else if( nMax >= 3 )
2584 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2585 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2587 if (mcindex==kmcPi0 && !matched)
2589 if( energy > fHistoECut)
2591 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2592 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2596 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2597 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2603 //______________________________________________________________________________________________________
2604 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2606 // Calculate NLM for different settings
2608 Float_t energy = clus->E();
2609 Float_t m02 = clus->GetM02();
2611 Float_t minEOrg = GetCaloUtils()->GetLocalMaximaCutE() ;
2612 Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2615 Double_t mass = 0., angle = 0.;
2616 TLorentzVector lv1, lv2;
2617 Int_t absId1 =-1; Int_t absId2 =-1;
2618 Float_t distbad1 =-1; Float_t distbad2 =-1;
2619 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
2622 //printf("E %f, m02 %f; Org: minE %f, minDiffE %f\n",energy, m02, minEOrg,minEDiffOrg);
2623 for(Int_t iE = 0; iE < fNLMSettingN; iE++)
2625 for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
2627 GetCaloUtils()->SetLocalMaximaCutE (fNLMMinE [iE] );
2628 GetCaloUtils()->SetLocalMaximaCutEDiff(fNLMMinDiff[iDiff]);
2630 //nlm = GetCaloUtils()->GetNumberOfLocalMaxima(clus, cells) ;
2632 //printf("\t Change: i %d minE %f, j %d minDiffE %f - NLM = %d\n",iE, fNLMMinE[iE], iDiff, fNLMMinDiff[iDiff],nlm);
2634 pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(clus,cells,GetCaloUtils(),
2635 GetVertex(0), nlm, mass, angle,
2636 lv1,lv2,absId1,absId2,
2637 distbad1,distbad2,fidcut1,fidcut2);
2641 Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
2647 if(inlm>2) inlm = 2;
2649 fhNLocMaxDiffCut [iE][iDiff] [matched]->Fill(energy,nlm);
2650 fhM02NLocMaxDiffCut [iE][iDiff][inlm][matched]->Fill(energy,m02);
2651 fhMassNLocMaxDiffCut[iE][iDiff][inlm][matched]->Fill(energy,mass);
2653 if(pidTag==AliCaloPID::kPi0)
2655 fhNLocMaxDiffCutPi0 [iE][iDiff] [matched]->Fill(energy,nlm);
2656 fhM02NLocMaxDiffCutPi0 [iE][iDiff][inlm][matched]->Fill(energy,m02);
2657 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][matched]->Fill(energy,mass);
2663 GetCaloUtils()->SetLocalMaximaCutE (minEOrg );
2664 GetCaloUtils()->SetLocalMaximaCutEDiff(minEDiffOrg);
2669 //_____________________________________________________________________________________________
2670 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, Int_t nMax,
2671 Bool_t matched, Int_t mcindex,
2672 Float_t mass , Int_t ebin)
2674 // Fill optional histograms with more SS parameters
2676 Float_t en = cluster->E();
2678 // Get more Shower Shape parameters
2679 Float_t ll0 = 0., ll1 = 0.;
2680 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2681 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2683 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2684 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2686 Float_t dispAsy = -1;
2687 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2691 if( en > fHistoECut )
2693 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2694 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2695 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2697 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2699 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2700 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2701 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2705 if(!matched && ebin >= 0 && fFillEbinHisto)
2707 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2708 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2709 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2712 else if( nMax == 2 )
2714 if( en > fHistoECut )
2716 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2717 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2718 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2720 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2722 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2723 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2724 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2728 if(!matched && ebin >= 0 && fFillEbinHisto)
2730 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2731 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2732 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2736 else if( nMax >= 3 )
2738 if( en > fHistoECut )
2740 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2741 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2742 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2744 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2746 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2747 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2748 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2752 if(!matched && ebin >= 0 && fFillEbinHisto)
2754 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2755 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2756 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2763 //__________________________________________________________________________________________
2764 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, Int_t nlm,
2765 Int_t absId1, Int_t absId2)
2767 // Calculate weights and fill histograms
2769 AliVCaloCells* cells = 0;
2770 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2771 else cells = GetPHOSCells();
2773 // First recalculate energy in case non linearity was applied
2774 Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
2776 Float_t simuTotWeight = 0;
2777 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2779 simuTotWeight = GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
2780 simuTotWeight/= energy;
2785 Info("WeightHistograms()","Wrong calculated energy %f\n",energy);
2789 //Get amplitude of main local maxima, recalibrate if needed
2790 Float_t amp1 = cells->GetCellAmplitude(absId1);
2791 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2792 Float_t amp2 = cells->GetCellAmplitude(absId2);
2793 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2795 if(amp1 < amp2) Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2796 if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2798 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2800 amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
2801 amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
2804 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2805 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2806 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2808 //Get the ratio and log ratio to all cells in cluster
2809 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2811 Int_t id = clus->GetCellsAbsId()[ipos];
2813 //Recalibrate cell energy if needed
2814 Float_t amp = cells->GetCellAmplitude(id);
2815 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2816 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2818 //printf("eCell a) %f",amp);
2819 amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
2820 //printf(", b)%f\n",amp);
2823 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2824 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2825 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2827 if (id!=absId1 && id!=absId2)
2829 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2830 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2835 //Recalculate shower shape for different W0
2836 if(fCalorimeter=="EMCAL")
2838 Float_t l0org = clus->GetM02();
2839 Float_t l1org = clus->GetM20();
2840 Float_t dorg = clus->GetDispersion();
2841 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2843 //printf("E cl %2.3f, E recal %2.3f, nlm %d, Org w0 %2.3f, org l0 %2.3f\n",clus->E(), energy,nlm, w0org,l0org);
2845 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2847 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2848 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2849 //fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2851 Float_t l0 = 0., l1 = 0.;
2852 Float_t disp = 0., dEta = 0., dPhi = 0.;
2853 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2855 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2856 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[0]);
2857 //Make sure that for pp fSSECellCut[0]=0.05 and for PbPb fSSECellCut[0]=0.15
2860 fhM02WeightPi0[nlm][iw]->Fill(energy,l0);
2862 //printf("\t w0 %2.3f, l0 %2.3f\n",GetCaloUtils()->GetEMCALRecoUtils()->GetW0(),l0);
2866 // Set the original values back
2867 clus->SetM02(l0org);
2868 clus->SetM20(l1org);
2869 clus->SetDispersion(dorg);
2870 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2872 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2874 Float_t l0 = 0., l1 = 0.;
2875 Float_t disp = 0., dEta = 0., dPhi = 0.;
2876 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2878 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2879 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2881 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2883 //printf("\t min E cell %2.3f, l0 %2.3f\n",fSSECellCut[iec], l0);
2890 //____________________________________________________________________________________________
2891 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2892 Int_t nMax, Int_t mcindex)
2894 // Fill histograms related to track matching
2896 Float_t dZ = cluster->GetTrackDz();
2897 Float_t dR = cluster->GetTrackDx();
2898 Float_t en = cluster->E();
2900 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2902 dR = 2000., dZ = 2000.;
2903 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2906 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2908 if(TMath::Abs(dR) < 999)
2910 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2911 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2912 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2914 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2916 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2917 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2918 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2921 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2923 Bool_t positive = kFALSE;
2924 if(track) positive = (track->Charge()>0);
2930 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2931 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2932 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2934 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2936 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2937 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2938 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2943 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2944 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2945 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2947 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2949 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2950 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2951 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2960 //_______________________________________________________________
2961 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2963 //Save parameters used for analysis
2964 TString parList ; //this will be list of parameters used for this analysis.
2965 Int_t buffersize = 255;
2966 char onePar[buffersize] ;
2968 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2971 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2973 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2975 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2977 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2979 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2981 if(fFillSSWeightHisto)
2983 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2987 return new TObjString(parList) ;
2991 //________________________________________________________________
2992 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2994 // Create histograms to be saved in output file and
2995 // store them in outputContainer
2996 TList * outputContainer = new TList() ;
2997 outputContainer->SetName("InsideClusterHistos") ;
2999 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
3000 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
3001 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
3002 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
3003 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
3004 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
3006 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
3007 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
3008 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
3009 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
3010 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
3011 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
3013 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
3014 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
3015 Bool_t splitOn = kFALSE;
3016 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
3017 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
3018 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
3020 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
3021 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
3022 TString snlm [] = {"1","2","N"};
3024 TString sEBin[] = {"8 < #it{E} < 12 GeV","12 < #it{E} < 16 GeV", "16 < #it{E} < 20 GeV", "#it{E} > 20 GeV" };
3028 if(IsDataMC()) n = 7;
3030 Int_t nMaxBins = 10;
3032 TString sMatched[] = {"","Matched"};
3035 if(!fFillTMHisto) nMatched = 1;
3038 if(fFillNLMDiffCutHisto)
3040 for(Int_t imatch = 0; imatch < nMatched; imatch++)
3042 for(Int_t iE = 0; iE < fNLMSettingN; iE++)
3044 for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
3046 fhNLocMaxDiffCut[iE][iDiff][imatch] = new TH2F(Form("hNLocMax_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3047 Form("NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s", fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3048 nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3049 fhNLocMaxDiffCut[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3050 fhNLocMaxDiffCut[iE][iDiff][imatch]->SetXTitle("#it{E}_{cluster}");
3051 outputContainer->Add(fhNLocMaxDiffCut[iE][iDiff][imatch]) ;
3053 fhNLocMaxDiffCutPi0[iE][iDiff][imatch] = new TH2F(Form("hNLocMaxPi0_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3054 Form("#pi^{0} NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s",
3055 fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3056 nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3057 fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3058 fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetXTitle("#it{E}_{#pi^{0}}");
3059 outputContainer->Add(fhNLocMaxDiffCutPi0[iE][iDiff][imatch]) ;
3061 for(Int_t inlm = 0; inlm < 3; inlm++)
3064 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxM02_MinE%d_MinDiffE%d_NLM%s%s",
3065 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3066 Form("#lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3067 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3068 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3069 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3070 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3071 outputContainer->Add(fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3073 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxMass_MinE%d_MinDiffE%d_NLM%s%s",
3074 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3075 Form("#it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3076 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3077 nptbins,ptmin,ptmax, mbins,mmin,mmax);
3078 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3079 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3080 outputContainer->Add(fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3082 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxPi0M02_MinE%d_MinDiffE%d_NLM%s%s",
3083 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3084 Form("#pi^{0} #lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3085 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3086 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3087 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3088 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3089 outputContainer->Add(fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3091 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxPi0Mass_MinE%d_MinDiffE%d_NLM%s%s",
3092 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3093 Form("#pi^{0} #it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3094 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3095 nptbins,ptmin,ptmax, mbins,mmin,mmax);
3096 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3097 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3098 outputContainer->Add(fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3105 return outputContainer;
3108 if(fCheckSplitDistToBad)
3110 for(Int_t inlm = 0; inlm < 3; inlm++)
3112 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
3113 Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3114 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3115 fhMassBadDistClose[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3116 fhMassBadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3117 outputContainer->Add(fhMassBadDistClose[inlm]) ;
3119 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
3120 Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3121 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3122 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
3123 fhM02BadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3124 outputContainer->Add(fhM02BadDistClose[inlm]) ;
3126 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
3127 Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3128 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3129 fhMassOnBorder[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3130 fhMassOnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3131 outputContainer->Add(fhMassOnBorder[inlm]) ;
3133 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
3134 Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3135 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3136 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
3137 fhM02OnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3138 outputContainer->Add(fhM02OnBorder[inlm]) ;
3143 for(Int_t i = 0; i < n; i++)
3145 for(Int_t j = 0; j < nMatched; j++)
3148 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3149 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3150 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3151 fhNLocMax[i][j] ->SetYTitle("#it{N} maxima");
3152 fhNLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3153 outputContainer->Add(fhNLocMax[i][j]) ;
3155 fhLM1NLocMax[i][j] = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3156 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3157 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3158 fhLM1NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3159 fhLM1NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3160 outputContainer->Add(fhLM1NLocMax[i][j]) ;
3162 fhLM2NLocMax[i][j] = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3163 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3164 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3165 fhLM2NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3166 fhLM2NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3167 outputContainer->Add(fhLM2NLocMax[i][j]) ;
3171 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3172 Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3173 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3174 fhNLocMaxM02Cut[i][j]->SetYTitle("#it{N} maxima");
3175 fhNLocMaxM02Cut[i][j]->SetXTitle("#it{E} (GeV)");
3176 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3178 fhLM1NLocMaxM02Cut[i][j] = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3179 Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3180 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3181 fhLM1NLocMaxM02Cut[i][j] ->SetYTitle("#it{N} maxima");
3182 fhLM1NLocMaxM02Cut[i][j] ->SetXTitle("#it{E} (GeV)");
3183 outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3185 fhLM2NLocMaxM02Cut[i][j] = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3186 Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3187 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3188 fhLM2NLocMaxM02Cut[i][j] ->SetYTitle("#it{N} maxima");
3189 fhLM2NLocMaxM02Cut[i][j] ->SetXTitle("#it{E} (GeV)");
3190 outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3195 fhNLocMaxIdPi0[i][j] = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3196 Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3197 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3198 fhNLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3199 fhNLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3200 outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3203 fhLM1NLocMaxIdPi0[i][j] = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3204 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3205 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3206 fhLM1NLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3207 fhLM1NLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3208 outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3210 fhLM2NLocMaxIdPi0[i][j] = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3211 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3212 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3213 fhLM2NLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3214 fhLM2NLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3215 outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3220 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3221 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3222 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3223 fhSplitClusterENLocMax[i][j] ->SetYTitle("#it{N} maxima");
3224 fhSplitClusterENLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3225 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3228 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3229 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3230 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3231 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3232 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3233 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3237 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3238 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3239 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3240 fhNCellNLocMax1[i][j] ->SetYTitle("#it{N} cells");
3241 fhNCellNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3242 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3244 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3245 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3246 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3247 fhNCellNLocMax2[i][j] ->SetYTitle("#it{N} cells");
3248 fhNCellNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3249 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3252 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3253 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3254 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3255 fhNCellNLocMaxN[i][j] ->SetYTitle("#it{N} cells");
3256 fhNCellNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3257 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3260 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3261 Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3262 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3263 fhMassNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3264 fhMassNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3265 outputContainer->Add(fhMassNLocMax1[i][j]) ;
3267 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3268 Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3269 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3270 fhMassNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3271 fhMassNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3272 outputContainer->Add(fhMassNLocMax2[i][j]) ;
3274 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3275 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3276 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3277 fhMassNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3278 fhMassNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3279 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3281 fhMassSplitENLocMax1[i][j] = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3282 Form("Invariant mass of splitted cluster with #it{NLM}=1 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3283 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3284 fhMassSplitENLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3285 fhMassSplitENLocMax1[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3286 outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3288 fhMassSplitENLocMax2[i][j] = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3289 Form("Invariant mass of splitted cluster with #it{NLM}=2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3290 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3291 fhMassSplitENLocMax2[i][j]->SetYTitle("#it{E} _{M} (GeV/#it{c}^{2})");
3292 fhMassSplitENLocMax2[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3293 outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3295 fhMassSplitENLocMaxN[i][j] = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3296 Form("Invariant mass of splitted cluster with NLM>2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3297 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3298 fhMassSplitENLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3299 fhMassSplitENLocMaxN[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3300 outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3302 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3303 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3304 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3305 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3306 fhM02NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3307 outputContainer->Add(fhM02NLocMax1[i][j]) ;
3309 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3310 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3311 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3312 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3313 fhM02NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3314 outputContainer->Add(fhM02NLocMax2[i][j]) ;
3316 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3317 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3318 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3319 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3320 fhM02NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3321 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3323 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3324 Form("Asymmetry of #it{NLM}=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3325 nptbins,ptmin,ptmax,200,-1,1);
3326 fhAsymNLocMax1[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3327 fhAsymNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3328 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3330 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3331 Form("Asymmetry of #it{NLM}=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3332 nptbins,ptmin,ptmax,200,-1,1);
3333 fhAsymNLocMax2[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3334 fhAsymNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3335 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3337 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3338 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3339 nptbins,ptmin,ptmax,200,-1,1);
3340 fhAsymNLocMaxN[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3341 fhAsymNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3342 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3344 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3345 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3346 nptbins,ptmin,ptmax,120,0,1.2);
3347 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3348 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3349 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3351 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3352 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3353 nptbins,ptmin,ptmax,120,0,1.2);
3354 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3355 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3356 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3358 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3359 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3360 nptbins,ptmin,ptmax,120,0,1.2);
3361 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3362 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3363 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3369 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, M02 cut, no TM",
3370 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3371 fhMassM02CutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3372 fhMassM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3373 outputContainer->Add(fhMassM02CutNLocMax1) ;
3375 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, M02 cut, no TM",
3376 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3377 fhMassM02CutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3378 fhMassM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3379 outputContainer->Add(fhMassM02CutNLocMax2) ;
3381 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3382 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3383 fhMassM02CutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3384 fhMassM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3385 outputContainer->Add(fhMassM02CutNLocMaxN) ;
3387 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of #it{NLM}=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3388 fhAsymM02CutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3389 fhAsymM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3390 outputContainer->Add(fhAsymM02CutNLocMax1) ;
3392 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of #it{NLM}=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3393 fhAsymM02CutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3394 fhAsymM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3395 outputContainer->Add(fhAsymM02CutNLocMax2) ;
3397 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3398 fhAsymM02CutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3399 fhAsymM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3400 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3404 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3405 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3406 fhMassSplitECutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3407 fhMassSplitECutNLocMax1->SetXTitle("#it{E} (GeV)");
3408 outputContainer->Add(fhMassSplitECutNLocMax1) ;
3410 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3411 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3412 fhMassSplitECutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3413 fhMassSplitECutNLocMax2->SetXTitle("#it{E} (GeV)");
3414 outputContainer->Add(fhMassSplitECutNLocMax2) ;
3416 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3417 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3418 fhMassSplitECutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3419 fhMassSplitECutNLocMaxN->SetXTitle("#it{E} (GeV)");
3420 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3426 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, Asy cut, no TM",
3427 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3428 fhMassAsyCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3429 fhMassAsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3430 outputContainer->Add(fhMassAsyCutNLocMax1) ;
3432 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, Asy cut, no TM",
3433 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3434 fhMassAsyCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3435 fhMassAsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3436 outputContainer->Add(fhMassAsyCutNLocMax2) ;
3438 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3439 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3440 fhMassAsyCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3441 fhMassAsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3442 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3444 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of #it{NLM}=1 vs cluster Energy, AsyCut, no TM",
3445 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3446 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3447 fhM02AsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3448 outputContainer->Add(fhM02AsyCutNLocMax1) ;
3450 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of #it{NLM}=2 vs cluster Energy, AsyCut, no TM",
3451 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3452 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3453 fhM02AsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3454 outputContainer->Add(fhM02AsyCutNLocMax2) ;
3456 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
3457 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3458 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3459 fhM02AsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3460 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3463 if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3465 fhMassEnCutNLocMax1 = new TH2F("hMassEnCutNLocMax1",Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3466 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3467 fhMassEnCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3468 fhMassEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3469 outputContainer->Add(fhMassEnCutNLocMax1) ;
3471 fhMassEnCutNLocMax2 = new TH2F("hMassEnCutNLocMax2",Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3472 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3473 fhMassEnCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3474 fhMassEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3475 outputContainer->Add(fhMassEnCutNLocMax2) ;
3477 fhMassEnCutNLocMaxN = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3478 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3479 fhMassEnCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3480 fhMassEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3481 outputContainer->Add(fhMassEnCutNLocMaxN) ;
3483 fhM02EnCutNLocMax1 = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3484 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3485 fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3486 fhM02EnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3487 outputContainer->Add(fhM02EnCutNLocMax1) ;
3489 fhM02EnCutNLocMax2 = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3490 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3491 fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3492 fhM02EnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3493 outputContainer->Add(fhM02EnCutNLocMax2) ;
3495 fhM02EnCutNLocMaxN = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3496 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3497 fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3498 fhM02EnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3499 outputContainer->Add(fhM02EnCutNLocMaxN) ;
3501 fhAsymEnCutNLocMax1 = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3502 , nptbins,ptmin,ptmax,200,-1,1);
3503 fhAsymEnCutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3504 fhAsymEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3505 outputContainer->Add(fhAsymEnCutNLocMax1) ;
3507 fhAsymEnCutNLocMax2 = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3508 , nptbins,ptmin,ptmax,200,-1,1);
3509 fhAsymEnCutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3510 fhAsymEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3511 outputContainer->Add(fhAsymEnCutNLocMax2) ;
3513 fhAsymEnCutNLocMaxN = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3514 , nptbins,ptmin,ptmax,200,-1,1);
3515 fhAsymEnCutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3516 fhAsymEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3517 outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3519 fhSplitEFracEnCutNLocMax1 = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3520 , nptbins,ptmin,ptmax,120,0,1.2);
3521 fhSplitEFracEnCutNLocMax1->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3522 fhSplitEFracEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3523 outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3525 fhSplitEFracEnCutNLocMax2 = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3526 , nptbins,ptmin,ptmax,120,0,1.2);
3527 fhSplitEFracEnCutNLocMax2->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3528 fhSplitEFracEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3529 outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3531 fhSplitEFracEnCutNLocMaxN = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3532 , nptbins,ptmin,ptmax,120,0,1.2);
3533 fhSplitEFracEnCutNLocMaxN->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3534 fhSplitEFracEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3535 outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3542 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3543 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3544 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3545 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3546 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3547 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3549 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3550 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3551 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3552 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3553 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3554 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3556 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3557 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3558 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3559 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3560 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3561 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3563 fhMassSplitEAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3564 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3565 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3566 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3567 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3568 outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3570 fhMassSplitEAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3571 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3572 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3573 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3574 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3575 outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3577 fhMassSplitEAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3578 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3579 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3580 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3581 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3582 outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3585 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3586 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max = 1, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3587 nptbins,ptmin,ptmax,120,0,1.2);
3588 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3589 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3590 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3592 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3593 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max = 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3594 nptbins,ptmin,ptmax,120,0,1.2);
3595 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3596 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3597 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3599 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3600 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max > 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3601 nptbins,ptmin,ptmax,120,0,1.2);
3602 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3603 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3604 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3607 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3608 Form("Invariant mass of splitted cluster with #it{NLM}=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3609 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3610 fhMassM02NLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3611 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3612 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
3614 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3615 Form("Invariant mass of splitted cluster with #it{NLM}=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3616 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3617 fhMassM02NLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3618 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3619 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
3621 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3622 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3623 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3624 fhMassM02NLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3625 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3626 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
3628 if(fFillSSExtraHisto)
3630 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3631 Form("Invariant mass of splitted cluster with #it{NLM}=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3632 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3633 fhMassDispEtaNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3634 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3635 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
3637 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3638 Form("Invariant mass of splitted cluster with #it{NLM}=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3639 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3640 fhMassDispEtaNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3641 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3642 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
3644 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3645 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3646 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3647 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3648 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3649 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
3651 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3652 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3653 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3654 fhMassDispPhiNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3655 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3656 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
3658 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3659 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3660 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3661 fhMassDispPhiNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3662 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3663 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
3665 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3666 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3667 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3668 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3669 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3670 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
3672 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3673 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()),
3674 200,-1,1,mbins,mmin,mmax);
3675 fhMassDispAsyNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3676 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3677 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
3679 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3680 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()),
3681 200,-1,1,mbins,mmin,mmax);
3682 fhMassDispAsyNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3683 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3684 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
3686 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3687 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()),
3688 200,-1,1,mbins,mmin,mmax);
3689 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3690 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3691 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
3695 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3697 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3698 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3699 nptbins,ptmin,ptmax,200,0,2);
3700 fhMCGenFracNLocMax1[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3701 fhMCGenFracNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3702 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
3704 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3705 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3706 nptbins,ptmin,ptmax,200,0,2);
3707 fhMCGenFracNLocMax2[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3708 fhMCGenFracNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3709 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
3711 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3712 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3713 nptbins,ptmin,ptmax,200,0,2);
3714 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3715 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3716 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
3718 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3719 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3720 nptbins,ptmin,ptmax,200,0,2);
3721 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3722 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3723 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3725 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3726 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3727 nptbins,ptmin,ptmax,200,0,2);
3728 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3729 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3730 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3732 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3733 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3734 nptbins,ptmin,ptmax,200,0,2);
3735 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3736 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3737 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3740 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3741 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3742 nptbins,ptmin,ptmax,200,0,2);
3743 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3744 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3745 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
3747 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3748 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3749 nptbins,ptmin,ptmax,200,0,2);
3750 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3751 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3752 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
3754 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3755 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3756 nptbins,ptmin,ptmax,200,0,2);
3757 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3758 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3759 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
3761 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3762 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3763 nptbins,ptmin,ptmax,200,0,2);
3764 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3765 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3766 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3768 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3769 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3770 nptbins,ptmin,ptmax,200,0,2);
3771 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3772 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3773 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3775 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3776 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3777 nptbins,ptmin,ptmax,200,0,2);
3778 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3779 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3780 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3782 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3783 Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3785 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3786 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3787 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3789 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3790 Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3792 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3793 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3794 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3797 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3798 Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3800 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3801 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3802 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3805 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3806 Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3807 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3808 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3809 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3810 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3812 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3813 Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3814 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3815 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3816 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3817 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3820 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3821 Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3822 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3823 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3824 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3825 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3828 // Histograms after cluster identification
3833 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3834 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3835 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3836 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3837 fhM02Pi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3838 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3840 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3841 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 2",ptype[i].Data()),
3842 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3843 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3844 fhM02Pi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3845 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3847 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3848 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3849 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3850 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3851 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3852 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3854 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3855 Form("Mass vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3856 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3857 fhMassPi0NLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3858 fhMassPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3859 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3861 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3862 Form("Mass vs #it{E} , %s, for NLM = 2",ptype[i].Data()),
3863 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3864 fhMassPi0NLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3865 fhMassPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3866 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3868 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3869 Form("Mass vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3870 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3871 fhMassPi0NLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3872 fhMassPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3873 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3875 fhMassSplitEPi0NLocMax1[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3876 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM = 1",ptype[i].Data()),
3877 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3878 fhMassSplitEPi0NLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3879 fhMassSplitEPi0NLocMax1[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3880 outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3882 fhMassSplitEPi0NLocMax2[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3883 Form("Mass vs #it{E}_{1}+#it{E}_{2} , %s, for NLM = 2",ptype[i].Data()),
3884 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3885 fhMassSplitEPi0NLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3886 fhMassSplitEPi0NLocMax2[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3887 outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3889 fhMassSplitEPi0NLocMaxN[i][j] = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3890 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM > 2",ptype[i].Data()),
3891 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3892 fhMassSplitEPi0NLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3893 fhMassSplitEPi0NLocMaxN[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3894 outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3896 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3897 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3898 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3899 fhAsyPi0NLocMax1[i][j] ->SetYTitle("#it{A}");
3900 fhAsyPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3901 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3903 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3904 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3905 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3906 fhAsyPi0NLocMax2[i][j] ->SetYTitle("#it{A}");
3907 fhAsyPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3908 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3910 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3911 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3912 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3913 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("#it{A}");
3914 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3915 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3919 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3920 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3921 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3922 fhNCellPi0NLocMax1[i][j] ->SetYTitle("#it{N} cells");
3923 fhNCellPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3924 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3926 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3927 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3928 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3929 fhNCellPi0NLocMax2[i][j] ->SetYTitle("#it{N} cells");
3930 fhNCellPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3931 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3933 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3934 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3935 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3936 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("#it{N} cells");
3937 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3938 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3945 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3946 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3947 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3948 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3949 fhM02EtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3950 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3953 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3954 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3955 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3956 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3957 fhM02EtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3958 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3960 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3961 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3962 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3963 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3964 fhM02EtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3965 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3967 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3968 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3969 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3970 fhMassEtaNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3971 fhMassEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3972 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3974 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3975 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3976 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3977 fhMassEtaNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3978 fhMassEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3979 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3981 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3982 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3983 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3984 fhMassEtaNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3985 fhMassEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3986 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3988 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3989 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3990 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3991 fhAsyEtaNLocMax1[i][j] ->SetYTitle("#it{A}");
3992 fhAsyEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3993 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3995 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3996 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3997 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3998 fhAsyEtaNLocMax2[i][j] ->SetYTitle("#it{A}");
3999 fhAsyEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4000 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
4002 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4003 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4004 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4005 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("#it{A}");
4006 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4007 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
4011 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4012 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
4013 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4014 fhNCellEtaNLocMax1[i][j] ->SetYTitle("#it{N} cells");
4015 fhNCellEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4016 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
4018 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4019 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
4020 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4021 fhNCellEtaNLocMax2[i][j] ->SetYTitle("#it{N} cells");
4022 fhNCellEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4023 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
4025 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4026 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
4027 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4028 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("#it{N} cells");
4029 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4030 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
4035 if(fFillIdConvHisto)
4037 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4038 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
4039 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4040 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
4041 fhM02ConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4042 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
4044 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4045 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
4046 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4047 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
4048 fhM02ConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4049 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
4051 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4052 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
4053 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4054 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
4055 fhM02ConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4056 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
4059 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4060 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
4061 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4062 fhMassConNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4063 fhMassConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4064 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
4066 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4067 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
4068 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4069 fhMassConNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4070 fhMassConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4071 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
4073 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4074 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
4075 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4076 fhMassConNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4077 fhMassConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4078 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
4080 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4081 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
4082 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4083 fhAsyConNLocMax1[i][j] ->SetYTitle("#it{A}");
4084 fhAsyConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4085 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
4087 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4088 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
4089 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4090 fhAsyConNLocMax2[i][j] ->SetYTitle("#it{A}");
4091 fhAsyConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4092 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
4094 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4095 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4096 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4097 fhAsyConNLocMaxN[i][j] ->SetYTitle("#it{A}");
4098 fhAsyConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4099 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
4103 } // matched, not matched
4107 for(Int_t j = 0; j < 4; j++)
4110 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
4111 Form("Invariant mass of 2 highest energy cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4112 120,0,1.2,mbins,mmin,mmax);
4113 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4114 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4115 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
4117 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
4118 Form("Invariant mass of 2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4119 120,0,1.2,mbins,mmin,mmax);
4120 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4121 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4122 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
4124 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
4125 Form("Invariant mass of N>2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4126 120,0,1.2,mbins,mmin,mmax);
4127 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4128 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4129 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
4131 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
4133 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
4134 Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4135 200,0,2,nMaxBins,0,nMaxBins);
4136 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("#it{NLM}");
4137 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4138 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
4140 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
4141 Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
4142 200,0,2,nMaxBins,0,nMaxBins);
4143 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("#it{NLM}");
4144 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4145 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
4147 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4148 Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4149 200,0,2,mbins,mmin,mmax);
4150 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4151 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4152 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
4154 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4155 Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4156 200,0,2,mbins,mmin,mmax);
4157 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4158 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4159 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
4161 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4162 Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4163 200,0,2,mbins,mmin,mmax);
4164 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4165 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4166 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
4168 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4169 Form("#lambda_{0}^{2} vs E for N max = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4170 200,0,2,ssbins,ssmin,ssmax);
4171 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4172 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4173 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4175 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4176 Form("#lambda_{0}^{2} vs E for N max = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4177 200,0,2,ssbins,ssmin,ssmax);
4178 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4179 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4180 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4182 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4183 Form("#lambda_{0}^{2} vs E for N max > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4184 200,0,2,ssbins,ssmin,ssmax);
4185 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4186 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4187 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4191 } // MC particle list
4193 if(fFillHighMultHisto)
4197 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
4198 "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4199 nptbins,ptmin,ptmax,100,0,100);
4200 fhCentralityPi0NLocMax1->SetYTitle("#it{Centrality}");
4201 fhCentralityPi0NLocMax1->SetXTitle("#it{E} (GeV)");
4202 outputContainer->Add(fhCentralityPi0NLocMax1) ;
4204 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
4205 "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4206 nptbins,ptmin,ptmax,100,0,100);
4207 fhCentralityPi0NLocMax2->SetYTitle("#it{Centrality}");
4208 fhCentralityPi0NLocMax2->SetXTitle("#it{E} (GeV)");
4209 outputContainer->Add(fhCentralityPi0NLocMax2) ;
4211 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
4212 "E vs Centrality, selected pi0 cluster with NLM>1",
4213 nptbins,ptmin,ptmax,100,0,100);
4214 fhCentralityPi0NLocMaxN->SetYTitle("#it{Centrality}");
4215 fhCentralityPi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4216 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4220 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
4221 "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4222 nptbins,ptmin,ptmax,100,0,100);
4223 fhCentralityEtaNLocMax1->SetYTitle("#it{Centrality}");
4224 fhCentralityEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4225 outputContainer->Add(fhCentralityEtaNLocMax1) ;
4227 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
4228 "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4229 nptbins,ptmin,ptmax,100,0,100);
4230 fhCentralityEtaNLocMax2->SetYTitle("#it{Centrality}");
4231 fhCentralityEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4232 outputContainer->Add(fhCentralityEtaNLocMax2) ;
4234 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
4235 "E vs Centrality, selected pi0 cluster with NLM>1",
4236 nptbins,ptmin,ptmax,100,0,100);
4237 fhCentralityEtaNLocMaxN->SetYTitle("#it{Centrality}");
4238 fhCentralityEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4239 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4242 // E vs Event plane angle
4244 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4245 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4246 fhEventPlanePi0NLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4247 fhEventPlanePi0NLocMax1->SetXTitle("#it{E} (GeV)");
4248 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4250 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4251 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4252 fhEventPlanePi0NLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4253 fhEventPlanePi0NLocMax2->SetXTitle("#it{E} (GeV)");
4254 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4256 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4257 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4258 fhEventPlanePi0NLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4259 fhEventPlanePi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4260 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4264 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4265 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4266 fhEventPlaneEtaNLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4267 fhEventPlaneEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4268 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4270 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4271 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4272 fhEventPlaneEtaNLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4273 fhEventPlaneEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4274 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4276 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4277 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4278 fhEventPlaneEtaNLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4279 fhEventPlaneEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4280 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4286 for(Int_t i = 0; i < 4; i++)
4288 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4289 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4290 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4291 fhMassM02NLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4292 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4293 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
4295 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4296 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4297 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4298 fhMassM02NLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4299 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4300 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
4302 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4303 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4304 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4305 fhMassM02NLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4306 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4307 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
4310 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4311 Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=1, %s",sEBin[i].Data()),
4312 200,-1,1,mbins,mmin,mmax);
4313 fhMassAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4314 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4315 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4317 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4318 Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=2, %s",sEBin[i].Data()),
4319 200,-1,1,mbins,mmin,mmax);
4320 fhMassAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4321 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4322 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4324 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4325 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4326 200,-1,1,mbins,mmin,mmax);
4327 fhMassAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4328 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4329 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4332 if(IsDataMC() && fFillMCHisto)
4334 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4335 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4336 ssbins,ssmin,ssmax,100,0,1);
4337 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4338 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4339 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4341 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4342 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4343 ssbins,ssmin,ssmax,100,0,1);
4344 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4345 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4346 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4348 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4349 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4350 ssbins,ssmin,ssmax,100,0,1);
4351 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4352 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4353 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
4356 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4357 Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=1, %s",sEBin[i].Data()),
4359 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4360 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("#it{A}");
4361 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4363 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4364 Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=2, %s",sEBin[i].Data()),
4366 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4367 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("#it{A}");
4368 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4370 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4371 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4373 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4374 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("#it{A}");
4375 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4378 if(fFillSSExtraHisto)
4380 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4381 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4382 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4383 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4384 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4385 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
4387 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4388 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4389 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4390 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4391 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4392 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
4394 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4395 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4396 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4397 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4398 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4399 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
4401 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4402 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4403 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4404 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4405 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4406 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
4408 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4409 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4410 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4411 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4412 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4413 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
4415 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4416 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4417 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4418 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4419 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4420 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
4422 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4423 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}), %s",sEBin[i].Data()),
4424 200,-1,1,mbins,mmin,mmax);
4425 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4426 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4427 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
4429 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4430 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}), %s",sEBin[i].Data()),
4431 200,-1,1,mbins,mmin,mmax);
4432 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4433 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4434 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
4436 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4437 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}), %s",sEBin[i].Data()),
4438 200,-1,1,mbins,mmin,mmax);
4439 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4440 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4441 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
4446 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4448 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4449 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
4450 nptbins,ptmin,ptmax,200,0,2);
4451 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4452 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("#it{E} (GeV)");
4453 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4455 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4456 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
4457 nptbins,ptmin,ptmax,200,0,2);
4458 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4459 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("#it{E} (GeV)");
4460 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4463 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4464 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
4465 nptbins,ptmin,ptmax,200,0,2);
4466 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4467 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("#it{E} (GeV)");
4468 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4470 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4471 "#it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
4472 nptbins,ptmin,ptmax,200,0,2);
4473 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4474 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("#it{E} (GeV)");
4475 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4477 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4478 " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
4479 nptbins,ptmin,ptmax,200,0,2);
4480 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4481 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("#it{E} (GeV)");
4482 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4485 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4486 " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
4487 nptbins,ptmin,ptmax,200,0,2);
4488 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4489 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("#it{E} (GeV)");
4490 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4494 if(fFillTMResidualHisto && fFillTMHisto)
4496 for(Int_t i = 0; i < n; i++)
4499 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
4500 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4501 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4502 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4503 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4504 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4506 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
4507 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4508 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4509 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4510 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4511 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4513 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
4514 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4516 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
4517 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4518 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4519 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4520 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4521 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4523 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
4524 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4525 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4526 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4527 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4528 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4530 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
4531 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4533 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
4534 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4535 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4536 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4537 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4538 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4540 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
4541 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4542 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4543 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4544 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4545 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4547 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
4548 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4550 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
4551 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4552 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4553 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4554 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4555 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4557 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
4558 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4559 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4560 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4561 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4562 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4564 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4565 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4567 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
4568 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4569 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4570 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4571 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4572 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4574 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
4575 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4576 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4577 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4578 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4579 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4581 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4582 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4584 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
4585 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4586 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4587 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4588 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4589 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4591 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
4592 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4593 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4594 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4595 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4596 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4598 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4599 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4601 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
4602 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4603 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4604 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4605 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4606 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4608 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
4609 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4610 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4611 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4612 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4613 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4615 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4616 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4618 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
4619 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4620 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4621 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4622 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4623 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4625 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
4626 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4627 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4628 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4629 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4630 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4632 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4633 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4635 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
4636 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4637 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4638 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4639 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4640 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4642 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
4643 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4644 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4645 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4646 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4647 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4649 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4650 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4657 for(Int_t i = 0; i < n; i++)
4659 for(Int_t j = 0; j < nMatched; j++)
4662 fhAnglePairNLocMax1[i][j] = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4663 Form("Opening angle split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4664 nptbins,ptmin,ptmax,200,0,0.2);
4665 fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4666 fhAnglePairNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4667 outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4669 fhAnglePairNLocMax2[i][j] = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4670 Form("Opening angle split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4671 nptbins,ptmin,ptmax,200,0,0.2);
4672 fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4673 fhAnglePairNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4674 outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4676 fhAnglePairNLocMaxN[i][j] = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4677 Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4678 nptbins,ptmin,ptmax,200,0,0.2);
4679 fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4680 fhAnglePairNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4681 outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4685 fhAnglePairAfterCutsNLocMax1[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4686 Form("Opening angle split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4687 nptbins,ptmin,ptmax,200,0,0.2);
4688 fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4689 fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4690 outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4692 fhAnglePairAfterCutsNLocMax2[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4693 Form("Opening angle split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4694 nptbins,ptmin,ptmax,200,0,0.2);
4695 fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4696 fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4697 outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4699 fhAnglePairAfterCutsNLocMaxN[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4700 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4701 nptbins,ptmin,ptmax,200,0,0.2);
4702 fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4703 fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4704 outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4708 fhAnglePairPi0NLocMax1[i][j] = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4709 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4710 nptbins,ptmin,ptmax,200,0,0.2);
4711 fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4712 fhAnglePairPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4713 outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4715 fhAnglePairPi0NLocMax2[i][j] = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4716 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4717 nptbins,ptmin,ptmax,200,0,0.2);
4718 fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4719 fhAnglePairPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4720 outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4722 fhAnglePairPi0NLocMaxN[i][j] = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4723 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4724 nptbins,ptmin,ptmax,200,0,0.2);
4725 fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4726 fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4727 outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4729 fhAnglePairMassNLocMax1[i][j] = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4730 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4731 mbins,mmin,mmax,200,0,0.2);
4732 fhAnglePairMassNLocMax1[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4733 fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4734 outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4737 fhAnglePairMassNLocMax2[i][j] = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4738 Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4739 mbins,mmin,mmax,200,0,0.2);
4740 fhAnglePairMassNLocMax2[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4741 fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4742 outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4744 fhAnglePairMassNLocMaxN[i][j] = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4745 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4746 mbins,mmin,mmax,200,0,0.2);
4747 fhAnglePairMassNLocMaxN[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4748 fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4749 outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;
4752 fhAnglePairM02NLocMax1[i][j] = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4753 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 15 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4754 ssbins,ssmin,ssmax,200,0,0.2);
4755 fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4756 fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4757 outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4760 fhAnglePairM02NLocMax2[i][j] = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4761 Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4762 ssbins,ssmin,ssmax,200,0,0.2);
4763 fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4764 fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4765 outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4767 fhAnglePairM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4768 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4769 ssbins,ssmin,ssmax,200,0,0.2);
4770 fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4771 fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4772 outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4774 fhAnglePairOverM02NLocMax1[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4775 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4776 nptbins,ptmin,ptmax,200,0,0.2);
4777 fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4778 fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4779 outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4781 fhAnglePairOverM02NLocMax2[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4782 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4783 nptbins,ptmin,ptmax,200,0,0.2);
4784 fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4785 fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4786 outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4788 fhAnglePairOverM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4789 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4790 nptbins,ptmin,ptmax,200,0,0.2);
4791 fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4792 fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4793 outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4796 fhAnglePairOverM02NLocMax1Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4797 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=1 vs pair Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4798 nptbins,ptmin,ptmax,200,0,0.2);
4799 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4800 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4801 outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4803 fhAnglePairOverM02NLocMax2Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4804 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=2 cells vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4805 nptbins,ptmin,ptmax,200,0,0.2);
4806 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4807 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4808 outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4810 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4811 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4812 nptbins,ptmin,ptmax,200,0,0.2);
4813 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4814 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("#it{E} (GeV)");
4815 outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4823 fhAnglePairPrimPi0RecoNLocMax1 = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4824 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=1",
4825 nptbins,ptmin,ptmax,300,0,3);
4826 fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4827 fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("#it{E} (GeV)");
4828 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4830 fhAnglePairPrimPi0RecoNLocMax2 = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4831 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=2",
4832 nptbins,ptmin,ptmax,300,0,3);
4833 fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4834 fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("#it{E} (GeV)");
4835 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4837 fhAnglePairPrimPi0RecoNLocMaxN = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4838 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4839 nptbins,ptmin,ptmax,300,0,3);
4840 fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4841 fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("#it{E} (GeV)");
4842 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4845 fhAnglePairPrimPi0vsRecoNLocMax1 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4846 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, #it{NLM}=1",
4847 200,0,0.2,200,0,0.2);
4848 fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4849 fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4850 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4852 fhAnglePairPrimPi0vsRecoNLocMax2 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4853 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4854 200,0,0.2,200,0,0.2);
4855 fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4856 fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4857 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4859 fhAnglePairPrimPi0vsRecoNLocMaxN = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4860 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4861 200,0,0.2,200,0,0.2);
4862 fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4863 fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4864 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4867 fhAnglePairPrimPi0OverM02NLocMax1 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4868 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=1",
4869 nptbins,ptmin,ptmax,200,0,0.2);
4870 fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4871 fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("#it{E} (GeV)");
4872 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4874 fhAnglePairPrimPi0OverM02NLocMax2 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4875 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=2",
4876 nptbins,ptmin,ptmax,200,0,0.2);
4877 fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4878 fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("#it{E} (GeV)");
4879 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4881 fhAnglePairPrimPi0OverM02NLocMaxN = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4882 "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4883 nptbins,ptmin,ptmax,200,0,0.2);
4884 fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4885 fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("#it{E} (GeV)");
4886 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4891 // Same as asymmetry ...
4892 if(fFillThetaStarHisto)
4894 for(Int_t i = 0; i < n; i++)
4896 for(Int_t j = 0; j < nMatched; j++)
4899 fhCosThStarNLocMax1[i][j] = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4900 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4901 nptbins,ptmin,ptmax,200,-1,1);
4902 fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4903 fhCosThStarNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4904 outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4906 fhCosThStarNLocMax2[i][j] = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4907 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4908 nptbins,ptmin,ptmax,200,-1,1);
4909 fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4910 fhCosThStarNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4911 outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4913 fhCosThStarNLocMaxN[i][j] = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4914 Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4915 nptbins,ptmin,ptmax,200,-1,1);
4916 fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4917 fhCosThStarNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4918 outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4922 fhCosThStarAfterCutsNLocMax1[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4923 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4924 nptbins,ptmin,ptmax,200,-1,1);
4925 fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4926 fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4927 outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4929 fhCosThStarAfterCutsNLocMax2[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4930 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4931 nptbins,ptmin,ptmax,200,-1,1);
4932 fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4933 fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4934 outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4936 fhCosThStarAfterCutsNLocMaxN[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4937 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4938 nptbins,ptmin,ptmax,200,-1,1);
4939 fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4940 fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4941 outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4945 fhCosThStarPi0NLocMax1[i][j] = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4946 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4947 nptbins,ptmin,ptmax,200,-1,1);
4948 fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4949 fhCosThStarPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4950 outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4952 fhCosThStarPi0NLocMax2[i][j] = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4953 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4954 nptbins,ptmin,ptmax,200,-1,1);
4955 fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4956 fhCosThStarPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4957 outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4959 fhCosThStarPi0NLocMaxN[i][j] = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4960 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4961 nptbins,ptmin,ptmax,200,-1,1);
4962 fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4963 fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4964 outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4971 for(Int_t j = 0; j < nMatched; j++)
4973 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4974 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
4975 100,-1,1,120,0,1.2);
4976 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4977 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4978 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
4980 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4981 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
4982 100,-1,1,120,0,1.2);
4983 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4984 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4985 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
4987 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4988 Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
4989 100,-1,1,120,0,1.2);
4990 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4991 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4992 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
4996 fhClusterEtaPhiNLocMax1 = new TH2F
4997 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4998 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4999 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
5000 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
5002 fhClusterEtaPhiNLocMax2 = new TH2F
5003 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5004 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5005 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
5006 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
5008 fhClusterEtaPhiNLocMaxN = new TH2F
5009 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5010 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5011 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
5012 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
5014 fhPi0EtaPhiNLocMax1 = new TH2F
5015 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5016 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
5017 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
5018 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
5020 fhPi0EtaPhiNLocMax2 = new TH2F
5021 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5022 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
5023 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
5024 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
5026 fhPi0EtaPhiNLocMaxN = new TH2F
5027 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5028 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5029 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
5030 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
5034 fhEtaEtaPhiNLocMax1 = new TH2F
5035 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5036 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5037 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
5038 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
5040 fhEtaEtaPhiNLocMax2 = new TH2F
5041 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5042 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5043 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
5044 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
5046 fhEtaEtaPhiNLocMaxN = new TH2F
5047 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5048 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5049 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
5050 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
5054 if(fFillSSWeightHisto)
5056 for(Int_t nlm = 0; nlm < 3; nlm++)
5058 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
5059 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
5060 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
5061 fhPi0CellE[nlm]->SetYTitle("#it{E}_{cell}");
5062 fhPi0CellE[nlm]->SetXTitle("#it{E}_{cluster}");
5063 outputContainer->Add(fhPi0CellE[nlm]) ;
5065 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
5066 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
5067 nptbins,ptmin,ptmax, 100,0,1);
5068 fhPi0CellEFrac[nlm]->SetYTitle("#it{E}_{cell} / #it{E}_{cluster}");
5069 fhPi0CellEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5070 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
5072 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
5073 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
5074 nptbins,ptmin,ptmax, 100,-10,0);
5075 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(#it{E}_{cell} / #it{E}_{cluster})");
5076 fhPi0CellLogEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5077 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
5080 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
5081 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
5082 nptbins,ptmin,ptmax, 100,0,1);
5083 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{Loc Max 1}");
5084 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5085 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
5087 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
5088 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
5089 nptbins,ptmin,ptmax, 100,0,1);
5090 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cluster}");
5091 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5092 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
5094 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
5095 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
5096 nptbins,ptmin,ptmax, 100,0,1);
5097 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cluster}");
5098 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5099 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
5101 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
5102 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
5103 nptbins,ptmin,ptmax, 100,0,1);
5104 fhPi0CellEMaxFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cell i}");
5105 fhPi0CellEMaxFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5106 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
5108 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
5109 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
5110 nptbins,ptmin,ptmax, 200,0,2);
5111 fhPi0CellEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cell i}");
5112 fhPi0CellEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5113 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
5116 for(Int_t i = 0; i < fSSWeightN; i++)
5118 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
5119 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
5120 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5121 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
5122 fhM02WeightPi0[nlm][i] ->SetXTitle("#it{E} (GeV)");
5123 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
5126 for(Int_t i = 0; i < fSSECellCutN; i++)
5128 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
5129 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
5130 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5131 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
5132 fhM02ECellCutPi0[nlm][i] ->SetXTitle("#it{E} (GeV)");
5133 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
5139 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
5141 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5142 fhPi0EPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5143 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5144 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
5146 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5147 fhPi0EPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5148 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5149 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
5151 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5152 fhPi0EPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5153 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5154 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
5158 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5159 fhEtaEPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5160 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5161 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
5163 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5164 fhEtaEPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5165 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5166 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
5168 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5169 fhEtaEPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5170 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5171 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
5174 if(fFillNCellHisto && IsDataMC())
5177 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5178 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5179 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5180 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5182 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5183 fhNCellMassELowNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5184 fhNCellMassELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5185 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5187 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5188 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5189 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5190 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5192 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5193 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5194 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5195 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5197 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5198 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5199 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5200 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5202 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5203 fhNCellMassELowNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5204 fhNCellMassELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5205 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5207 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5208 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5209 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5210 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5212 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5213 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5214 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5215 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5217 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5218 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5219 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5220 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5222 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5223 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5224 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5225 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5227 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5228 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5229 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5230 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5232 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5233 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5234 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5235 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5239 if(IsDataMC() && fFillMCOverlapHisto)
5241 for(Int_t i = 1; i < n; i++)
5243 for(Int_t j = 0; j < 3; j++)
5245 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5246 Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5247 nptbins,ptmin,ptmax,10,0,10);
5248 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
5249 fhMCENOverlaps[j][i] ->SetXTitle("#it{E} (GeV)");
5250 outputContainer->Add(fhMCENOverlaps[j][i]) ;
5252 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5253 Form("Overlap 0, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5254 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5255 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
5256 fhMCEM02Overlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5257 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5259 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5260 Form("Overlap 1, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5261 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5262 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
5263 fhMCEM02Overlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5264 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5266 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5267 Form("Overlap N, #lambda_{0}^{2} vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5268 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5269 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
5270 fhMCEM02OverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5271 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5273 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5274 Form("Overlap 0, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5275 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5276 fhMCEMassOverlap0[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5277 fhMCEMassOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5278 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5280 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5281 Form("Overalap 1, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5282 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5283 fhMCEMassOverlap1[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5284 fhMCEMassOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5285 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5287 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5288 Form("Overlap N, Mass vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5289 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5290 fhMCEMassOverlapN[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5291 fhMCEMassOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5292 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5294 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5295 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5296 nptbins,ptmin,ptmax,100,0,1);
5297 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
5298 fhMCEAsymOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5299 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5301 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5302 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5303 nptbins,ptmin,ptmax,100,0,1);
5304 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
5305 fhMCEAsymOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5306 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5308 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5309 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5310 nptbins,ptmin,ptmax,100,0,1);
5311 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
5312 fhMCEAsymOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5313 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5318 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5319 Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5320 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5321 fhMCENCellOverlap0[j][i] ->SetYTitle("#it{N} cells");
5322 fhMCENCellOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5323 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5325 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5326 Form("Overalap 1, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5327 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5328 fhMCENCellOverlap1[j][i] ->SetYTitle("#it{N} cells");
5329 fhMCENCellOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5330 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5332 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5333 Form("Overlap N, n cells vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5334 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5335 fhMCENCellOverlapN[j][i] ->SetYTitle("#it{N} cells");
5336 fhMCENCellOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5337 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5340 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5341 Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5342 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5343 fhMCEEpriOverlap0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5344 fhMCEEpriOverlap0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5345 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5347 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5348 Form("Overalap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5349 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5350 fhMCEEpriOverlap1[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5351 fhMCEEpriOverlap1[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5352 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5354 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5355 Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5356 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5357 fhMCEEpriOverlapN[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5358 fhMCEEpriOverlapN[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5359 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5362 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5363 Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5364 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5365 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5366 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5367 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5369 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5370 Form("Overlap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5371 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5372 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5373 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5374 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5376 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5377 Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5378 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5379 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5380 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5381 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5384 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5385 Form("Overlap 0, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5386 nptbins,ptmin,ptmax,120,0,1.2);
5387 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5388 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5389 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5391 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5392 Form("Overalap 1, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5393 nptbins,ptmin,ptmax,120,0,1.2);
5394 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5395 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5396 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5398 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5399 Form("Overlap N, SplitEFrac vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5400 nptbins,ptmin,ptmax,120,0,1.2);
5401 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5402 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5403 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5407 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5408 Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5409 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5410 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5411 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5412 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5414 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5415 Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5416 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5417 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5418 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5419 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5421 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5422 Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5423 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5424 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5425 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5426 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5431 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5432 Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5433 nptbins,ptmin,ptmax,10,0,10);
5434 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
5435 fhMCENOverlapsMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5436 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5438 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5439 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5440 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5441 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5442 fhMCEM02Overlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5443 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5445 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5446 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5447 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5448 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5449 fhMCEM02Overlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5450 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5452 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5453 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5454 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5455 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
5456 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5457 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5459 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5460 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5461 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5462 fhMCEMassOverlap0Match[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5463 fhMCEMassOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5464 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5466 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5467 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5468 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5469 fhMCEMassOverlap1Match[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5470 fhMCEMassOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5471 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5473 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5474 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5475 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5476 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5477 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5478 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5481 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5482 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5483 nptbins,ptmin,ptmax,100,0,1);
5484 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|#it{A}|");
5485 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5486 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5488 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5489 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5490 nptbins,ptmin,ptmax,100,0,1);
5491 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|#it{A}|");
5492 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5493 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5495 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5496 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5497 nptbins,ptmin,ptmax,100,0,1);
5498 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|#it{A}|");
5499 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5500 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5503 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5504 Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5505 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5506 fhMCENCellOverlap0Match[j][i] ->SetYTitle("#it{N} cells");
5507 fhMCENCellOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5508 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5510 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5511 Form("Overalap 1, n cell vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5512 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5513 fhMCENCellOverlap1Match[j][i] ->SetYTitle("#it{N} cells");
5514 fhMCENCellOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5515 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5517 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5518 Form("Overlap N, n cell vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5519 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5520 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("#it{N} cells");
5521 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5522 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5524 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5525 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5526 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5527 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5528 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5529 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5531 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5532 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5533 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5534 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5535 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5536 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5538 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5539 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5540 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5541 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5542 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5543 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5546 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5547 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5548 nptbins,ptmin,ptmax,120,0,1.2);
5549 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5550 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5551 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5553 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5554 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5555 nptbins,ptmin,ptmax,120,0,1.2);
5556 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5557 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5558 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5560 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5561 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5562 nptbins,ptmin,ptmax,120,0,1.2);
5563 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5564 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5565 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5570 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5571 Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5572 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5573 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5574 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5575 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5577 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5578 Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5579 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5580 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5581 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5582 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5584 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5585 Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5586 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5587 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5588 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5589 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5597 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5598 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5599 fhMCPi0HighNLMPair ->SetYTitle("#it{N} maxima");
5600 fhMCPi0HighNLMPair ->SetXTitle("#it{E} (GeV)");
5601 outputContainer->Add(fhMCPi0HighNLMPair) ;
5603 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5604 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5605 fhMCPi0LowNLMPair ->SetYTitle("#it{N} maxima");
5606 fhMCPi0LowNLMPair ->SetXTitle("#it{E} (GeV)");
5607 outputContainer->Add(fhMCPi0LowNLMPair) ;
5609 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5610 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5611 fhMCPi0AnyNLMPair ->SetYTitle("#it{N} maxima");
5612 fhMCPi0AnyNLMPair ->SetXTitle("#it{E} (GeV)");
5613 outputContainer->Add(fhMCPi0AnyNLMPair) ;
5615 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5616 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5617 fhMCPi0NoneNLMPair ->SetYTitle("#it{N} maxima");
5618 fhMCPi0NoneNLMPair ->SetXTitle("#it{E} (GeV)");
5619 outputContainer->Add(fhMCPi0NoneNLMPair) ;
5622 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5623 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5624 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5625 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5626 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5628 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5629 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5630 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5631 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5632 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5634 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5635 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5636 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5637 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5638 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5640 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5641 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5642 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5643 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5644 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5647 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5648 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5649 fhMCPi0HighNLMPairOverlap ->SetYTitle("#it{N} maxima");
5650 fhMCPi0HighNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5651 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5653 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5654 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5655 fhMCPi0LowNLMPairOverlap ->SetYTitle("#it{N} maxima");
5656 fhMCPi0LowNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5657 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5659 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5660 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5661 fhMCPi0AnyNLMPairOverlap ->SetYTitle("#it{N} maxima");
5662 fhMCPi0AnyNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5663 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5665 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5666 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5667 fhMCPi0NoneNLMPairOverlap ->SetYTitle("#it{N} maxima");
5668 fhMCPi0NoneNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5669 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5671 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5672 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5673 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5674 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5675 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5677 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5678 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5679 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5680 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5681 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5683 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5684 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5685 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5686 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5687 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5689 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5690 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5691 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5692 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5693 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5696 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5697 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5698 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("#it{N} maxima");
5699 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("#it{E} (GeV)");
5700 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5702 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5703 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5704 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("#it{N} maxima");
5705 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("#it{E} (GeV)");
5706 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5708 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5709 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5710 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("#it{N} maxima");
5711 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("#it{E} (GeV)");
5712 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5714 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5715 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5716 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("#it{N} maxima");
5717 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("#it{E} (GeV)");
5718 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5720 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5721 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5722 fhMCPi0DecayPhotonAdjacent ->SetYTitle("#it{N} maxima");
5723 fhMCPi0DecayPhotonAdjacent ->SetXTitle("#it{E} (GeV)");
5724 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5726 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5727 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5728 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("#it{N} maxima");
5729 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("#it{E} (GeV)");
5730 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5733 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5734 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5735 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("#it{N} maxima");
5736 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("#it{E} (GeV)");
5737 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5739 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5740 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5741 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("#it{N} maxima");
5742 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("#it{E} (GeV)");
5743 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5745 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5746 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5747 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("#it{N} maxima");
5748 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("#it{E} (GeV)");
5749 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5751 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5752 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5753 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("#it{N} maxima");
5754 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("#it{E} (GeV)");
5755 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5757 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5758 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5759 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("#it{N} maxima");
5760 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("#it{E} (GeV)");
5761 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5763 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5764 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5765 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("#it{N} maxima");
5766 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("#it{E} (GeV)");
5767 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5770 for(Int_t nlm = 0; nlm < 3; nlm++)
5772 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5773 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5774 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5775 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5776 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5777 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5779 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5780 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5781 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5782 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5783 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5784 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5786 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5787 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5788 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5789 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5790 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5791 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5793 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5794 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5795 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5796 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5797 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5798 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5800 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5801 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5802 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5803 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5804 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("#it{E} (GeV)");
5805 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5807 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5808 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5809 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5810 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5811 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5812 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5815 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5816 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5817 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5818 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5819 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5820 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5822 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5823 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5824 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5825 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5826 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5827 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5829 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5830 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5831 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5832 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5833 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5834 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5836 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5837 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5838 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5839 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5840 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5841 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5843 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5844 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5845 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5846 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5847 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5848 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5850 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5851 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
5852 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5853 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5854 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5855 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5857 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5858 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E pi0 for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5859 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5860 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5861 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5862 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5864 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5865 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5866 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5867 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5868 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E pi0 (GeV)");
5869 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5871 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5872 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5873 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5874 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5875 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5876 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5878 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5879 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5880 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5881 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5882 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5883 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5885 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5886 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5887 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5888 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5889 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5890 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5892 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5893 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5894 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5895 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5896 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5897 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5899 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5900 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5901 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5902 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5903 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5904 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5906 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5907 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5908 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5909 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5910 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5911 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5913 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5914 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5915 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5916 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5917 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5918 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5920 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5921 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5922 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5923 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5924 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5925 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5927 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5928 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5929 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5930 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5931 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5932 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5934 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5935 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5936 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5937 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5938 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5939 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5941 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5942 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5943 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5944 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5945 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5946 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5948 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5949 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5950 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5951 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5952 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5953 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5955 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5956 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5957 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5958 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5959 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5960 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5962 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5963 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5964 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5965 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5966 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5967 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5970 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5971 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5972 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5973 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5974 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5975 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5977 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5978 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5979 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5980 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5981 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E} (GeV)");
5982 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5984 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5985 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5986 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5987 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5988 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5989 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5991 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5992 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5993 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5994 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5995 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5996 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5998 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5999 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6000 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6001 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6002 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6003 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
6005 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6006 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6007 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6008 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6009 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6010 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
6012 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6013 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6014 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6015 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6016 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6017 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6019 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6020 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6021 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6022 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6023 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6024 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6026 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6027 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
6028 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6029 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6030 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6031 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
6033 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6034 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
6035 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6036 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6037 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6038 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
6040 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6041 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
6042 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6043 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6044 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6045 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
6047 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6048 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
6049 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6050 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6051 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6052 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
6054 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6055 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6056 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6057 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6058 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6059 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
6061 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6062 Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6063 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6064 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6065 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6066 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
6068 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6069 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6070 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6071 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6072 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6073 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6075 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6076 Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6077 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6078 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6079 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6080 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6084 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
6085 nptbins,ptmin,ptmax,5,0,5);
6086 //fhMCEOverlapType ->SetYTitle("Overlap Type");
6087 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
6088 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6089 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6090 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6091 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
6092 fhMCEOverlapType->SetXTitle("Cluster #it{E} (GeV)");
6093 outputContainer->Add(fhMCEOverlapType) ;
6095 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
6096 nptbins,ptmin,ptmax,5,0,5);
6097 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
6098 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
6099 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6100 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6101 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6102 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
6103 fhMCEOverlapTypeMatch->SetXTitle("Cluster #it{E} (GeV)");
6104 outputContainer->Add(fhMCEOverlapTypeMatch) ;
6106 }// MC analysis, check overlaps
6111 for(Int_t inlm = 0; inlm < 3; inlm++)
6113 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
6114 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0",inlm),
6115 nptbins,ptmin,ptmax,200,-1,1);
6116 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6117 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("#it{E} (GeV)");
6118 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
6120 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
6121 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0Conv",inlm),
6122 nptbins,ptmin,ptmax,200,-1,1);
6123 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6124 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("#it{E} (GeV)");
6125 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
6129 if(fFillArmenterosHisto)
6131 Int_t narmbins = 400;
6133 Float_t armmax = 0.4;
6135 for(Int_t i = 0; i < 7; i++) // MC bin
6137 for(Int_t j = 0; j < 4; j++) // E bin
6139 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
6140 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6141 200, -1, 1, narmbins,armmin,armmax);
6142 fhArmNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6143 fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6144 outputContainer->Add(fhArmNLocMax1[i][j]) ;
6146 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
6147 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6148 200, -1, 1, narmbins,armmin,armmax);
6149 fhArmNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6150 fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6151 outputContainer->Add(fhArmNLocMax2[i][j]) ;
6153 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
6154 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6155 200, -1, 1, narmbins,armmin,armmax);
6156 fhArmNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6157 fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6158 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
6162 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
6163 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6164 200, -1, 1, narmbins,armmin,armmax);
6165 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6166 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6167 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
6169 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
6170 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6171 200, -1, 1, narmbins,armmin,armmax);
6172 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6173 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6174 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6176 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6177 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6178 200, -1, 1, narmbins,armmin,armmax);
6179 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6180 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6181 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6184 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6185 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6186 200, -1, 1, narmbins,armmin,armmax);
6187 fhArmPi0NLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6188 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6189 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6191 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6192 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6193 200, -1, 1, narmbins,armmin,armmax);
6194 fhArmPi0NLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6195 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6196 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6198 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6199 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6200 200, -1, 1, narmbins,armmin,armmax);
6201 fhArmPi0NLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6202 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6203 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6209 return outputContainer ;
6213 //_____________________________________________________________________________
6214 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6215 Int_t & mcindex, Int_t & tag)
6218 // Assign mc index depending on MC bit set, to be used in histograms arrays
6220 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(),fCalorimeter);
6222 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6223 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6224 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
6225 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
6226 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6227 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6228 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6229 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6230 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
6232 //printf("MC index %d\n",mcindex);
6236 //____________________________________________________________________________________________
6237 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6238 Int_t mctag, Bool_t matched,
6239 Float_t & eprim, Float_t & asymGen,
6240 Float_t & angleGen, Int_t & noverlaps )
6242 // Check origin of the candidates, get primary kinematics if overlapped meson decay
6245 Int_t mcLabel = cluster->GetLabel();
6247 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6248 eprim = primary.E();
6250 Int_t mesonLabel = -1;
6252 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6254 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6256 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6257 asymGen = TMath::Abs(asymGen);
6258 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6259 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
6263 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6264 asymGen = TMath::Abs(asymGen);
6265 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6266 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
6270 if(!fFillMCOverlapHisto) return;
6272 const UInt_t nlabels = cluster->GetNLabels();
6273 Int_t overpdg[nlabels];
6274 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6276 for(Int_t iover = 0; iover < noverlaps; iover++)
6278 Float_t histobin = -1;
6279 Int_t mpdg = overpdg[iover];
6281 if (mpdg==22) histobin = 0.5;
6282 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6283 else if(mpdg==-999999) histobin = 4.5;
6286 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6287 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6288 else histobin = 3.5;
6289 //printf("charge %f\n",charge);
6292 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6295 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
6296 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6301 //___________________________________________
6302 void AliAnaInsideClusterInvariantMass::Init()
6307 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6309 AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
6311 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6313 AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
6316 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6318 AliFatal("!!STOP: You want to use pure MC data!!\n");
6323 //_____________________________________________________
6324 void AliAnaInsideClusterInvariantMass::InitParameters()
6326 //Initialize the parameters of the analysis.
6327 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6329 fCalorimeter = "EMCAL" ;
6337 fSSWeight [0] = 4.00; fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6338 fSSWeight [5] = 4.40; fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6339 fSSWeight[10] = 4.70; fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6340 fSSWeight[15] = 5.20; fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6343 fSSECellCut [0] = 0.05; fSSECellCut [1] = 0.06; fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6344 fSSECellCut [5] = 0.10; fSSECellCut [6] = 0.11; fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6345 fSSECellCut[10] = 0.15; fSSECellCut[11] = 0.16; fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6346 fSSECellCut[15] = 0.20; fSSECellCut[16] = 0.21; fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6349 fNLMMinE [0] = 0.10; fNLMMinE [1] = 0.20; fNLMMinE [2] = 0.35; fNLMMinE [3] = 0.50; fNLMMinE [4] = 1.00;
6350 fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6352 fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6353 fWSimu[1] = 0; // Default, do not correct, change to 0.07
6358 //__________________________________________________________________
6359 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
6361 //Search for pi0 in fCalorimeter with shower shape analysis
6363 TObjArray * pl = 0x0;
6364 AliVCaloCells* cells = 0x0;
6366 //Select the Calorimeter of the photon
6367 if(fCalorimeter == "PHOS")
6369 pl = GetPHOSClusters();
6370 cells = GetPHOSCells();
6372 else if (fCalorimeter == "EMCAL")
6374 pl = GetEMCALClusters();
6375 cells = GetEMCALCells();
6380 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
6384 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
6386 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6388 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
6390 //-------------------------------------------
6391 // Get cluster parameters, do some rejection
6392 //-------------------------------------------
6394 Float_t en = cluster->E();
6395 Float_t l0 = cluster->GetM02();
6396 Int_t nc = cluster->GetNCells();
6397 Float_t bd = cluster->GetDistanceToBadChannel() ;
6399 //If too small or big E or low number of cells, or close to a bad channel skip it
6401 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6403 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6405 // Track-cluster matching
6407 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6408 if(!fFillTMHisto && matched) continue ;
6410 // Get cluster angles
6413 cluster->GetMomentum(lv, GetVertex(0));
6414 Float_t eta = lv.Eta();
6415 Float_t phi = lv.Phi();
6416 if(phi<0) phi=+TMath::TwoPi();
6418 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
6419 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6421 if(fFillNLMDiffCutHisto)
6423 FillNLMDiffCutHistograms(cluster,cells,matched);
6427 // Get PID, N local maximum, *** split cluster ***
6430 Double_t mass = 0., angle = 0.;
6431 TLorentzVector lv1, lv2;
6432 Int_t absId1 =-1; Int_t absId2 =-1;
6433 Float_t distbad1 =-1; Float_t distbad2 =-1;
6434 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
6436 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6437 GetVertex(0), nMax, mass, angle,
6438 lv1,lv2,absId1,absId2,
6439 distbad1,distbad2,fidcut1,fidcut2);
6443 Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6448 // Set some index for array histograms
6451 if (nMax == 1) inlm = 0;
6452 else if(nMax == 2) inlm = 1;
6453 else if(nMax > 2) inlm = 2;
6454 else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6456 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6457 if( (fCheckSplitDistToBad) &&
6458 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6461 Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6462 distbad1,distbad2, fidcut1,fidcut2);
6464 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6466 fhMassBadDistClose[inlm]->Fill(en,mass);
6467 fhM02BadDistClose [inlm]->Fill(en,l0 );
6470 if(!fidcut1 || !fidcut2)
6472 fhMassOnBorder[inlm]->Fill(en,mass);
6473 fhM02OnBorder [inlm]->Fill(en,l0 );
6479 // Get sub-cluster parameters
6481 Float_t e1 = lv1.Energy();
6482 Float_t e2 = lv2.Energy();
6484 Double_t tof1 = cells->GetCellTime(absId1);
6485 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6488 Double_t tof2 = cells->GetCellTime(absId2);
6489 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6492 Double_t t12diff = tof1-tof2;
6494 Float_t splitFrac = (e1+e2)/en;
6497 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6502 if(en > 8 && en <= 12) ebin = 0;
6503 if(en > 12 && en <= 16) ebin = 1;
6504 if(en > 16 && en <= 20) ebin = 2;
6505 if(en > 20) ebin = 3;
6507 // MC data histograms and some related calculations
6508 // mc tag, n overlaps, asym of generated mesons
6513 Float_t asymGen = -2;
6514 Float_t angleGen = 2000;
6515 Int_t noverlaps = 0;
6521 GetMCIndex(cluster,mcindex,mctag);
6523 // MC primary kine, generation fractions
6525 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6527 // For cluster with MC pi0 and more than 1 maxima
6533 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6538 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6542 if(fFillSSExtraHisto)
6543 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
6547 if(!matched && ebin >= 0 && fFillEbinHisto)
6548 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6553 FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6555 if(fFillArmenterosHisto && ebin >= 0)
6556 FillArmenterosHistograms(nMax, ebin, mcindex, en, lv1, lv2, l0, pidTag);
6558 if(fFillThetaStarHisto)
6559 FillThetaStarHistograms(nMax,matched,mcindex, en, lv1, lv2, l0, pidTag);
6562 //---------------------------------------------------------------------
6563 // From here start applying some cuts
6564 //---------------------------------------------------------------------
6566 // If set, check just on MC clusters when SS cut is applied
6567 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6569 // For cluster with MC pi0 and more than 1 maxima
6571 if(fFillMCOverlapHisto)
6572 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6578 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6579 nMax,matched,splitFrac, asym, eprim,asymGen);
6583 if(fFillMCOverlapHisto)
6584 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6588 // Fill few histograms, some still without cuts
6589 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6591 if(pidTag==AliCaloPID::kPi0)
6593 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6595 if(fFillSSWeightHisto && !matched)
6596 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6598 if(fFillTMHisto && fFillTMResidualHisto)
6599 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6601 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6603 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6604 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6605 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6608 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6610 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6612 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6614 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6619 if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6623 //______________________________________________________________________
6624 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6626 //Print some relevant parameters set for the analysis
6630 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6631 AliAnaCaloTrackCorrBaseClass::Print("");
6632 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
6633 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6634 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
6635 printf("Min. N Cells =%d \n", fMinNCells) ;
6636 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6637 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6643 //___________________________________________________________________________________________________________________
6644 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6645 AliVCaloCells* cells,
6646 AliVCluster * cluster,
6647 Float_t & l0, Float_t & l1,
6648 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6649 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6652 // Calculates new center of gravity in the local EMCAL-module coordinates
6653 // and tranfers into global ALICE coordinates
6654 // Calculates Dispersion and main axis
6658 AliInfo("Cluster pointer null!");
6662 Double_t eCell = 0.;
6663 Float_t fraction = 1.;
6664 Float_t recalFactor = 1.;
6672 Double_t etai = -1.;
6673 Double_t phii = -1.;
6678 Double_t etaMean = 0.;
6679 Double_t phiMean = 0.;
6681 Bool_t shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6683 Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6685 Float_t simuTotWeight = 0;
6686 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6688 simuTotWeight = GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6689 simuTotWeight/= energy;
6692 //Loop on cells, get weighted parameters
6693 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6695 //Get from the absid the supermodule, tower and eta/phi numbers
6696 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6697 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6699 //Get the cell energy, if recalibration is on, apply factors
6700 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6701 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6703 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6705 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6708 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6710 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6711 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6712 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6714 if(energy > 0 && eCell > eCellMin)
6716 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6717 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6719 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6721 //correct weight, ONLY in simulation
6722 w *= (fWSimu[0] - fWSimu[1] * w );
6724 etai=(Double_t)ieta;
6725 phii=(Double_t)iphi;
6732 sEta += w * etai * etai ;
6733 etaMean += w * etai ;
6734 sPhi += w * phii * phii ;
6735 phiMean += w * phii ;
6736 sEtaPhi += w * etai * phii ;
6739 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6743 //Normalize to the weight
6750 AliError(Form("Wrong weight %f\n", wtot));
6752 //Calculate dispersion
6753 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6755 //Get from the absid the supermodule, tower and eta/phi numbers
6756 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6757 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6759 //Get the cell energy, if recalibration is on, apply factors
6760 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6761 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6762 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6764 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6767 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6769 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6770 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6771 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6773 if(energy > 0 && eCell > eCellMin)
6775 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6776 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6778 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6780 //correct weight, ONLY in simulation
6781 w *= (fWSimu[0] - fWSimu[1] * w );
6783 etai=(Double_t)ieta;
6784 phii=(Double_t)iphi;
6787 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6788 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6789 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6792 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6795 //Normalize to the weigth and set shower shape parameters
6796 if (wtot > 0 && nstat > 1)
6805 sEta -= etaMean * etaMean ;
6806 sPhi -= phiMean * phiMean ;
6807 sEtaPhi -= etaMean * phiMean ;
6809 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6810 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6816 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6817 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;