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