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(),
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 fClusterMomentum(), fSubClusterMom1(), fSubClusterMom2(),
67 fSubClusterMomSum(), fSubClusterMomBoost(),
68 fPrimaryMom(), fMCDaughMom1(), fMCDaughMom2(),
71 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
72 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
73 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
74 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
75 fhMassEnCutNLocMax1(0), fhMassEnCutNLocMax2(0), fhMassEnCutNLocMaxN(0),
76 fhM02EnCutNLocMax1(0), fhM02EnCutNLocMax2(0), fhM02EnCutNLocMaxN(0),
77 fhAsymEnCutNLocMax1(0), fhAsymEnCutNLocMax2(0), fhAsymEnCutNLocMaxN(0),
78 fhSplitEFracEnCutNLocMax1(0), fhSplitEFracEnCutNLocMax2(0), fhSplitEFracEnCutNLocMaxN(0),
79 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
80 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
81 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
82 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
83 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
84 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
85 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
86 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
87 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
88 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
89 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
90 fhAnglePairPrimPi0OverM02NLocMax1(0), fhAnglePairPrimPi0OverM02NLocMax2(0), fhAnglePairPrimPi0OverM02NLocMaxN(0),
91 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
92 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
93 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
94 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
95 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
96 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
97 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
98 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
99 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
100 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
101 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
102 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
103 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
104 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
105 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
106 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
107 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
108 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
109 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
110 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
111 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
112 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
113 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
114 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
115 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
116 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
120 // Init array of histograms
121 for(Int_t i = 0; i < 7; i++)
123 for(Int_t j = 0; j < 2; j++)
125 fhMassNLocMax1[i][j] = 0;
126 fhMassNLocMax2[i][j] = 0;
127 fhMassNLocMaxN[i][j] = 0;
128 fhMassSplitENLocMax1[i][j] = 0;
129 fhMassSplitENLocMax2[i][j] = 0;
130 fhMassSplitENLocMaxN[i][j] = 0;
132 fhNLocMaxM02Cut[i][j] = 0;
133 fhSplitClusterENLocMax [i][j] = 0;
134 fhSplitClusterEPi0NLocMax[i][j] = 0;
135 fhM02NLocMax1[i][j] = 0;
136 fhM02NLocMax2[i][j] = 0;
137 fhM02NLocMaxN[i][j] = 0;
138 fhNCellNLocMax1[i][j] = 0;
139 fhNCellNLocMax2[i][j] = 0;
140 fhNCellNLocMaxN[i][j] = 0;
141 fhM02Pi0NLocMax1[i][j] = 0;
142 fhM02EtaNLocMax1[i][j] = 0;
143 fhM02ConNLocMax1[i][j] = 0;
144 fhM02Pi0NLocMax2[i][j] = 0;
145 fhM02EtaNLocMax2[i][j] = 0;
146 fhM02ConNLocMax2[i][j] = 0;
147 fhM02Pi0NLocMaxN[i][j] = 0;
148 fhM02EtaNLocMaxN[i][j] = 0;
149 fhM02ConNLocMaxN[i][j] = 0;
151 fhMassPi0NLocMax1[i][j] = 0;
152 fhMassEtaNLocMax1[i][j] = 0;
153 fhMassConNLocMax1[i][j] = 0;
154 fhMassPi0NLocMax2[i][j] = 0;
155 fhMassEtaNLocMax2[i][j] = 0;
156 fhMassConNLocMax2[i][j] = 0;
157 fhMassPi0NLocMaxN[i][j] = 0;
158 fhMassEtaNLocMaxN[i][j] = 0;
159 fhMassConNLocMaxN[i][j] = 0;
161 fhNCellPi0NLocMax1[i][j] = 0;
162 fhNCellEtaNLocMax1[i][j] = 0;
163 fhNCellPi0NLocMax2[i][j] = 0;
164 fhNCellEtaNLocMax2[i][j] = 0;
165 fhNCellPi0NLocMaxN[i][j] = 0;
166 fhNCellEtaNLocMaxN[i][j] = 0;
168 fhAsyPi0NLocMax1[i][j] = 0;
169 fhAsyEtaNLocMax1[i][j] = 0;
170 fhAsyConNLocMax1[i][j] = 0;
171 fhAsyPi0NLocMax2[i][j] = 0;
172 fhAsyEtaNLocMax2[i][j] = 0;
173 fhAsyConNLocMax2[i][j] = 0;
174 fhAsyPi0NLocMaxN[i][j] = 0;
175 fhAsyEtaNLocMaxN[i][j] = 0;
176 fhAsyConNLocMaxN[i][j] = 0;
178 fhMassM02NLocMax1[i][j]= 0;
179 fhMassM02NLocMax2[i][j]= 0;
180 fhMassM02NLocMaxN[i][j]= 0;
182 fhMassSplitEPi0NLocMax1[i][j] = 0;
183 fhMassSplitEPi0NLocMax2[i][j] = 0;
184 fhMassSplitEPi0NLocMaxN[i][j] = 0;
186 fhMassSplitEAfterCutsNLocMax1[i][j] = 0;
187 fhMassSplitEAfterCutsNLocMax2[i][j] = 0;
188 fhMassSplitEAfterCutsNLocMaxN[i][j] = 0;
191 fhMassDispEtaNLocMax1[i][j]= 0;
192 fhMassDispEtaNLocMax2[i][j]= 0;
193 fhMassDispEtaNLocMaxN[i][j]= 0;
194 fhMassDispPhiNLocMax1[i][j]= 0;
195 fhMassDispPhiNLocMax2[i][j]= 0;
196 fhMassDispPhiNLocMaxN[i][j]= 0;
197 fhMassDispAsyNLocMax1[i][j]= 0;
198 fhMassDispAsyNLocMax2[i][j]= 0;
199 fhMassDispAsyNLocMaxN[i][j]= 0;
201 fhSplitEFractionNLocMax1[i][j]=0;
202 fhSplitEFractionNLocMax2[i][j]=0;
203 fhSplitEFractionNLocMaxN[i][j]=0;
205 fhAnglePairNLocMax1 [i][j] = 0;
206 fhAnglePairNLocMax2 [i][j] = 0;
207 fhAnglePairNLocMaxN [i][j] = 0;
209 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
210 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
211 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
213 fhAnglePairPi0NLocMax1 [i][j] = 0;
214 fhAnglePairPi0NLocMax2 [i][j] = 0;
215 fhAnglePairPi0NLocMaxN [i][j] = 0;
217 fhAnglePairMassNLocMax1 [i][j] = 0;
218 fhAnglePairMassNLocMax2 [i][j] = 0;
219 fhAnglePairMassNLocMaxN [i][j] = 0;
221 fhAnglePairM02NLocMax1 [i][j] = 0;
222 fhAnglePairM02NLocMax2 [i][j] = 0;
223 fhAnglePairM02NLocMaxN [i][j] = 0;
225 fhAnglePairOverM02NLocMax1 [i][j] = 0;
226 fhAnglePairOverM02NLocMax2 [i][j] = 0;
227 fhAnglePairOverM02NLocMaxN [i][j] = 0;
229 fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
230 fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
231 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
233 fhCosThStarNLocMax1 [i][j] = 0;
234 fhCosThStarNLocMax2 [i][j] = 0;
235 fhCosThStarNLocMaxN [i][j] = 0;
237 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
238 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
239 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
241 fhCosThStarPi0NLocMax1 [i][j] = 0;
242 fhCosThStarPi0NLocMax2 [i][j] = 0;
243 fhCosThStarPi0NLocMaxN [i][j] = 0;
245 fhMCGenFracNLocMax1[i][j]= 0;
246 fhMCGenFracNLocMax2[i][j]= 0;
247 fhMCGenFracNLocMaxN[i][j]= 0;
249 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
250 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
251 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
253 fhMCGenSplitEFracNLocMax1[i][j]= 0;
254 fhMCGenSplitEFracNLocMax2[i][j]= 0;
255 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
257 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
258 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
259 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
261 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
262 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
263 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
265 fhMCGenEvsSplitENLocMax1[i][j]= 0;
266 fhMCGenEvsSplitENLocMax2[i][j]= 0;
267 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
269 fhAsymNLocMax1 [i][j] = 0;
270 fhAsymNLocMax2 [i][j] = 0;
271 fhAsymNLocMaxN [i][j] = 0;
273 fhMassAfterCutsNLocMax1[i][j] = 0;
274 fhMassAfterCutsNLocMax2[i][j] = 0;
275 fhMassAfterCutsNLocMaxN[i][j] = 0;
278 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
279 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
280 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
283 for(Int_t jj = 0; jj < 4; jj++)
285 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
286 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
287 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
289 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
290 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
291 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
293 fhMCGenFracNLocMaxEbin[i][jj] = 0;
294 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
296 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
297 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
298 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
301 fhTrackMatchedDEtaNLocMax1[i] = 0;
302 fhTrackMatchedDPhiNLocMax1[i] = 0;
303 fhTrackMatchedDEtaNLocMax2[i] = 0;
304 fhTrackMatchedDPhiNLocMax2[i] = 0;
305 fhTrackMatchedDEtaNLocMaxN[i] = 0;
306 fhTrackMatchedDPhiNLocMaxN[i] = 0;
308 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
309 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
310 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
311 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
312 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
313 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
315 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
316 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
317 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
318 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
319 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
320 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
322 for(Int_t nlm = 0; nlm < 3; nlm++)
324 fhMCEM02Overlap0 [nlm][i] = 0;
325 fhMCEM02Overlap1 [nlm][i] = 0;
326 fhMCEM02OverlapN [nlm][i] = 0;
327 fhMCEM02Overlap0Match[nlm][i] = 0;
328 fhMCEM02Overlap1Match[nlm][i] = 0;
329 fhMCEM02OverlapNMatch[nlm][i] = 0;
331 fhMCEMassOverlap0 [nlm][i] = 0;
332 fhMCEMassOverlap1 [nlm][i] = 0;
333 fhMCEMassOverlapN [nlm][i] = 0;
334 fhMCEMassOverlap0Match[nlm][i] = 0;
335 fhMCEMassOverlap1Match[nlm][i] = 0;
336 fhMCEMassOverlapNMatch[nlm][i] = 0;
338 fhMCEAsymOverlap0 [nlm][i] = 0;
339 fhMCEAsymOverlap1 [nlm][i] = 0;
340 fhMCEAsymOverlapN [nlm][i] = 0;
341 fhMCEAsymOverlap0Match[nlm][i] = 0;
342 fhMCEAsymOverlap1Match[nlm][i] = 0;
343 fhMCEAsymOverlapNMatch[nlm][i] = 0;
345 fhMCENCellOverlap0 [nlm][i] = 0;
346 fhMCENCellOverlap1 [nlm][i] = 0;
347 fhMCENCellOverlapN [nlm][i] = 0;
348 fhMCENCellOverlap0Match[nlm][i] = 0;
349 fhMCENCellOverlap1Match[nlm][i] = 0;
350 fhMCENCellOverlapNMatch[nlm][i] = 0;
352 fhMCEEpriOverlap0 [nlm][i] = 0;
353 fhMCEEpriOverlap1 [nlm][i] = 0;
354 fhMCEEpriOverlapN [nlm][i] = 0;
355 fhMCEEpriOverlap0Match[nlm][i] = 0;
356 fhMCEEpriOverlap1Match[nlm][i] = 0;
357 fhMCEEpriOverlapNMatch[nlm][i] = 0;
359 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
360 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
361 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
363 fhMCESplitEFracOverlap0 [nlm][i] = 0;
364 fhMCESplitEFracOverlap1 [nlm][i] = 0;
365 fhMCESplitEFracOverlapN [nlm][i] = 0;
366 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
367 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
368 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
370 fhMCENOverlaps [nlm][i] = 0;
371 fhMCENOverlapsMatch [nlm][i] = 0;
375 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
376 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
377 fhMCPi0MassM02OverlapN [nlm][i] = 0;
378 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
379 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
380 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
384 for(Int_t i = 0; i < 2; i++)
386 fhSplitEFractionvsAsyNLocMax1[i] = 0;
387 fhSplitEFractionvsAsyNLocMax2[i] = 0;
388 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
391 for(Int_t i = 0; i < 4; i++)
393 fhMassM02NLocMax1Ebin[i] = 0 ;
394 fhMassM02NLocMax2Ebin[i] = 0 ;
395 fhMassM02NLocMaxNEbin[i] = 0 ;
397 fhMassAsyNLocMax1Ebin[i] = 0 ;
398 fhMassAsyNLocMax2Ebin[i] = 0 ;
399 fhMassAsyNLocMaxNEbin[i] = 0 ;
401 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
402 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
403 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
405 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
406 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
407 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
409 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
410 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
411 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
413 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
414 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
415 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
417 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
418 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
419 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
422 for(Int_t nlm = 0; nlm < 3; nlm++)
425 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
426 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
427 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
428 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
430 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
431 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
432 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
433 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
435 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
436 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
437 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
438 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
440 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
441 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
442 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
443 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
445 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
446 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
447 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
448 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
450 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
451 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
452 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
453 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
455 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
456 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
457 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
458 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
460 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
461 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
462 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
463 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
465 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
466 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
467 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
468 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
469 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
470 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
472 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
473 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
474 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
475 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
476 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
477 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
479 fhPi0CellE [nlm] = 0 ;
480 fhPi0CellEFrac [nlm] = 0 ;
481 fhPi0CellLogEFrac[nlm] = 0 ;
483 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
484 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
485 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
487 fhPi0CellEMaxFrac [nlm] = 0 ;
488 fhPi0CellEMax2Frac[nlm] = 0 ;
490 for(Int_t i = 0; i < 20; i++)
492 fhM02WeightPi0 [nlm][i] = 0;
493 fhM02ECellCutPi0[nlm][i] = 0;
496 fhMassBadDistClose[nlm] = 0;
497 fhM02BadDistClose [nlm] = 0;
498 fhMassOnBorder [nlm] = 0;
499 fhM02OnBorder [nlm] = 0;
501 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
502 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
506 for(Int_t i = 0; i < 7; i++)
508 for(Int_t j = 0; j < 4; j++)
511 fhArmNLocMax1[i][j] = 0;
512 fhArmNLocMax2[i][j] = 0;
513 fhArmNLocMaxN[i][j] = 0;
515 fhArmPi0NLocMax1[i][j] = 0;
516 fhArmPi0NLocMax2[i][j] = 0;
517 fhArmPi0NLocMaxN[i][j] = 0;
519 fhArmAfterCutsNLocMax1[i][j] = 0;
520 fhArmAfterCutsNLocMax2[i][j] = 0;
521 fhArmAfterCutsNLocMaxN[i][j] = 0;
526 for(Int_t i = 0; i < 5; i++)
528 for(Int_t j = 0; j < 5; j++)
530 fhNLocMaxDiffCut [i][j][0] = 0;
531 fhNLocMaxDiffCut [i][j][1] = 0;
532 fhNLocMaxDiffCutPi0[i][j][0] = 0;
533 fhNLocMaxDiffCutPi0[i][j][1] = 0;
534 for(Int_t k = 0; k < 3; k++)
536 fhM02NLocMaxDiffCut [i][j][k][0] = 0;
537 fhM02NLocMaxDiffCut [i][j][k][1] = 0;
538 fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
539 fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
540 fhMassNLocMaxDiffCut [i][j][k][0] = 0;
541 fhMassNLocMaxDiffCut [i][j][k][1] = 0;
542 fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
543 fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
552 //___________________________________________________________________________________________________________________
553 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
554 Float_t e1, Float_t e2, Float_t mass)
556 //TLorentzVector l1, TLorentzVector l2)
558 // Check origin NLM tower of the cluster, when MC gives merged pi0
560 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
562 const UInt_t nc = cluster->GetNCells();
565 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
570 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
571 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
573 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
575 // 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",
576 // nMax, noverlaps,mass,m02,
577 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
578 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
580 // // Study the mothers of cluster
581 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
582 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
584 // Int_t mclabel = cluster->GetLabels()[ilab];
587 // Int_t mpdg = -999999;
588 // Int_t mstatus = -1;
589 // Int_t grandLabel = -1;
590 // fPrimaryMom = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
592 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
593 // ilab, mclabel, mpdg, mstatus,fPrimaryMom.E(), fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(),mOK,grandLabel);
595 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
597 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
599 // Int_t newLabel = -1;
600 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
601 // 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",
602 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
603 // grandLabel = newLabel;
609 // printf("Cells in cluster %d\n",cluster->GetNCells() );
610 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
612 // Int_t absIdCell = cluster->GetCellAbsId(icell);
613 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
614 // GetReader()->RemapMCLabelForAODs(mcLabel);
615 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
616 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,GetCalorimeter(), ietac, iphic, rcuc);
618 // 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);
624 //If only one maxima, consider all the towers in the cluster
627 for (UInt_t icell = 0; icell < nc; icell++ )
629 list [icell] = cluster->GetCellAbsId(icell);
630 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
634 Int_t nmaxima = nMax;
635 if(nMax==1) nmaxima = nc ;
637 //Find highest energy Local Maxima Towers
642 for(Int_t i = 0; i < nmaxima; i++)
644 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
652 //Find second highest
653 for(Int_t i = 0; i < nmaxima; i++)
655 if(i==imax) continue;
657 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
666 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
667 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
669 //---------------------------------------------------------
670 //---------------------------------------------------------
671 // Compare ancestors of all local maxima at cell MC level
672 //---------------------------------------------------------
673 //---------------------------------------------------------
675 // Check that the highest mc label and the max cluster label are the same
676 Int_t mcLabelMax = -1 ;
677 if(imax >=0 && imax < 999)
679 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
680 GetReader()->RemapMCLabelForAODs(mcLabelMax);
683 Int_t mcLabelMax2 = -1 ;
684 if(imax2 >=0 && imax2 < 999)
686 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
687 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
690 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
691 Bool_t matchHighLMAndHighMC = kFALSE;
693 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
695 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
697 matchHighLMAndHighMC = kTRUE;
698 //printf("\t *** MATCH cluster and LM maximum ***\n");
702 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
703 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
705 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
706 matchHighLMAndHighMC = kTRUE;
710 //printf("\t \t *** NO MATCH***\n");
711 matchHighLMAndHighMC = kFALSE;
715 // Compare the common ancestors of the 2 highest energy local maxima
716 Int_t ancPDG = 0, ancStatus = -1;
718 Bool_t high = kFALSE;
721 // // print maxima origin
722 // for(Int_t i = 0; i < nMax; i++)
724 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
725 // GetReader()->RemapMCLabelForAODs(mcLabel1);
727 // Bool_t ok =kFALSE,gok = kFALSE;
728 // Int_t pdg = -22222, status = -1;
729 // Int_t gpdg = -22222, gstatus = -1;
730 // Int_t ggpdg = -22222, ggstatus = -1;
731 // Int_t gLabel = -1, ggLabel = -1;
732 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
733 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
734 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
735 // 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",
736 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
739 for(Int_t i = 0; i < nmaxima-1; i++)
741 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
742 GetReader()->RemapMCLabelForAODs(mcLabel1);
744 for(Int_t j = i+1; j < nmaxima; j++)
746 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
747 GetReader()->RemapMCLabelForAODs(mcLabel2);
749 if(mcLabel1 < 0 || mcLabel2 < 0 )
751 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
755 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
756 GetReader(),ancPDG,ancStatus,fPrimaryMom,fProdVertex);
759 if((i==imax && j==imax2) || (j==imax && i==imax2))
764 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
766 // If both bits are set, it could be that one of the maxima had a conversion
767 // reset the bit in this case
770 //printf("\t Reset low bit\n");
776 Int_t pdg = -22222, status = -1;
777 fPrimaryMom = GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
778 //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);
783 Float_t en = cluster->E();
785 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
786 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
790 if(matchHighLMAndHighMC)
792 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
793 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
794 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
795 else fhMCPi0NoneNLMPair->Fill(en,nMax);
799 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
800 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
801 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
802 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
807 if(matchHighLMAndHighMC)
809 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
810 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
811 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
812 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
816 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
817 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
818 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
819 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
823 //----------------------------------------------------------------------
824 //----------------------------------------------------------------------
825 // Compare MC decay photon projection to cell location and Local Maxima
826 //----------------------------------------------------------------------
827 //----------------------------------------------------------------------
829 // Get the mother pi0
832 Int_t pdg = -22222, status = -1;
835 Int_t label = cluster->GetLabel();
837 while( pdg!=111 && label>=0 )
839 fPrimaryMom = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
842 if(pdg!=111 || label < 0)
844 Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
848 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
852 Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
856 // Get daughter photon kinematics
857 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
858 fMCDaughMom1 = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
859 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
860 fMCDaughMom2 = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
862 if(pdg1!=22 || pdg0 != 22)
864 Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
868 // In what cells did the photons hit
869 Float_t eta0 = fMCDaughMom1.Eta();
870 Float_t eta1 = fMCDaughMom2.Eta();
872 Float_t phi0 = fMCDaughMom1.Phi();
873 Float_t phi1 = fMCDaughMom2.Phi();
875 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
877 // 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",
878 // label , fPrimaryMom.E() , fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(), (fMCDaughMom1+fMCDaughMom2).M(),
879 // label0, fMCDaughMom1.E(), eta0, phi0*TMath::RadToDeg(),
880 // label1, fMCDaughMom2.E(), eta1, phi1*TMath::RadToDeg());
882 // TLorentzVector momclus;
883 // cluster->GetMomentum(momclus,GetVertex(0));
884 // 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());
887 if(phi0 < 0 ) phi0+=TMath::TwoPi();
888 if(phi1 < 0 ) phi1+=TMath::TwoPi();
890 Int_t absId0=-1, absId1=-1;
891 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
892 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
894 if(absId0 < 0 || absId1 < 0)
896 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
900 //-----------------------------------------------
901 // Check that the 2 photons hit the Local Maxima
902 //-----------------------------------------------
905 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
907 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
908 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
910 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
911 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,GetCalorimeter(), ieta0, iphi0, rcu0);
912 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
913 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,GetCalorimeter(), ieta1, iphi1, rcu1);
915 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
916 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
918 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
919 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,GetCalorimeter(), ietam0, iphim0, rcum0);
920 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
921 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],GetCalorimeter(), ietam1, iphim1, rcum1);
923 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
924 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
928 if(inlm > 2) inlm = 2;
930 Bool_t match0 = kFALSE;
931 Bool_t match1 = kFALSE;
934 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
936 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
937 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
939 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
940 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
943 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
945 // If one or the 2 not matched, check with the other MC labels
946 // only in case there was a conversion
948 Int_t absId0second = -1;
949 Int_t absId1second = -1;
950 Int_t secLabel0 = -1;
951 Int_t secLabel1 = -1;
955 Int_t secpdg = -999999;
956 Int_t secstatus = -1;
957 Int_t secgrandLabel = -1;
959 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
960 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
962 if((!match0 || !match1) && mcindex == kmcPi0Conv)
964 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
966 Int_t mclabel = cluster->GetLabels()[ilab];
968 //printf("Check label %d - %d\n",ilab,mclabel);
970 if(mclabel == label0 || mclabel == label1)
972 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
973 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
974 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
978 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
980 // match mc label and parent photon
981 Int_t tmplabel = mclabel;
982 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
984 fPrimaryMom = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
986 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
988 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
990 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
991 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
992 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
995 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
997 tmplabel = secgrandLabel;
1001 // Get the position of the found secondaries mother
1002 if(!match0 && secLabel0 > 0)
1004 fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1006 //Float_t eta = fPrimaryMom.Eta();
1007 //Float_t phi = fPrimaryMom.Phi();
1008 //if(phi < 0 ) phi+=TMath::TwoPi();
1009 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1011 //printf("Secondary MC0 label %d, absId %d E %2.2F eta %2.2f, phi %f\n", secLabel0,absId0second, fPrimaryMom.E(),fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg());
1013 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
1014 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1017 if(!match1 && secLabel1 > 0)
1019 fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1021 //Float_t eta = fPrimaryMom.Eta();
1022 //Float_t phi = fPrimaryMom.Phi();
1023 //if(phi < 0 ) phi+=TMath::TwoPi();
1024 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1026 //printf("Secondary MC1 label %d absId %d E %2.2F eta %2.2f, phi %f\n",secLabel1, absId1second, fPrimaryMom.E(),fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg());
1028 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
1029 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1032 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1036 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1037 if( match0 && match1 )
1039 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1040 // printf("a) Both Photons hit local maxima \n");
1044 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
1045 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1046 if(match0 && imatch0 == imax)
1048 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1049 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1050 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1051 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1055 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1056 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1057 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1058 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1063 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1064 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1065 if(match0 && imatch0 == imax )
1067 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1068 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1069 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1070 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1074 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1075 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1076 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1077 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1085 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1086 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1088 //---------------------------------------------
1089 // Check the adjacent cells to the local maxima
1090 //---------------------------------------------
1094 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1095 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1096 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1097 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1102 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1103 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1105 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1106 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1109 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1111 if(match0 && match1)
1113 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1114 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1118 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1119 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1121 if(match0 && imatch0 == imax)
1123 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1124 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1125 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1126 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1130 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1131 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1132 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1133 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1138 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1139 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1140 if(match0 && imatch0 == imax)
1142 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1143 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1144 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1145 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1149 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1150 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1151 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1152 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1159 // Decay photon cells are adjacent?
1161 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,absId1) )
1163 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1164 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1167 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1168 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1172 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1173 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1179 //--------------------
1180 // Other Local maxima
1181 //--------------------
1183 Bool_t matchMCHitOtherLM = kFALSE;
1186 for(Int_t i = 0; i < nmaxima; i++)
1188 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1194 for(Int_t i = 0; i < nmaxima; i++)
1196 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1200 if(matchMCHitOtherLM)
1202 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1203 // printf("d) One Photon hits a local maxima, the other another not high \n");
1207 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1208 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1209 if(match0 && imatch0 == imax)
1211 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1212 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1216 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1217 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1222 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1223 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1224 if(match0 && imatch0 == imax)
1226 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1227 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1231 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1232 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1239 // Adjacent to other maxima
1241 Bool_t adjacentOther1 = kFALSE;
1244 for(Int_t i = 0; i < nmaxima; i++)
1246 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1247 GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1249 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1251 if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[i]) ) adjacentOther1 = kTRUE;
1253 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1257 Bool_t adjacentOther0 = kFALSE;
1260 for(Int_t i = 0; i < nmaxima; i++)
1262 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1263 GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1265 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1267 if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[i]) ) adjacentOther0 = kTRUE;
1269 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1273 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1276 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1277 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1281 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1282 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1283 if(match0 && imatch0 == imax)
1285 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1286 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1290 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1291 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1296 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1297 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1298 if(match0 && imatch0 == imax)
1300 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1301 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1305 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1306 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1313 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1314 // printf("f) No hit found \n");
1317 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1318 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1322 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1323 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1328 //___________________________________________________________________________________________________________
1329 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1330 Float_t en, Float_t e1, Float_t e2,
1331 Float_t angle, Float_t mass,
1332 Float_t anglePrim, Float_t m02,
1333 Float_t asym, Int_t pid, Int_t noverlaps)
1335 // Fill histograms related to opening angle
1337 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1338 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1339 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1340 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1342 Bool_t eCutOK= kFALSE;
1343 Int_t inlm = nMax-1;
1344 if(inlm > 2 ) inlm = 2;
1345 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1346 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1347 else if(ensubcut < 0.1) eCutOK = kTRUE;
1351 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1353 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1354 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1355 if(pid==AliCaloPID::kPi0)
1356 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1360 fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1361 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1366 fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1367 fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1372 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1374 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1375 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1376 if(pid==AliCaloPID::kPi0)
1377 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1381 fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1382 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1385 if( en > fHistoECut )
1387 fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1388 fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1393 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1395 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1396 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1397 if(pid==AliCaloPID::kPi0)
1398 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1402 fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1403 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1406 if( en > fHistoECut )
1408 fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1409 fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1413 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1417 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1420 fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1421 fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1423 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1424 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1425 if(pid==AliCaloPID::kPi0)
1426 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1430 fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1431 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1434 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1436 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1437 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1438 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1444 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1445 if( en > fHistoECut )
1447 fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1448 fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1451 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1452 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1453 if(pid==AliCaloPID::kPi0)
1454 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1458 fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1459 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1462 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1464 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1465 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1466 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1471 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1472 if( en > fHistoECut )
1474 fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1475 fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1477 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1478 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1479 if(pid==AliCaloPID::kPi0)
1480 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1484 fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1485 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1488 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1490 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1491 if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1492 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1500 //______________________________________________________________________________________________________________________
1501 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1502 Float_t en, Float_t m02, Int_t pid)
1504 // Fill Armeteros type histograms
1506 // Get pTArm and AlphaArm
1507 fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1508 Float_t momentumSquaredMother = fSubClusterMomSum.P()*fSubClusterMomSum.P();
1509 Float_t momentumDaughter1AlongMother = 0.;
1510 Float_t momentumDaughter2AlongMother = 0.;
1512 if (momentumSquaredMother > 0.)
1514 momentumDaughter1AlongMother = (fSubClusterMom1.Px()*fSubClusterMomSum.Px() + fSubClusterMom1.Py()*fSubClusterMomSum.Py()+ fSubClusterMom1.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1515 momentumDaughter2AlongMother = (fSubClusterMom2.Px()*fSubClusterMomSum.Px() + fSubClusterMom2.Py()*fSubClusterMomSum.Py()+ fSubClusterMom2.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1518 Float_t momentumSquaredDaughter1 = fSubClusterMom1.P()*fSubClusterMom1.P();
1519 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1522 if (ptArmSquared > 0.)
1523 pTArm = sqrt(ptArmSquared);
1525 Float_t alphaArm = 0.;
1526 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1527 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1529 Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1531 if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1533 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1534 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1535 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1536 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1538 Bool_t eCutOK= kFALSE;
1539 Int_t inlm = nMax-1;
1540 if(inlm > 2 ) inlm = 2;
1541 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1542 if (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1543 else if(ensubcut < 0.1) eCutOK = kTRUE;
1548 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1549 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1550 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1551 if(pid==AliCaloPID::kPi0)
1552 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1556 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1557 if((m02OK && asyOK) && (asyOn || m02On))
1558 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1559 if(pid==AliCaloPID::kPi0)
1560 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1564 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1565 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1566 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1567 if(pid==AliCaloPID::kPi0)
1568 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1571 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1575 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1576 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1577 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1578 if(pid==AliCaloPID::kPi0)
1579 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1583 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1584 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1585 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1586 if(pid==AliCaloPID::kPi0)
1587 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1591 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1592 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1593 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1594 if(pid==AliCaloPID::kPi0)
1595 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1602 //______________________________________________________________________________________________________________
1603 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1604 Float_t en, Float_t m02, Int_t pid)
1606 // Fill cos Theta^star histograms
1609 // Get cos Theta^star
1610 fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1611 fSubClusterMomBoost = fSubClusterMom1;
1612 fSubClusterMomBoost.Boost(-fSubClusterMomSum.BoostVector());
1613 Float_t cosThStar=TMath::Cos(fSubClusterMomBoost.Vect().Angle(fSubClusterMomSum.Vect()));
1615 Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1617 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1618 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1619 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1620 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1622 Bool_t eCutOK= kFALSE;
1623 Int_t inlm = nMax-1;
1624 if(inlm > 2 ) inlm = 2;
1625 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1626 if (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1627 else if(ensubcut < 0.1) eCutOK = kTRUE;
1629 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1633 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1635 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1636 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1637 if(pid==AliCaloPID::kPi0)
1638 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1642 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1644 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1645 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1646 if(pid==AliCaloPID::kPi0)
1647 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1651 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1653 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1654 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1655 if(pid==AliCaloPID::kPi0)
1656 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1659 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1663 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1665 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1666 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1667 if(pid==AliCaloPID::kPi0)
1668 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1672 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1674 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1675 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1676 if(pid==AliCaloPID::kPi0)
1677 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1681 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1683 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1684 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1685 if(pid==AliCaloPID::kPi0)
1686 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1693 //__________________________________________________________________________________________________________________
1694 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t ebin , Int_t nMax, Int_t mcindex,
1695 Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1697 // Fill some histograms integrating in few energy bins
1701 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1702 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1704 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1705 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1709 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1710 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1712 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1713 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1717 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1718 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1720 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1721 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1726 //________________________________________________________________________________________________
1727 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en, Float_t e1, Float_t e2,
1728 Int_t nMax, Float_t mass, Float_t l0,
1729 Float_t eta, Float_t phi,
1730 Bool_t matched, Int_t mcindex)
1732 // Fill histograms for clusters before any selection after spliting
1734 Float_t splitFrac = (e1+e2)/en;
1737 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1739 fhNLocMax [0][matched]->Fill(en,nMax);
1740 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1741 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1742 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1743 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1745 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1747 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1748 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1749 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1750 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1751 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1756 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1757 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1759 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1761 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1762 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1767 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1768 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1770 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1771 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1774 else if( nMax == 2 )
1776 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1777 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1779 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1781 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1782 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1787 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1788 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1790 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1791 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1794 else if( nMax >= 3 )
1796 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1797 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1799 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1801 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1802 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1808 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1809 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1811 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1812 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1819 //________________________________________________________________________________________________
1820 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en, Float_t eprim,
1821 Float_t e1, Float_t e2,
1822 Int_t nMax, Float_t mass, Float_t l0,
1823 Bool_t matched, Int_t mcindex)
1825 // Fill histograms for clusters passing the first M02 selection
1827 Float_t efrac = eprim/en;
1828 Float_t efracSplit = 0;
1829 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1831 Float_t splitFrac = (e1+e2)/en;
1834 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1836 Int_t inlm = nMax-1;
1837 if(inlm > 2) inlm = 2;
1838 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1840 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1841 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1842 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1843 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1845 Bool_t eCutOK = kFALSE;
1846 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1847 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1848 else if(ensubcut < 0.1) eCutOK = kTRUE;
1850 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1854 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1855 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1856 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1857 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1859 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1860 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1861 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1867 fhMassNLocMax1[0][matched]->Fill(en,mass );
1868 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1869 fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1871 // Effect of cuts in mass histograms
1873 if(!matched && asyOK && asyOn )
1875 fhMassAsyCutNLocMax1->Fill(en,mass);
1876 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1879 if(!matched && m02OK && m02On )
1881 fhMassM02CutNLocMax1->Fill(en,mass);
1882 fhAsymM02CutNLocMax1->Fill(en,asym );
1883 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1886 if(!matched && eCutOK && ensubcut > 0.1)
1888 fhMassEnCutNLocMax1->Fill(en,mass );
1889 fhM02EnCutNLocMax1 ->Fill(en,l0 );
1890 fhAsymEnCutNLocMax1->Fill(en,asym );
1891 fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1894 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1896 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1897 if(splitFrac > splitFracMin)
1899 fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1900 fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1902 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1904 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1905 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1909 else if( nMax == 2 )
1911 fhMassNLocMax2[0][matched]->Fill(en,mass );
1912 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1913 fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1915 // Effect of cuts in mass histograms
1917 if(!matched && asyOK && asyOn )
1919 fhMassAsyCutNLocMax2->Fill(en,mass);
1920 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1923 if(!matched && m02OK && m02On )
1925 fhMassM02CutNLocMax2->Fill(en,mass);
1926 fhAsymM02CutNLocMax2->Fill(en,asym );
1927 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1930 if(!matched && eCutOK && ensubcut > 0.1)
1932 fhMassEnCutNLocMax2->Fill(en,mass );
1933 fhM02EnCutNLocMax2 ->Fill(en,l0 );
1934 fhAsymEnCutNLocMax2->Fill(en,asym );
1935 fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1938 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1940 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1941 if(splitFrac > splitFracMin)
1943 fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1944 fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1947 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1949 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1950 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1956 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1957 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1958 fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1960 // Effect of cuts in mass histograms
1962 if(!matched && asyOK && asyOn )
1964 fhMassAsyCutNLocMaxN->Fill(en,mass);
1965 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1968 if(!matched && m02OK && m02On )
1970 fhMassM02CutNLocMaxN->Fill(en,mass);
1971 fhAsymM02CutNLocMaxN->Fill(en,asym );
1972 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1975 if(!matched && eCutOK && ensubcut > 0.1 )
1977 fhMassEnCutNLocMaxN->Fill(en,mass );
1978 fhM02EnCutNLocMaxN ->Fill(en,l0 );
1979 fhAsymEnCutNLocMaxN->Fill(en,asym );
1980 fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1983 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1985 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1986 if(splitFrac > splitFracMin)
1988 fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1989 fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1992 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1994 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1995 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
2000 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2004 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2005 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2006 fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2008 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2010 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2011 if(splitFrac > splitFracMin)
2013 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2014 fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2020 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2021 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2022 fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2024 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2026 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2027 if(splitFrac > splitFracMin)
2029 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2030 fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2037 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2038 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2039 fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2041 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2043 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2044 if(splitFrac > splitFracMin)
2046 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2047 fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2051 }//Work with MC truth
2055 //_________________________________________________________________________________________________________
2056 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en, Float_t e1, Float_t e2,
2057 Int_t nc, Int_t nMax, Float_t t12diff,
2058 Float_t mass, Float_t l0,
2059 Float_t eta, Float_t phi,
2060 Bool_t matched, Int_t mcindex)
2062 // Fill histograms for clusters passing the pi0 selection
2065 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2067 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
2068 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2069 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2071 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2072 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2074 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2076 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2077 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2082 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2083 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2084 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2085 fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2086 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2090 if(fFillHighMultHisto)
2092 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2093 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2095 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2096 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2101 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2102 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2103 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2104 fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2105 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2109 if(fFillHighMultHisto)
2111 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2112 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2114 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2115 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2120 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2121 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2122 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2123 fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2124 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2128 if(fFillHighMultHisto)
2130 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2131 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2133 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2134 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2138 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2140 fhNLocMaxIdPi0 [mcindex][matched]->Fill(en,nMax);
2141 fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2142 fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2146 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2147 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2148 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2149 fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2150 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2155 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2156 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2157 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2158 fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2159 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2163 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2164 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2165 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2166 fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2167 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2169 }//Work with MC truth
2172 //______________________________________________________________________________________________________
2173 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en, Float_t e1, Float_t e2,
2174 Int_t nc, Int_t nMax, Float_t t12diff,
2175 Float_t mass, Float_t l0,
2176 Float_t eta, Float_t phi,
2177 Bool_t matched, Int_t mcindex)
2179 // Fill histograms for clusters passing the eta selection
2182 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2186 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2187 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2188 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2189 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2193 if(fFillHighMultHisto)
2195 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2196 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2198 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2199 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2204 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2205 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2206 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2207 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2211 if(fFillHighMultHisto)
2213 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2214 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2216 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2217 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2222 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2223 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2224 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2225 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2229 if(fFillHighMultHisto)
2231 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2232 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2234 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2235 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2239 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2243 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2244 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2245 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2246 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2250 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2251 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2252 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2253 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2258 fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2259 fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2260 fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2261 if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2263 }//Work with MC truth
2267 //__________________________________________________________________________________________________
2268 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en, Int_t nMax, Float_t asym,
2269 Float_t mass, Float_t l0,
2270 Bool_t matched, Int_t mcindex)
2272 // Fill histograms for clusters passing the photon selection
2276 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2277 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2278 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2282 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2283 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2284 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2288 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2289 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2290 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2293 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2297 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2298 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2299 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2303 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2304 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2305 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2309 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2310 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2311 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2314 }//Work with MC truth
2317 //_______________________________________________________________________________________________________
2318 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en, Float_t e1 , Float_t e2,
2319 Int_t ebin, Int_t mcindex,Int_t noverlaps,
2320 Float_t l0, Float_t mass,
2321 Int_t nMax, Bool_t matched,
2322 Float_t splitFrac, Float_t asym,
2323 Float_t eprim, Float_t asymGen)
2325 // Fill histograms needing some MC input
2327 Float_t efrac = eprim/en;
2328 Float_t efracSplit = 0;
2329 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2330 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2332 //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",
2333 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2335 if(ebin >= 0 && fFillEbinHisto)
2337 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2338 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2343 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2344 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2345 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2346 if(asym > 0 && !matched)
2348 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2349 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2354 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2355 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2358 if( en > fHistoECut )
2360 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2362 if(!matched && ebin >= 0 && fFillEbinHisto)
2364 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2365 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2367 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2369 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2370 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2377 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2378 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2379 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2381 if(asym > 0 && !matched)
2383 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2384 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2389 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2390 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2393 if( en > fHistoECut )
2395 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2397 if(!matched && ebin >= 0 && fFillEbinHisto)
2399 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2400 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2401 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2403 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2404 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2412 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2413 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2414 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2415 if(asym > 0 && !matched)
2417 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2418 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2423 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2424 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2427 if( en > fHistoECut )
2429 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2431 if(!matched && ebin >= 0 && fFillEbinHisto)
2433 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2434 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2436 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2438 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2439 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2446 //__________________________________________________________________________________________________________
2447 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en, Float_t enprim,
2448 Int_t nc, Float_t mass, Float_t l0,
2449 Float_t asym, Float_t splitFrac,
2450 Int_t inlm, Int_t ebin, Bool_t matched,
2451 Int_t mcindex, Int_t noverlaps)
2453 // Fill histograms for MC Overlaps
2455 //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);
2457 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2461 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2465 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2466 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2467 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2468 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2469 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2470 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2471 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2473 else if(noverlaps == 1)
2475 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2476 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2477 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2478 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2479 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2480 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2481 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2483 else if(noverlaps > 1)
2485 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2486 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2487 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2488 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2489 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2490 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2491 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2494 Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2496 else if(fFillTMHisto)
2498 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2502 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2503 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2504 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2505 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2506 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2507 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2508 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2510 else if(noverlaps == 1)
2512 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2513 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2514 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2515 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2516 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2517 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2518 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2520 else if(noverlaps > 1)
2522 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2523 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2524 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2525 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2526 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2527 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2528 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2531 Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2536 //_____________________________________________________________________________________________________
2537 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t ncells, Float_t energy, Int_t nMax,
2538 Bool_t matched, Int_t mcindex,
2539 Float_t mass , Float_t l0)
2542 // Fill optional histograms with more SS parameters
2546 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2547 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2549 if (mcindex==kmcPi0 && !matched)
2551 if( energy > fHistoECut)
2553 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2554 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2558 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2559 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2563 else if( nMax == 2 )
2565 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2566 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2569 if (mcindex==kmcPi0 && !matched)
2571 if( energy > fHistoECut)
2573 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2574 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2578 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2579 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2583 else if( nMax >= 3 )
2585 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2586 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2588 if (mcindex==kmcPi0 && !matched)
2590 if( energy > fHistoECut)
2592 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2593 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2597 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2598 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2604 //______________________________________________________________________________________________________
2605 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2607 // Calculate NLM for different settings
2609 Float_t energy = clus->E();
2610 Float_t m02 = clus->GetM02();
2612 Float_t minEOrg = GetCaloUtils()->GetLocalMaximaCutE() ;
2613 Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2616 Double_t mass = 0., angle = 0.;
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 fSubClusterMom1,fSubClusterMom2,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(GetCalorimeter() == kEMCAL) 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,GetCalorimeter(), absId1);
2792 Float_t amp2 = cells->GetCellAmplitude(absId2);
2793 GetCaloUtils()->RecalibrateCellAmplitude(amp2,GetCalorimeter(), 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,GetCalorimeter(), 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(GetCalorimeter()==kEMCAL)
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", GetCalorimeterString().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(),GetCalorimeter());
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 fPrimaryMom = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6248 eprim = fPrimaryMom.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 fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6259 if(fGrandMotherMom.E() > 0 && ok) eprim = fGrandMotherMom.E();
6263 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6264 asymGen = TMath::Abs(asymGen);
6265 fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6266 if(fGrandMotherMom.E() > 0 && ok) eprim = fGrandMotherMom.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(GetCalorimeter() == kPHOS && !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(GetCalorimeter() == kEMCAL && !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_");
6335 fSSWeight [0] = 4.00; fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6336 fSSWeight [5] = 4.40; fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6337 fSSWeight[10] = 4.70; fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6338 fSSWeight[15] = 5.20; fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6341 fSSECellCut [0] = 0.05; fSSECellCut [1] = 0.06; fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6342 fSSECellCut [5] = 0.10; fSSECellCut [6] = 0.11; fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6343 fSSECellCut[10] = 0.15; fSSECellCut[11] = 0.16; fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6344 fSSECellCut[15] = 0.20; fSSECellCut[16] = 0.21; fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6347 fNLMMinE [0] = 0.10; fNLMMinE [1] = 0.20; fNLMMinE [2] = 0.35; fNLMMinE [3] = 0.50; fNLMMinE [4] = 1.00;
6348 fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6350 fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6351 fWSimu[1] = 0; // Default, do not correct, change to 0.07
6356 //__________________________________________________________________
6357 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
6359 //Search for pi0 in GetCalorimeter() with shower shape analysis
6361 TObjArray * pl = 0x0;
6362 AliVCaloCells* cells = 0x0;
6364 //Select the Calorimeter of the photon
6365 if(GetCalorimeter() == kPHOS)
6367 pl = GetPHOSClusters();
6368 cells = GetPHOSCells();
6370 else if (GetCalorimeter() == kEMCAL)
6372 pl = GetEMCALClusters();
6373 cells = GetEMCALCells();
6378 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",GetCalorimeterString().Data());
6382 if(GetCalorimeter() == kPHOS) return; // Not implemented for PHOS yet
6384 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6386 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
6388 //-------------------------------------------
6389 // Get cluster parameters, do some rejection
6390 //-------------------------------------------
6392 Float_t en = cluster->E();
6393 Float_t l0 = cluster->GetM02();
6394 Int_t nc = cluster->GetNCells();
6395 Float_t bd = cluster->GetDistanceToBadChannel() ;
6397 //If too small or big E or low number of cells, or close to a bad channel skip it
6399 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6401 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6403 // Track-cluster matching
6405 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6406 if(!fFillTMHisto && matched) continue ;
6408 // Get cluster angles
6410 cluster->GetMomentum(fClusterMomentum, GetVertex(0));
6411 Float_t eta = fClusterMomentum.Eta();
6412 Float_t phi = fClusterMomentum.Phi();
6413 if(phi<0) phi=+TMath::TwoPi();
6415 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
6416 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6418 if(fFillNLMDiffCutHisto)
6420 FillNLMDiffCutHistograms(cluster,cells,matched);
6424 // Get PID, N local maximum, *** split cluster ***
6427 Double_t mass = 0., angle = 0.;
6428 Int_t absId1 =-1; Int_t absId2 =-1;
6429 Float_t distbad1 =-1; Float_t distbad2 =-1;
6430 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
6432 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6433 GetVertex(0), nMax, mass, angle,
6434 fSubClusterMom1,fSubClusterMom2,
6441 Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6446 // Set some index for array histograms
6449 if (nMax == 1) inlm = 0;
6450 else if(nMax == 2) inlm = 1;
6451 else if(nMax > 2) inlm = 2;
6452 else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6454 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6455 if( (fCheckSplitDistToBad) &&
6456 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6459 Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6460 distbad1,distbad2, fidcut1,fidcut2);
6462 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6464 fhMassBadDistClose[inlm]->Fill(en,mass);
6465 fhM02BadDistClose [inlm]->Fill(en,l0 );
6468 if(!fidcut1 || !fidcut2)
6470 fhMassOnBorder[inlm]->Fill(en,mass);
6471 fhM02OnBorder [inlm]->Fill(en,l0 );
6477 // Get sub-cluster parameters
6479 Float_t e1 = fSubClusterMom1.Energy();
6480 Float_t e2 = fSubClusterMom2.Energy();
6482 Double_t tof1 = cells->GetCellTime(absId1);
6483 GetCaloUtils()->RecalibrateCellTime(tof1, GetCalorimeter(), absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6486 Double_t tof2 = cells->GetCellTime(absId2);
6487 GetCaloUtils()->RecalibrateCellTime(tof2, GetCalorimeter(), absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6490 Double_t t12diff = tof1-tof2;
6492 Float_t splitFrac = (e1+e2)/en;
6495 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6500 if(en > 8 && en <= 12) ebin = 0;
6501 if(en > 12 && en <= 16) ebin = 1;
6502 if(en > 16 && en <= 20) ebin = 2;
6503 if(en > 20) ebin = 3;
6505 // MC data histograms and some related calculations
6506 // mc tag, n overlaps, asym of generated mesons
6511 Float_t asymGen = -2;
6512 Float_t angleGen = 2000;
6513 Int_t noverlaps = 0;
6519 GetMCIndex(cluster,mcindex,mctag);
6521 // MC primary kine, generation fractions
6523 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6525 // For cluster with MC pi0 and more than 1 maxima
6531 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6536 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6540 if(fFillSSExtraHisto)
6541 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
6545 if(!matched && ebin >= 0 && fFillEbinHisto)
6546 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6551 FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6553 if(fFillArmenterosHisto && ebin >= 0)
6554 FillArmenterosHistograms(nMax, ebin, mcindex, en, l0, pidTag);
6556 if(fFillThetaStarHisto)
6557 FillThetaStarHistograms(nMax,matched,mcindex, en, l0, pidTag);
6560 //---------------------------------------------------------------------
6561 // From here start applying some cuts
6562 //---------------------------------------------------------------------
6564 // If set, check just on MC clusters when SS cut is applied
6565 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6567 // For cluster with MC pi0 and more than 1 maxima
6569 if(fFillMCOverlapHisto)
6570 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6576 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6577 nMax,matched,splitFrac, asym, eprim,asymGen);
6581 if(fFillMCOverlapHisto)
6582 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6586 // Fill few histograms, some still without cuts
6587 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6589 if(pidTag==AliCaloPID::kPi0)
6591 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6593 if(fFillSSWeightHisto && !matched)
6594 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6596 if(fFillTMHisto && fFillTMResidualHisto)
6597 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6599 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6601 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6602 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6603 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6606 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6608 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6610 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6612 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6617 if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6621 //______________________________________________________________________
6622 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6624 //Print some relevant parameters set for the analysis
6628 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6629 AliAnaCaloTrackCorrBaseClass::Print("");
6630 printf("Calorimeter = %s\n", GetCalorimeterString().Data()) ;
6631 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6632 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
6633 printf("Min. N Cells =%d \n", fMinNCells) ;
6634 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6635 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6641 //___________________________________________________________________________________________________________________
6642 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6643 AliVCaloCells* cells,
6644 AliVCluster * cluster,
6645 Float_t & l0, Float_t & l1,
6646 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6647 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6650 // Calculates new center of gravity in the local EMCAL-module coordinates
6651 // and tranfers into global ALICE coordinates
6652 // Calculates Dispersion and main axis
6656 AliInfo("Cluster pointer null!");
6660 Double_t eCell = 0.;
6661 Float_t fraction = 1.;
6662 Float_t recalFactor = 1.;
6670 Double_t etai = -1.;
6671 Double_t phii = -1.;
6676 Double_t etaMean = 0.;
6677 Double_t phiMean = 0.;
6679 Bool_t shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6681 Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6683 Float_t simuTotWeight = 0;
6684 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6686 simuTotWeight = GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6687 simuTotWeight/= energy;
6690 //Loop on cells, get weighted parameters
6691 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6693 //Get from the absid the supermodule, tower and eta/phi numbers
6694 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6695 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6697 //Get the cell energy, if recalibration is on, apply factors
6698 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6699 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6701 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6703 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6706 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6708 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6709 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6710 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6712 if(energy > 0 && eCell > eCellMin)
6714 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6715 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6717 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6719 //correct weight, ONLY in simulation
6720 w *= (fWSimu[0] - fWSimu[1] * w );
6722 etai=(Double_t)ieta;
6723 phii=(Double_t)iphi;
6730 sEta += w * etai * etai ;
6731 etaMean += w * etai ;
6732 sPhi += w * phii * phii ;
6733 phiMean += w * phii ;
6734 sEtaPhi += w * etai * phii ;
6737 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6741 //Normalize to the weight
6748 AliError(Form("Wrong weight %f\n", wtot));
6750 //Calculate dispersion
6751 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6753 //Get from the absid the supermodule, tower and eta/phi numbers
6754 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6755 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6757 //Get the cell energy, if recalibration is on, apply factors
6758 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6759 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6760 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6762 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6765 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6767 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6768 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6769 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6771 if(energy > 0 && eCell > eCellMin)
6773 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6774 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6776 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6778 //correct weight, ONLY in simulation
6779 w *= (fWSimu[0] - fWSimu[1] * w );
6781 etai=(Double_t)ieta;
6782 phii=(Double_t)iphi;
6785 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6786 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6787 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6790 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6793 //Normalize to the weigth and set shower shape parameters
6794 if (wtot > 0 && nstat > 1)
6803 sEta -= etaMean * etaMean ;
6804 sPhi -= phiMean * phiMean ;
6805 sEtaPhi -= etaMean * phiMean ;
6807 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6808 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6814 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6815 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;