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(), fGrandMotherMom(),
69 fMCDaughMom1(), fMCDaughMom2(),
72 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
73 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
74 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
75 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
76 fhMassEnCutNLocMax1(0), fhMassEnCutNLocMax2(0), fhMassEnCutNLocMaxN(0),
77 fhM02EnCutNLocMax1(0), fhM02EnCutNLocMax2(0), fhM02EnCutNLocMaxN(0),
78 fhAsymEnCutNLocMax1(0), fhAsymEnCutNLocMax2(0), fhAsymEnCutNLocMaxN(0),
79 fhSplitEFracEnCutNLocMax1(0), fhSplitEFracEnCutNLocMax2(0), fhSplitEFracEnCutNLocMaxN(0),
80 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
81 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
82 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
83 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
84 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
85 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
86 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
87 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
88 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
89 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
90 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
91 fhAnglePairPrimPi0OverM02NLocMax1(0), fhAnglePairPrimPi0OverM02NLocMax2(0), fhAnglePairPrimPi0OverM02NLocMaxN(0),
92 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
93 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
94 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
95 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
96 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
97 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
98 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
99 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
100 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
101 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
102 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
103 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
104 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
105 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
106 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
107 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
108 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
109 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
110 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
111 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
112 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
113 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
114 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
115 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
116 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
117 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
121 // Init array of histograms
122 for(Int_t i = 0; i < 7; i++)
124 for(Int_t j = 0; j < 2; j++)
126 fhMassNLocMax1[i][j] = 0;
127 fhMassNLocMax2[i][j] = 0;
128 fhMassNLocMaxN[i][j] = 0;
129 fhMassSplitENLocMax1[i][j] = 0;
130 fhMassSplitENLocMax2[i][j] = 0;
131 fhMassSplitENLocMaxN[i][j] = 0;
133 fhNLocMaxM02Cut[i][j] = 0;
134 fhSplitClusterENLocMax [i][j] = 0;
135 fhSplitClusterEPi0NLocMax[i][j] = 0;
136 fhM02NLocMax1[i][j] = 0;
137 fhM02NLocMax2[i][j] = 0;
138 fhM02NLocMaxN[i][j] = 0;
139 fhNCellNLocMax1[i][j] = 0;
140 fhNCellNLocMax2[i][j] = 0;
141 fhNCellNLocMaxN[i][j] = 0;
142 fhM02Pi0NLocMax1[i][j] = 0;
143 fhM02EtaNLocMax1[i][j] = 0;
144 fhM02ConNLocMax1[i][j] = 0;
145 fhM02Pi0NLocMax2[i][j] = 0;
146 fhM02EtaNLocMax2[i][j] = 0;
147 fhM02ConNLocMax2[i][j] = 0;
148 fhM02Pi0NLocMaxN[i][j] = 0;
149 fhM02EtaNLocMaxN[i][j] = 0;
150 fhM02ConNLocMaxN[i][j] = 0;
152 fhMassPi0NLocMax1[i][j] = 0;
153 fhMassEtaNLocMax1[i][j] = 0;
154 fhMassConNLocMax1[i][j] = 0;
155 fhMassPi0NLocMax2[i][j] = 0;
156 fhMassEtaNLocMax2[i][j] = 0;
157 fhMassConNLocMax2[i][j] = 0;
158 fhMassPi0NLocMaxN[i][j] = 0;
159 fhMassEtaNLocMaxN[i][j] = 0;
160 fhMassConNLocMaxN[i][j] = 0;
162 fhNCellPi0NLocMax1[i][j] = 0;
163 fhNCellEtaNLocMax1[i][j] = 0;
164 fhNCellPi0NLocMax2[i][j] = 0;
165 fhNCellEtaNLocMax2[i][j] = 0;
166 fhNCellPi0NLocMaxN[i][j] = 0;
167 fhNCellEtaNLocMaxN[i][j] = 0;
169 fhAsyPi0NLocMax1[i][j] = 0;
170 fhAsyEtaNLocMax1[i][j] = 0;
171 fhAsyConNLocMax1[i][j] = 0;
172 fhAsyPi0NLocMax2[i][j] = 0;
173 fhAsyEtaNLocMax2[i][j] = 0;
174 fhAsyConNLocMax2[i][j] = 0;
175 fhAsyPi0NLocMaxN[i][j] = 0;
176 fhAsyEtaNLocMaxN[i][j] = 0;
177 fhAsyConNLocMaxN[i][j] = 0;
179 fhMassM02NLocMax1[i][j]= 0;
180 fhMassM02NLocMax2[i][j]= 0;
181 fhMassM02NLocMaxN[i][j]= 0;
183 fhMassSplitEPi0NLocMax1[i][j] = 0;
184 fhMassSplitEPi0NLocMax2[i][j] = 0;
185 fhMassSplitEPi0NLocMaxN[i][j] = 0;
187 fhMassSplitEAfterCutsNLocMax1[i][j] = 0;
188 fhMassSplitEAfterCutsNLocMax2[i][j] = 0;
189 fhMassSplitEAfterCutsNLocMaxN[i][j] = 0;
192 fhMassDispEtaNLocMax1[i][j]= 0;
193 fhMassDispEtaNLocMax2[i][j]= 0;
194 fhMassDispEtaNLocMaxN[i][j]= 0;
195 fhMassDispPhiNLocMax1[i][j]= 0;
196 fhMassDispPhiNLocMax2[i][j]= 0;
197 fhMassDispPhiNLocMaxN[i][j]= 0;
198 fhMassDispAsyNLocMax1[i][j]= 0;
199 fhMassDispAsyNLocMax2[i][j]= 0;
200 fhMassDispAsyNLocMaxN[i][j]= 0;
202 fhSplitEFractionNLocMax1[i][j]=0;
203 fhSplitEFractionNLocMax2[i][j]=0;
204 fhSplitEFractionNLocMaxN[i][j]=0;
206 fhAnglePairNLocMax1 [i][j] = 0;
207 fhAnglePairNLocMax2 [i][j] = 0;
208 fhAnglePairNLocMaxN [i][j] = 0;
210 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
211 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
212 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
214 fhAnglePairPi0NLocMax1 [i][j] = 0;
215 fhAnglePairPi0NLocMax2 [i][j] = 0;
216 fhAnglePairPi0NLocMaxN [i][j] = 0;
218 fhAnglePairMassNLocMax1 [i][j] = 0;
219 fhAnglePairMassNLocMax2 [i][j] = 0;
220 fhAnglePairMassNLocMaxN [i][j] = 0;
222 fhAnglePairM02NLocMax1 [i][j] = 0;
223 fhAnglePairM02NLocMax2 [i][j] = 0;
224 fhAnglePairM02NLocMaxN [i][j] = 0;
226 fhAnglePairOverM02NLocMax1 [i][j] = 0;
227 fhAnglePairOverM02NLocMax2 [i][j] = 0;
228 fhAnglePairOverM02NLocMaxN [i][j] = 0;
230 fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
231 fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
232 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
234 fhCosThStarNLocMax1 [i][j] = 0;
235 fhCosThStarNLocMax2 [i][j] = 0;
236 fhCosThStarNLocMaxN [i][j] = 0;
238 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
239 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
240 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
242 fhCosThStarPi0NLocMax1 [i][j] = 0;
243 fhCosThStarPi0NLocMax2 [i][j] = 0;
244 fhCosThStarPi0NLocMaxN [i][j] = 0;
246 fhMCGenFracNLocMax1[i][j]= 0;
247 fhMCGenFracNLocMax2[i][j]= 0;
248 fhMCGenFracNLocMaxN[i][j]= 0;
250 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
251 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
252 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
254 fhMCGenSplitEFracNLocMax1[i][j]= 0;
255 fhMCGenSplitEFracNLocMax2[i][j]= 0;
256 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
258 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
259 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
260 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
262 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
263 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
264 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
266 fhMCGenEvsSplitENLocMax1[i][j]= 0;
267 fhMCGenEvsSplitENLocMax2[i][j]= 0;
268 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
270 fhAsymNLocMax1 [i][j] = 0;
271 fhAsymNLocMax2 [i][j] = 0;
272 fhAsymNLocMaxN [i][j] = 0;
274 fhMassAfterCutsNLocMax1[i][j] = 0;
275 fhMassAfterCutsNLocMax2[i][j] = 0;
276 fhMassAfterCutsNLocMaxN[i][j] = 0;
279 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
280 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
281 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
284 for(Int_t jj = 0; jj < 4; jj++)
286 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
287 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
288 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
290 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
291 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
292 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
294 fhMCGenFracNLocMaxEbin[i][jj] = 0;
295 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
297 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
298 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
299 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
302 fhTrackMatchedDEtaNLocMax1[i] = 0;
303 fhTrackMatchedDPhiNLocMax1[i] = 0;
304 fhTrackMatchedDEtaNLocMax2[i] = 0;
305 fhTrackMatchedDPhiNLocMax2[i] = 0;
306 fhTrackMatchedDEtaNLocMaxN[i] = 0;
307 fhTrackMatchedDPhiNLocMaxN[i] = 0;
309 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
310 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
311 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
312 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
313 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
314 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
316 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
317 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
318 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
319 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
320 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
321 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
323 for(Int_t nlm = 0; nlm < 3; nlm++)
325 fhMCEM02Overlap0 [nlm][i] = 0;
326 fhMCEM02Overlap1 [nlm][i] = 0;
327 fhMCEM02OverlapN [nlm][i] = 0;
328 fhMCEM02Overlap0Match[nlm][i] = 0;
329 fhMCEM02Overlap1Match[nlm][i] = 0;
330 fhMCEM02OverlapNMatch[nlm][i] = 0;
332 fhMCEMassOverlap0 [nlm][i] = 0;
333 fhMCEMassOverlap1 [nlm][i] = 0;
334 fhMCEMassOverlapN [nlm][i] = 0;
335 fhMCEMassOverlap0Match[nlm][i] = 0;
336 fhMCEMassOverlap1Match[nlm][i] = 0;
337 fhMCEMassOverlapNMatch[nlm][i] = 0;
339 fhMCEAsymOverlap0 [nlm][i] = 0;
340 fhMCEAsymOverlap1 [nlm][i] = 0;
341 fhMCEAsymOverlapN [nlm][i] = 0;
342 fhMCEAsymOverlap0Match[nlm][i] = 0;
343 fhMCEAsymOverlap1Match[nlm][i] = 0;
344 fhMCEAsymOverlapNMatch[nlm][i] = 0;
346 fhMCENCellOverlap0 [nlm][i] = 0;
347 fhMCENCellOverlap1 [nlm][i] = 0;
348 fhMCENCellOverlapN [nlm][i] = 0;
349 fhMCENCellOverlap0Match[nlm][i] = 0;
350 fhMCENCellOverlap1Match[nlm][i] = 0;
351 fhMCENCellOverlapNMatch[nlm][i] = 0;
353 fhMCEEpriOverlap0 [nlm][i] = 0;
354 fhMCEEpriOverlap1 [nlm][i] = 0;
355 fhMCEEpriOverlapN [nlm][i] = 0;
356 fhMCEEpriOverlap0Match[nlm][i] = 0;
357 fhMCEEpriOverlap1Match[nlm][i] = 0;
358 fhMCEEpriOverlapNMatch[nlm][i] = 0;
360 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
361 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
362 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
364 fhMCESplitEFracOverlap0 [nlm][i] = 0;
365 fhMCESplitEFracOverlap1 [nlm][i] = 0;
366 fhMCESplitEFracOverlapN [nlm][i] = 0;
367 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
368 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
369 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
371 fhMCENOverlaps [nlm][i] = 0;
372 fhMCENOverlapsMatch [nlm][i] = 0;
376 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
377 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
378 fhMCPi0MassM02OverlapN [nlm][i] = 0;
379 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
380 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
381 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
385 for(Int_t i = 0; i < 2; i++)
387 fhSplitEFractionvsAsyNLocMax1[i] = 0;
388 fhSplitEFractionvsAsyNLocMax2[i] = 0;
389 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
392 for(Int_t i = 0; i < 4; i++)
394 fhMassM02NLocMax1Ebin[i] = 0 ;
395 fhMassM02NLocMax2Ebin[i] = 0 ;
396 fhMassM02NLocMaxNEbin[i] = 0 ;
398 fhMassAsyNLocMax1Ebin[i] = 0 ;
399 fhMassAsyNLocMax2Ebin[i] = 0 ;
400 fhMassAsyNLocMaxNEbin[i] = 0 ;
402 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
403 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
404 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
406 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
407 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
408 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
410 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
411 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
412 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
414 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
415 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
416 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
418 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
419 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
420 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
423 for(Int_t nlm = 0; nlm < 3; nlm++)
426 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
427 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
428 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
429 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
431 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
432 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
433 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
434 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
436 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
437 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
438 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
439 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
441 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
442 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
443 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
444 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
446 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
447 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
448 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
449 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
451 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
452 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
453 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
454 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
456 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
457 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
458 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
459 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
461 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
462 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
463 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
464 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
466 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
467 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
468 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
469 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
470 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
471 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
473 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
474 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
475 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
476 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
477 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
478 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
480 fhPi0CellE [nlm] = 0 ;
481 fhPi0CellEFrac [nlm] = 0 ;
482 fhPi0CellLogEFrac[nlm] = 0 ;
484 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
485 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
486 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
488 fhPi0CellEMaxFrac [nlm] = 0 ;
489 fhPi0CellEMax2Frac[nlm] = 0 ;
491 for(Int_t i = 0; i < 20; i++)
493 fhM02WeightPi0 [nlm][i] = 0;
494 fhM02ECellCutPi0[nlm][i] = 0;
497 fhMassBadDistClose[nlm] = 0;
498 fhM02BadDistClose [nlm] = 0;
499 fhMassOnBorder [nlm] = 0;
500 fhM02OnBorder [nlm] = 0;
502 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
503 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
507 for(Int_t i = 0; i < 7; i++)
509 for(Int_t j = 0; j < 4; j++)
512 fhArmNLocMax1[i][j] = 0;
513 fhArmNLocMax2[i][j] = 0;
514 fhArmNLocMaxN[i][j] = 0;
516 fhArmPi0NLocMax1[i][j] = 0;
517 fhArmPi0NLocMax2[i][j] = 0;
518 fhArmPi0NLocMaxN[i][j] = 0;
520 fhArmAfterCutsNLocMax1[i][j] = 0;
521 fhArmAfterCutsNLocMax2[i][j] = 0;
522 fhArmAfterCutsNLocMaxN[i][j] = 0;
527 for(Int_t i = 0; i < 5; i++)
529 for(Int_t j = 0; j < 5; j++)
531 fhNLocMaxDiffCut [i][j][0] = 0;
532 fhNLocMaxDiffCut [i][j][1] = 0;
533 fhNLocMaxDiffCutPi0[i][j][0] = 0;
534 fhNLocMaxDiffCutPi0[i][j][1] = 0;
535 for(Int_t k = 0; k < 3; k++)
537 fhM02NLocMaxDiffCut [i][j][k][0] = 0;
538 fhM02NLocMaxDiffCut [i][j][k][1] = 0;
539 fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
540 fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
541 fhMassNLocMaxDiffCut [i][j][k][0] = 0;
542 fhMassNLocMaxDiffCut [i][j][k][1] = 0;
543 fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
544 fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
553 //___________________________________________________________________________________________________________________
554 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
555 Float_t e1, Float_t e2, Float_t mass)
557 //TLorentzVector l1, TLorentzVector l2)
559 // Check origin NLM tower of the cluster, when MC gives merged pi0
561 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
563 const UInt_t nc = cluster->GetNCells();
566 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
571 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
572 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
574 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
576 // 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",
577 // nMax, noverlaps,mass,m02,
578 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
579 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
581 // // Study the mothers of cluster
582 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
583 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
585 // Int_t mclabel = cluster->GetLabels()[ilab];
588 // Int_t mpdg = -999999;
589 // Int_t mstatus = -1;
590 // Int_t grandLabel = -1;
591 // fPrimaryMom = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
593 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
594 // ilab, mclabel, mpdg, mstatus,fPrimaryMom.E(), fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(),mOK,grandLabel);
596 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
598 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
600 // Int_t newLabel = -1;
601 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
602 // 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",
603 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
604 // grandLabel = newLabel;
610 // printf("Cells in cluster %d\n",cluster->GetNCells() );
611 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
613 // Int_t absIdCell = cluster->GetCellAbsId(icell);
614 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
615 // GetReader()->RemapMCLabelForAODs(mcLabel);
616 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
617 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,GetCalorimeter(), ietac, iphic, rcuc);
619 // 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);
625 //If only one maxima, consider all the towers in the cluster
628 for (UInt_t icell = 0; icell < nc; icell++ )
630 list [icell] = cluster->GetCellAbsId(icell);
631 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
635 Int_t nmaxima = nMax;
636 if(nMax==1) nmaxima = nc ;
638 //Find highest energy Local Maxima Towers
643 for(Int_t i = 0; i < nmaxima; i++)
645 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
653 //Find second highest
654 for(Int_t i = 0; i < nmaxima; i++)
656 if(i==imax) continue;
658 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
667 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
668 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
670 //---------------------------------------------------------
671 //---------------------------------------------------------
672 // Compare ancestors of all local maxima at cell MC level
673 //---------------------------------------------------------
674 //---------------------------------------------------------
676 // Check that the highest mc label and the max cluster label are the same
677 Int_t mcLabelMax = -1 ;
678 if(imax >=0 && imax < 999)
680 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
681 GetReader()->RemapMCLabelForAODs(mcLabelMax);
684 Int_t mcLabelMax2 = -1 ;
685 if(imax2 >=0 && imax2 < 999)
687 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
688 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
691 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
692 Bool_t matchHighLMAndHighMC = kFALSE;
694 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
696 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
698 matchHighLMAndHighMC = kTRUE;
699 //printf("\t *** MATCH cluster and LM maximum ***\n");
703 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
704 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
706 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
707 matchHighLMAndHighMC = kTRUE;
711 //printf("\t \t *** NO MATCH***\n");
712 matchHighLMAndHighMC = kFALSE;
716 // Compare the common ancestors of the 2 highest energy local maxima
717 Int_t ancPDG = 0, ancStatus = -1;
719 Bool_t high = kFALSE;
722 // // print maxima origin
723 // for(Int_t i = 0; i < nMax; i++)
725 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
726 // GetReader()->RemapMCLabelForAODs(mcLabel1);
728 // Bool_t ok =kFALSE,gok = kFALSE;
729 // Int_t pdg = -22222, status = -1;
730 // Int_t gpdg = -22222, gstatus = -1;
731 // Int_t ggpdg = -22222, ggstatus = -1;
732 // Int_t gLabel = -1, ggLabel = -1;
733 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
734 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
735 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
736 // 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",
737 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
740 for(Int_t i = 0; i < nmaxima-1; i++)
742 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
743 GetReader()->RemapMCLabelForAODs(mcLabel1);
745 for(Int_t j = i+1; j < nmaxima; j++)
747 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
748 GetReader()->RemapMCLabelForAODs(mcLabel2);
750 if(mcLabel1 < 0 || mcLabel2 < 0 )
752 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
756 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
757 GetReader(),ancPDG,ancStatus,fPrimaryMom,fProdVertex);
760 if((i==imax && j==imax2) || (j==imax && i==imax2))
765 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
767 // If both bits are set, it could be that one of the maxima had a conversion
768 // reset the bit in this case
771 //printf("\t Reset low bit\n");
777 Int_t pdg = -22222, status = -1;
778 fPrimaryMom = GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
779 //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);
784 Float_t en = cluster->E();
786 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
787 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
791 if(matchHighLMAndHighMC)
793 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
794 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
795 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
796 else fhMCPi0NoneNLMPair->Fill(en,nMax);
800 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
801 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
802 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
803 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
808 if(matchHighLMAndHighMC)
810 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
811 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
812 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
813 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
817 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
818 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
819 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
820 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
824 //----------------------------------------------------------------------
825 //----------------------------------------------------------------------
826 // Compare MC decay photon projection to cell location and Local Maxima
827 //----------------------------------------------------------------------
828 //----------------------------------------------------------------------
830 // Get the mother pi0
833 Int_t pdg = -22222, status = -1;
836 Int_t label = cluster->GetLabel();
838 while( pdg!=111 && label >=0 )
840 fPrimaryMom = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
843 if(pdg!=111 || label < 0)
845 AliWarning("Mother Pi0 not found!");
849 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
853 AliWarning(Form("N daughters %d !=2!",nDaugthers));
857 // Get daughter photon kinematics
858 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
859 fMCDaughMom1 = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
860 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
861 fMCDaughMom2 = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
863 if(pdg1!=22 || pdg0 != 22)
865 AliWarning(Form("Wrong daughters PDG: photon0 %d - photon1 %d",pdg0,pdg1));
869 // In what cells did the photons hit
870 Float_t eta0 = fMCDaughMom1.Eta();
871 Float_t eta1 = fMCDaughMom2.Eta();
873 Float_t phi0 = fMCDaughMom1.Phi();
874 Float_t phi1 = fMCDaughMom2.Phi();
876 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
878 // 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",
879 // label , fPrimaryMom.E() , fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(), (fMCDaughMom1+fMCDaughMom2).M(),
880 // label0, fMCDaughMom1.E(), eta0, phi0*TMath::RadToDeg(),
881 // label1, fMCDaughMom2.E(), eta1, phi1*TMath::RadToDeg());
883 // TLorentzVector momclus;
884 // cluster->GetMomentum(momclus,GetVertex(0));
885 // 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());
888 if(phi0 < 0 ) phi0+=TMath::TwoPi();
889 if(phi1 < 0 ) phi1+=TMath::TwoPi();
891 Int_t absId0=-1, absId1=-1;
892 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
893 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
895 if(absId0 < 0 || absId1 < 0)
897 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
901 //-----------------------------------------------
902 // Check that the 2 photons hit the Local Maxima
903 //-----------------------------------------------
906 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
908 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
909 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
911 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
912 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,GetCalorimeter(), ieta0, iphi0, rcu0);
913 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
914 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,GetCalorimeter(), ieta1, iphi1, rcu1);
916 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
917 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
919 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
920 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,GetCalorimeter(), ietam0, iphim0, rcum0);
921 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
922 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],GetCalorimeter(), ietam1, iphim1, rcum1);
924 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
925 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
929 if(inlm > 2) inlm = 2;
931 Bool_t match0 = kFALSE;
932 Bool_t match1 = kFALSE;
935 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
937 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
938 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
940 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
941 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
944 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
946 // If one or the 2 not matched, check with the other MC labels
947 // only in case there was a conversion
949 Int_t absId0second = -1;
950 Int_t absId1second = -1;
951 Int_t secLabel0 = -1;
952 Int_t secLabel1 = -1;
956 Int_t secpdg = -999999;
957 Int_t secstatus = -1;
958 Int_t secgrandLabel = -1;
960 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
961 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
963 if((!match0 || !match1) && mcindex == kmcPi0Conv)
965 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
967 Int_t mclabel = cluster->GetLabels()[ilab];
969 //printf("Check label %d - %d\n",ilab,mclabel);
971 if(mclabel == label0 || mclabel == label1)
973 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
974 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
975 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
979 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
981 // match mc label and parent photon
982 Int_t tmplabel = mclabel;
983 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
985 fPrimaryMom = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
987 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
989 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
991 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
992 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
993 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
996 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
998 tmplabel = secgrandLabel;
1002 // Get the position of the found secondaries mother
1003 if(!match0 && secLabel0 > 0)
1005 fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1007 //Float_t eta = fPrimaryMom.Eta();
1008 //Float_t phi = fPrimaryMom.Phi();
1009 //if(phi < 0 ) phi+=TMath::TwoPi();
1010 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1012 //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());
1014 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
1015 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1018 if(!match1 && secLabel1 > 0)
1020 fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1022 //Float_t eta = fPrimaryMom.Eta();
1023 //Float_t phi = fPrimaryMom.Phi();
1024 //if(phi < 0 ) phi+=TMath::TwoPi();
1025 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1027 //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());
1029 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
1030 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1033 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1037 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1038 if( match0 && match1 )
1040 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1041 // printf("a) Both Photons hit local maxima \n");
1045 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
1046 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1047 if(match0 && imatch0 == imax)
1049 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1050 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1051 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1052 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1056 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1057 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1058 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1059 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1064 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1065 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1066 if(match0 && imatch0 == imax )
1068 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1069 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1070 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1071 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1075 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1076 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1077 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1078 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1086 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1087 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1089 //---------------------------------------------
1090 // Check the adjacent cells to the local maxima
1091 //---------------------------------------------
1095 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1096 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1097 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1098 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1103 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1104 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1106 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1107 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1110 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1112 if(match0 && match1)
1114 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1115 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1119 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1120 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1122 if(match0 && imatch0 == imax)
1124 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1125 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1126 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1127 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1131 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1132 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1133 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1134 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1139 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1140 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1141 if(match0 && imatch0 == imax)
1143 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1144 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1145 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1146 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1150 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1151 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1152 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1153 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1160 // Decay photon cells are adjacent?
1162 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,absId1) )
1164 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1165 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1168 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1169 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1173 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1174 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1180 //--------------------
1181 // Other Local maxima
1182 //--------------------
1184 Bool_t matchMCHitOtherLM = kFALSE;
1187 for(Int_t i = 0; i < nmaxima; i++)
1189 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1195 for(Int_t i = 0; i < nmaxima; i++)
1197 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1201 if(matchMCHitOtherLM)
1203 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1204 // printf("d) One Photon hits a local maxima, the other another not high \n");
1208 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1209 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1210 if(match0 && imatch0 == imax)
1212 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1213 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1217 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1218 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1223 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1224 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1225 if(match0 && imatch0 == imax)
1227 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1228 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1232 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1233 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1240 // Adjacent to other maxima
1242 Bool_t adjacentOther1 = kFALSE;
1245 for(Int_t i = 0; i < nmaxima; i++)
1247 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1248 GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1250 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1252 if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[i]) ) adjacentOther1 = kTRUE;
1254 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1258 Bool_t adjacentOther0 = kFALSE;
1261 for(Int_t i = 0; i < nmaxima; i++)
1263 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1264 GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1266 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1268 if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[i]) ) adjacentOther0 = kTRUE;
1270 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1274 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1277 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1278 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1282 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1283 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1284 if(match0 && imatch0 == imax)
1286 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1287 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1291 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1292 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1297 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1298 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1299 if(match0 && imatch0 == imax)
1301 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1302 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1306 if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1307 if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1314 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1315 // printf("f) No hit found \n");
1318 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1319 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1323 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1324 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1329 //___________________________________________________________________________________________________________
1330 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1331 Float_t en, Float_t e1, Float_t e2,
1332 Float_t angle, Float_t mass,
1333 Float_t anglePrim, Float_t m02,
1334 Float_t asym, Int_t pid, Int_t noverlaps)
1336 // Fill histograms related to opening angle
1338 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1339 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1340 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1341 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1343 Bool_t eCutOK= kFALSE;
1344 Int_t inlm = nMax-1;
1345 if(inlm > 2 ) inlm = 2;
1346 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1347 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1348 else if(ensubcut < 0.1) eCutOK = kTRUE;
1352 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1354 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1355 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1356 if(pid==AliCaloPID::kPi0)
1357 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1361 fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1362 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1367 fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1368 fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1373 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1375 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1376 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1377 if(pid==AliCaloPID::kPi0)
1378 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1382 fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1383 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1386 if( en > fHistoECut )
1388 fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1389 fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1394 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1396 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1397 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1398 if(pid==AliCaloPID::kPi0)
1399 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1403 fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1404 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1407 if( en > fHistoECut )
1409 fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1410 fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1414 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1418 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1421 fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1422 fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1424 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1425 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1426 if(pid==AliCaloPID::kPi0)
1427 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1431 fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1432 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1435 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1437 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1438 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1439 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1445 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1446 if( en > fHistoECut )
1448 fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1449 fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1452 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1453 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1454 if(pid==AliCaloPID::kPi0)
1455 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1459 fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1460 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1463 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1465 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1466 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1467 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1472 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1473 if( en > fHistoECut )
1475 fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1476 fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1478 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1479 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1480 if(pid==AliCaloPID::kPi0)
1481 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1485 fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1486 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1489 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1491 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1492 if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1493 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1501 //______________________________________________________________________________________________________________________
1502 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1503 Float_t en, Float_t m02, Int_t pid)
1505 // Fill Armeteros type histograms
1507 // Get pTArm and AlphaArm
1508 fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1509 Float_t momentumSquaredMother = fSubClusterMomSum.P()*fSubClusterMomSum.P();
1510 Float_t momentumDaughter1AlongMother = 0.;
1511 Float_t momentumDaughter2AlongMother = 0.;
1513 if (momentumSquaredMother > 0.)
1515 momentumDaughter1AlongMother = (fSubClusterMom1.Px()*fSubClusterMomSum.Px() + fSubClusterMom1.Py()*fSubClusterMomSum.Py()+ fSubClusterMom1.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1516 momentumDaughter2AlongMother = (fSubClusterMom2.Px()*fSubClusterMomSum.Px() + fSubClusterMom2.Py()*fSubClusterMomSum.Py()+ fSubClusterMom2.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1519 Float_t momentumSquaredDaughter1 = fSubClusterMom1.P()*fSubClusterMom1.P();
1520 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1523 if (ptArmSquared > 0.)
1524 pTArm = sqrt(ptArmSquared);
1526 Float_t alphaArm = 0.;
1527 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1528 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1530 Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1532 AliDebug(2,Form("E %f, alphaArm %f, pTArm %f",en,alphaArm,pTArm));
1534 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1535 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1536 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1537 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1539 Bool_t eCutOK= kFALSE;
1540 Int_t inlm = nMax-1;
1541 if(inlm > 2 ) inlm = 2;
1542 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1543 if (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1544 else if(ensubcut < 0.1) eCutOK = kTRUE;
1549 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1550 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1551 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1552 if(pid==AliCaloPID::kPi0)
1553 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1557 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1558 if((m02OK && asyOK) && (asyOn || m02On))
1559 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1560 if(pid==AliCaloPID::kPi0)
1561 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1565 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1566 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1567 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1568 if(pid==AliCaloPID::kPi0)
1569 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1572 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1576 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1577 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1578 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1579 if(pid==AliCaloPID::kPi0)
1580 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1584 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1585 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1586 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1587 if(pid==AliCaloPID::kPi0)
1588 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1592 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1593 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1594 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1595 if(pid==AliCaloPID::kPi0)
1596 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1603 //______________________________________________________________________________________________________________
1604 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1605 Float_t en, Float_t m02, Int_t pid)
1607 // Fill cos Theta^star histograms
1610 // Get cos Theta^star
1611 fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1612 fSubClusterMomBoost = fSubClusterMom1;
1613 fSubClusterMomBoost.Boost(-fSubClusterMomSum.BoostVector());
1614 Float_t cosThStar=TMath::Cos(fSubClusterMomBoost.Vect().Angle(fSubClusterMomSum.Vect()));
1616 Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1618 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1619 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1620 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1621 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1623 Bool_t eCutOK= kFALSE;
1624 Int_t inlm = nMax-1;
1625 if(inlm > 2 ) inlm = 2;
1626 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1627 if (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1628 else if(ensubcut < 0.1) eCutOK = kTRUE;
1630 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1634 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1636 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1637 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1638 if(pid==AliCaloPID::kPi0)
1639 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1643 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1645 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1646 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1647 if(pid==AliCaloPID::kPi0)
1648 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1652 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1654 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1655 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1656 if(pid==AliCaloPID::kPi0)
1657 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1660 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1664 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1666 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1667 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1668 if(pid==AliCaloPID::kPi0)
1669 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1673 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1675 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1676 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1677 if(pid==AliCaloPID::kPi0)
1678 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1682 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1684 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1685 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1686 if(pid==AliCaloPID::kPi0)
1687 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1694 //__________________________________________________________________________________________________________________
1695 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t ebin , Int_t nMax, Int_t mcindex,
1696 Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1698 // Fill some histograms integrating in few energy bins
1702 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1703 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1705 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1706 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1710 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1711 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1713 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1714 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1718 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1719 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1721 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1722 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1727 //________________________________________________________________________________________________
1728 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en, Float_t e1, Float_t e2,
1729 Int_t nMax, Float_t mass, Float_t l0,
1730 Float_t eta, Float_t phi,
1731 Bool_t matched, Int_t mcindex)
1733 // Fill histograms for clusters before any selection after spliting
1735 Float_t splitFrac = (e1+e2)/en;
1738 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1740 fhNLocMax [0][matched]->Fill(en,nMax);
1741 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1742 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1743 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1744 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1746 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1748 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1749 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1750 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1751 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1752 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1757 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1758 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1760 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1762 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1763 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1768 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1769 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1771 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1772 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1775 else if( nMax == 2 )
1777 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1778 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1780 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1782 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1783 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1788 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1789 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1791 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1792 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1795 else if( nMax >= 3 )
1797 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1798 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1800 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1802 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1803 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1809 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1810 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1812 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1813 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1820 //________________________________________________________________________________________________
1821 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en, Float_t eprim,
1822 Float_t e1, Float_t e2,
1823 Int_t nMax, Float_t mass, Float_t l0,
1824 Bool_t matched, Int_t mcindex)
1826 // Fill histograms for clusters passing the first M02 selection
1828 Float_t efrac = eprim/en;
1829 Float_t efracSplit = 0;
1830 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1832 Float_t splitFrac = (e1+e2)/en;
1835 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1837 Int_t inlm = nMax-1;
1838 if(inlm > 2) inlm = 2;
1839 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1841 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1842 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1843 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1844 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1846 Bool_t eCutOK = kFALSE;
1847 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1848 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1849 else if(ensubcut < 0.1) eCutOK = kTRUE;
1851 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1855 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1856 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1857 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1858 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1860 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1861 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1862 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1868 fhMassNLocMax1[0][matched]->Fill(en,mass );
1869 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1870 fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1872 // Effect of cuts in mass histograms
1874 if(!matched && asyOK && asyOn )
1876 fhMassAsyCutNLocMax1->Fill(en,mass);
1877 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1880 if(!matched && m02OK && m02On )
1882 fhMassM02CutNLocMax1->Fill(en,mass);
1883 fhAsymM02CutNLocMax1->Fill(en,asym );
1884 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1887 if(!matched && eCutOK && ensubcut > 0.1)
1889 fhMassEnCutNLocMax1->Fill(en,mass );
1890 fhM02EnCutNLocMax1 ->Fill(en,l0 );
1891 fhAsymEnCutNLocMax1->Fill(en,asym );
1892 fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1895 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1897 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1898 if(splitFrac > splitFracMin)
1900 fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1901 fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1903 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1905 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1906 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1910 else if( nMax == 2 )
1912 fhMassNLocMax2[0][matched]->Fill(en,mass );
1913 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1914 fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1916 // Effect of cuts in mass histograms
1918 if(!matched && asyOK && asyOn )
1920 fhMassAsyCutNLocMax2->Fill(en,mass);
1921 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1924 if(!matched && m02OK && m02On )
1926 fhMassM02CutNLocMax2->Fill(en,mass);
1927 fhAsymM02CutNLocMax2->Fill(en,asym );
1928 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1931 if(!matched && eCutOK && ensubcut > 0.1)
1933 fhMassEnCutNLocMax2->Fill(en,mass );
1934 fhM02EnCutNLocMax2 ->Fill(en,l0 );
1935 fhAsymEnCutNLocMax2->Fill(en,asym );
1936 fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1939 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1941 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1942 if(splitFrac > splitFracMin)
1944 fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1945 fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1948 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1950 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1951 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1957 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1958 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1959 fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1961 // Effect of cuts in mass histograms
1963 if(!matched && asyOK && asyOn )
1965 fhMassAsyCutNLocMaxN->Fill(en,mass);
1966 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1969 if(!matched && m02OK && m02On )
1971 fhMassM02CutNLocMaxN->Fill(en,mass);
1972 fhAsymM02CutNLocMaxN->Fill(en,asym );
1973 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1976 if(!matched && eCutOK && ensubcut > 0.1 )
1978 fhMassEnCutNLocMaxN->Fill(en,mass );
1979 fhM02EnCutNLocMaxN ->Fill(en,l0 );
1980 fhAsymEnCutNLocMaxN->Fill(en,asym );
1981 fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1984 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1986 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1987 if(splitFrac > splitFracMin)
1989 fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1990 fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1993 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1995 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1996 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
2001 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2005 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2006 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2007 fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2009 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2011 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2012 if(splitFrac > splitFracMin)
2014 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2015 fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2021 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2022 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2023 fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2025 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2027 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2028 if(splitFrac > splitFracMin)
2030 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2031 fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2038 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2039 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2040 fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2042 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2044 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2045 if(splitFrac > splitFracMin)
2047 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2048 fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2052 }//Work with MC truth
2056 //_________________________________________________________________________________________________________
2057 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en, Float_t e1, Float_t e2,
2058 Int_t nc, Int_t nMax, Float_t t12diff,
2059 Float_t mass, Float_t l0,
2060 Float_t eta, Float_t phi,
2061 Bool_t matched, Int_t mcindex)
2063 // Fill histograms for clusters passing the pi0 selection
2066 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2068 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
2069 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2070 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2072 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2073 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2075 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2077 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2078 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2083 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2084 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2085 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2086 fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2087 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2091 if(fFillHighMultHisto)
2093 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2094 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2096 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2097 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2102 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2103 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2104 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2105 fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2106 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2110 if(fFillHighMultHisto)
2112 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2113 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2115 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2116 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2121 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2122 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2123 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2124 fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2125 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2129 if(fFillHighMultHisto)
2131 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2132 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2134 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2135 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2139 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2141 fhNLocMaxIdPi0 [mcindex][matched]->Fill(en,nMax);
2142 fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2143 fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2147 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2148 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2149 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2150 fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2151 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2156 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2157 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2158 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2159 fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2160 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2164 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2165 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2166 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2167 fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2168 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2170 }//Work with MC truth
2173 //______________________________________________________________________________________________________
2174 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en, Float_t e1, Float_t e2,
2175 Int_t nc, Int_t nMax, Float_t t12diff,
2176 Float_t mass, Float_t l0,
2177 Float_t eta, Float_t phi,
2178 Bool_t matched, Int_t mcindex)
2180 // Fill histograms for clusters passing the eta selection
2183 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2187 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2188 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2189 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2190 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2194 if(fFillHighMultHisto)
2196 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2197 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2199 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2200 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2205 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2206 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2207 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2208 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2212 if(fFillHighMultHisto)
2214 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2215 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2217 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2218 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2223 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2224 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2225 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2226 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2230 if(fFillHighMultHisto)
2232 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2233 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2235 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2236 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2240 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2244 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2245 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2246 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2247 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2251 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2252 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2253 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2254 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2259 fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2260 fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2261 fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2262 if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2264 }//Work with MC truth
2268 //__________________________________________________________________________________________________
2269 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en, Int_t nMax, Float_t asym,
2270 Float_t mass, Float_t l0,
2271 Bool_t matched, Int_t mcindex)
2273 // Fill histograms for clusters passing the photon selection
2277 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2278 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2279 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2283 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2284 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2285 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2289 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2290 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2291 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2294 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2298 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2299 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2300 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2304 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2305 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2306 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2310 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2311 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2312 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2315 }//Work with MC truth
2318 //_______________________________________________________________________________________________________
2319 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en, Float_t e1 , Float_t e2,
2320 Int_t ebin, Int_t mcindex,Int_t noverlaps,
2321 Float_t l0, Float_t mass,
2322 Int_t nMax, Bool_t matched,
2323 Float_t splitFrac, Float_t asym,
2324 Float_t eprim, Float_t asymGen)
2326 // Fill histograms needing some MC input
2328 Float_t efrac = eprim/en;
2329 Float_t efracSplit = 0;
2330 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2331 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2333 //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",
2334 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2336 if(ebin >= 0 && fFillEbinHisto)
2338 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2339 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2344 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2345 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2346 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2347 if(asym > 0 && !matched)
2349 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2350 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2355 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2356 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2359 if( en > fHistoECut )
2361 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2363 if(!matched && ebin >= 0 && fFillEbinHisto)
2365 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2366 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2368 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2370 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2371 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2378 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2379 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2380 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2382 if(asym > 0 && !matched)
2384 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2385 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2390 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2391 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2394 if( en > fHistoECut )
2396 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2398 if(!matched && ebin >= 0 && fFillEbinHisto)
2400 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2401 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2402 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2404 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2405 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2413 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2414 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2415 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2416 if(asym > 0 && !matched)
2418 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2419 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2424 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2425 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2428 if( en > fHistoECut )
2430 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2432 if(!matched && ebin >= 0 && fFillEbinHisto)
2434 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2435 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2437 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2439 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2440 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2447 //__________________________________________________________________________________________________________
2448 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en, Float_t enprim,
2449 Int_t nc, Float_t mass, Float_t l0,
2450 Float_t asym, Float_t splitFrac,
2451 Int_t inlm, Int_t ebin, Bool_t matched,
2452 Int_t mcindex, Int_t noverlaps)
2454 // Fill histograms for MC Overlaps
2456 //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);
2458 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2462 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2466 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2467 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2468 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2469 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2470 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2471 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2472 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2474 else if(noverlaps == 1)
2476 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2477 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2478 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2479 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2480 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2481 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2482 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2484 else if(noverlaps > 1)
2486 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2487 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2488 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2489 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2490 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2491 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2492 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2495 AliWarning(Form("n overlaps = %d!!", noverlaps));
2497 else if(fFillTMHisto)
2499 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2503 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2504 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2505 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2506 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2507 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2508 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2509 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2511 else if(noverlaps == 1)
2513 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2514 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2515 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2516 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2517 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2518 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2519 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2521 else if(noverlaps > 1)
2523 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2524 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2525 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2526 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2527 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2528 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2529 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2532 AliWarning(Form("n overlaps in matched = %d!!", noverlaps));
2537 //_____________________________________________________________________________________________________
2538 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t ncells, Float_t energy, Int_t nMax,
2539 Bool_t matched, Int_t mcindex,
2540 Float_t mass , Float_t l0)
2543 // Fill optional histograms with more SS parameters
2547 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2548 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2550 if (mcindex==kmcPi0 && !matched)
2552 if( energy > fHistoECut)
2554 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2555 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2559 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2560 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2564 else if( nMax == 2 )
2566 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2567 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2570 if (mcindex==kmcPi0 && !matched)
2572 if( energy > fHistoECut)
2574 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2575 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2579 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2580 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2584 else if( nMax >= 3 )
2586 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2587 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2589 if (mcindex==kmcPi0 && !matched)
2591 if( energy > fHistoECut)
2593 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2594 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2598 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2599 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2605 //______________________________________________________________________________________________________
2606 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2608 // Calculate NLM for different settings
2610 Float_t energy = clus->E();
2611 Float_t m02 = clus->GetM02();
2613 Float_t minEOrg = GetCaloUtils()->GetLocalMaximaCutE() ;
2614 Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2617 Double_t mass = 0., angle = 0.;
2618 Int_t absId1 =-1; Int_t absId2 =-1;
2619 Float_t distbad1 =-1; Float_t distbad2 =-1;
2620 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
2623 //printf("E %f, m02 %f; Org: minE %f, minDiffE %f\n",energy, m02, minEOrg,minEDiffOrg);
2624 for(Int_t iE = 0; iE < fNLMSettingN; iE++)
2626 for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
2628 GetCaloUtils()->SetLocalMaximaCutE (fNLMMinE [iE] );
2629 GetCaloUtils()->SetLocalMaximaCutEDiff(fNLMMinDiff[iDiff]);
2631 //nlm = GetCaloUtils()->GetNumberOfLocalMaxima(clus, cells) ;
2633 //printf("\t Change: i %d minE %f, j %d minDiffE %f - NLM = %d\n",iE, fNLMMinE[iE], iDiff, fNLMMinDiff[iDiff],nlm);
2635 pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(clus,cells,GetCaloUtils(),
2636 GetVertex(0), nlm, mass, angle,
2637 fSubClusterMom1,fSubClusterMom2,absId1,absId2,
2638 distbad1,distbad2,fidcut1,fidcut2);
2641 AliWarning("No local maximum found! It did not pass CaloPID selection criteria");
2646 if(inlm>2) inlm = 2;
2648 fhNLocMaxDiffCut [iE][iDiff] [matched]->Fill(energy,nlm);
2649 fhM02NLocMaxDiffCut [iE][iDiff][inlm][matched]->Fill(energy,m02);
2650 fhMassNLocMaxDiffCut[iE][iDiff][inlm][matched]->Fill(energy,mass);
2652 if(pidTag==AliCaloPID::kPi0)
2654 fhNLocMaxDiffCutPi0 [iE][iDiff] [matched]->Fill(energy,nlm);
2655 fhM02NLocMaxDiffCutPi0 [iE][iDiff][inlm][matched]->Fill(energy,m02);
2656 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][matched]->Fill(energy,mass);
2662 GetCaloUtils()->SetLocalMaximaCutE (minEOrg );
2663 GetCaloUtils()->SetLocalMaximaCutEDiff(minEDiffOrg);
2668 //_____________________________________________________________________________________________
2669 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, Int_t nMax,
2670 Bool_t matched, Int_t mcindex,
2671 Float_t mass , Int_t ebin)
2673 // Fill optional histograms with more SS parameters
2675 Float_t en = cluster->E();
2677 // Get more Shower Shape parameters
2678 Float_t ll0 = 0., ll1 = 0.;
2679 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2680 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2682 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2683 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2685 Float_t dispAsy = -1;
2686 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2690 if( en > fHistoECut )
2692 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2693 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2694 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2696 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2698 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2699 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2700 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2704 if(!matched && ebin >= 0 && fFillEbinHisto)
2706 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2707 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2708 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2711 else if( nMax == 2 )
2713 if( en > fHistoECut )
2715 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2716 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2717 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2719 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2721 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2722 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2723 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2727 if(!matched && ebin >= 0 && fFillEbinHisto)
2729 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2730 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2731 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2735 else if( nMax >= 3 )
2737 if( en > fHistoECut )
2739 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2740 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2741 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2743 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2745 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2746 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2747 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2751 if(!matched && ebin >= 0 && fFillEbinHisto)
2753 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2754 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2755 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2762 //__________________________________________________________________________________________
2763 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, Int_t nlm,
2764 Int_t absId1, Int_t absId2)
2766 // Calculate weights and fill histograms
2768 AliVCaloCells* cells = 0;
2769 if(GetCalorimeter() == kEMCAL) cells = GetEMCALCells();
2770 else cells = GetPHOSCells();
2772 // First recalculate energy in case non linearity was applied
2773 Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
2775 Float_t simuTotWeight = 0;
2776 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2778 simuTotWeight = GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
2779 simuTotWeight/= energy;
2784 AliWarning(Form("Wrong calculated energy %f",energy));
2788 //Get amplitude of main local maxima, recalibrate if needed
2789 Float_t amp1 = cells->GetCellAmplitude(absId1);
2790 GetCaloUtils()->RecalibrateCellAmplitude(amp1,GetCalorimeter(), absId1);
2791 Float_t amp2 = cells->GetCellAmplitude(absId2);
2792 GetCaloUtils()->RecalibrateCellAmplitude(amp2,GetCalorimeter(), absId2);
2794 if(amp1 < amp2) AliWarning(Form("Bad local maxima E ordering : id1 E %f, id2 E %f",amp1,amp2));
2795 if(amp1==0 || amp2==0) AliWarning(Form("Null E local maxima : id1 E %f, id2 E %f " ,amp1,amp2));
2797 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2799 amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
2800 amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
2803 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2804 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2805 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2807 //Get the ratio and log ratio to all cells in cluster
2808 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2810 Int_t id = clus->GetCellsAbsId()[ipos];
2812 //Recalibrate cell energy if needed
2813 Float_t amp = cells->GetCellAmplitude(id);
2814 GetCaloUtils()->RecalibrateCellAmplitude(amp,GetCalorimeter(), id);
2815 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2817 //printf("eCell a) %f",amp);
2818 amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
2819 //printf(", b)%f\n",amp);
2822 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2823 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2824 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2826 if (id!=absId1 && id!=absId2)
2828 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2829 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2834 //Recalculate shower shape for different W0
2835 if(GetCalorimeter()==kEMCAL)
2837 Float_t l0org = clus->GetM02();
2838 Float_t l1org = clus->GetM20();
2839 Float_t dorg = clus->GetDispersion();
2840 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2842 //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);
2844 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2846 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2847 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2848 //fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2850 Float_t l0 = 0., l1 = 0.;
2851 Float_t disp = 0., dEta = 0., dPhi = 0.;
2852 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2854 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2855 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[0]);
2856 //Make sure that for pp fSSECellCut[0]=0.05 and for PbPb fSSECellCut[0]=0.15
2859 fhM02WeightPi0[nlm][iw]->Fill(energy,l0);
2861 //printf("\t w0 %2.3f, l0 %2.3f\n",GetCaloUtils()->GetEMCALRecoUtils()->GetW0(),l0);
2865 // Set the original values back
2866 clus->SetM02(l0org);
2867 clus->SetM20(l1org);
2868 clus->SetDispersion(dorg);
2869 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2871 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2873 Float_t l0 = 0., l1 = 0.;
2874 Float_t disp = 0., dEta = 0., dPhi = 0.;
2875 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2877 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2878 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2880 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2882 //printf("\t min E cell %2.3f, l0 %2.3f\n",fSSECellCut[iec], l0);
2889 //____________________________________________________________________________________________
2890 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2891 Int_t nMax, Int_t mcindex)
2893 // Fill histograms related to track matching
2895 Float_t dZ = cluster->GetTrackDz();
2896 Float_t dR = cluster->GetTrackDx();
2897 Float_t en = cluster->E();
2899 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2901 dR = 2000., dZ = 2000.;
2902 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2905 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2907 if(TMath::Abs(dR) < 999)
2909 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2910 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2911 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2913 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2915 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2916 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2917 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2920 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2922 Bool_t positive = kFALSE;
2923 if(track) positive = (track->Charge()>0);
2929 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2930 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2931 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2933 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2935 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2936 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2937 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2942 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2943 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2944 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2946 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2948 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2949 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2950 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2959 //_______________________________________________________________
2960 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2962 //Save parameters used for analysis
2963 TString parList ; //this will be list of parameters used for this analysis.
2964 Int_t buffersize = 255;
2965 char onePar[buffersize] ;
2967 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---:") ;
2970 snprintf(onePar,buffersize,"Calorimeter: %s;", GetCalorimeterString().Data()) ;
2972 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f;", GetCaloUtils()->GetLocalMaximaCutE()) ;
2974 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f;",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2976 snprintf(onePar,buffersize,"fMinNCells =%d;", fMinNCells) ;
2978 snprintf(onePar,buffersize,"fMinBadDist =%1.1f;", fMinBadDist) ;
2980 if(fFillSSWeightHisto)
2982 snprintf(onePar,buffersize," N w %d - N e cut %d;",fSSWeightN,fSSECellCutN);
2986 return new TObjString(parList) ;
2990 //________________________________________________________________
2991 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2993 // Create histograms to be saved in output file and
2994 // store them in outputContainer
2995 TList * outputContainer = new TList() ;
2996 outputContainer->SetName("InsideClusterHistos") ;
2998 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2999 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
3000 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
3001 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
3002 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
3003 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
3005 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
3006 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
3007 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
3008 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
3009 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
3010 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
3012 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
3013 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
3014 Bool_t splitOn = kFALSE;
3015 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
3016 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
3017 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
3019 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
3020 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
3021 TString snlm [] = {"1","2","N"};
3023 TString sEBin[] = {"8 < #it{E} < 12 GeV","12 < #it{E} < 16 GeV", "16 < #it{E} < 20 GeV", "#it{E} > 20 GeV" };
3027 if(IsDataMC()) n = 7;
3029 Int_t nMaxBins = 10;
3031 TString sMatched[] = {"","Matched"};
3034 if(!fFillTMHisto) nMatched = 1;
3037 if(fFillNLMDiffCutHisto)
3039 for(Int_t imatch = 0; imatch < nMatched; imatch++)
3041 for(Int_t iE = 0; iE < fNLMSettingN; iE++)
3043 for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
3045 fhNLocMaxDiffCut[iE][iDiff][imatch] = new TH2F(Form("hNLocMax_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3046 Form("NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s", fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3047 nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3048 fhNLocMaxDiffCut[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3049 fhNLocMaxDiffCut[iE][iDiff][imatch]->SetXTitle("#it{E}_{cluster}");
3050 outputContainer->Add(fhNLocMaxDiffCut[iE][iDiff][imatch]) ;
3052 fhNLocMaxDiffCutPi0[iE][iDiff][imatch] = new TH2F(Form("hNLocMaxPi0_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3053 Form("#pi^{0} NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s",
3054 fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3055 nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3056 fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3057 fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetXTitle("#it{E}_{#pi^{0}}");
3058 outputContainer->Add(fhNLocMaxDiffCutPi0[iE][iDiff][imatch]) ;
3060 for(Int_t inlm = 0; inlm < 3; inlm++)
3063 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxM02_MinE%d_MinDiffE%d_NLM%s%s",
3064 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3065 Form("#lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3066 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3067 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3068 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3069 fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3070 outputContainer->Add(fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3072 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxMass_MinE%d_MinDiffE%d_NLM%s%s",
3073 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3074 Form("#it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3075 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3076 nptbins,ptmin,ptmax, mbins,mmin,mmax);
3077 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3078 fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3079 outputContainer->Add(fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3081 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxPi0M02_MinE%d_MinDiffE%d_NLM%s%s",
3082 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3083 Form("#pi^{0} #lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3084 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3085 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3086 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3087 fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3088 outputContainer->Add(fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3090 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch] = new TH2F(Form("hNLocMaxPi0Mass_MinE%d_MinDiffE%d_NLM%s%s",
3091 iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3092 Form("#pi^{0} #it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3093 fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3094 nptbins,ptmin,ptmax, mbins,mmin,mmax);
3095 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3096 fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3097 outputContainer->Add(fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3104 return outputContainer;
3107 if(fCheckSplitDistToBad)
3109 for(Int_t inlm = 0; inlm < 3; inlm++)
3111 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
3112 Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3113 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3114 fhMassBadDistClose[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3115 fhMassBadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3116 outputContainer->Add(fhMassBadDistClose[inlm]) ;
3118 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
3119 Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3120 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3121 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
3122 fhM02BadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3123 outputContainer->Add(fhM02BadDistClose[inlm]) ;
3125 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
3126 Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3127 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3128 fhMassOnBorder[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3129 fhMassOnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3130 outputContainer->Add(fhMassOnBorder[inlm]) ;
3132 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
3133 Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3134 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3135 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
3136 fhM02OnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3137 outputContainer->Add(fhM02OnBorder[inlm]) ;
3142 for(Int_t i = 0; i < n; i++)
3144 for(Int_t j = 0; j < nMatched; j++)
3147 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3148 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3149 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3150 fhNLocMax[i][j] ->SetYTitle("#it{N} maxima");
3151 fhNLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3152 outputContainer->Add(fhNLocMax[i][j]) ;
3154 fhLM1NLocMax[i][j] = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3155 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3156 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3157 fhLM1NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3158 fhLM1NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3159 outputContainer->Add(fhLM1NLocMax[i][j]) ;
3161 fhLM2NLocMax[i][j] = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3162 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3163 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3164 fhLM2NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3165 fhLM2NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3166 outputContainer->Add(fhLM2NLocMax[i][j]) ;
3170 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3171 Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3172 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3173 fhNLocMaxM02Cut[i][j]->SetYTitle("#it{N} maxima");
3174 fhNLocMaxM02Cut[i][j]->SetXTitle("#it{E} (GeV)");
3175 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3177 fhLM1NLocMaxM02Cut[i][j] = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3178 Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3179 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3180 fhLM1NLocMaxM02Cut[i][j] ->SetYTitle("#it{N} maxima");
3181 fhLM1NLocMaxM02Cut[i][j] ->SetXTitle("#it{E} (GeV)");
3182 outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3184 fhLM2NLocMaxM02Cut[i][j] = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3185 Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3186 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3187 fhLM2NLocMaxM02Cut[i][j] ->SetYTitle("#it{N} maxima");
3188 fhLM2NLocMaxM02Cut[i][j] ->SetXTitle("#it{E} (GeV)");
3189 outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3194 fhNLocMaxIdPi0[i][j] = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3195 Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3196 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3197 fhNLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3198 fhNLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3199 outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3202 fhLM1NLocMaxIdPi0[i][j] = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3203 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3204 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3205 fhLM1NLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3206 fhLM1NLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3207 outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3209 fhLM2NLocMaxIdPi0[i][j] = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3210 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3211 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3212 fhLM2NLocMaxIdPi0[i][j] ->SetYTitle("#it{N} maxima");
3213 fhLM2NLocMaxIdPi0[i][j] ->SetXTitle("#it{E} (GeV)");
3214 outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3219 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3220 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3221 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3222 fhSplitClusterENLocMax[i][j] ->SetYTitle("#it{N} maxima");
3223 fhSplitClusterENLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3224 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3227 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3228 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3229 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3230 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("#it{N} maxima");
3231 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("#it{E} (GeV)");
3232 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3236 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3237 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3238 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3239 fhNCellNLocMax1[i][j] ->SetYTitle("#it{N} cells");
3240 fhNCellNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3241 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3243 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3244 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3245 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3246 fhNCellNLocMax2[i][j] ->SetYTitle("#it{N} cells");
3247 fhNCellNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3248 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3251 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3252 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3253 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3254 fhNCellNLocMaxN[i][j] ->SetYTitle("#it{N} cells");
3255 fhNCellNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3256 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3259 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3260 Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3261 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3262 fhMassNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3263 fhMassNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3264 outputContainer->Add(fhMassNLocMax1[i][j]) ;
3266 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3267 Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3268 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3269 fhMassNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3270 fhMassNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3271 outputContainer->Add(fhMassNLocMax2[i][j]) ;
3273 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3274 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3275 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3276 fhMassNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3277 fhMassNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3278 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3280 fhMassSplitENLocMax1[i][j] = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3281 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()),
3282 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3283 fhMassSplitENLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3284 fhMassSplitENLocMax1[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3285 outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3287 fhMassSplitENLocMax2[i][j] = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3288 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()),
3289 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3290 fhMassSplitENLocMax2[i][j]->SetYTitle("#it{E} _{M} (GeV/#it{c}^{2})");
3291 fhMassSplitENLocMax2[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3292 outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3294 fhMassSplitENLocMaxN[i][j] = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3295 Form("Invariant mass of splitted cluster with NLM>2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3296 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3297 fhMassSplitENLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3298 fhMassSplitENLocMaxN[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3299 outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3301 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3302 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3303 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3304 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3305 fhM02NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3306 outputContainer->Add(fhM02NLocMax1[i][j]) ;
3308 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3309 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3310 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3311 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3312 fhM02NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3313 outputContainer->Add(fhM02NLocMax2[i][j]) ;
3315 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3316 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3317 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3318 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3319 fhM02NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3320 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3322 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3323 Form("Asymmetry of #it{NLM}=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3324 nptbins,ptmin,ptmax,200,-1,1);
3325 fhAsymNLocMax1[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3326 fhAsymNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3327 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3329 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3330 Form("Asymmetry of #it{NLM}=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3331 nptbins,ptmin,ptmax,200,-1,1);
3332 fhAsymNLocMax2[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3333 fhAsymNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3334 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3336 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3337 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3338 nptbins,ptmin,ptmax,200,-1,1);
3339 fhAsymNLocMaxN[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3340 fhAsymNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3341 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3343 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3344 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()),
3345 nptbins,ptmin,ptmax,120,0,1.2);
3346 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3347 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3348 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3350 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3351 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()),
3352 nptbins,ptmin,ptmax,120,0,1.2);
3353 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3354 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3355 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3357 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3358 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()),
3359 nptbins,ptmin,ptmax,120,0,1.2);
3360 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3361 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3362 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3368 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, M02 cut, no TM",
3369 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3370 fhMassM02CutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3371 fhMassM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3372 outputContainer->Add(fhMassM02CutNLocMax1) ;
3374 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, M02 cut, no TM",
3375 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3376 fhMassM02CutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3377 fhMassM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3378 outputContainer->Add(fhMassM02CutNLocMax2) ;
3380 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3381 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3382 fhMassM02CutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3383 fhMassM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3384 outputContainer->Add(fhMassM02CutNLocMaxN) ;
3386 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of #it{NLM}=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3387 fhAsymM02CutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3388 fhAsymM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3389 outputContainer->Add(fhAsymM02CutNLocMax1) ;
3391 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of #it{NLM}=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3392 fhAsymM02CutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3393 fhAsymM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3394 outputContainer->Add(fhAsymM02CutNLocMax2) ;
3396 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3397 fhAsymM02CutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3398 fhAsymM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3399 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3403 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",
3404 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3405 fhMassSplitECutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3406 fhMassSplitECutNLocMax1->SetXTitle("#it{E} (GeV)");
3407 outputContainer->Add(fhMassSplitECutNLocMax1) ;
3409 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",
3410 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3411 fhMassSplitECutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3412 fhMassSplitECutNLocMax2->SetXTitle("#it{E} (GeV)");
3413 outputContainer->Add(fhMassSplitECutNLocMax2) ;
3415 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",
3416 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3417 fhMassSplitECutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3418 fhMassSplitECutNLocMaxN->SetXTitle("#it{E} (GeV)");
3419 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3425 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, Asy cut, no TM",
3426 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3427 fhMassAsyCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3428 fhMassAsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3429 outputContainer->Add(fhMassAsyCutNLocMax1) ;
3431 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, Asy cut, no TM",
3432 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3433 fhMassAsyCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3434 fhMassAsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3435 outputContainer->Add(fhMassAsyCutNLocMax2) ;
3437 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3438 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3439 fhMassAsyCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3440 fhMassAsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3441 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3443 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of #it{NLM}=1 vs cluster Energy, AsyCut, no TM",
3444 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3445 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3446 fhM02AsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3447 outputContainer->Add(fhM02AsyCutNLocMax1) ;
3449 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of #it{NLM}=2 vs cluster Energy, AsyCut, no TM",
3450 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3451 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3452 fhM02AsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3453 outputContainer->Add(fhM02AsyCutNLocMax2) ;
3455 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
3456 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3457 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3458 fhM02AsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3459 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3462 if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3464 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)),
3465 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3466 fhMassEnCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3467 fhMassEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3468 outputContainer->Add(fhMassEnCutNLocMax1) ;
3470 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)),
3471 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3472 fhMassEnCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3473 fhMassEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3474 outputContainer->Add(fhMassEnCutNLocMax2) ;
3476 fhMassEnCutNLocMaxN = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3477 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3478 fhMassEnCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3479 fhMassEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3480 outputContainer->Add(fhMassEnCutNLocMaxN) ;
3482 fhM02EnCutNLocMax1 = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3483 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3484 fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3485 fhM02EnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3486 outputContainer->Add(fhM02EnCutNLocMax1) ;
3488 fhM02EnCutNLocMax2 = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3489 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3490 fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3491 fhM02EnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3492 outputContainer->Add(fhM02EnCutNLocMax2) ;
3494 fhM02EnCutNLocMaxN = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3495 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3496 fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3497 fhM02EnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3498 outputContainer->Add(fhM02EnCutNLocMaxN) ;
3500 fhAsymEnCutNLocMax1 = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3501 , nptbins,ptmin,ptmax,200,-1,1);
3502 fhAsymEnCutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3503 fhAsymEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3504 outputContainer->Add(fhAsymEnCutNLocMax1) ;
3506 fhAsymEnCutNLocMax2 = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3507 , nptbins,ptmin,ptmax,200,-1,1);
3508 fhAsymEnCutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3509 fhAsymEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3510 outputContainer->Add(fhAsymEnCutNLocMax2) ;
3512 fhAsymEnCutNLocMaxN = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3513 , nptbins,ptmin,ptmax,200,-1,1);
3514 fhAsymEnCutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3515 fhAsymEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3516 outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3518 fhSplitEFracEnCutNLocMax1 = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of #it{NLM}=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3519 , nptbins,ptmin,ptmax,120,0,1.2);
3520 fhSplitEFracEnCutNLocMax1->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3521 fhSplitEFracEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3522 outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3524 fhSplitEFracEnCutNLocMax2 = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of #it{NLM}=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3525 , nptbins,ptmin,ptmax,120,0,1.2);
3526 fhSplitEFracEnCutNLocMax2->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3527 fhSplitEFracEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3528 outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3530 fhSplitEFracEnCutNLocMaxN = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3531 , nptbins,ptmin,ptmax,120,0,1.2);
3532 fhSplitEFracEnCutNLocMaxN->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3533 fhSplitEFracEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3534 outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3541 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3542 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3543 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3544 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3545 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3546 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3548 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3549 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3550 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3551 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3552 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3553 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3555 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3556 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3557 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3558 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3559 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3560 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3562 fhMassSplitEAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3563 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3564 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3565 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3566 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3567 outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3569 fhMassSplitEAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3570 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3571 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3572 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3573 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3574 outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3576 fhMassSplitEAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3577 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3578 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3579 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3580 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3581 outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3584 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3585 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()),
3586 nptbins,ptmin,ptmax,120,0,1.2);
3587 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3588 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3589 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3591 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3592 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()),
3593 nptbins,ptmin,ptmax,120,0,1.2);
3594 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3595 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3596 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3598 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3599 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()),
3600 nptbins,ptmin,ptmax,120,0,1.2);
3601 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("#it{E}_{cluster} (GeV)");
3602 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3603 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3606 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3607 Form("Invariant mass of splitted cluster with #it{NLM}=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3608 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3609 fhMassM02NLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3610 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3611 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
3613 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3614 Form("Invariant mass of splitted cluster with #it{NLM}=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3615 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3616 fhMassM02NLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3617 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3618 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
3620 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3621 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3622 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3623 fhMassM02NLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3624 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3625 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
3627 if(fFillSSExtraHisto)
3629 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3630 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()),
3631 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3632 fhMassDispEtaNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3633 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3634 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
3636 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3637 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()),
3638 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3639 fhMassDispEtaNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3640 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3641 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
3643 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3644 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3645 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3646 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3647 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3648 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
3650 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3651 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3652 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3653 fhMassDispPhiNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3654 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3655 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
3657 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3658 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3659 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3660 fhMassDispPhiNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3661 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3662 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
3664 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3665 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3666 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3667 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3668 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3669 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
3671 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3672 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()),
3673 200,-1,1,mbins,mmin,mmax);
3674 fhMassDispAsyNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3675 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3676 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
3678 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3679 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()),
3680 200,-1,1,mbins,mmin,mmax);
3681 fhMassDispAsyNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3682 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3683 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
3685 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3686 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()),
3687 200,-1,1,mbins,mmin,mmax);
3688 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3689 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3690 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
3694 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3696 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3697 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3698 nptbins,ptmin,ptmax,200,0,2);
3699 fhMCGenFracNLocMax1[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3700 fhMCGenFracNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3701 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
3703 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3704 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3705 nptbins,ptmin,ptmax,200,0,2);
3706 fhMCGenFracNLocMax2[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3707 fhMCGenFracNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3708 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
3710 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3711 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3712 nptbins,ptmin,ptmax,200,0,2);
3713 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3714 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3715 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
3717 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3718 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3719 nptbins,ptmin,ptmax,200,0,2);
3720 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3721 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3722 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3724 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3725 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3726 nptbins,ptmin,ptmax,200,0,2);
3727 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3728 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3729 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3731 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3732 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3733 nptbins,ptmin,ptmax,200,0,2);
3734 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3735 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3736 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3739 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3740 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()),
3741 nptbins,ptmin,ptmax,200,0,2);
3742 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3743 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3744 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
3746 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3747 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()),
3748 nptbins,ptmin,ptmax,200,0,2);
3749 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3750 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3751 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
3753 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3754 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()),
3755 nptbins,ptmin,ptmax,200,0,2);
3756 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3757 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3758 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
3760 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3761 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()),
3762 nptbins,ptmin,ptmax,200,0,2);
3763 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3764 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3765 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3767 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3768 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()),
3769 nptbins,ptmin,ptmax,200,0,2);
3770 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3771 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3772 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3774 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3775 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()),
3776 nptbins,ptmin,ptmax,200,0,2);
3777 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3778 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("#it{E} (GeV)");
3779 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3781 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3782 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()),
3784 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3785 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3786 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3788 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3789 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()),
3791 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3792 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3793 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3796 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3797 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()),
3799 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3800 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3801 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3804 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3805 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()),
3806 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3807 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3808 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3809 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3811 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3812 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()),
3813 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3814 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3815 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3816 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3819 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3820 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()),
3821 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3822 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3823 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("#it{E}_{gen} (GeV)");
3824 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3827 // Histograms after cluster identification
3832 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3833 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3834 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3835 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3836 fhM02Pi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3837 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3839 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3840 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 2",ptype[i].Data()),
3841 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3842 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3843 fhM02Pi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3844 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3846 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3847 Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3848 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3849 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3850 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3851 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3853 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3854 Form("Mass vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3855 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3856 fhMassPi0NLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3857 fhMassPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3858 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3860 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3861 Form("Mass vs #it{E} , %s, for NLM = 2",ptype[i].Data()),
3862 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3863 fhMassPi0NLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3864 fhMassPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3865 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3867 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3868 Form("Mass vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3869 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3870 fhMassPi0NLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3871 fhMassPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3872 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3874 fhMassSplitEPi0NLocMax1[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3875 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM = 1",ptype[i].Data()),
3876 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3877 fhMassSplitEPi0NLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3878 fhMassSplitEPi0NLocMax1[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3879 outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3881 fhMassSplitEPi0NLocMax2[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3882 Form("Mass vs #it{E}_{1}+#it{E}_{2} , %s, for NLM = 2",ptype[i].Data()),
3883 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3884 fhMassSplitEPi0NLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3885 fhMassSplitEPi0NLocMax2[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3886 outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3888 fhMassSplitEPi0NLocMaxN[i][j] = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3889 Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM > 2",ptype[i].Data()),
3890 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3891 fhMassSplitEPi0NLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3892 fhMassSplitEPi0NLocMaxN[i][j] ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3893 outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3895 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3896 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3897 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3898 fhAsyPi0NLocMax1[i][j] ->SetYTitle("#it{A}");
3899 fhAsyPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3900 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3902 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3903 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3904 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3905 fhAsyPi0NLocMax2[i][j] ->SetYTitle("#it{A}");
3906 fhAsyPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3907 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3909 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3910 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3911 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3912 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("#it{A}");
3913 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3914 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3918 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3919 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3920 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3921 fhNCellPi0NLocMax1[i][j] ->SetYTitle("#it{N} cells");
3922 fhNCellPi0NLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3923 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3925 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3926 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3927 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3928 fhNCellPi0NLocMax2[i][j] ->SetYTitle("#it{N} cells");
3929 fhNCellPi0NLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3930 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3932 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3933 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3934 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3935 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("#it{N} cells");
3936 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3937 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3944 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3945 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3946 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3947 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3948 fhM02EtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3949 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3952 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3953 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3954 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3955 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3956 fhM02EtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3957 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3959 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3960 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3961 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3962 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3963 fhM02EtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3964 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3966 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3967 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3968 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3969 fhMassEtaNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3970 fhMassEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3971 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3973 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3974 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3975 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3976 fhMassEtaNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3977 fhMassEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3978 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3980 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3981 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3982 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3983 fhMassEtaNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3984 fhMassEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
3985 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3987 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3988 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3989 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3990 fhAsyEtaNLocMax1[i][j] ->SetYTitle("#it{A}");
3991 fhAsyEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3992 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3994 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3995 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3996 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3997 fhAsyEtaNLocMax2[i][j] ->SetYTitle("#it{A}");
3998 fhAsyEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
3999 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
4001 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4002 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4003 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4004 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("#it{A}");
4005 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4006 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
4010 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4011 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
4012 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4013 fhNCellEtaNLocMax1[i][j] ->SetYTitle("#it{N} cells");
4014 fhNCellEtaNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4015 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
4017 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4018 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
4019 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4020 fhNCellEtaNLocMax2[i][j] ->SetYTitle("#it{N} cells");
4021 fhNCellEtaNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4022 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
4024 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4025 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
4026 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4027 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("#it{N} cells");
4028 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4029 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
4034 if(fFillIdConvHisto)
4036 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4037 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
4038 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4039 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
4040 fhM02ConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4041 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
4043 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4044 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
4045 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4046 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
4047 fhM02ConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4048 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
4050 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4051 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
4052 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4053 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
4054 fhM02ConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4055 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
4058 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4059 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
4060 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4061 fhMassConNLocMax1[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4062 fhMassConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4063 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
4065 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4066 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
4067 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4068 fhMassConNLocMax2[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4069 fhMassConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4070 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
4072 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4073 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
4074 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4075 fhMassConNLocMaxN[i][j] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4076 fhMassConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4077 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
4079 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4080 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
4081 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4082 fhAsyConNLocMax1[i][j] ->SetYTitle("#it{A}");
4083 fhAsyConNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
4084 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
4086 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4087 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
4088 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4089 fhAsyConNLocMax2[i][j] ->SetYTitle("#it{A}");
4090 fhAsyConNLocMax2[i][j] ->SetXTitle("#it{E} (GeV)");
4091 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
4093 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4094 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4095 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4096 fhAsyConNLocMaxN[i][j] ->SetYTitle("#it{A}");
4097 fhAsyConNLocMaxN[i][j] ->SetXTitle("#it{E} (GeV)");
4098 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
4102 } // matched, not matched
4106 for(Int_t j = 0; j < 4; j++)
4109 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
4110 Form("Invariant mass of 2 highest energy cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4111 120,0,1.2,mbins,mmin,mmax);
4112 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4113 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4114 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
4116 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
4117 Form("Invariant mass of 2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4118 120,0,1.2,mbins,mmin,mmax);
4119 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4120 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4121 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
4123 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
4124 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()),
4125 120,0,1.2,mbins,mmin,mmax);
4126 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4127 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4128 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
4130 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
4132 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
4133 Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4134 200,0,2,nMaxBins,0,nMaxBins);
4135 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("#it{NLM}");
4136 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4137 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
4139 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
4140 Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
4141 200,0,2,nMaxBins,0,nMaxBins);
4142 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("#it{NLM}");
4143 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4144 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
4146 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4147 Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4148 200,0,2,mbins,mmin,mmax);
4149 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4150 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4151 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
4153 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4154 Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4155 200,0,2,mbins,mmin,mmax);
4156 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4157 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4158 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
4160 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4161 Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4162 200,0,2,mbins,mmin,mmax);
4163 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4164 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4165 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
4167 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4168 Form("#lambda_{0}^{2} vs E for N max = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4169 200,0,2,ssbins,ssmin,ssmax);
4170 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4171 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4172 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4174 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4175 Form("#lambda_{0}^{2} vs E for N max = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4176 200,0,2,ssbins,ssmin,ssmax);
4177 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4178 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4179 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4181 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4182 Form("#lambda_{0}^{2} vs E for N max > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4183 200,0,2,ssbins,ssmin,ssmax);
4184 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4185 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4186 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4190 } // MC particle list
4192 if(fFillHighMultHisto)
4196 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
4197 "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4198 nptbins,ptmin,ptmax,100,0,100);
4199 fhCentralityPi0NLocMax1->SetYTitle("#it{Centrality}");
4200 fhCentralityPi0NLocMax1->SetXTitle("#it{E} (GeV)");
4201 outputContainer->Add(fhCentralityPi0NLocMax1) ;
4203 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
4204 "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4205 nptbins,ptmin,ptmax,100,0,100);
4206 fhCentralityPi0NLocMax2->SetYTitle("#it{Centrality}");
4207 fhCentralityPi0NLocMax2->SetXTitle("#it{E} (GeV)");
4208 outputContainer->Add(fhCentralityPi0NLocMax2) ;
4210 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
4211 "E vs Centrality, selected pi0 cluster with NLM>1",
4212 nptbins,ptmin,ptmax,100,0,100);
4213 fhCentralityPi0NLocMaxN->SetYTitle("#it{Centrality}");
4214 fhCentralityPi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4215 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4219 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
4220 "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4221 nptbins,ptmin,ptmax,100,0,100);
4222 fhCentralityEtaNLocMax1->SetYTitle("#it{Centrality}");
4223 fhCentralityEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4224 outputContainer->Add(fhCentralityEtaNLocMax1) ;
4226 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
4227 "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4228 nptbins,ptmin,ptmax,100,0,100);
4229 fhCentralityEtaNLocMax2->SetYTitle("#it{Centrality}");
4230 fhCentralityEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4231 outputContainer->Add(fhCentralityEtaNLocMax2) ;
4233 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
4234 "E vs Centrality, selected pi0 cluster with NLM>1",
4235 nptbins,ptmin,ptmax,100,0,100);
4236 fhCentralityEtaNLocMaxN->SetYTitle("#it{Centrality}");
4237 fhCentralityEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4238 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4241 // E vs Event plane angle
4243 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4244 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4245 fhEventPlanePi0NLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4246 fhEventPlanePi0NLocMax1->SetXTitle("#it{E} (GeV)");
4247 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4249 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4250 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4251 fhEventPlanePi0NLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4252 fhEventPlanePi0NLocMax2->SetXTitle("#it{E} (GeV)");
4253 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4255 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4256 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4257 fhEventPlanePi0NLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4258 fhEventPlanePi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4259 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4263 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4264 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4265 fhEventPlaneEtaNLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4266 fhEventPlaneEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4267 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4269 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4270 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4271 fhEventPlaneEtaNLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4272 fhEventPlaneEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4273 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4275 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4276 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4277 fhEventPlaneEtaNLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4278 fhEventPlaneEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4279 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4285 for(Int_t i = 0; i < 4; i++)
4287 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4288 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4289 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4290 fhMassM02NLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4291 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4292 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
4294 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4295 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4296 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4297 fhMassM02NLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4298 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4299 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
4301 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4302 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4303 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4304 fhMassM02NLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4305 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4306 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
4309 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4310 Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=1, %s",sEBin[i].Data()),
4311 200,-1,1,mbins,mmin,mmax);
4312 fhMassAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4313 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4314 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4316 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4317 Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=2, %s",sEBin[i].Data()),
4318 200,-1,1,mbins,mmin,mmax);
4319 fhMassAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4320 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4321 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4323 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4324 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4325 200,-1,1,mbins,mmin,mmax);
4326 fhMassAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4327 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4328 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4331 if(IsDataMC() && fFillMCHisto)
4333 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4334 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4335 ssbins,ssmin,ssmax,100,0,1);
4336 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4337 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4338 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4340 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4341 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4342 ssbins,ssmin,ssmax,100,0,1);
4343 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4344 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4345 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4347 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4348 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4349 ssbins,ssmin,ssmax,100,0,1);
4350 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4351 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4352 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
4355 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4356 Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=1, %s",sEBin[i].Data()),
4358 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4359 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("#it{A}");
4360 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4362 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4363 Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=2, %s",sEBin[i].Data()),
4365 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4366 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("#it{A}");
4367 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4369 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4370 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4372 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4373 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("#it{A}");
4374 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4377 if(fFillSSExtraHisto)
4379 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4380 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4381 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4382 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4383 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4384 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
4386 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4387 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4388 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4389 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4390 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4391 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
4393 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4394 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4395 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4396 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4397 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4398 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
4400 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4401 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4402 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4403 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4404 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4405 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
4407 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4408 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4409 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4410 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4411 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4412 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
4414 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4415 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4416 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4417 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4418 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4419 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
4421 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4422 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()),
4423 200,-1,1,mbins,mmin,mmax);
4424 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4425 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4426 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
4428 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4429 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()),
4430 200,-1,1,mbins,mmin,mmax);
4431 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4432 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4433 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
4435 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4436 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()),
4437 200,-1,1,mbins,mmin,mmax);
4438 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4439 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4440 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
4445 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4447 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4448 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
4449 nptbins,ptmin,ptmax,200,0,2);
4450 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4451 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("#it{E} (GeV)");
4452 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4454 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4455 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
4456 nptbins,ptmin,ptmax,200,0,2);
4457 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4458 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("#it{E} (GeV)");
4459 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4462 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4463 "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
4464 nptbins,ptmin,ptmax,200,0,2);
4465 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4466 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("#it{E} (GeV)");
4467 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4469 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4470 "#it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
4471 nptbins,ptmin,ptmax,200,0,2);
4472 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4473 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("#it{E} (GeV)");
4474 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4476 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4477 " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
4478 nptbins,ptmin,ptmax,200,0,2);
4479 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4480 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("#it{E} (GeV)");
4481 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4484 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4485 " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
4486 nptbins,ptmin,ptmax,200,0,2);
4487 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4488 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("#it{E} (GeV)");
4489 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4493 if(fFillTMResidualHisto && fFillTMHisto)
4495 for(Int_t i = 0; i < n; i++)
4498 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
4499 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4500 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4501 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4502 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4503 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4505 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
4506 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4507 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4508 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4509 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4510 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4512 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
4513 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4515 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
4516 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4517 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4518 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4519 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4520 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4522 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
4523 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4524 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4525 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4526 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4527 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4529 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
4530 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4532 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
4533 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4534 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4535 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4536 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4537 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4539 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
4540 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4541 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4542 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4543 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4544 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4546 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
4547 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4549 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
4550 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4551 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4552 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4553 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4554 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4556 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
4557 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4558 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4559 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4560 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4561 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4563 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4564 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4566 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
4567 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4568 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4569 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4570 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4571 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4573 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
4574 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4575 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4576 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4577 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4578 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4580 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4581 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4583 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
4584 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4585 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4586 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4587 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4588 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4590 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
4591 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4592 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4593 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4594 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4595 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4597 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4598 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4600 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
4601 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4602 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4603 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4604 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4605 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4607 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
4608 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4609 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4610 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4611 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4612 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4614 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4615 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4617 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
4618 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4619 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4620 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4621 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4622 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4624 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
4625 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4626 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4627 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4628 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4629 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4631 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4632 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4634 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
4635 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4636 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4637 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4638 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4639 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4641 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
4642 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4643 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4644 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4645 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4646 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4648 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4649 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4656 for(Int_t i = 0; i < n; i++)
4658 for(Int_t j = 0; j < nMatched; j++)
4661 fhAnglePairNLocMax1[i][j] = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4662 Form("Opening angle split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4663 nptbins,ptmin,ptmax,200,0,0.2);
4664 fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4665 fhAnglePairNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4666 outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4668 fhAnglePairNLocMax2[i][j] = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4669 Form("Opening angle split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4670 nptbins,ptmin,ptmax,200,0,0.2);
4671 fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4672 fhAnglePairNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4673 outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4675 fhAnglePairNLocMaxN[i][j] = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4676 Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4677 nptbins,ptmin,ptmax,200,0,0.2);
4678 fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4679 fhAnglePairNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4680 outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4684 fhAnglePairAfterCutsNLocMax1[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4685 Form("Opening angle split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4686 nptbins,ptmin,ptmax,200,0,0.2);
4687 fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4688 fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4689 outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4691 fhAnglePairAfterCutsNLocMax2[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4692 Form("Opening angle split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4693 nptbins,ptmin,ptmax,200,0,0.2);
4694 fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4695 fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4696 outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4698 fhAnglePairAfterCutsNLocMaxN[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4699 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4700 nptbins,ptmin,ptmax,200,0,0.2);
4701 fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4702 fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4703 outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4707 fhAnglePairPi0NLocMax1[i][j] = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4708 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4709 nptbins,ptmin,ptmax,200,0,0.2);
4710 fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4711 fhAnglePairPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4712 outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4714 fhAnglePairPi0NLocMax2[i][j] = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4715 Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4716 nptbins,ptmin,ptmax,200,0,0.2);
4717 fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4718 fhAnglePairPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4719 outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4721 fhAnglePairPi0NLocMaxN[i][j] = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4722 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4723 nptbins,ptmin,ptmax,200,0,0.2);
4724 fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4725 fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4726 outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4728 fhAnglePairMassNLocMax1[i][j] = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4729 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()),
4730 mbins,mmin,mmax,200,0,0.2);
4731 fhAnglePairMassNLocMax1[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4732 fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4733 outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4736 fhAnglePairMassNLocMax2[i][j] = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4737 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()),
4738 mbins,mmin,mmax,200,0,0.2);
4739 fhAnglePairMassNLocMax2[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4740 fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4741 outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4743 fhAnglePairMassNLocMaxN[i][j] = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4744 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4745 mbins,mmin,mmax,200,0,0.2);
4746 fhAnglePairMassNLocMaxN[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4747 fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4748 outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;
4751 fhAnglePairM02NLocMax1[i][j] = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4752 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()),
4753 ssbins,ssmin,ssmax,200,0,0.2);
4754 fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4755 fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4756 outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4759 fhAnglePairM02NLocMax2[i][j] = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4760 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()),
4761 ssbins,ssmin,ssmax,200,0,0.2);
4762 fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4763 fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4764 outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4766 fhAnglePairM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4767 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4768 ssbins,ssmin,ssmax,200,0,0.2);
4769 fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4770 fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4771 outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4773 fhAnglePairOverM02NLocMax1[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4774 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4775 nptbins,ptmin,ptmax,200,0,0.2);
4776 fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4777 fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4778 outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4780 fhAnglePairOverM02NLocMax2[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4781 Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4782 nptbins,ptmin,ptmax,200,0,0.2);
4783 fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4784 fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4785 outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4787 fhAnglePairOverM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4788 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4789 nptbins,ptmin,ptmax,200,0,0.2);
4790 fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4791 fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4792 outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4795 fhAnglePairOverM02NLocMax1Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4796 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()),
4797 nptbins,ptmin,ptmax,200,0,0.2);
4798 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4799 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4800 outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4802 fhAnglePairOverM02NLocMax2Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4803 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()),
4804 nptbins,ptmin,ptmax,200,0,0.2);
4805 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4806 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4807 outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4809 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4810 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4811 nptbins,ptmin,ptmax,200,0,0.2);
4812 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4813 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("#it{E} (GeV)");
4814 outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4822 fhAnglePairPrimPi0RecoNLocMax1 = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4823 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=1",
4824 nptbins,ptmin,ptmax,300,0,3);
4825 fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4826 fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("#it{E} (GeV)");
4827 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4829 fhAnglePairPrimPi0RecoNLocMax2 = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4830 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=2",
4831 nptbins,ptmin,ptmax,300,0,3);
4832 fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4833 fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("#it{E} (GeV)");
4834 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4836 fhAnglePairPrimPi0RecoNLocMaxN = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4837 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4838 nptbins,ptmin,ptmax,300,0,3);
4839 fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4840 fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("#it{E} (GeV)");
4841 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4844 fhAnglePairPrimPi0vsRecoNLocMax1 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4845 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, #it{NLM}=1",
4846 200,0,0.2,200,0,0.2);
4847 fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4848 fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4849 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4851 fhAnglePairPrimPi0vsRecoNLocMax2 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4852 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4853 200,0,0.2,200,0,0.2);
4854 fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4855 fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4856 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4858 fhAnglePairPrimPi0vsRecoNLocMaxN = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4859 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4860 200,0,0.2,200,0,0.2);
4861 fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4862 fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4863 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4866 fhAnglePairPrimPi0OverM02NLocMax1 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4867 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=1",
4868 nptbins,ptmin,ptmax,200,0,0.2);
4869 fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4870 fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("#it{E} (GeV)");
4871 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4873 fhAnglePairPrimPi0OverM02NLocMax2 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4874 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=2",
4875 nptbins,ptmin,ptmax,200,0,0.2);
4876 fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4877 fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("#it{E} (GeV)");
4878 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4880 fhAnglePairPrimPi0OverM02NLocMaxN = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4881 "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4882 nptbins,ptmin,ptmax,200,0,0.2);
4883 fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4884 fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("#it{E} (GeV)");
4885 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4890 // Same as asymmetry ...
4891 if(fFillThetaStarHisto)
4893 for(Int_t i = 0; i < n; i++)
4895 for(Int_t j = 0; j < nMatched; j++)
4898 fhCosThStarNLocMax1[i][j] = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4899 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4900 nptbins,ptmin,ptmax,200,-1,1);
4901 fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4902 fhCosThStarNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4903 outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4905 fhCosThStarNLocMax2[i][j] = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4906 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4907 nptbins,ptmin,ptmax,200,-1,1);
4908 fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4909 fhCosThStarNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4910 outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4912 fhCosThStarNLocMaxN[i][j] = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4913 Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4914 nptbins,ptmin,ptmax,200,-1,1);
4915 fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4916 fhCosThStarNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4917 outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4921 fhCosThStarAfterCutsNLocMax1[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4922 Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4923 nptbins,ptmin,ptmax,200,-1,1);
4924 fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4925 fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4926 outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4928 fhCosThStarAfterCutsNLocMax2[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4929 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4930 nptbins,ptmin,ptmax,200,-1,1);
4931 fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4932 fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4933 outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4935 fhCosThStarAfterCutsNLocMaxN[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4936 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4937 nptbins,ptmin,ptmax,200,-1,1);
4938 fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4939 fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4940 outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4944 fhCosThStarPi0NLocMax1[i][j] = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4945 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4946 nptbins,ptmin,ptmax,200,-1,1);
4947 fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4948 fhCosThStarPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4949 outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4951 fhCosThStarPi0NLocMax2[i][j] = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4952 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4953 nptbins,ptmin,ptmax,200,-1,1);
4954 fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4955 fhCosThStarPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4956 outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4958 fhCosThStarPi0NLocMaxN[i][j] = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4959 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4960 nptbins,ptmin,ptmax,200,-1,1);
4961 fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4962 fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4963 outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4970 for(Int_t j = 0; j < nMatched; j++)
4972 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4973 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()),
4974 100,-1,1,120,0,1.2);
4975 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4976 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4977 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
4979 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4980 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()),
4981 100,-1,1,120,0,1.2);
4982 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4983 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4984 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
4986 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4987 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()),
4988 100,-1,1,120,0,1.2);
4989 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4990 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4991 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
4995 fhClusterEtaPhiNLocMax1 = new TH2F
4996 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4997 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4998 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
4999 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
5001 fhClusterEtaPhiNLocMax2 = new TH2F
5002 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5003 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5004 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
5005 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
5007 fhClusterEtaPhiNLocMaxN = new TH2F
5008 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5009 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5010 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
5011 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
5013 fhPi0EtaPhiNLocMax1 = new TH2F
5014 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5015 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
5016 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
5017 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
5019 fhPi0EtaPhiNLocMax2 = new TH2F
5020 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5021 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
5022 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
5023 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
5025 fhPi0EtaPhiNLocMaxN = new TH2F
5026 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5027 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5028 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
5029 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
5033 fhEtaEtaPhiNLocMax1 = new TH2F
5034 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5035 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5036 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
5037 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
5039 fhEtaEtaPhiNLocMax2 = new TH2F
5040 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5041 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5042 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
5043 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
5045 fhEtaEtaPhiNLocMaxN = new TH2F
5046 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5047 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5048 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
5049 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
5053 if(fFillSSWeightHisto)
5055 for(Int_t nlm = 0; nlm < 3; nlm++)
5057 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
5058 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
5059 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
5060 fhPi0CellE[nlm]->SetYTitle("#it{E}_{cell}");
5061 fhPi0CellE[nlm]->SetXTitle("#it{E}_{cluster}");
5062 outputContainer->Add(fhPi0CellE[nlm]) ;
5064 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
5065 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
5066 nptbins,ptmin,ptmax, 100,0,1);
5067 fhPi0CellEFrac[nlm]->SetYTitle("#it{E}_{cell} / #it{E}_{cluster}");
5068 fhPi0CellEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5069 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
5071 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
5072 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
5073 nptbins,ptmin,ptmax, 100,-10,0);
5074 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(#it{E}_{cell} / #it{E}_{cluster})");
5075 fhPi0CellLogEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5076 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
5079 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
5080 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
5081 nptbins,ptmin,ptmax, 100,0,1);
5082 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{Loc Max 1}");
5083 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5084 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
5086 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
5087 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
5088 nptbins,ptmin,ptmax, 100,0,1);
5089 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cluster}");
5090 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5091 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
5093 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
5094 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
5095 nptbins,ptmin,ptmax, 100,0,1);
5096 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cluster}");
5097 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5098 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
5100 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
5101 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
5102 nptbins,ptmin,ptmax, 100,0,1);
5103 fhPi0CellEMaxFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cell i}");
5104 fhPi0CellEMaxFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5105 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
5107 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
5108 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
5109 nptbins,ptmin,ptmax, 200,0,2);
5110 fhPi0CellEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cell i}");
5111 fhPi0CellEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5112 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
5115 for(Int_t i = 0; i < fSSWeightN; i++)
5117 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
5118 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
5119 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5120 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
5121 fhM02WeightPi0[nlm][i] ->SetXTitle("#it{E} (GeV)");
5122 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
5125 for(Int_t i = 0; i < fSSECellCutN; i++)
5127 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
5128 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
5129 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5130 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
5131 fhM02ECellCutPi0[nlm][i] ->SetXTitle("#it{E} (GeV)");
5132 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
5138 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
5140 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5141 fhPi0EPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5142 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5143 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
5145 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5146 fhPi0EPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5147 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5148 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
5150 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5151 fhPi0EPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5152 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5153 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
5157 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5158 fhEtaEPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5159 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5160 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
5162 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5163 fhEtaEPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5164 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5165 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
5167 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5168 fhEtaEPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5169 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5170 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
5173 if(fFillNCellHisto && IsDataMC())
5176 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5177 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5178 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5179 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5181 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5182 fhNCellMassELowNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5183 fhNCellMassELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5184 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5186 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5187 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5188 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5189 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5191 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5192 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5193 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5194 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5196 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5197 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5198 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5199 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5201 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5202 fhNCellMassELowNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5203 fhNCellMassELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5204 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5206 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5207 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5208 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5209 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5211 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5212 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5213 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5214 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5216 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5217 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5218 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5219 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5221 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5222 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5223 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5224 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5226 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5227 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5228 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5229 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5231 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5232 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5233 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5234 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5238 if(IsDataMC() && fFillMCOverlapHisto)
5240 for(Int_t i = 1; i < n; i++)
5242 for(Int_t j = 0; j < 3; j++)
5244 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5245 Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5246 nptbins,ptmin,ptmax,10,0,10);
5247 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
5248 fhMCENOverlaps[j][i] ->SetXTitle("#it{E} (GeV)");
5249 outputContainer->Add(fhMCENOverlaps[j][i]) ;
5251 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5252 Form("Overlap 0, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5253 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5254 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
5255 fhMCEM02Overlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5256 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5258 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5259 Form("Overlap 1, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5260 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5261 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
5262 fhMCEM02Overlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5263 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5265 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5266 Form("Overlap N, #lambda_{0}^{2} vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5267 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5268 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
5269 fhMCEM02OverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5270 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5272 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5273 Form("Overlap 0, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5274 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5275 fhMCEMassOverlap0[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5276 fhMCEMassOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5277 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5279 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5280 Form("Overalap 1, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5281 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5282 fhMCEMassOverlap1[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5283 fhMCEMassOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5284 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5286 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5287 Form("Overlap N, Mass vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5288 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5289 fhMCEMassOverlapN[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5290 fhMCEMassOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5291 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5293 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5294 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5295 nptbins,ptmin,ptmax,100,0,1);
5296 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
5297 fhMCEAsymOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5298 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5300 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5301 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5302 nptbins,ptmin,ptmax,100,0,1);
5303 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
5304 fhMCEAsymOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5305 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5307 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5308 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5309 nptbins,ptmin,ptmax,100,0,1);
5310 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
5311 fhMCEAsymOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5312 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5317 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5318 Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5319 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5320 fhMCENCellOverlap0[j][i] ->SetYTitle("#it{N} cells");
5321 fhMCENCellOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5322 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5324 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5325 Form("Overalap 1, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5326 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5327 fhMCENCellOverlap1[j][i] ->SetYTitle("#it{N} cells");
5328 fhMCENCellOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5329 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5331 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5332 Form("Overlap N, n cells vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5333 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5334 fhMCENCellOverlapN[j][i] ->SetYTitle("#it{N} cells");
5335 fhMCENCellOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5336 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5339 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5340 Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5341 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5342 fhMCEEpriOverlap0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5343 fhMCEEpriOverlap0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5344 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5346 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5347 Form("Overalap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5348 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5349 fhMCEEpriOverlap1[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5350 fhMCEEpriOverlap1[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5351 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5353 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5354 Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5355 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5356 fhMCEEpriOverlapN[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5357 fhMCEEpriOverlapN[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5358 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5361 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5362 Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5363 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5364 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5365 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5366 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5368 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5369 Form("Overlap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5370 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5371 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5372 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5373 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5375 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5376 Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5377 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5378 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5379 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5380 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5383 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5384 Form("Overlap 0, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5385 nptbins,ptmin,ptmax,120,0,1.2);
5386 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5387 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("#it{E} (GeV)");
5388 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5390 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5391 Form("Overalap 1, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5392 nptbins,ptmin,ptmax,120,0,1.2);
5393 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5394 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("#it{E} (GeV)");
5395 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5397 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5398 Form("Overlap N, SplitEFrac vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5399 nptbins,ptmin,ptmax,120,0,1.2);
5400 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5401 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("#it{E} (GeV)");
5402 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5406 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5407 Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5408 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5409 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5410 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5411 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5413 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5414 Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5415 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5416 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5417 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5418 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5420 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5421 Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5422 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5423 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5424 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5425 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5430 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5431 Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5432 nptbins,ptmin,ptmax,10,0,10);
5433 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
5434 fhMCENOverlapsMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5435 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5437 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5438 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5439 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5440 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5441 fhMCEM02Overlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5442 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5444 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5445 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5446 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5447 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5448 fhMCEM02Overlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5449 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5451 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5452 Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5453 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5454 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
5455 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5456 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5458 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5459 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5460 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5461 fhMCEMassOverlap0Match[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5462 fhMCEMassOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5463 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5465 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5466 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5467 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5468 fhMCEMassOverlap1Match[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5469 fhMCEMassOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5470 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5472 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5473 Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5474 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5475 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5476 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5477 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5480 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5481 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5482 nptbins,ptmin,ptmax,100,0,1);
5483 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|#it{A}|");
5484 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5485 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5487 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5488 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5489 nptbins,ptmin,ptmax,100,0,1);
5490 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|#it{A}|");
5491 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5492 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5494 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5495 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5496 nptbins,ptmin,ptmax,100,0,1);
5497 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|#it{A}|");
5498 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5499 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5502 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5503 Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5504 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5505 fhMCENCellOverlap0Match[j][i] ->SetYTitle("#it{N} cells");
5506 fhMCENCellOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5507 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5509 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5510 Form("Overalap 1, n cell vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5511 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5512 fhMCENCellOverlap1Match[j][i] ->SetYTitle("#it{N} cells");
5513 fhMCENCellOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5514 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5516 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5517 Form("Overlap N, n cell vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5518 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5519 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("#it{N} cells");
5520 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5521 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5523 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5524 Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5525 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5526 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5527 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5528 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5530 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5531 Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5532 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5533 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5534 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5535 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5537 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5538 Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5539 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5540 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("#it{E}_{gen} (GeV)");
5541 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("#it{E}_{reco} (GeV)");
5542 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5545 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5546 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5547 nptbins,ptmin,ptmax,120,0,1.2);
5548 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5549 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("#it{E} (GeV)");
5550 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5552 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5553 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5554 nptbins,ptmin,ptmax,120,0,1.2);
5555 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5556 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("#it{E} (GeV)");
5557 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5559 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5560 Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5561 nptbins,ptmin,ptmax,120,0,1.2);
5562 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5563 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("#it{E} (GeV)");
5564 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5569 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5570 Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5571 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5572 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5573 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5574 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5576 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5577 Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5578 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5579 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5580 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5581 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5583 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5584 Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5585 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5586 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5587 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5588 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5596 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5597 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5598 fhMCPi0HighNLMPair ->SetYTitle("#it{N} maxima");
5599 fhMCPi0HighNLMPair ->SetXTitle("#it{E} (GeV)");
5600 outputContainer->Add(fhMCPi0HighNLMPair) ;
5602 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5603 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5604 fhMCPi0LowNLMPair ->SetYTitle("#it{N} maxima");
5605 fhMCPi0LowNLMPair ->SetXTitle("#it{E} (GeV)");
5606 outputContainer->Add(fhMCPi0LowNLMPair) ;
5608 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5609 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5610 fhMCPi0AnyNLMPair ->SetYTitle("#it{N} maxima");
5611 fhMCPi0AnyNLMPair ->SetXTitle("#it{E} (GeV)");
5612 outputContainer->Add(fhMCPi0AnyNLMPair) ;
5614 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5615 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5616 fhMCPi0NoneNLMPair ->SetYTitle("#it{N} maxima");
5617 fhMCPi0NoneNLMPair ->SetXTitle("#it{E} (GeV)");
5618 outputContainer->Add(fhMCPi0NoneNLMPair) ;
5621 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5622 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5623 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5624 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5625 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5627 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5628 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5629 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5630 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5631 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5633 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5634 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5635 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5636 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5637 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5639 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5640 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5641 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("#it{N} maxima");
5642 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("#it{E} (GeV)");
5643 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5646 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5647 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5648 fhMCPi0HighNLMPairOverlap ->SetYTitle("#it{N} maxima");
5649 fhMCPi0HighNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5650 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5652 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5653 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5654 fhMCPi0LowNLMPairOverlap ->SetYTitle("#it{N} maxima");
5655 fhMCPi0LowNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5656 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5658 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5659 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5660 fhMCPi0AnyNLMPairOverlap ->SetYTitle("#it{N} maxima");
5661 fhMCPi0AnyNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5662 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5664 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5665 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5666 fhMCPi0NoneNLMPairOverlap ->SetYTitle("#it{N} maxima");
5667 fhMCPi0NoneNLMPairOverlap ->SetXTitle("#it{E} (GeV)");
5668 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5670 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5671 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5672 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5673 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5674 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5676 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5677 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5678 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5679 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5680 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5682 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5683 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5684 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5685 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5686 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5688 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5689 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5690 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("#it{N} maxima");
5691 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("#it{E} (GeV)");
5692 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5695 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5696 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5697 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("#it{N} maxima");
5698 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("#it{E} (GeV)");
5699 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5701 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5702 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5703 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("#it{N} maxima");
5704 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("#it{E} (GeV)");
5705 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5707 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5708 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5709 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("#it{N} maxima");
5710 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("#it{E} (GeV)");
5711 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5713 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5714 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5715 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("#it{N} maxima");
5716 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("#it{E} (GeV)");
5717 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5719 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5720 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5721 fhMCPi0DecayPhotonAdjacent ->SetYTitle("#it{N} maxima");
5722 fhMCPi0DecayPhotonAdjacent ->SetXTitle("#it{E} (GeV)");
5723 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5725 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5726 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5727 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("#it{N} maxima");
5728 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("#it{E} (GeV)");
5729 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5732 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5733 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5734 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("#it{N} maxima");
5735 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("#it{E} (GeV)");
5736 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5738 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5739 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5740 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("#it{N} maxima");
5741 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("#it{E} (GeV)");
5742 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5744 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5745 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5746 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("#it{N} maxima");
5747 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("#it{E} (GeV)");
5748 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5750 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5751 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5752 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("#it{N} maxima");
5753 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("#it{E} (GeV)");
5754 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5756 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5757 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5758 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("#it{N} maxima");
5759 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("#it{E} (GeV)");
5760 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5762 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5763 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5764 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("#it{N} maxima");
5765 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("#it{E} (GeV)");
5766 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5769 for(Int_t nlm = 0; nlm < 3; nlm++)
5771 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5772 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5773 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5774 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5775 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5776 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5778 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5779 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5780 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5781 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5782 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5783 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5785 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5786 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5787 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5788 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5789 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5790 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5792 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5793 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5794 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5795 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5796 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5797 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5799 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5800 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5801 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5802 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5803 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("#it{E} (GeV)");
5804 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5806 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5807 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5808 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5809 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5810 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("#it{E} (GeV)");
5811 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5814 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5815 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5816 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5817 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5818 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5819 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5821 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5822 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()),
5823 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5824 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5825 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5826 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5828 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5829 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5830 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5831 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5832 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5833 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5835 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5836 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()),
5837 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5838 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5839 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5840 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5842 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5843 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5844 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5845 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5846 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5847 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5849 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5850 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()),
5851 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5852 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5853 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("#it{E} (GeV)");
5854 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5856 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5857 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()),
5858 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5859 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5860 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5861 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5863 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5864 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()),
5865 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5866 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5867 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E pi0 (GeV)");
5868 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5870 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5871 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()),
5872 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5873 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5874 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5875 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5877 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5878 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()),
5879 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5880 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5881 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5882 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5884 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5885 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()),
5886 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5887 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5888 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5889 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5891 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5892 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()),
5893 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5894 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5895 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5896 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5898 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5899 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()),
5900 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5901 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5902 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5903 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5905 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5906 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()),
5907 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5908 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5909 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5910 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5912 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5913 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()),
5914 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5915 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5916 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5917 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5919 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5920 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()),
5921 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5922 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5923 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5924 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5926 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5927 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()),
5928 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5929 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5930 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5931 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5933 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5934 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()),
5935 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5936 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5937 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5938 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5940 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5941 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()),
5942 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5943 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5944 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5945 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5947 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5948 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()),
5949 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5950 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5951 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5952 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5954 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5955 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()),
5956 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5957 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5958 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5959 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5961 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5962 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()),
5963 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5964 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5965 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5966 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5969 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5970 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()),
5971 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5972 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5973 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5974 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5976 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5977 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()),
5978 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5979 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5980 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E} (GeV)");
5981 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5983 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5984 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()),
5985 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5986 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5987 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5988 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5990 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5991 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()),
5992 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5993 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5994 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
5995 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5997 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5998 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()),
5999 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6000 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6001 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6002 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
6004 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6005 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()),
6006 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6007 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6008 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6009 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
6011 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6012 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()),
6013 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6014 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6015 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6016 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6018 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6019 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()),
6020 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6021 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6022 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6023 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6025 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6026 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()),
6027 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6028 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6029 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6030 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
6032 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6033 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()),
6034 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6035 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6036 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6037 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
6039 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6040 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()),
6041 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6042 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6043 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6044 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
6046 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6047 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()),
6048 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6049 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6050 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6051 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
6053 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6054 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()),
6055 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6056 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6057 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6058 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
6060 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6061 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()),
6062 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6063 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6064 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6065 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
6067 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6068 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()),
6069 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6070 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6071 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6072 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6074 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6075 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()),
6076 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6077 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6078 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("#it{E}_{reco} (GeV)");
6079 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6083 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
6084 nptbins,ptmin,ptmax,5,0,5);
6085 //fhMCEOverlapType ->SetYTitle("Overlap Type");
6086 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
6087 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6088 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6089 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6090 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
6091 fhMCEOverlapType->SetXTitle("Cluster #it{E} (GeV)");
6092 outputContainer->Add(fhMCEOverlapType) ;
6094 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
6095 nptbins,ptmin,ptmax,5,0,5);
6096 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
6097 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
6098 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6099 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6100 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6101 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
6102 fhMCEOverlapTypeMatch->SetXTitle("Cluster #it{E} (GeV)");
6103 outputContainer->Add(fhMCEOverlapTypeMatch) ;
6105 }// MC analysis, check overlaps
6110 for(Int_t inlm = 0; inlm < 3; inlm++)
6112 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
6113 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0",inlm),
6114 nptbins,ptmin,ptmax,200,-1,1);
6115 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6116 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("#it{E} (GeV)");
6117 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
6119 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
6120 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0Conv",inlm),
6121 nptbins,ptmin,ptmax,200,-1,1);
6122 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6123 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("#it{E} (GeV)");
6124 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
6128 if(fFillArmenterosHisto)
6130 Int_t narmbins = 400;
6132 Float_t armmax = 0.4;
6134 for(Int_t i = 0; i < 7; i++) // MC bin
6136 for(Int_t j = 0; j < 4; j++) // E bin
6138 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
6139 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6140 200, -1, 1, narmbins,armmin,armmax);
6141 fhArmNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6142 fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6143 outputContainer->Add(fhArmNLocMax1[i][j]) ;
6145 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
6146 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6147 200, -1, 1, narmbins,armmin,armmax);
6148 fhArmNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6149 fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6150 outputContainer->Add(fhArmNLocMax2[i][j]) ;
6152 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
6153 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6154 200, -1, 1, narmbins,armmin,armmax);
6155 fhArmNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6156 fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6157 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
6161 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
6162 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6163 200, -1, 1, narmbins,armmin,armmax);
6164 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6165 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6166 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
6168 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
6169 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6170 200, -1, 1, narmbins,armmin,armmax);
6171 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6172 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6173 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6175 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6176 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6177 200, -1, 1, narmbins,armmin,armmax);
6178 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6179 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6180 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6183 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6184 Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6185 200, -1, 1, narmbins,armmin,armmax);
6186 fhArmPi0NLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6187 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6188 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6190 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6191 Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6192 200, -1, 1, narmbins,armmin,armmax);
6193 fhArmPi0NLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6194 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6195 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6197 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6198 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6199 200, -1, 1, narmbins,armmin,armmax);
6200 fhArmPi0NLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6201 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6202 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6208 return outputContainer ;
6212 //_____________________________________________________________________________
6213 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6214 Int_t & mcindex, Int_t & tag)
6217 // Assign mc index depending on MC bit set, to be used in histograms arrays
6219 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(),GetCalorimeter());
6221 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6222 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6223 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
6224 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
6225 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6226 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6227 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6228 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6229 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
6231 //printf("MC index %d\n",mcindex);
6235 //____________________________________________________________________________________________
6236 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6237 Int_t mctag, Bool_t matched,
6238 Float_t & eprim, Float_t & asymGen,
6239 Float_t & angleGen, Int_t & noverlaps )
6241 // Check origin of the candidates, get primary kinematics if overlapped meson decay
6244 Int_t mcLabel = cluster->GetLabel();
6246 fPrimaryMom = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6247 eprim = fPrimaryMom.E();
6249 Int_t mesonLabel = -1;
6251 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6253 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6255 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6256 asymGen = TMath::Abs(asymGen);
6257 fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6258 if(fGrandMotherMom.E() > 0 && ok) eprim = fGrandMotherMom.E();
6262 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6263 asymGen = TMath::Abs(asymGen);
6264 fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6265 if(fGrandMotherMom.E() > 0 && ok) eprim = fGrandMotherMom.E();
6269 if(!fFillMCOverlapHisto) return;
6271 const UInt_t nlabels = cluster->GetNLabels();
6272 Int_t overpdg[nlabels];
6273 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6275 for(Int_t iover = 0; iover < noverlaps; iover++)
6277 Float_t histobin = -1;
6278 Int_t mpdg = overpdg[iover];
6280 if (mpdg==22) histobin = 0.5;
6281 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6282 else if(mpdg==-999999) histobin = 4.5;
6285 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6286 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6287 else histobin = 3.5;
6288 //printf("charge %f\n",charge);
6291 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6294 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
6295 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6300 //___________________________________________
6301 void AliAnaInsideClusterInvariantMass::Init()
6306 if(GetCalorimeter() == kPHOS && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6307 AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
6308 else if(GetCalorimeter() == kEMCAL && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6309 AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
6311 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6312 AliFatal("!!STOP: You want to use pure MC data!!");
6316 //_____________________________________________________
6317 void AliAnaInsideClusterInvariantMass::InitParameters()
6319 //Initialize the parameters of the analysis.
6320 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6328 fSSWeight [0] = 4.00; fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6329 fSSWeight [5] = 4.40; fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6330 fSSWeight[10] = 4.70; fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6331 fSSWeight[15] = 5.20; fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6334 fSSECellCut [0] = 0.05; fSSECellCut [1] = 0.06; fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6335 fSSECellCut [5] = 0.10; fSSECellCut [6] = 0.11; fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6336 fSSECellCut[10] = 0.15; fSSECellCut[11] = 0.16; fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6337 fSSECellCut[15] = 0.20; fSSECellCut[16] = 0.21; fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6340 fNLMMinE [0] = 0.10; fNLMMinE [1] = 0.20; fNLMMinE [2] = 0.35; fNLMMinE [3] = 0.50; fNLMMinE [4] = 1.00;
6341 fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6343 fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6344 fWSimu[1] = 0; // Default, do not correct, change to 0.07
6349 //__________________________________________________________________
6350 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
6352 //Search for pi0 in GetCalorimeter() with shower shape analysis
6354 TObjArray * pl = 0x0;
6355 AliVCaloCells* cells = 0x0;
6357 //Select the Calorimeter of the photon
6358 if(GetCalorimeter() == kPHOS)
6360 pl = GetPHOSClusters();
6361 cells = GetPHOSCells();
6363 else if (GetCalorimeter() == kEMCAL)
6365 pl = GetEMCALClusters();
6366 cells = GetEMCALCells();
6371 AliWarning(Form("TObjArray with %s clusters is NULL!",GetCalorimeterString().Data()));
6375 if(GetCalorimeter() == kPHOS) return; // Not implemented for PHOS yet
6377 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6379 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
6381 //-------------------------------------------
6382 // Get cluster parameters, do some rejection
6383 //-------------------------------------------
6385 Float_t en = cluster->E();
6386 Float_t l0 = cluster->GetM02();
6387 Int_t nc = cluster->GetNCells();
6388 Float_t bd = cluster->GetDistanceToBadChannel() ;
6390 //If too small or big E or low number of cells, or close to a bad channel skip it
6392 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6394 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6396 // Track-cluster matching
6398 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6399 if(!fFillTMHisto && matched) continue ;
6401 // Get cluster angles
6403 cluster->GetMomentum(fClusterMomentum, GetVertex(0));
6404 Float_t eta = fClusterMomentum.Eta();
6405 Float_t phi = fClusterMomentum.Phi();
6406 if(phi<0) phi=+TMath::TwoPi();
6408 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
6409 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6411 if(fFillNLMDiffCutHisto)
6413 FillNLMDiffCutHistograms(cluster,cells,matched);
6417 // Get PID, N local maximum, *** split cluster ***
6420 Double_t mass = 0., angle = 0.;
6421 Int_t absId1 =-1; Int_t absId2 =-1;
6422 Float_t distbad1 =-1; Float_t distbad2 =-1;
6423 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
6425 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6426 GetVertex(0), nMax, mass, angle,
6427 fSubClusterMom1,fSubClusterMom2,
6433 AliWarning("No local maximum found! It did not pass CaloPID selection criteria");
6437 // Set some index for array histograms
6440 if (nMax == 1) inlm = 0;
6441 else if(nMax == 2) inlm = 1;
6442 else if(nMax > 2) inlm = 2;
6443 else AliDebug(2,Form("Wrong N local maximum -> %d, n cells in cluster %d",nMax,nc));
6445 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6446 if( (fCheckSplitDistToBad) &&
6447 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6449 AliDebug(1,Form("Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d",
6450 distbad1,distbad2, fidcut1,fidcut2));
6452 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6454 fhMassBadDistClose[inlm]->Fill(en,mass);
6455 fhM02BadDistClose [inlm]->Fill(en,l0 );
6458 if(!fidcut1 || !fidcut2)
6460 fhMassOnBorder[inlm]->Fill(en,mass);
6461 fhM02OnBorder [inlm]->Fill(en,l0 );
6467 // Get sub-cluster parameters
6469 Float_t e1 = fSubClusterMom1.Energy();
6470 Float_t e2 = fSubClusterMom2.Energy();
6472 Double_t tof1 = cells->GetCellTime(absId1);
6473 GetCaloUtils()->RecalibrateCellTime(tof1, GetCalorimeter(), absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6476 Double_t tof2 = cells->GetCellTime(absId2);
6477 GetCaloUtils()->RecalibrateCellTime(tof2, GetCalorimeter(), absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6480 Double_t t12diff = tof1-tof2;
6482 Float_t splitFrac = (e1+e2)/en;
6485 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6490 if(en > 8 && en <= 12) ebin = 0;
6491 if(en > 12 && en <= 16) ebin = 1;
6492 if(en > 16 && en <= 20) ebin = 2;
6493 if(en > 20) ebin = 3;
6495 // MC data histograms and some related calculations
6496 // mc tag, n overlaps, asym of generated mesons
6501 Float_t asymGen = -2;
6502 Float_t angleGen = 2000;
6503 Int_t noverlaps = 0;
6509 GetMCIndex(cluster,mcindex,mctag);
6511 // MC primary kine, generation fractions
6513 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6515 // For cluster with MC pi0 and more than 1 maxima
6521 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6526 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6530 if(fFillSSExtraHisto)
6531 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
6535 if(!matched && ebin >= 0 && fFillEbinHisto)
6536 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6541 FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6543 if(fFillArmenterosHisto && ebin >= 0)
6544 FillArmenterosHistograms(nMax, ebin, mcindex, en, l0, pidTag);
6546 if(fFillThetaStarHisto)
6547 FillThetaStarHistograms(nMax,matched,mcindex, en, l0, pidTag);
6550 //---------------------------------------------------------------------
6551 // From here start applying some cuts
6552 //---------------------------------------------------------------------
6554 // If set, check just on MC clusters when SS cut is applied
6555 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6557 // For cluster with MC pi0 and more than 1 maxima
6559 if(fFillMCOverlapHisto)
6560 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6566 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6567 nMax,matched,splitFrac, asym, eprim,asymGen);
6571 if(fFillMCOverlapHisto)
6572 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6576 // Fill few histograms, some still without cuts
6577 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6579 if(pidTag==AliCaloPID::kPi0)
6581 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6583 if(fFillSSWeightHisto && !matched)
6584 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6586 if(fFillTMHisto && fFillTMResidualHisto)
6587 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6589 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6591 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6592 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6593 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6596 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6598 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6600 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6602 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6611 //______________________________________________________________________
6612 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6614 //Print some relevant parameters set for the analysis
6618 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6619 AliAnaCaloTrackCorrBaseClass::Print("");
6620 printf("Calorimeter = %s\n", GetCalorimeterString().Data()) ;
6621 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6622 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
6623 printf("Min. N Cells =%d \n", fMinNCells) ;
6624 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6625 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6630 //___________________________________________________________________________________________________________________
6631 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6632 AliVCaloCells* cells,
6633 AliVCluster * cluster,
6634 Float_t & l0, Float_t & l1,
6635 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6636 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6639 // Calculates new center of gravity in the local EMCAL-module coordinates
6640 // and tranfers into global ALICE coordinates
6641 // Calculates Dispersion and main axis
6645 AliWarning("Cluster pointer null!");
6649 Double_t eCell = 0.;
6650 Float_t fraction = 1.;
6651 Float_t recalFactor = 1.;
6659 Double_t etai = -1.;
6660 Double_t phii = -1.;
6665 Double_t etaMean = 0.;
6666 Double_t phiMean = 0.;
6668 Bool_t shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6670 Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6672 Float_t simuTotWeight = 0;
6673 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6675 simuTotWeight = GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6676 simuTotWeight/= energy;
6679 //Loop on cells, get weighted parameters
6680 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6682 //Get from the absid the supermodule, tower and eta/phi numbers
6683 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6684 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6686 //Get the cell energy, if recalibration is on, apply factors
6687 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6688 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6690 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6692 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6695 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6697 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6698 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6699 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6701 if(energy > 0 && eCell > eCellMin)
6703 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6704 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6706 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6708 //correct weight, ONLY in simulation
6709 w *= (fWSimu[0] - fWSimu[1] * w );
6711 etai=(Double_t)ieta;
6712 phii=(Double_t)iphi;
6719 sEta += w * etai * etai ;
6720 etaMean += w * etai ;
6721 sPhi += w * phii * phii ;
6722 phiMean += w * phii ;
6723 sEtaPhi += w * etai * phii ;
6726 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f", eCell, energy));
6730 //Normalize to the weight
6737 AliError(Form("Wrong weight %f", wtot));
6739 //Calculate dispersion
6740 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6742 //Get from the absid the supermodule, tower and eta/phi numbers
6743 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6744 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6746 //Get the cell energy, if recalibration is on, apply factors
6747 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6748 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6749 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6751 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6754 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6756 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6757 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6758 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6760 if(energy > 0 && eCell > eCellMin)
6762 if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6763 eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6765 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6767 //correct weight, ONLY in simulation
6768 w *= (fWSimu[0] - fWSimu[1] * w );
6770 etai=(Double_t)ieta;
6771 phii=(Double_t)iphi;
6774 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6775 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6776 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6779 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f", eCell, energy));
6782 //Normalize to the weigth and set shower shape parameters
6783 if (wtot > 0 && nstat > 1)
6792 sEta -= etaMean * etaMean ;
6793 sPhi -= phiMean * phiMean ;
6794 sEtaPhi -= etaMean * phiMean ;
6796 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6797 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6803 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6804 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;