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), fFillEbinHisto(0),
60 fFillMCOverlapHisto(0), fFillNCellHisto(0), fFillIdConvHisto(0),
61 fFillIdEtaHisto(0), fFillHighMultHisto(0),
62 fFillArmenterosHisto(0), fFillThetaStarHisto(0),
63 fSSWeightN(0), fSSECellCutN(0), fWSimu(0),
64 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
65 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
66 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
67 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
68 fhMassEnCutNLocMax1(0), fhMassEnCutNLocMax2(0), fhMassEnCutNLocMaxN(0),
69 fhM02EnCutNLocMax1(0), fhM02EnCutNLocMax2(0), fhM02EnCutNLocMaxN(0),
70 fhAsymEnCutNLocMax1(0), fhAsymEnCutNLocMax2(0), fhAsymEnCutNLocMaxN(0),
71 fhSplitEFracEnCutNLocMax1(0), fhSplitEFracEnCutNLocMax2(0), fhSplitEFracEnCutNLocMaxN(0),
72 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
73 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
74 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
75 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
76 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
77 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
78 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
79 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
80 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
81 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
82 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
83 fhAnglePairPrimPi0OverM02NLocMax1(0), fhAnglePairPrimPi0OverM02NLocMax2(0), fhAnglePairPrimPi0OverM02NLocMaxN(0),
84 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
85 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
86 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
87 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
88 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
89 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
90 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
91 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
92 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
93 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
94 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
95 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
96 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
97 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
98 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
99 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
100 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
101 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
102 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
103 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
104 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
105 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
106 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
107 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
108 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
109 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
113 // Init array of histograms
114 for(Int_t i = 0; i < 7; i++)
116 for(Int_t j = 0; j < 2; j++)
118 fhMassNLocMax1[i][j] = 0;
119 fhMassNLocMax2[i][j] = 0;
120 fhMassNLocMaxN[i][j] = 0;
121 fhMassSplitENLocMax1[i][j] = 0;
122 fhMassSplitENLocMax2[i][j] = 0;
123 fhMassSplitENLocMaxN[i][j] = 0;
125 fhNLocMaxM02Cut[i][j] = 0;
126 fhSplitClusterENLocMax [i][j] = 0;
127 fhSplitClusterEPi0NLocMax[i][j] = 0;
128 fhM02NLocMax1[i][j] = 0;
129 fhM02NLocMax2[i][j] = 0;
130 fhM02NLocMaxN[i][j] = 0;
131 fhNCellNLocMax1[i][j] = 0;
132 fhNCellNLocMax2[i][j] = 0;
133 fhNCellNLocMaxN[i][j] = 0;
134 fhM02Pi0NLocMax1[i][j] = 0;
135 fhM02EtaNLocMax1[i][j] = 0;
136 fhM02ConNLocMax1[i][j] = 0;
137 fhM02Pi0NLocMax2[i][j] = 0;
138 fhM02EtaNLocMax2[i][j] = 0;
139 fhM02ConNLocMax2[i][j] = 0;
140 fhM02Pi0NLocMaxN[i][j] = 0;
141 fhM02EtaNLocMaxN[i][j] = 0;
142 fhM02ConNLocMaxN[i][j] = 0;
144 fhMassPi0NLocMax1[i][j] = 0;
145 fhMassEtaNLocMax1[i][j] = 0;
146 fhMassConNLocMax1[i][j] = 0;
147 fhMassPi0NLocMax2[i][j] = 0;
148 fhMassEtaNLocMax2[i][j] = 0;
149 fhMassConNLocMax2[i][j] = 0;
150 fhMassPi0NLocMaxN[i][j] = 0;
151 fhMassEtaNLocMaxN[i][j] = 0;
152 fhMassConNLocMaxN[i][j] = 0;
154 fhNCellPi0NLocMax1[i][j] = 0;
155 fhNCellEtaNLocMax1[i][j] = 0;
156 fhNCellPi0NLocMax2[i][j] = 0;
157 fhNCellEtaNLocMax2[i][j] = 0;
158 fhNCellPi0NLocMaxN[i][j] = 0;
159 fhNCellEtaNLocMaxN[i][j] = 0;
161 fhAsyPi0NLocMax1[i][j] = 0;
162 fhAsyEtaNLocMax1[i][j] = 0;
163 fhAsyConNLocMax1[i][j] = 0;
164 fhAsyPi0NLocMax2[i][j] = 0;
165 fhAsyEtaNLocMax2[i][j] = 0;
166 fhAsyConNLocMax2[i][j] = 0;
167 fhAsyPi0NLocMaxN[i][j] = 0;
168 fhAsyEtaNLocMaxN[i][j] = 0;
169 fhAsyConNLocMaxN[i][j] = 0;
171 fhMassM02NLocMax1[i][j]= 0;
172 fhMassM02NLocMax2[i][j]= 0;
173 fhMassM02NLocMaxN[i][j]= 0;
175 fhMassSplitEPi0NLocMax1[i][j] = 0;
176 fhMassSplitEPi0NLocMax2[i][j] = 0;
177 fhMassSplitEPi0NLocMaxN[i][j] = 0;
179 fhMassSplitEAfterCutsNLocMax1[i][j] = 0;
180 fhMassSplitEAfterCutsNLocMax2[i][j] = 0;
181 fhMassSplitEAfterCutsNLocMaxN[i][j] = 0;
184 fhMassDispEtaNLocMax1[i][j]= 0;
185 fhMassDispEtaNLocMax2[i][j]= 0;
186 fhMassDispEtaNLocMaxN[i][j]= 0;
187 fhMassDispPhiNLocMax1[i][j]= 0;
188 fhMassDispPhiNLocMax2[i][j]= 0;
189 fhMassDispPhiNLocMaxN[i][j]= 0;
190 fhMassDispAsyNLocMax1[i][j]= 0;
191 fhMassDispAsyNLocMax2[i][j]= 0;
192 fhMassDispAsyNLocMaxN[i][j]= 0;
194 fhSplitEFractionNLocMax1[i][j]=0;
195 fhSplitEFractionNLocMax2[i][j]=0;
196 fhSplitEFractionNLocMaxN[i][j]=0;
198 fhAnglePairNLocMax1 [i][j] = 0;
199 fhAnglePairNLocMax2 [i][j] = 0;
200 fhAnglePairNLocMaxN [i][j] = 0;
202 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
203 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
204 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
206 fhAnglePairPi0NLocMax1 [i][j] = 0;
207 fhAnglePairPi0NLocMax2 [i][j] = 0;
208 fhAnglePairPi0NLocMaxN [i][j] = 0;
210 fhAnglePairMassNLocMax1 [i][j] = 0;
211 fhAnglePairMassNLocMax2 [i][j] = 0;
212 fhAnglePairMassNLocMaxN [i][j] = 0;
214 fhAnglePairM02NLocMax1 [i][j] = 0;
215 fhAnglePairM02NLocMax2 [i][j] = 0;
216 fhAnglePairM02NLocMaxN [i][j] = 0;
218 fhAnglePairOverM02NLocMax1 [i][j] = 0;
219 fhAnglePairOverM02NLocMax2 [i][j] = 0;
220 fhAnglePairOverM02NLocMaxN [i][j] = 0;
222 fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
223 fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
224 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
226 fhCosThStarNLocMax1 [i][j] = 0;
227 fhCosThStarNLocMax2 [i][j] = 0;
228 fhCosThStarNLocMaxN [i][j] = 0;
230 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
231 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
232 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
234 fhCosThStarPi0NLocMax1 [i][j] = 0;
235 fhCosThStarPi0NLocMax2 [i][j] = 0;
236 fhCosThStarPi0NLocMaxN [i][j] = 0;
238 fhMCGenFracNLocMax1[i][j]= 0;
239 fhMCGenFracNLocMax2[i][j]= 0;
240 fhMCGenFracNLocMaxN[i][j]= 0;
242 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
243 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
244 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
246 fhMCGenSplitEFracNLocMax1[i][j]= 0;
247 fhMCGenSplitEFracNLocMax2[i][j]= 0;
248 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
250 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
251 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
252 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
254 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
255 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
256 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
258 fhMCGenEvsSplitENLocMax1[i][j]= 0;
259 fhMCGenEvsSplitENLocMax2[i][j]= 0;
260 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
262 fhAsymNLocMax1 [i][j] = 0;
263 fhAsymNLocMax2 [i][j] = 0;
264 fhAsymNLocMaxN [i][j] = 0;
266 fhMassAfterCutsNLocMax1[i][j] = 0;
267 fhMassAfterCutsNLocMax2[i][j] = 0;
268 fhMassAfterCutsNLocMaxN[i][j] = 0;
271 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
272 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
273 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
276 for(Int_t jj = 0; jj < 4; jj++)
278 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
279 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
280 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
282 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
283 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
284 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
286 fhMCGenFracNLocMaxEbin[i][jj] = 0;
287 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
289 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
290 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
291 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
294 fhTrackMatchedDEtaNLocMax1[i] = 0;
295 fhTrackMatchedDPhiNLocMax1[i] = 0;
296 fhTrackMatchedDEtaNLocMax2[i] = 0;
297 fhTrackMatchedDPhiNLocMax2[i] = 0;
298 fhTrackMatchedDEtaNLocMaxN[i] = 0;
299 fhTrackMatchedDPhiNLocMaxN[i] = 0;
301 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
302 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
303 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
304 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
305 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
306 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
308 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
309 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
310 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
311 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
312 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
313 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
315 for(Int_t nlm = 0; nlm < 3; nlm++)
317 fhMCEM02Overlap0 [nlm][i] = 0;
318 fhMCEM02Overlap1 [nlm][i] = 0;
319 fhMCEM02OverlapN [nlm][i] = 0;
320 fhMCEM02Overlap0Match[nlm][i] = 0;
321 fhMCEM02Overlap1Match[nlm][i] = 0;
322 fhMCEM02OverlapNMatch[nlm][i] = 0;
324 fhMCEMassOverlap0 [nlm][i] = 0;
325 fhMCEMassOverlap1 [nlm][i] = 0;
326 fhMCEMassOverlapN [nlm][i] = 0;
327 fhMCEMassOverlap0Match[nlm][i] = 0;
328 fhMCEMassOverlap1Match[nlm][i] = 0;
329 fhMCEMassOverlapNMatch[nlm][i] = 0;
331 fhMCEAsymOverlap0 [nlm][i] = 0;
332 fhMCEAsymOverlap1 [nlm][i] = 0;
333 fhMCEAsymOverlapN [nlm][i] = 0;
334 fhMCEAsymOverlap0Match[nlm][i] = 0;
335 fhMCEAsymOverlap1Match[nlm][i] = 0;
336 fhMCEAsymOverlapNMatch[nlm][i] = 0;
338 fhMCENCellOverlap0 [nlm][i] = 0;
339 fhMCENCellOverlap1 [nlm][i] = 0;
340 fhMCENCellOverlapN [nlm][i] = 0;
341 fhMCENCellOverlap0Match[nlm][i] = 0;
342 fhMCENCellOverlap1Match[nlm][i] = 0;
343 fhMCENCellOverlapNMatch[nlm][i] = 0;
345 fhMCEEpriOverlap0 [nlm][i] = 0;
346 fhMCEEpriOverlap1 [nlm][i] = 0;
347 fhMCEEpriOverlapN [nlm][i] = 0;
348 fhMCEEpriOverlap0Match[nlm][i] = 0;
349 fhMCEEpriOverlap1Match[nlm][i] = 0;
350 fhMCEEpriOverlapNMatch[nlm][i] = 0;
352 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
353 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
354 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
356 fhMCESplitEFracOverlap0 [nlm][i] = 0;
357 fhMCESplitEFracOverlap1 [nlm][i] = 0;
358 fhMCESplitEFracOverlapN [nlm][i] = 0;
359 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
360 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
361 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
363 fhMCENOverlaps [nlm][i] = 0;
364 fhMCENOverlapsMatch [nlm][i] = 0;
368 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
369 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
370 fhMCPi0MassM02OverlapN [nlm][i] = 0;
371 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
372 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
373 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
377 for(Int_t i = 0; i < 2; i++)
379 fhSplitEFractionvsAsyNLocMax1[i] = 0;
380 fhSplitEFractionvsAsyNLocMax2[i] = 0;
381 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
384 for(Int_t i = 0; i < 4; i++)
386 fhMassM02NLocMax1Ebin[i] = 0 ;
387 fhMassM02NLocMax2Ebin[i] = 0 ;
388 fhMassM02NLocMaxNEbin[i] = 0 ;
390 fhMassAsyNLocMax1Ebin[i] = 0 ;
391 fhMassAsyNLocMax2Ebin[i] = 0 ;
392 fhMassAsyNLocMaxNEbin[i] = 0 ;
394 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
395 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
396 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
398 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
399 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
400 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
402 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
403 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
404 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
406 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
407 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
408 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
410 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
411 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
412 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
415 for(Int_t nlm = 0; nlm < 3; nlm++)
418 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
419 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
420 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
421 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
423 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
424 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
425 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
426 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
428 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
429 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
430 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
431 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
433 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
434 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
435 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
436 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
438 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
439 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
440 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
441 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
443 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
444 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
445 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
446 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
448 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
449 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
450 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
451 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
453 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
454 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
455 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
456 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
458 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
459 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
460 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
461 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
462 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
463 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
465 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
466 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
467 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
468 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
469 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
470 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
472 fhPi0CellE [nlm] = 0 ;
473 fhPi0CellEFrac [nlm] = 0 ;
474 fhPi0CellLogEFrac[nlm] = 0 ;
476 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
477 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
478 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
480 fhPi0CellEMaxFrac [nlm] = 0 ;
481 fhPi0CellEMax2Frac[nlm] = 0 ;
483 for(Int_t i = 0; i < 10; i++)
485 fhM02WeightPi0 [nlm][i] = 0;
486 fhM02ECellCutPi0[nlm][i] = 0;
489 fhMassBadDistClose[nlm] = 0;
490 fhM02BadDistClose [nlm] = 0;
491 fhMassOnBorder [nlm] = 0;
492 fhM02OnBorder [nlm] = 0;
494 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
495 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
499 for(Int_t i = 0; i < 7; i++)
501 for(Int_t j = 0; j < 4; j++)
504 fhArmNLocMax1[i][j] = 0;
505 fhArmNLocMax2[i][j] = 0;
506 fhArmNLocMaxN[i][j] = 0;
508 fhArmPi0NLocMax1[i][j] = 0;
509 fhArmPi0NLocMax2[i][j] = 0;
510 fhArmPi0NLocMaxN[i][j] = 0;
512 fhArmAfterCutsNLocMax1[i][j] = 0;
513 fhArmAfterCutsNLocMax2[i][j] = 0;
514 fhArmAfterCutsNLocMaxN[i][j] = 0;
523 //___________________________________________________________________________________________________________________
524 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
525 Float_t e1, Float_t e2, Float_t mass)
527 //TLorentzVector l1, TLorentzVector l2)
529 // Check origin NLM tower of the cluster, when MC gives merged pi0
531 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
533 const UInt_t nc = cluster->GetNCells();
536 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
541 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
542 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
544 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
546 // 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",
547 // nMax, noverlaps,mass,m02,
548 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
549 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
551 // // Study the mothers of cluster
552 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
553 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
555 // Int_t mclabel = cluster->GetLabels()[ilab];
558 // Int_t mpdg = -999999;
559 // Int_t mstatus = -1;
560 // Int_t grandLabel = -1;
561 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
563 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
564 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
566 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
568 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
570 // Int_t newLabel = -1;
571 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
572 // 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",
573 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
574 // grandLabel = newLabel;
580 // printf("Cells in cluster %d\n",cluster->GetNCells() );
581 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
583 // Int_t absIdCell = cluster->GetCellAbsId(icell);
584 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
585 // GetReader()->RemapMCLabelForAODs(mcLabel);
586 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
587 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
589 // 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);
595 //If only one maxima, consider all the towers in the cluster
598 for (UInt_t icell = 0; icell < nc; icell++ )
600 list [icell] = cluster->GetCellAbsId(icell);
601 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
605 Int_t nmaxima = nMax;
606 if(nMax==1) nmaxima = nc ;
608 //Find highest energy Local Maxima Towers
613 for(Int_t i = 0; i < nmaxima; i++)
615 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
623 //Find second highest
624 for(Int_t i = 0; i < nmaxima; i++)
626 if(i==imax) continue;
628 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
637 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
638 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
640 //---------------------------------------------------------
641 //---------------------------------------------------------
642 // Compare ancestors of all local maxima at cell MC level
643 //---------------------------------------------------------
644 //---------------------------------------------------------
646 // Check that the highest mc label and the max cluster label are the same
647 Int_t mcLabelMax = -1 ;
648 if(imax >=0 && imax < 999)
650 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
651 GetReader()->RemapMCLabelForAODs(mcLabelMax);
654 Int_t mcLabelMax2 = -1 ;
655 if(imax2 >=0 && imax2 < 999)
657 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
658 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
661 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
662 Bool_t matchHighLMAndHighMC = kFALSE;
664 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
666 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
668 matchHighLMAndHighMC = kTRUE;
669 //printf("\t *** MATCH cluster and LM maximum ***\n");
673 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
674 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
676 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
677 matchHighLMAndHighMC = kTRUE;
681 //printf("\t \t *** NO MATCH***\n");
682 matchHighLMAndHighMC = kFALSE;
686 // Compare the common ancestors of the 2 highest energy local maxima
687 Int_t ancPDG = 0, ancStatus = -1;
688 TLorentzVector momentum; TVector3 prodVertex;
690 Bool_t high = kFALSE;
693 // // print maxima origin
694 // for(Int_t i = 0; i < nMax; i++)
696 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
697 // GetReader()->RemapMCLabelForAODs(mcLabel1);
699 // Bool_t ok =kFALSE,gok = kFALSE;
700 // Int_t pdg = -22222, status = -1;
701 // Int_t gpdg = -22222, gstatus = -1;
702 // Int_t ggpdg = -22222, ggstatus = -1;
703 // Int_t gLabel = -1, ggLabel = -1;
704 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
705 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
706 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
707 // 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",
708 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
711 for(Int_t i = 0; i < nmaxima-1; i++)
713 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
714 GetReader()->RemapMCLabelForAODs(mcLabel1);
716 for(Int_t j = i+1; j < nmaxima; j++)
718 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
719 GetReader()->RemapMCLabelForAODs(mcLabel2);
721 if(mcLabel1 < 0 || mcLabel2 < 0 )
723 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
727 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
728 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
731 if((i==imax && j==imax2) || (j==imax && i==imax2))
736 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
738 // If both bits are set, it could be that one of the maxima had a conversion
739 // reset the bit in this case
742 //printf("\t Reset low bit\n");
748 Int_t pdg = -22222, status = -1;
749 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
750 //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);
755 Float_t en = cluster->E();
757 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
758 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
762 if(matchHighLMAndHighMC)
764 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
765 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
766 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
767 else fhMCPi0NoneNLMPair->Fill(en,nMax);
771 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
772 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
773 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
774 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
779 if(matchHighLMAndHighMC)
781 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
782 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
783 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
784 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
788 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
789 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
790 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
791 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
795 //----------------------------------------------------------------------
796 //----------------------------------------------------------------------
797 // Compare MC decay photon projection to cell location and Local Maxima
798 //----------------------------------------------------------------------
799 //----------------------------------------------------------------------
801 // Get the mother pi0
804 Int_t pdg = -22222, status = -1;
807 Int_t label = cluster->GetLabel();
808 TLorentzVector pi0Kine;
810 while( pdg!=111 && label>=0 )
812 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
815 if(pdg!=111 || label < 0)
817 Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
821 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
825 Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
829 // Get daughter photon kinematics
830 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
831 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
832 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
833 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
835 if(pdg1!=22 || pdg0 != 22)
837 Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
841 // In what cells did the photons hit
842 Float_t eta0 = photon0Kine.Eta();
843 Float_t eta1 = photon1Kine.Eta();
845 Float_t phi0 = photon0Kine.Phi();
846 Float_t phi1 = photon1Kine.Phi();
848 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
850 // 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",
851 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
852 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
853 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
855 // TLorentzVector momclus;
856 // cluster->GetMomentum(momclus,GetVertex(0));
857 // 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());
860 if(phi0 < 0 ) phi0+=TMath::TwoPi();
861 if(phi1 < 0 ) phi1+=TMath::TwoPi();
863 Int_t absId0=-1, absId1=-1;
864 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
865 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
867 if(absId1 < 0 || absId1 < 0)
869 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
873 //-----------------------------------------------
874 // Check that the 2 photons hit the Local Maxima
875 //-----------------------------------------------
878 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
880 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
881 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
883 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
884 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
885 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
886 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
888 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
889 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
891 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
892 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
893 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
894 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
896 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
897 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
901 if(inlm > 2) inlm = 2;
903 Bool_t match0 = kFALSE;
904 Bool_t match1 = kFALSE;
907 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
909 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
910 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
912 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
913 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
916 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
918 // If one or the 2 not matched, check with the other MC labels
919 // only in case there was a conversion
921 Int_t absId0second = -1;
922 Int_t absId1second = -1;
923 Int_t secLabel0 = -1;
924 Int_t secLabel1 = -1;
928 Int_t secpdg = -999999;
929 Int_t secstatus = -1;
930 Int_t secgrandLabel = -1;
932 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
933 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
935 if((!match0 || !match1) && mcindex == kmcPi0Conv)
937 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
939 Int_t mclabel = cluster->GetLabels()[ilab];
941 //printf("Check label %d - %d\n",ilab,mclabel);
943 if(mclabel == label0 || mclabel == label1)
945 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
946 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
947 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
951 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
953 // match mc label and parent photon
954 Int_t tmplabel = mclabel;
955 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
957 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
959 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
961 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
963 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
964 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
965 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
968 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
970 tmplabel = secgrandLabel;
974 // Get the position of the found secondaries mother
975 if(!match0 && secLabel0 > 0)
977 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
979 //Float_t eta = mother.Eta();
980 //Float_t phi = mother.Phi();
981 //if(phi < 0 ) phi+=TMath::TwoPi();
982 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
984 //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());
986 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
987 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
990 if(!match1 && secLabel1 > 0)
992 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
994 //Float_t eta = mother.Eta();
995 //Float_t phi = mother.Phi();
996 //if(phi < 0 ) phi+=TMath::TwoPi();
997 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
999 //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());
1001 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
1002 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1005 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1009 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1010 if( match0 && match1 )
1012 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1013 // printf("a) Both Photons hit local maxima \n");
1017 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
1018 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1019 if(match0 && imatch0 == imax)
1021 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1022 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1023 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1024 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1028 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1029 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1030 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1031 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1036 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1037 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1038 if(match0 && imatch0 == imax )
1040 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1041 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1042 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1043 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1047 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1048 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1049 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1050 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1058 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1059 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1061 //---------------------------------------------
1062 // Check the adjacent cells to the local maxima
1063 //---------------------------------------------
1067 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1068 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1069 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1070 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1075 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1076 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1078 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1079 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1082 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1084 if(match0 && match1)
1086 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1087 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1091 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1092 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1094 if(match0 && imatch0 == imax)
1096 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1097 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1098 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1099 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1103 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1104 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1105 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1106 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1111 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1112 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1113 if(match0 && imatch0 == imax)
1115 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1116 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1117 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1118 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1122 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1123 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1124 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1125 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1132 // Decay photon cells are adjacent?
1134 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1136 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1137 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1140 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1141 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1145 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1146 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1152 //--------------------
1153 // Other Local maxima
1154 //--------------------
1156 Bool_t matchMCHitOtherLM = kFALSE;
1159 for(Int_t i = 0; i < nmaxima; i++)
1161 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1167 for(Int_t i = 0; i < nmaxima; i++)
1169 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1173 if(matchMCHitOtherLM)
1175 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1176 // printf("d) One Photon hits a local maxima, the other another not high \n");
1180 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1181 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1182 if(match0 && imatch0 == imax)
1184 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1185 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1189 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1190 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1195 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1196 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1197 if(match0 && imatch0 == imax)
1199 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1200 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1204 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1205 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1212 // Adjacent to other maxima
1214 Bool_t adjacentOther1 = kFALSE;
1217 for(Int_t i = 0; i < nmaxima; i++)
1219 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1220 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1222 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1224 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1226 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1230 Bool_t adjacentOther0 = kFALSE;
1233 for(Int_t i = 0; i < nmaxima; i++)
1235 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1236 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1238 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1240 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1242 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1246 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1249 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1250 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1254 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1255 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1256 if(match0 && imatch0 == imax)
1258 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1259 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1263 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1264 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1269 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1270 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1271 if(match0 && imatch0 == imax)
1273 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1274 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1278 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1279 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1286 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1287 // printf("f) No hit found \n");
1290 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1291 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1295 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1296 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1301 //___________________________________________________________________________________________________________
1302 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1303 Float_t en, Float_t e1, Float_t e2,
1304 Float_t angle, Float_t mass,
1305 Float_t anglePrim, Float_t m02,
1306 Float_t asym, Int_t pid, Int_t noverlaps)
1308 // Fill histograms related to opening angle
1310 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1311 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1312 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1313 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1315 Bool_t eCutOK= kFALSE;
1316 Int_t inlm = nMax-1;
1317 if(inlm > 2 ) inlm = 2;
1318 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1319 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1320 else if(ensubcut < 0.1) eCutOK = kTRUE;
1324 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1326 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1327 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1328 if(pid==AliCaloPID::kPi0)
1329 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1333 fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1334 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1339 fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1340 fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1345 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1347 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1348 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1349 if(pid==AliCaloPID::kPi0)
1350 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1354 fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1355 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1358 if( en > fHistoECut )
1360 fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1361 fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1366 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1368 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1369 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1370 if(pid==AliCaloPID::kPi0)
1371 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1375 fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1376 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1379 if( en > fHistoECut )
1381 fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1382 fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1386 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1390 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1393 fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1394 fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1396 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1397 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1398 if(pid==AliCaloPID::kPi0)
1399 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1403 fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1404 if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1407 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1409 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1410 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1411 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1417 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1418 if( en > fHistoECut )
1420 fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1421 fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1424 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1425 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1426 if(pid==AliCaloPID::kPi0)
1427 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1431 fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1432 if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1435 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1437 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1438 if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1439 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1444 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1445 if( en > fHistoECut )
1447 fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1448 fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1450 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1451 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1452 if(pid==AliCaloPID::kPi0)
1453 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1457 fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1458 if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1461 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1463 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1464 if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1465 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1473 //______________________________________________________________________________________________________________________
1474 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1475 Float_t en, TLorentzVector g1, TLorentzVector g2,
1476 Float_t m02, Int_t pid)
1478 // Fill Armeteros type histograms
1480 // Get pTArm and AlphaArm
1481 TLorentzVector pi0 = g1+g2;
1482 Float_t momentumSquaredMother = pi0.P()*pi0.P();
1483 Float_t momentumDaughter1AlongMother = 0.;
1484 Float_t momentumDaughter2AlongMother = 0.;
1486 if (momentumSquaredMother > 0.)
1488 momentumDaughter1AlongMother = (g1.Px()*pi0.Px() + g1.Py()*pi0.Py()+ g1.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1489 momentumDaughter2AlongMother = (g2.Px()*pi0.Px() + g2.Py()*pi0.Py()+ g2.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1492 Float_t momentumSquaredDaughter1 = g1.P()*g1.P();
1493 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1496 if (ptArmSquared > 0.)
1497 pTArm = sqrt(ptArmSquared);
1499 Float_t alphaArm = 0.;
1500 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1501 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1503 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1505 if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1507 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1508 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1509 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1510 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1512 Bool_t eCutOK= kFALSE;
1513 Int_t inlm = nMax-1;
1514 if(inlm > 2 ) inlm = 2;
1515 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1516 if (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1517 else if(ensubcut < 0.1) eCutOK = kTRUE;
1522 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1523 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1524 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1525 if(pid==AliCaloPID::kPi0)
1526 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1530 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1531 if((m02OK && asyOK) && (asyOn || m02On))
1532 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1533 if(pid==AliCaloPID::kPi0)
1534 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1538 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1539 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1540 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1541 if(pid==AliCaloPID::kPi0)
1542 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1545 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1549 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1550 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1551 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1552 if(pid==AliCaloPID::kPi0)
1553 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1557 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1558 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1559 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1560 if(pid==AliCaloPID::kPi0)
1561 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1565 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1566 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1567 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1568 if(pid==AliCaloPID::kPi0)
1569 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1576 //______________________________________________________________________________________________________________
1577 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1578 Float_t en, TLorentzVector g1, TLorentzVector g2,
1579 Float_t m02, Int_t pid)
1581 // Fill cos Theta^star histograms
1584 // Get cos Theta^star
1585 TLorentzVector pi0 = g1+g2;
1586 TLorentzVector g1Boost = g1;
1587 g1Boost.Boost(-pi0.BoostVector());
1588 Float_t cosThStar=TMath::Cos(g1Boost.Vect().Angle(pi0.Vect()));
1590 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1592 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1593 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1594 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1595 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1597 Bool_t eCutOK= kFALSE;
1598 Int_t inlm = nMax-1;
1599 if(inlm > 2 ) inlm = 2;
1600 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1601 if (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1602 else if(ensubcut < 0.1) eCutOK = kTRUE;
1604 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1608 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1610 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1611 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1612 if(pid==AliCaloPID::kPi0)
1613 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1617 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1619 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1620 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1621 if(pid==AliCaloPID::kPi0)
1622 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1626 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1628 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1629 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1630 if(pid==AliCaloPID::kPi0)
1631 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1634 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1638 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1640 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1641 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1642 if(pid==AliCaloPID::kPi0)
1643 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1647 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1649 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1650 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1651 if(pid==AliCaloPID::kPi0)
1652 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1656 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1658 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1659 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1660 if(pid==AliCaloPID::kPi0)
1661 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1668 //__________________________________________________________________________________________________________________
1669 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t ebin , Int_t nMax, Int_t mcindex,
1670 Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1672 // Fill some histograms integrating in few energy bins
1676 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1677 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1679 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1680 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1684 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1685 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1687 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1688 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1692 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1693 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1695 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1696 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1701 //________________________________________________________________________________________________
1702 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en, Float_t e1, Float_t e2,
1703 Int_t nMax, Float_t mass, Float_t l0,
1704 Float_t eta, Float_t phi,
1705 Bool_t matched, Int_t mcindex)
1707 // Fill histograms for clusters before any selection after spliting
1709 Float_t splitFrac = (e1+e2)/en;
1712 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1714 fhNLocMax [0][matched]->Fill(en,nMax);
1715 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1716 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1717 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1718 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1720 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1722 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1723 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1724 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1725 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1726 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1731 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1732 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1734 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1736 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1737 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1742 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1743 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1745 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1746 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1749 else if( nMax == 2 )
1751 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1752 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1754 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1756 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1757 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1762 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1763 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1765 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1766 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1769 else if( nMax >= 3 )
1771 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1772 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1774 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1776 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1777 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1783 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1784 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1786 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1787 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1794 //________________________________________________________________________________________________
1795 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en, Float_t eprim,
1796 Float_t e1, Float_t e2,
1797 Int_t nMax, Float_t mass, Float_t l0,
1798 Bool_t matched, Int_t mcindex)
1800 // Fill histograms for clusters passing the first M02 selection
1802 Float_t efrac = eprim/en;
1803 Float_t efracSplit = 0;
1804 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1806 Float_t splitFrac = (e1+e2)/en;
1809 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1811 Int_t inlm = nMax-1;
1812 if(inlm > 2) inlm = 2;
1813 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1815 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1816 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1817 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1818 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1820 Bool_t eCutOK = kFALSE;
1821 Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1822 if (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1823 else if(ensubcut < 0.1) eCutOK = kTRUE;
1825 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1829 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1830 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1831 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1832 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1834 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1835 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1836 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1842 fhMassNLocMax1[0][matched]->Fill(en,mass );
1843 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1844 fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1846 // Effect of cuts in mass histograms
1848 if(!matched && asyOK && asyOn )
1850 fhMassAsyCutNLocMax1->Fill(en,mass);
1851 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1854 if(!matched && m02OK && m02On )
1856 fhMassM02CutNLocMax1->Fill(en,mass);
1857 fhAsymM02CutNLocMax1->Fill(en,asym );
1858 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1861 if(!matched && eCutOK && ensubcut > 0.1)
1863 fhMassEnCutNLocMax1->Fill(en,mass );
1864 fhM02EnCutNLocMax1 ->Fill(en,l0 );
1865 fhAsymEnCutNLocMax1->Fill(en,asym );
1866 fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1869 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1871 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1872 if(splitFrac > splitFracMin)
1874 fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1875 fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1877 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1879 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1880 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1884 else if( nMax == 2 )
1886 fhMassNLocMax2[0][matched]->Fill(en,mass );
1887 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1888 fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1890 // Effect of cuts in mass histograms
1892 if(!matched && asyOK && asyOn )
1894 fhMassAsyCutNLocMax2->Fill(en,mass);
1895 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1898 if(!matched && m02OK && m02On )
1900 fhMassM02CutNLocMax2->Fill(en,mass);
1901 fhAsymM02CutNLocMax2->Fill(en,asym );
1902 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1905 if(!matched && eCutOK && ensubcut > 0.1)
1907 fhMassEnCutNLocMax2->Fill(en,mass );
1908 fhM02EnCutNLocMax2 ->Fill(en,l0 );
1909 fhAsymEnCutNLocMax2->Fill(en,asym );
1910 fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1913 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1915 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1916 if(splitFrac > splitFracMin)
1918 fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1919 fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1922 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1924 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1925 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1931 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1932 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1933 fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1935 // Effect of cuts in mass histograms
1937 if(!matched && asyOK && asyOn )
1939 fhMassAsyCutNLocMaxN->Fill(en,mass);
1940 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1943 if(!matched && m02OK && m02On )
1945 fhMassM02CutNLocMaxN->Fill(en,mass);
1946 fhAsymM02CutNLocMaxN->Fill(en,asym );
1947 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1950 if(!matched && eCutOK && ensubcut > 0.1 )
1952 fhMassEnCutNLocMaxN->Fill(en,mass );
1953 fhM02EnCutNLocMaxN ->Fill(en,l0 );
1954 fhAsymEnCutNLocMaxN->Fill(en,asym );
1955 fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1958 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1960 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1961 if(splitFrac > splitFracMin)
1963 fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1964 fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1967 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1969 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1970 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1975 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1979 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1980 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1981 fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
1983 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1985 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1986 if(splitFrac > splitFracMin)
1988 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1989 fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
1995 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1996 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1997 fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
1999 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2001 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2002 if(splitFrac > splitFracMin)
2004 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2005 fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2012 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2013 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2014 fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2016 if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2018 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2019 if(splitFrac > splitFracMin)
2021 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2022 fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2026 }//Work with MC truth
2030 //_________________________________________________________________________________________________________
2031 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en, Float_t e1, Float_t e2,
2032 Int_t nc, Int_t nMax, Float_t t12diff,
2033 Float_t mass, Float_t l0,
2034 Float_t eta, Float_t phi,
2035 Bool_t matched, Int_t mcindex)
2037 // Fill histograms for clusters passing the pi0 selection
2040 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2042 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
2043 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2044 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2046 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2047 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2049 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2051 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2052 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2057 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2058 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2059 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2060 fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2061 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2065 if(fFillHighMultHisto)
2067 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2068 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2070 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2071 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2076 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2077 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2078 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2079 fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2080 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2084 if(fFillHighMultHisto)
2086 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2087 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2089 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2090 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2095 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2096 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2097 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2098 fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2099 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2103 if(fFillHighMultHisto)
2105 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2106 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2108 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2109 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2113 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2115 fhNLocMaxIdPi0 [mcindex][matched]->Fill(en,nMax);
2116 fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2117 fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2121 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2122 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2123 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2124 fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2125 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2130 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2131 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2132 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2133 fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2134 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2138 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2139 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2140 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2141 fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2142 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2144 }//Work with MC truth
2147 //______________________________________________________________________________________________________
2148 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en, Float_t e1, Float_t e2,
2149 Int_t nc, Int_t nMax, Float_t t12diff,
2150 Float_t mass, Float_t l0,
2151 Float_t eta, Float_t phi,
2152 Bool_t matched, Int_t mcindex)
2154 // Fill histograms for clusters passing the eta selection
2157 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2161 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2162 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2163 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2164 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2168 if(fFillHighMultHisto)
2170 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2171 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2173 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2174 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2179 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2180 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2181 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2182 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2186 if(fFillHighMultHisto)
2188 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2189 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2191 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2192 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2197 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2198 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2199 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2200 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2204 if(fFillHighMultHisto)
2206 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2207 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2209 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2210 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2214 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2218 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2219 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2220 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2221 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2225 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2226 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2227 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2228 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2233 fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2234 fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2235 fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2236 if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2238 }//Work with MC truth
2242 //__________________________________________________________________________________________________
2243 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en, Int_t nMax, Float_t asym,
2244 Float_t mass, Float_t l0,
2245 Bool_t matched, Int_t mcindex)
2247 // Fill histograms for clusters passing the photon selection
2251 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2252 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2253 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2257 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2258 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2259 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2263 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2264 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2265 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2268 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2272 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2273 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2274 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2278 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2279 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2280 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2284 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2285 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2286 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2289 }//Work with MC truth
2292 //_______________________________________________________________________________________________________
2293 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en, Float_t e1 , Float_t e2,
2294 Int_t ebin, Int_t mcindex,Int_t noverlaps,
2295 Float_t l0, Float_t mass,
2296 Int_t nMax, Bool_t matched,
2297 Float_t splitFrac, Float_t asym,
2298 Float_t eprim, Float_t asymGen)
2300 // Fill histograms needing some MC input
2302 Float_t efrac = eprim/en;
2303 Float_t efracSplit = 0;
2304 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2305 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2307 //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",
2308 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2310 if(ebin >= 0 && fFillEbinHisto)
2312 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2313 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2318 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2319 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2320 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2321 if(asym > 0 && !matched)
2323 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2324 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2329 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2330 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2333 if( en > fHistoECut )
2335 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2337 if(!matched && ebin >= 0 && fFillEbinHisto)
2339 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2340 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2342 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2344 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2345 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2352 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2353 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2354 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2356 if(asym > 0 && !matched)
2358 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2359 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2364 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2365 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2368 if( en > fHistoECut )
2370 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2372 if(!matched && ebin >= 0 && fFillEbinHisto)
2374 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2375 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2376 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2378 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2379 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2387 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2388 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2389 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2390 if(asym > 0 && !matched)
2392 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2393 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2398 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2399 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2402 if( en > fHistoECut )
2404 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2406 if(!matched && ebin >= 0 && fFillEbinHisto)
2408 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2409 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2411 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2413 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2414 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2421 //__________________________________________________________________________________________________________
2422 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en, Float_t enprim,
2423 Int_t nc, Float_t mass, Float_t l0,
2424 Float_t asym, Float_t splitFrac,
2425 Int_t inlm, Int_t ebin, Bool_t matched,
2426 Int_t mcindex, Int_t noverlaps)
2428 // Fill histograms for MC Overlaps
2430 //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);
2432 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2436 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2440 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2441 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2442 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2443 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2444 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2445 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2446 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2448 else if(noverlaps == 1)
2450 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2451 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2452 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2453 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2454 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2455 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2456 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2458 else if(noverlaps > 1)
2460 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2461 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2462 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2463 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2464 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2465 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2466 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2469 Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2471 else if(fFillTMHisto)
2473 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2477 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2478 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2479 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2480 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2481 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2482 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2483 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2485 else if(noverlaps == 1)
2487 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2488 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2489 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2490 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2491 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2492 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2493 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2495 else if(noverlaps > 1)
2497 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2498 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2499 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2500 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2501 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2502 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2503 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2506 Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2511 //_____________________________________________________________________________________________________
2512 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t ncells, Float_t energy, Int_t nMax,
2513 Bool_t matched, Int_t mcindex,
2514 Float_t mass , Float_t l0)
2517 // Fill optional histograms with more SS parameters
2521 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2522 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2524 if (mcindex==kmcPi0 && !matched)
2526 if( energy > fHistoECut)
2528 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2529 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2533 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2534 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2538 else if( nMax == 2 )
2540 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2541 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2544 if (mcindex==kmcPi0 && !matched)
2546 if( energy > fHistoECut)
2548 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2549 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2553 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2554 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2558 else if( nMax >= 3 )
2560 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2561 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2563 if (mcindex==kmcPi0 && !matched)
2565 if( energy > fHistoECut)
2567 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2568 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2572 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2573 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2579 //_____________________________________________________________________________________________
2580 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, Int_t nMax,
2581 Bool_t matched, Int_t mcindex,
2582 Float_t mass , Int_t ebin)
2584 // Fill optional histograms with more SS parameters
2586 Float_t en = cluster->E();
2588 // Get more Shower Shape parameters
2589 Float_t ll0 = 0., ll1 = 0.;
2590 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2591 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2593 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2594 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2596 Float_t dispAsy = -1;
2597 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2601 if( en > fHistoECut )
2603 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2604 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2605 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2607 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2609 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2610 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2611 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2615 if(!matched && ebin >= 0 && fFillEbinHisto)
2617 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2618 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2619 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2622 else if( nMax == 2 )
2624 if( en > fHistoECut )
2626 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2627 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2628 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2630 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2632 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2633 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2634 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2638 if(!matched && ebin >= 0 && fFillEbinHisto)
2640 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2641 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2642 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2646 else if( nMax >= 3 )
2648 if( en > fHistoECut )
2650 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2651 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2652 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2654 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2656 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2657 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2658 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2662 if(!matched && ebin >= 0 && fFillEbinHisto)
2664 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2665 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2666 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2673 //__________________________________________________________________________________________
2674 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, Int_t nlm,
2675 Int_t absId1, Int_t absId2)
2677 // Calculate weights and fill histograms
2679 AliVCaloCells* cells = 0;
2680 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2681 else cells = GetPHOSCells();
2683 // First recalculate energy in case non linearity was applied
2685 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2688 Int_t id = clus->GetCellsAbsId()[ipos];
2690 //Recalibrate cell energy if needed
2691 Float_t amp = cells->GetCellAmplitude(id);
2692 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2700 Info("WeightHistograms()","Wrong calculated energy %f\n",energy);
2704 //Get amplitude of main local maxima, recalibrate if needed
2705 Float_t amp1 = cells->GetCellAmplitude(absId1);
2706 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2707 Float_t amp2 = cells->GetCellAmplitude(absId2);
2708 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2710 if(amp1 < amp2) Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2711 if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2713 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2714 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2715 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2717 //Get the ratio and log ratio to all cells in cluster
2718 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2720 Int_t id = clus->GetCellsAbsId()[ipos];
2722 //Recalibrate cell energy if needed
2723 Float_t amp = cells->GetCellAmplitude(id);
2724 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2726 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2727 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2728 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2730 if (id!=absId1 && id!=absId2)
2732 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2733 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2738 //Recalculate shower shape for different W0
2739 if(fCalorimeter=="EMCAL")
2741 Float_t l0org = clus->GetM02();
2742 Float_t l1org = clus->GetM20();
2743 Float_t dorg = clus->GetDispersion();
2744 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2746 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2748 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2749 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2751 Float_t l0 = 0., l1 = 0.;
2752 Float_t disp = 0., dEta = 0., dPhi = 0.;
2753 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2755 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2756 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2759 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2763 // Set the original values back
2764 clus->SetM02(l0org);
2765 clus->SetM20(l1org);
2766 clus->SetDispersion(dorg);
2767 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2769 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2771 Float_t l0 = 0., l1 = 0.;
2772 Float_t disp = 0., dEta = 0., dPhi = 0.;
2773 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2775 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2776 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2778 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2779 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2786 //____________________________________________________________________________________________
2787 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2788 Int_t nMax, Int_t mcindex)
2790 // Fill histograms related to track matching
2792 Float_t dZ = cluster->GetTrackDz();
2793 Float_t dR = cluster->GetTrackDx();
2794 Float_t en = cluster->E();
2796 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2798 dR = 2000., dZ = 2000.;
2799 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2802 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2804 if(TMath::Abs(dR) < 999)
2806 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2807 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2808 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2810 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2812 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2813 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2814 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2817 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2819 Bool_t positive = kFALSE;
2820 if(track) positive = (track->Charge()>0);
2826 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2827 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2828 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2830 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2832 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2833 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2834 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2839 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2840 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2841 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2843 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2845 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2846 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2847 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2856 //_______________________________________________________________
2857 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2859 //Save parameters used for analysis
2860 TString parList ; //this will be list of parameters used for this analysis.
2861 Int_t buffersize = 255;
2862 char onePar[buffersize] ;
2864 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2867 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2869 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2871 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2873 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2875 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2877 if(fFillSSWeightHisto)
2879 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2883 return new TObjString(parList) ;
2887 //________________________________________________________________
2888 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2890 // Create histograms to be saved in output file and
2891 // store them in outputContainer
2892 TList * outputContainer = new TList() ;
2893 outputContainer->SetName("InsideClusterHistos") ;
2895 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2896 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2897 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2898 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2899 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2900 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2902 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2903 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2904 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2905 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2906 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2907 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2909 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2910 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2911 Bool_t splitOn = kFALSE;
2912 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2913 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2914 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2916 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
2917 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
2918 TString snlm [] = {"1","2","N"};
2920 TString sEBin[] = {"8 < E < 12 GeV","12 < E < 16 GeV", "16 < E < 20 GeV", "E > 20 GeV" };
2924 if(IsDataMC()) n = 7;
2926 Int_t nMaxBins = 10;
2928 TString sMatched[] = {"","Matched"};
2931 if(!fFillTMHisto) nMatched = 1;
2933 if(fCheckSplitDistToBad)
2935 for(Int_t inlm = 0; inlm < 3; inlm++)
2937 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
2938 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2939 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2940 fhMassBadDistClose[inlm]->SetYTitle("M (GeV/c^{2})");
2941 fhMassBadDistClose[inlm]->SetXTitle("E (GeV)");
2942 outputContainer->Add(fhMassBadDistClose[inlm]) ;
2944 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
2945 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2946 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2947 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
2948 fhM02BadDistClose[inlm]->SetXTitle("E (GeV)");
2949 outputContainer->Add(fhM02BadDistClose[inlm]) ;
2951 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
2952 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2953 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2954 fhMassOnBorder[inlm]->SetYTitle("M (GeV/c^{2})");
2955 fhMassOnBorder[inlm]->SetXTitle("E (GeV)");
2956 outputContainer->Add(fhMassOnBorder[inlm]) ;
2958 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
2959 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2960 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2961 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
2962 fhM02OnBorder[inlm]->SetXTitle("E (GeV)");
2963 outputContainer->Add(fhM02OnBorder[inlm]) ;
2968 for(Int_t i = 0; i < n; i++)
2970 for(Int_t j = 0; j < nMatched; j++)
2973 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2974 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2975 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2976 fhNLocMax[i][j] ->SetYTitle("N maxima");
2977 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2978 outputContainer->Add(fhNLocMax[i][j]) ;
2980 fhLM1NLocMax[i][j] = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2981 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2982 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2983 fhLM1NLocMax[i][j] ->SetYTitle("N maxima");
2984 fhLM1NLocMax[i][j] ->SetXTitle("E (GeV)");
2985 outputContainer->Add(fhLM1NLocMax[i][j]) ;
2987 fhLM2NLocMax[i][j] = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2988 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2989 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2990 fhLM2NLocMax[i][j] ->SetYTitle("N maxima");
2991 fhLM2NLocMax[i][j] ->SetXTitle("E (GeV)");
2992 outputContainer->Add(fhLM2NLocMax[i][j]) ;
2996 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2997 Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2998 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2999 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
3000 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
3001 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3003 fhLM1NLocMaxM02Cut[i][j] = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3004 Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3005 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3006 fhLM1NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
3007 fhLM1NLocMaxM02Cut[i][j] ->SetXTitle("E (GeV)");
3008 outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3010 fhLM2NLocMaxM02Cut[i][j] = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3011 Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3012 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3013 fhLM2NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
3014 fhLM2NLocMaxM02Cut[i][j] ->SetXTitle("E (GeV)");
3015 outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3020 fhNLocMaxIdPi0[i][j] = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3021 Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3022 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3023 fhNLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
3024 fhNLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
3025 outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3028 fhLM1NLocMaxIdPi0[i][j] = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3029 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3030 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3031 fhLM1NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
3032 fhLM1NLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
3033 outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3035 fhLM2NLocMaxIdPi0[i][j] = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3036 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3037 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3038 fhLM2NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
3039 fhLM2NLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
3040 outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3045 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3046 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3047 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3048 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
3049 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
3050 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3053 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3054 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3055 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3056 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
3057 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
3058 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3062 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3063 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3064 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3065 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
3066 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
3067 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3069 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3070 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3071 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3072 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
3073 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
3074 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3077 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3078 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3079 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3080 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
3081 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3082 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3085 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3086 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3087 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3088 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3089 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
3090 outputContainer->Add(fhMassNLocMax1[i][j]) ;
3092 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3093 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3094 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3095 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3096 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
3097 outputContainer->Add(fhMassNLocMax2[i][j]) ;
3099 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3100 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3101 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3102 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3103 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
3104 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3106 fhMassSplitENLocMax1[i][j] = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3107 Form("Invariant mass of splitted cluster with NLM=1 vs E1+E2, %s %s",ptype[i].Data(),sMatched[j].Data()),
3108 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3109 fhMassSplitENLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3110 fhMassSplitENLocMax1[i][j]->SetXTitle("E1+E2 (GeV)");
3111 outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3113 fhMassSplitENLocMax2[i][j] = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3114 Form("Invariant mass of splitted cluster with NLM=2 vs E1+E2, %s %s",ptype[i].Data(),sMatched[j].Data()),
3115 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3116 fhMassSplitENLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3117 fhMassSplitENLocMax2[i][j]->SetXTitle("E1+E2 (GeV)");
3118 outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3120 fhMassSplitENLocMaxN[i][j] = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3121 Form("Invariant mass of splitted cluster with NLM>2 vs E1+E2, %s %s",ptype[i].Data(),sMatched[j].Data()),
3122 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3123 fhMassSplitENLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3124 fhMassSplitENLocMaxN[i][j]->SetXTitle("E1+E2 (GeV)");
3125 outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3127 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3128 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3129 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3130 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3131 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
3132 outputContainer->Add(fhM02NLocMax1[i][j]) ;
3134 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3135 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3136 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3137 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3138 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
3139 outputContainer->Add(fhM02NLocMax2[i][j]) ;
3141 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3142 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3143 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3144 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3145 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3146 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3148 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3149 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3150 nptbins,ptmin,ptmax,200,-1,1);
3151 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3152 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
3153 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3155 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3156 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3157 nptbins,ptmin,ptmax,200,-1,1);
3158 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3159 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
3160 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3162 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3163 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3164 nptbins,ptmin,ptmax,200,-1,1);
3165 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3166 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
3167 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3169 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3170 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3171 nptbins,ptmin,ptmax,120,0,1.2);
3172 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
3173 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3174 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3176 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3177 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3178 nptbins,ptmin,ptmax,120,0,1.2);
3179 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
3180 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3181 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3183 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3184 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3185 nptbins,ptmin,ptmax,120,0,1.2);
3186 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
3187 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3188 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3194 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
3195 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3196 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
3197 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
3198 outputContainer->Add(fhMassM02CutNLocMax1) ;
3200 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
3201 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3202 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
3203 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
3204 outputContainer->Add(fhMassM02CutNLocMax2) ;
3206 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3207 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3208 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3209 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
3210 outputContainer->Add(fhMassM02CutNLocMaxN) ;
3212 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3213 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3214 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
3215 outputContainer->Add(fhAsymM02CutNLocMax1) ;
3217 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3218 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3219 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
3220 outputContainer->Add(fhAsymM02CutNLocMax2) ;
3222 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3223 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3224 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
3225 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3229 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
3230 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3231 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
3232 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
3233 outputContainer->Add(fhMassSplitECutNLocMax1) ;
3235 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3236 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3237 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
3238 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
3239 outputContainer->Add(fhMassSplitECutNLocMax2) ;
3241 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3242 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3243 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3244 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
3245 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3251 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, Asy cut, no TM",
3252 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3253 fhMassAsyCutNLocMax1->SetYTitle("M (GeV/c^{2})");
3254 fhMassAsyCutNLocMax1->SetXTitle("E (GeV)");
3255 outputContainer->Add(fhMassAsyCutNLocMax1) ;
3257 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, Asy cut, no TM",
3258 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3259 fhMassAsyCutNLocMax2->SetYTitle("M (GeV/c^{2})");
3260 fhMassAsyCutNLocMax2->SetXTitle("E (GeV)");
3261 outputContainer->Add(fhMassAsyCutNLocMax2) ;
3263 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3264 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3265 fhMassAsyCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3266 fhMassAsyCutNLocMaxN->SetXTitle("E (GeV)");
3267 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3269 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of NLM=1 vs cluster Energy, AsyCut, no TM",
3270 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3271 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3272 fhM02AsyCutNLocMax1->SetXTitle("E (GeV)");
3273 outputContainer->Add(fhM02AsyCutNLocMax1) ;
3275 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of NLM=2 vs cluster Energy, AsyCut, no TM",
3276 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3277 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3278 fhM02AsyCutNLocMax2->SetXTitle("E (GeV)");
3279 outputContainer->Add(fhM02AsyCutNLocMax2) ;
3281 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
3282 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3283 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3284 fhM02AsyCutNLocMaxN->SetXTitle("E (GeV)");
3285 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3288 if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3290 fhMassEnCutNLocMax1 = new TH2F("hMassEnCutNLocMax1",Form("Invariant mass of splitted cluster with NLM=1 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3291 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3292 fhMassEnCutNLocMax1->SetYTitle("M (GeV/c^{2})");
3293 fhMassEnCutNLocMax1->SetXTitle("E (GeV)");
3294 outputContainer->Add(fhMassEnCutNLocMax1) ;
3296 fhMassEnCutNLocMax2 = new TH2F("hMassEnCutNLocMax2",Form("Invariant mass of splitted cluster with NLM=2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3297 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3298 fhMassEnCutNLocMax2->SetYTitle("M (GeV/c^{2})");
3299 fhMassEnCutNLocMax2->SetXTitle("E (GeV)");
3300 outputContainer->Add(fhMassEnCutNLocMax2) ;
3302 fhMassEnCutNLocMaxN = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3303 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3304 fhMassEnCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3305 fhMassEnCutNLocMaxN->SetXTitle("E (GeV)");
3306 outputContainer->Add(fhMassEnCutNLocMaxN) ;
3308 fhM02EnCutNLocMax1 = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of NLM=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3309 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3310 fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3311 fhM02EnCutNLocMax1->SetXTitle("E (GeV)");
3312 outputContainer->Add(fhM02EnCutNLocMax1) ;
3314 fhM02EnCutNLocMax2 = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of NLM=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3315 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3316 fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3317 fhM02EnCutNLocMax2->SetXTitle("E (GeV)");
3318 outputContainer->Add(fhM02EnCutNLocMax2) ;
3320 fhM02EnCutNLocMaxN = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3321 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3322 fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3323 fhM02EnCutNLocMaxN->SetXTitle("E (GeV)");
3324 outputContainer->Add(fhM02EnCutNLocMaxN) ;
3326 fhAsymEnCutNLocMax1 = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of NLM=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3327 , nptbins,ptmin,ptmax,200,-1,1);
3328 fhAsymEnCutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3329 fhAsymEnCutNLocMax1->SetXTitle("E (GeV)");
3330 outputContainer->Add(fhAsymEnCutNLocMax1) ;
3332 fhAsymEnCutNLocMax2 = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of NLM=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3333 , nptbins,ptmin,ptmax,200,-1,1);
3334 fhAsymEnCutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3335 fhAsymEnCutNLocMax2->SetXTitle("E (GeV)");
3336 outputContainer->Add(fhAsymEnCutNLocMax2) ;
3338 fhAsymEnCutNLocMaxN = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3339 , nptbins,ptmin,ptmax,200,-1,1);
3340 fhAsymEnCutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3341 fhAsymEnCutNLocMaxN->SetXTitle("E (GeV)");
3342 outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3344 fhSplitEFracEnCutNLocMax1 = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of NLM=1 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3345 , nptbins,ptmin,ptmax,120,0,1.2);
3346 fhSplitEFracEnCutNLocMax1->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3347 fhSplitEFracEnCutNLocMax1->SetXTitle("E (GeV)");
3348 outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3350 fhSplitEFracEnCutNLocMax2 = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of NLM=2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3351 , nptbins,ptmin,ptmax,120,0,1.2);
3352 fhSplitEFracEnCutNLocMax2->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3353 fhSplitEFracEnCutNLocMax2->SetXTitle("E (GeV)");
3354 outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3356 fhSplitEFracEnCutNLocMaxN = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2 vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3357 , nptbins,ptmin,ptmax,120,0,1.2);
3358 fhSplitEFracEnCutNLocMaxN->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3359 fhSplitEFracEnCutNLocMaxN->SetXTitle("E (GeV)");
3360 outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3367 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3368 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3369 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3370 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3371 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
3372 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3374 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3375 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3376 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3377 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3378 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
3379 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3381 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3382 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3383 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3384 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3385 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3386 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3388 fhMassSplitEAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3389 Form("Mass vs E1+E2, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3390 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3391 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3392 fhMassSplitEAfterCutsNLocMax1[i][j] ->SetXTitle("E1+E2 (GeV)");
3393 outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3395 fhMassSplitEAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3396 Form("Mass vs E1+E2, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3397 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3398 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3399 fhMassSplitEAfterCutsNLocMax2[i][j] ->SetXTitle("E1+E2 (GeV)");
3400 outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3402 fhMassSplitEAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3403 Form("Mass vs E1+E2, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3404 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3405 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3406 fhMassSplitEAfterCutsNLocMaxN[i][j] ->SetXTitle("E1+E2 (GeV)");
3407 outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3410 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3411 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()),
3412 nptbins,ptmin,ptmax,120,0,1.2);
3413 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
3414 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3415 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3417 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3418 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()),
3419 nptbins,ptmin,ptmax,120,0,1.2);
3420 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
3421 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3422 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3424 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3425 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()),
3426 nptbins,ptmin,ptmax,120,0,1.2);
3427 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
3428 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3429 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3432 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3433 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3434 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3435 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3436 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3437 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
3439 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3440 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3441 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3442 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3443 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3444 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
3446 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3447 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3448 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3449 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3450 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3451 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
3453 if(fFillSSExtraHisto)
3455 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3456 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3457 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3458 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3459 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3460 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
3462 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3463 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3464 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3465 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3466 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3467 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
3469 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3470 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3471 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3472 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3473 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3474 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
3476 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3477 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3478 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3479 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3480 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3481 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
3483 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3484 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3485 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3486 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3487 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3488 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
3490 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3491 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3492 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3493 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3494 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3495 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
3497 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3498 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()),
3499 200,-1,1,mbins,mmin,mmax);
3500 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3501 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3502 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
3504 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3505 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()),
3506 200,-1,1,mbins,mmin,mmax);
3507 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3508 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3509 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
3511 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3512 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()),
3513 200,-1,1,mbins,mmin,mmax);
3514 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3515 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3516 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
3520 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3522 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3523 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3524 nptbins,ptmin,ptmax,200,0,2);
3525 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3526 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3527 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
3529 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3530 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3531 nptbins,ptmin,ptmax,200,0,2);
3532 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3533 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3534 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
3536 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3537 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3538 nptbins,ptmin,ptmax,200,0,2);
3539 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3540 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3541 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
3543 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3544 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3545 nptbins,ptmin,ptmax,200,0,2);
3546 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3547 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3548 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3550 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3551 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3552 nptbins,ptmin,ptmax,200,0,2);
3553 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3554 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3555 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3557 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3558 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3559 nptbins,ptmin,ptmax,200,0,2);
3560 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3561 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3562 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3565 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3566 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3567 nptbins,ptmin,ptmax,200,0,2);
3568 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3569 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3570 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
3572 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3573 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3574 nptbins,ptmin,ptmax,200,0,2);
3575 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3576 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3577 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
3579 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3580 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3581 nptbins,ptmin,ptmax,200,0,2);
3582 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3583 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3584 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
3586 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3587 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3588 nptbins,ptmin,ptmax,200,0,2);
3589 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3590 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3591 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3593 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3594 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3595 nptbins,ptmin,ptmax,200,0,2);
3596 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3597 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3598 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3600 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3601 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3602 nptbins,ptmin,ptmax,200,0,2);
3603 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3604 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3605 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3607 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3608 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()),
3610 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3611 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3612 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3614 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3615 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()),
3617 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3618 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3619 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3622 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3623 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()),
3625 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3626 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3627 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3630 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3631 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3632 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3633 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3634 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
3635 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3637 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3638 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3639 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3640 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3641 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
3642 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3645 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3646 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3647 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3648 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3649 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
3650 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3653 // Histograms after cluster identification
3658 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3659 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3660 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3661 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3662 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3663 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3665 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3666 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3667 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3668 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3669 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3670 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3672 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3673 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3674 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3675 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3676 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3677 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3679 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3680 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3681 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3682 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3683 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3684 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3686 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3687 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
3688 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3689 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3690 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3691 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3693 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3694 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3695 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3696 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3697 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3698 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3700 fhMassSplitEPi0NLocMax1[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3701 Form("Mass vs E1+E2, %s, for NLM = 1",ptype[i].Data()),
3702 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3703 fhMassSplitEPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3704 fhMassSplitEPi0NLocMax1[i][j] ->SetXTitle("E1+E2 (GeV)");
3705 outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3707 fhMassSplitEPi0NLocMax2[i][j] = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3708 Form("Mass vs E1+E2 , %s, for NLM = 2",ptype[i].Data()),
3709 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3710 fhMassSplitEPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3711 fhMassSplitEPi0NLocMax2[i][j] ->SetXTitle("E1+E2 (GeV)");
3712 outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3714 fhMassSplitEPi0NLocMaxN[i][j] = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3715 Form("Mass vs E1+E2, %s, for NLM > 2",ptype[i].Data()),
3716 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3717 fhMassSplitEPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3718 fhMassSplitEPi0NLocMaxN[i][j] ->SetXTitle("E1+E2 (GeV)");
3719 outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3721 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3722 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3723 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3724 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
3725 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3726 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3728 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3729 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3730 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3731 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
3732 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3733 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3735 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3736 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3737 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3738 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
3739 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3740 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3744 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3745 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3746 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3747 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
3748 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3749 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3751 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3752 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3753 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3754 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
3755 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3756 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3758 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3759 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3760 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3761 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
3762 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3763 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3770 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3771 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3772 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3773 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3774 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3775 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3778 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3779 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3780 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3781 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3782 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3783 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3785 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3786 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3787 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3788 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3789 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3790 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3792 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3793 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3794 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3795 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3796 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3797 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3799 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3800 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3801 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3802 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3803 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3804 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3806 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3807 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3808 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3809 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3810 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3811 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3813 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3814 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3815 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3816 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
3817 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3818 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3820 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3821 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3822 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3823 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
3824 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3825 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
3827 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3828 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3829 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3830 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3831 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3832 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
3836 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3837 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3838 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3839 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
3840 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3841 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
3843 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3844 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3845 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3846 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
3847 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3848 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
3850 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3851 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3852 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3853 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
3854 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3855 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
3860 if(fFillIdConvHisto)
3862 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3863 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3864 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3865 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3866 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3867 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
3869 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3870 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3871 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3872 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3873 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3874 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
3876 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3877 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3878 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3879 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3880 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3881 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
3884 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3885 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3886 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3887 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3888 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3889 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
3891 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3892 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3893 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3894 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3895 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3896 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
3898 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3899 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3900 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3901 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3902 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3903 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
3905 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3906 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3907 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3908 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
3909 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3910 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
3912 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3913 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3914 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3915 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
3916 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3917 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
3919 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3920 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3921 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3922 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3923 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3924 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
3928 } // matched, not matched
3932 for(Int_t j = 0; j < 4; j++)
3935 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
3936 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3937 120,0,1.2,mbins,mmin,mmax);
3938 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3939 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3940 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
3942 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
3943 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3944 120,0,1.2,mbins,mmin,mmax);
3945 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3946 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3947 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
3949 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
3950 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3951 120,0,1.2,mbins,mmin,mmax);
3952 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3953 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3954 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
3956 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
3958 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
3959 Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3960 200,0,2,nMaxBins,0,nMaxBins);
3961 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
3962 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3963 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
3965 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
3966 Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
3967 200,0,2,nMaxBins,0,nMaxBins);
3968 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
3969 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
3970 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
3972 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3973 Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3974 200,0,2,mbins,mmin,mmax);
3975 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3976 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3977 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
3979 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3980 Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3981 200,0,2,mbins,mmin,mmax);
3982 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3983 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3984 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
3986 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3987 Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3988 200,0,2,mbins,mmin,mmax);
3989 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3990 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3991 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
3993 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3994 Form("#lambda_{0}^{2} vs E for N max = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
3995 200,0,2,ssbins,ssmin,ssmax);
3996 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3997 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3998 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4000 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4001 Form("#lambda_{0}^{2} vs E for N max = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4002 200,0,2,ssbins,ssmin,ssmax);
4003 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4004 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
4005 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4007 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4008 Form("#lambda_{0}^{2} vs E for N max > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4009 200,0,2,ssbins,ssmin,ssmax);
4010 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
4011 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
4012 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4016 } // MC particle list
4018 if(fFillHighMultHisto)
4022 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
4023 "E vs Centrality, selected pi0 cluster with NLM=1",
4024 nptbins,ptmin,ptmax,100,0,100);
4025 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
4026 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
4027 outputContainer->Add(fhCentralityPi0NLocMax1) ;
4029 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
4030 "E vs Centrality, selected pi0 cluster with NLM=2",
4031 nptbins,ptmin,ptmax,100,0,100);
4032 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
4033 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
4034 outputContainer->Add(fhCentralityPi0NLocMax2) ;
4036 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
4037 "E vs Centrality, selected pi0 cluster with NLM>1",
4038 nptbins,ptmin,ptmax,100,0,100);
4039 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
4040 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
4041 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4045 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
4046 "E vs Centrality, selected pi0 cluster with NLM=1",
4047 nptbins,ptmin,ptmax,100,0,100);
4048 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
4049 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
4050 outputContainer->Add(fhCentralityEtaNLocMax1) ;
4052 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
4053 "E vs Centrality, selected pi0 cluster with NLM=2",
4054 nptbins,ptmin,ptmax,100,0,100);
4055 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
4056 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
4057 outputContainer->Add(fhCentralityEtaNLocMax2) ;
4059 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
4060 "E vs Centrality, selected pi0 cluster with NLM>1",
4061 nptbins,ptmin,ptmax,100,0,100);
4062 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
4063 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
4064 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4067 // E vs Event plane angle
4069 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
4070 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4071 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
4072 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
4073 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4075 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
4076 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4077 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
4078 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
4079 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4081 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4082 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4083 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
4084 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
4085 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4089 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
4090 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4091 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
4092 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
4093 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4095 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
4096 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4097 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
4098 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
4099 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4101 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4102 nptbins,ptmin,ptmax,100,0,TMath::Pi());
4103 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
4104 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
4105 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4111 for(Int_t i = 0; i < 4; i++)
4113 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4114 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
4115 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4116 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
4117 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4118 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
4120 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4121 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
4122 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4123 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
4124 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4125 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
4127 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4128 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4129 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4130 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
4131 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4132 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
4135 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4136 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, %s",sEBin[i].Data()),
4137 200,-1,1,mbins,mmin,mmax);
4138 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
4139 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4140 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4142 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4143 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, %s",sEBin[i].Data()),
4144 200,-1,1,mbins,mmin,mmax);
4145 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
4146 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4147 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4149 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4150 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4151 200,-1,1,mbins,mmin,mmax);
4152 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
4153 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4154 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4157 if(IsDataMC() && fFillMCHisto)
4159 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4160 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
4161 ssbins,ssmin,ssmax,100,0,1);
4162 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4163 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4164 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4166 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4167 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
4168 ssbins,ssmin,ssmax,100,0,1);
4169 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4170 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4171 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4173 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4174 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4175 ssbins,ssmin,ssmax,100,0,1);
4176 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4177 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4178 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
4181 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4182 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, %s",sEBin[i].Data()),
4184 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
4185 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
4186 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4188 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4189 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, %s",sEBin[i].Data()),
4191 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
4192 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
4193 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4195 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4196 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4198 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
4199 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
4200 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4203 if(fFillSSExtraHisto)
4205 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4206 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4207 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4208 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
4209 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4210 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
4212 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4213 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4214 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4215 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
4216 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4217 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
4219 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4220 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4221 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4222 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
4223 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4224 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
4226 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4227 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4228 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4229 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
4230 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4231 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
4233 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4234 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4235 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4236 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
4237 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4238 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
4240 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4241 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4242 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4243 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
4244 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4245 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
4247 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4248 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()),
4249 200,-1,1,mbins,mmin,mmax);
4250 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
4251 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4252 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
4254 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4255 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()),
4256 200,-1,1,mbins,mmin,mmax);
4257 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
4258 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4259 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
4261 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4262 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()),
4263 200,-1,1,mbins,mmin,mmax);
4264 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
4265 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4266 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
4271 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4273 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4274 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
4275 nptbins,ptmin,ptmax,200,0,2);
4276 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
4277 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
4278 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4280 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4281 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
4282 nptbins,ptmin,ptmax,200,0,2);
4283 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
4284 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
4285 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4288 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4289 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
4290 nptbins,ptmin,ptmax,200,0,2);
4291 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
4292 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
4293 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4295 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4296 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
4297 nptbins,ptmin,ptmax,200,0,2);
4298 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4299 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
4300 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4302 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4303 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
4304 nptbins,ptmin,ptmax,200,0,2);
4305 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4306 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
4307 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4310 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4311 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
4312 nptbins,ptmin,ptmax,200,0,2);
4313 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4314 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
4315 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4319 if(fFillTMResidualHisto && fFillTMHisto)
4321 for(Int_t i = 0; i < n; i++)
4324 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
4325 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4326 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4327 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4328 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4329 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
4331 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
4332 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4333 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4334 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4335 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4336 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
4338 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
4339 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4341 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
4342 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4343 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4344 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4345 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4346 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
4348 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
4349 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4350 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4351 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4352 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4353 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
4355 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
4356 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4358 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
4359 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4360 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4361 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4362 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4363 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
4365 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
4366 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4367 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4368 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4369 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4370 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
4372 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
4373 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4375 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
4376 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4377 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4378 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4379 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4380 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4382 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
4383 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4384 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4385 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4386 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4387 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4389 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4390 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4392 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
4393 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4394 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4395 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4396 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4397 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4399 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
4400 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4401 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4402 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4403 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4404 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4406 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4407 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4409 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
4410 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4411 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4412 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4413 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4414 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4416 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
4417 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4418 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4419 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4420 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4421 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4423 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4424 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4426 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
4427 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4428 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4429 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4430 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4431 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4433 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
4434 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4435 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4436 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4437 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4438 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4440 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4441 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4443 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
4444 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4445 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4446 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4447 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4448 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4450 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
4451 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4452 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4453 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4454 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4455 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4457 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4458 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4460 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
4461 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4462 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4463 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4464 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4465 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4467 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
4468 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4469 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4470 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4471 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4472 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4474 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4475 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4482 for(Int_t i = 0; i < n; i++)
4484 for(Int_t j = 0; j < nMatched; j++)
4487 fhAnglePairNLocMax1[i][j] = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4488 Form("Opening angle split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4489 nptbins,ptmin,ptmax,200,0,0.2);
4490 fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4491 fhAnglePairNLocMax1[i][j]->SetXTitle("E (GeV)");
4492 outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4494 fhAnglePairNLocMax2[i][j] = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4495 Form("Opening angle split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4496 nptbins,ptmin,ptmax,200,0,0.2);
4497 fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4498 fhAnglePairNLocMax2[i][j]->SetXTitle("E (GeV)");
4499 outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4501 fhAnglePairNLocMaxN[i][j] = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4502 Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4503 nptbins,ptmin,ptmax,200,0,0.2);
4504 fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4505 fhAnglePairNLocMaxN[i][j]->SetXTitle("E (GeV)");
4506 outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4510 fhAnglePairAfterCutsNLocMax1[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4511 Form("Opening angle split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4512 nptbins,ptmin,ptmax,200,0,0.2);
4513 fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4514 fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4515 outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4517 fhAnglePairAfterCutsNLocMax2[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4518 Form("Opening angle split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4519 nptbins,ptmin,ptmax,200,0,0.2);
4520 fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4521 fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4522 outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4524 fhAnglePairAfterCutsNLocMaxN[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4525 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4526 nptbins,ptmin,ptmax,200,0,0.2);
4527 fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4528 fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4529 outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4533 fhAnglePairPi0NLocMax1[i][j] = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4534 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4535 nptbins,ptmin,ptmax,200,0,0.2);
4536 fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4537 fhAnglePairPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4538 outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4540 fhAnglePairPi0NLocMax2[i][j] = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4541 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4542 nptbins,ptmin,ptmax,200,0,0.2);
4543 fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4544 fhAnglePairPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4545 outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4547 fhAnglePairPi0NLocMaxN[i][j] = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4548 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4549 nptbins,ptmin,ptmax,200,0,0.2);
4550 fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4551 fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4552 outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4554 fhAnglePairMassNLocMax1[i][j] = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4555 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()),
4556 mbins,mmin,mmax,200,0,0.2);
4557 fhAnglePairMassNLocMax1[i][j]->SetXTitle("M (GeV/c^{2})");
4558 fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4559 outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4562 fhAnglePairMassNLocMax2[i][j] = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4563 Form("Opening angle split sub-clusters of cluster NLM=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4564 mbins,mmin,mmax,200,0,0.2);
4565 fhAnglePairMassNLocMax2[i][j]->SetXTitle("M (GeV/c^{2})");
4566 fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4567 outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4569 fhAnglePairMassNLocMaxN[i][j] = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4570 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4571 mbins,mmin,mmax,200,0,0.2);
4572 fhAnglePairMassNLocMaxN[i][j]->SetXTitle("M (GeV/c^{2})");
4573 fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4574 outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;
4577 fhAnglePairM02NLocMax1[i][j] = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4578 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()),
4579 ssbins,ssmin,ssmax,200,0,0.2);
4580 fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4581 fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4582 outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4585 fhAnglePairM02NLocMax2[i][j] = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4586 Form("Opening angle split sub-clusters of cluster NLM=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4587 ssbins,ssmin,ssmax,200,0,0.2);
4588 fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4589 fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4590 outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4592 fhAnglePairM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4593 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4594 ssbins,ssmin,ssmax,200,0,0.2);
4595 fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4596 fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4597 outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4599 fhAnglePairOverM02NLocMax1[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4600 Form("Opening angle split sub-clusters / M02 of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4601 nptbins,ptmin,ptmax,200,0,0.2);
4602 fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4603 fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("E (GeV)");
4604 outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4606 fhAnglePairOverM02NLocMax2[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4607 Form("Opening angle split sub-clusters / M02 of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4608 nptbins,ptmin,ptmax,200,0,0.2);
4609 fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4610 fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("E (GeV)");
4611 outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4613 fhAnglePairOverM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4614 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4615 nptbins,ptmin,ptmax,200,0,0.2);
4616 fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4617 fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("E (GeV)");
4618 outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4621 fhAnglePairOverM02NLocMax1Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4622 Form("Opening angle split sub-clusters / M02 of cluster NLM=1 vs pair Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4623 nptbins,ptmin,ptmax,200,0,0.2);
4624 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4625 fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("E (GeV)");
4626 outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4628 fhAnglePairOverM02NLocMax2Overlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4629 Form("Opening angle split sub-clusters / M02 of cluster NLM=2 cells vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4630 nptbins,ptmin,ptmax,200,0,0.2);
4631 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4632 fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("E (GeV)");
4633 outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4635 fhAnglePairOverM02NLocMaxNOverlap0[i][j] = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4636 Form("Opening angle split sub-clusters / M02 of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4637 nptbins,ptmin,ptmax,200,0,0.2);
4638 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4639 fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("E (GeV)");
4640 outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4648 fhAnglePairPrimPi0RecoNLocMax1 = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4649 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=1",
4650 nptbins,ptmin,ptmax,300,0,3);
4651 fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4652 fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("E (GeV)");
4653 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4655 fhAnglePairPrimPi0RecoNLocMax2 = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4656 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=2",
4657 nptbins,ptmin,ptmax,300,0,3);
4658 fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4659 fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("E (GeV)");
4660 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4662 fhAnglePairPrimPi0RecoNLocMaxN = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4663 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4664 nptbins,ptmin,ptmax,300,0,3);
4665 fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4666 fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("E (GeV)");
4667 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4670 fhAnglePairPrimPi0vsRecoNLocMax1 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4671 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, NLM=1",
4672 200,0,0.2,200,0,0.2);
4673 fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4674 fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4675 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4677 fhAnglePairPrimPi0vsRecoNLocMax2 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4678 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4679 200,0,0.2,200,0,0.2);
4680 fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4681 fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4682 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4684 fhAnglePairPrimPi0vsRecoNLocMaxN = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4685 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4686 200,0,0.2,200,0,0.2);
4687 fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4688 fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4689 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4692 fhAnglePairPrimPi0OverM02NLocMax1 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4693 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, NLM=1",
4694 nptbins,ptmin,ptmax,200,0,0.2);
4695 fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4696 fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("E (GeV)");
4697 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4699 fhAnglePairPrimPi0OverM02NLocMax2 = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4700 "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, NLM=2",
4701 nptbins,ptmin,ptmax,200,0,0.2);
4702 fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4703 fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("E (GeV)");
4704 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4706 fhAnglePairPrimPi0OverM02NLocMaxN = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4707 "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4708 nptbins,ptmin,ptmax,200,0,0.2);
4709 fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4710 fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("E (GeV)");
4711 outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4716 // Same as asymmetry ...
4717 if(fFillThetaStarHisto)
4719 for(Int_t i = 0; i < n; i++)
4721 for(Int_t j = 0; j < nMatched; j++)
4724 fhCosThStarNLocMax1[i][j] = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4725 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4726 nptbins,ptmin,ptmax,200,-1,1);
4727 fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4728 fhCosThStarNLocMax1[i][j]->SetXTitle("E (GeV)");
4729 outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4731 fhCosThStarNLocMax2[i][j] = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4732 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4733 nptbins,ptmin,ptmax,200,-1,1);
4734 fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4735 fhCosThStarNLocMax2[i][j]->SetXTitle("E (GeV)");
4736 outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4738 fhCosThStarNLocMaxN[i][j] = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4739 Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4740 nptbins,ptmin,ptmax,200,-1,1);
4741 fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4742 fhCosThStarNLocMaxN[i][j]->SetXTitle("E (GeV)");
4743 outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4747 fhCosThStarAfterCutsNLocMax1[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4748 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4749 nptbins,ptmin,ptmax,200,-1,1);
4750 fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4751 fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4752 outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4754 fhCosThStarAfterCutsNLocMax2[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4755 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4756 nptbins,ptmin,ptmax,200,-1,1);
4757 fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4758 fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4759 outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4761 fhCosThStarAfterCutsNLocMaxN[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4762 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4763 nptbins,ptmin,ptmax,200,-1,1);
4764 fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4765 fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4766 outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4770 fhCosThStarPi0NLocMax1[i][j] = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4771 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4772 nptbins,ptmin,ptmax,200,-1,1);
4773 fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4774 fhCosThStarPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4775 outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4777 fhCosThStarPi0NLocMax2[i][j] = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4778 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4779 nptbins,ptmin,ptmax,200,-1,1);
4780 fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4781 fhCosThStarPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4782 outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4784 fhCosThStarPi0NLocMaxN[i][j] = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4785 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4786 nptbins,ptmin,ptmax,200,-1,1);
4787 fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4788 fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4789 outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4796 for(Int_t j = 0; j < nMatched; j++)
4798 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4799 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
4800 100,-1,1,120,0,1.2);
4801 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4802 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4803 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
4805 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4806 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
4807 100,-1,1,120,0,1.2);
4808 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4809 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4810 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
4812 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4813 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
4814 100,-1,1,120,0,1.2);
4815 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4816 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4817 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
4821 fhClusterEtaPhiNLocMax1 = new TH2F
4822 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4823 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4824 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
4825 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
4827 fhClusterEtaPhiNLocMax2 = new TH2F
4828 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4829 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4830 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
4831 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
4833 fhClusterEtaPhiNLocMaxN = new TH2F
4834 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4835 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4836 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
4837 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
4839 fhPi0EtaPhiNLocMax1 = new TH2F
4840 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4841 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
4842 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
4843 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
4845 fhPi0EtaPhiNLocMax2 = new TH2F
4846 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4847 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
4848 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
4849 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
4851 fhPi0EtaPhiNLocMaxN = new TH2F
4852 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4853 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4854 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
4855 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
4859 fhEtaEtaPhiNLocMax1 = new TH2F
4860 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4861 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4862 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
4863 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
4865 fhEtaEtaPhiNLocMax2 = new TH2F
4866 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4867 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4868 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
4869 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
4871 fhEtaEtaPhiNLocMaxN = new TH2F
4872 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4873 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4874 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
4875 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
4878 if(fFillSSWeightHisto)
4880 for(Int_t nlm = 0; nlm < 3; nlm++)
4882 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
4883 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
4884 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
4885 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
4886 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
4887 outputContainer->Add(fhPi0CellE[nlm]) ;
4889 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
4890 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
4891 nptbins,ptmin,ptmax, 100,0,1);
4892 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
4893 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
4894 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
4896 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
4897 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
4898 nptbins,ptmin,ptmax, 100,-10,0);
4899 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
4900 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
4901 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
4904 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
4905 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
4906 nptbins,ptmin,ptmax, 100,0,1);
4907 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
4908 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4909 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
4911 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
4912 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
4913 nptbins,ptmin,ptmax, 100,0,1);
4914 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
4915 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
4916 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
4918 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
4919 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
4920 nptbins,ptmin,ptmax, 100,0,1);
4921 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
4922 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
4923 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
4925 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
4926 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
4927 nptbins,ptmin,ptmax, 100,0,1);
4928 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
4929 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
4930 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
4932 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
4933 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
4934 nptbins,ptmin,ptmax, 200,0,2);
4935 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
4936 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4937 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
4940 for(Int_t i = 0; i < fSSWeightN; i++)
4942 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
4943 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
4944 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4945 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4946 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
4947 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
4950 for(Int_t i = 0; i < fSSECellCutN; i++)
4952 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
4953 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
4954 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4955 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4956 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
4957 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
4963 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
4965 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4966 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4967 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4968 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
4970 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4971 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4972 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4973 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
4975 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4976 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4977 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4978 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
4982 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4983 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4984 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4985 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
4987 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4988 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4989 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4990 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
4992 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4993 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4994 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4995 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
4998 if(fFillNCellHisto && IsDataMC())
5001 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5002 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
5003 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
5004 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5006 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5007 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
5008 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
5009 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5011 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5012 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5013 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
5014 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5016 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5017 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5018 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
5019 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5021 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5022 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
5023 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
5024 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5026 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5027 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
5028 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
5029 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5031 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5032 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5033 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
5034 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5036 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5037 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5038 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
5039 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5041 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5042 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
5043 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
5044 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5046 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5047 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
5048 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
5049 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5051 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5052 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5053 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
5054 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5056 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5057 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5058 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
5059 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5063 if(IsDataMC() && fFillMCOverlapHisto)
5065 for(Int_t i = 1; i < n; i++)
5067 for(Int_t j = 0; j < 3; j++)
5069 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5070 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5071 nptbins,ptmin,ptmax,10,0,10);
5072 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
5073 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
5074 outputContainer->Add(fhMCENOverlaps[j][i]) ;
5076 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5077 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5078 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5079 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
5080 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
5081 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5083 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5084 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5085 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5086 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
5087 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
5088 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5090 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5091 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5092 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5093 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
5094 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
5095 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5097 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5098 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5099 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5100 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
5101 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
5102 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5104 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5105 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5106 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5107 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
5108 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
5109 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5111 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5112 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5113 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5114 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
5115 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
5116 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5118 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5119 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5120 nptbins,ptmin,ptmax,100,0,1);
5121 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
5122 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
5123 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5125 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5126 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5127 nptbins,ptmin,ptmax,100,0,1);
5128 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
5129 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
5130 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5132 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5133 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5134 nptbins,ptmin,ptmax,100,0,1);
5135 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
5136 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
5137 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5142 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5143 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5144 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5145 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
5146 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
5147 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5149 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5150 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5151 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5152 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
5153 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
5154 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5156 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5157 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5158 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5159 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
5160 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
5161 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5164 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5165 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5166 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5167 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
5168 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
5169 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5171 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5172 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5173 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5174 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
5175 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
5176 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5178 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5179 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5180 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5181 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
5182 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
5183 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5186 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5187 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5188 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5189 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
5190 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
5191 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5193 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5194 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5195 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5196 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
5197 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
5198 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5200 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5201 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5202 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5203 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
5204 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
5205 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5208 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5209 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5210 nptbins,ptmin,ptmax,120,0,1.2);
5211 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5212 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
5213 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5215 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5216 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5217 nptbins,ptmin,ptmax,120,0,1.2);
5218 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5219 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
5220 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5222 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5223 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
5224 nptbins,ptmin,ptmax,120,0,1.2);
5225 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5226 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
5227 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5231 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5232 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5233 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5234 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
5235 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5236 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5238 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5239 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5240 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5241 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
5242 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5243 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5245 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5246 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5247 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5248 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
5249 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5250 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5255 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5256 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
5257 nptbins,ptmin,ptmax,10,0,10);
5258 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
5259 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
5260 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5262 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5263 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5264 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5265 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5266 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
5267 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5269 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5270 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5271 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5272 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
5273 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
5274 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5276 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5277 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5278 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5279 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
5280 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5281 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5283 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5284 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5285 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5286 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
5287 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
5288 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5290 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5291 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5292 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5293 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
5294 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
5295 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5297 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5298 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5299 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5300 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
5301 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5302 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5305 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5306 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5307 nptbins,ptmin,ptmax,100,0,1);
5308 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
5309 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
5310 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5312 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5313 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5314 nptbins,ptmin,ptmax,100,0,1);
5315 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
5316 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
5317 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5319 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5320 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5321 nptbins,ptmin,ptmax,100,0,1);
5322 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
5323 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5324 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5327 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5328 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5329 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5330 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
5331 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
5332 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5334 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5335 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5336 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5337 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
5338 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
5339 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5341 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5342 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5343 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5344 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
5345 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5346 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5348 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5349 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5350 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5351 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
5352 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
5353 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5355 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5356 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5357 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5358 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
5359 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
5360 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5362 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5363 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5364 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5365 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
5366 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
5367 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5370 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5371 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5372 nptbins,ptmin,ptmax,120,0,1.2);
5373 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5374 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
5375 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5377 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5378 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5379 nptbins,ptmin,ptmax,120,0,1.2);
5380 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5381 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
5382 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5384 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5385 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5386 nptbins,ptmin,ptmax,120,0,1.2);
5387 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5388 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5389 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5394 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5395 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5396 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5397 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
5398 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5399 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5401 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5402 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5403 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5404 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
5405 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5406 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5408 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5409 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5410 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5411 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
5412 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5413 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5421 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5422 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5423 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
5424 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
5425 outputContainer->Add(fhMCPi0HighNLMPair) ;
5427 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5428 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5429 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
5430 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
5431 outputContainer->Add(fhMCPi0LowNLMPair) ;
5433 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5434 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5435 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
5436 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
5437 outputContainer->Add(fhMCPi0AnyNLMPair) ;
5439 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5440 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5441 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
5442 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
5443 outputContainer->Add(fhMCPi0NoneNLMPair) ;
5446 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5447 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5448 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
5449 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5450 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5452 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5453 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5454 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
5455 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5456 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5458 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5459 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5460 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
5461 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5462 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5464 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5465 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5466 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
5467 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5468 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5471 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5472 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5473 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
5474 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
5475 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5477 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5478 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5479 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
5480 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
5481 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5483 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5484 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5485 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
5486 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
5487 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5489 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5490 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5491 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
5492 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
5493 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5495 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5496 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5497 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5498 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5499 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5501 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5502 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5503 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5504 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5505 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5507 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5508 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5509 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5510 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5511 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5513 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5514 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5515 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5516 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5517 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5520 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5521 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5522 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
5523 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
5524 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5526 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5527 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5528 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
5529 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
5530 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5532 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5533 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5534 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
5535 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
5536 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5538 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5539 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5540 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
5541 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
5542 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5544 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5545 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5546 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
5547 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
5548 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5550 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5551 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5552 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
5553 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
5554 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5557 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5558 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5559 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
5560 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
5561 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5563 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5564 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5565 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
5566 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
5567 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5569 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5570 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5571 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
5572 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
5573 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5575 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5576 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5577 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
5578 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
5579 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5581 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5582 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5583 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
5584 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
5585 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5587 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5588 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5589 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
5590 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
5591 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5594 for(Int_t nlm = 0; nlm < 3; nlm++)
5596 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5597 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5598 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5599 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5600 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("E (GeV)");
5601 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5603 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5604 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5605 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5606 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5607 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("E (GeV)");
5608 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5610 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5611 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5612 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5613 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5614 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5615 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5617 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5618 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5619 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5620 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5621 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5622 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5624 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5625 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5626 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5627 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5628 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("E (GeV)");
5629 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5631 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5632 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5633 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5634 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5635 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("E (GeV)");
5636 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5639 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5640 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5641 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5642 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5643 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5644 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5646 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5647 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()),
5648 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5649 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5650 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5651 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5653 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5654 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5655 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5656 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5657 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5658 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5660 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5661 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()),
5662 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5663 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5664 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5665 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5667 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5668 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5669 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5670 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5671 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("E (GeV)");
5672 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5674 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5675 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
5676 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5677 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5678 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5679 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5681 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5682 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()),
5683 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5684 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5685 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5686 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5688 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5689 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()),
5690 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5691 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5692 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E pi0 (GeV)");
5693 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5695 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5696 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()),
5697 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5698 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5699 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5700 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5702 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5703 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()),
5704 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5705 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5706 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5707 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5709 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5710 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()),
5711 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5712 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5713 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5714 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5716 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5717 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()),
5718 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5719 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5720 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5721 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5723 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5724 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()),
5725 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5726 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5727 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5728 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5730 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5731 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()),
5732 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5733 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5734 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5735 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5737 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5738 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()),
5739 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5740 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5741 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5742 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5744 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5745 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()),
5746 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5747 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5748 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5749 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5751 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5752 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5753 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5754 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5755 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5756 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5758 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5759 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()),
5760 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5761 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5762 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5763 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5765 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5766 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()),
5767 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5768 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5769 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5770 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5772 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5773 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()),
5774 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5775 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5776 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5777 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5779 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5780 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()),
5781 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5782 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5783 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5784 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5786 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5787 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()),
5788 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5789 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5790 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5791 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5794 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5795 Form("(E_{reco}-E_{gen})/E_{gen} vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5796 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5797 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5798 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5799 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5801 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5802 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()),
5803 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5804 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5805 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E (GeV)");
5806 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5808 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5809 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()),
5810 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5811 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5812 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5813 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5815 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5816 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()),
5817 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5818 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5819 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5820 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5822 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5823 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()),
5824 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5825 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5826 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5827 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
5829 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5830 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()),
5831 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5832 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5833 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5834 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
5836 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5837 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()),
5838 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5839 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5840 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5841 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5843 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5844 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()),
5845 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5846 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5847 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5848 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5850 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5851 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()),
5852 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5853 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5854 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5855 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
5857 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5858 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()),
5859 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5860 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5861 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5862 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
5864 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5865 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5866 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5867 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5868 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5869 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
5871 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5872 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()),
5873 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5874 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5875 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5876 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
5878 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5879 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()),
5880 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5881 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5882 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5883 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
5885 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5886 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()),
5887 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5888 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5889 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5890 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
5892 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5893 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()),
5894 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5895 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5896 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5897 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5899 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5900 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()),
5901 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5902 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5903 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5904 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5908 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
5909 nptbins,ptmin,ptmax,5,0,5);
5910 //fhMCEOverlapType ->SetYTitle("Overlap Type");
5911 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
5912 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5913 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5914 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5915 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
5916 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
5917 outputContainer->Add(fhMCEOverlapType) ;
5919 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
5920 nptbins,ptmin,ptmax,5,0,5);
5921 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
5922 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
5923 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5924 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5925 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5926 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
5927 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
5928 outputContainer->Add(fhMCEOverlapTypeMatch) ;
5930 }// MC analysis, check overlaps
5935 for(Int_t inlm = 0; inlm < 3; inlm++)
5937 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
5938 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0",inlm),
5939 nptbins,ptmin,ptmax,200,-1,1);
5940 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("A_{reco} - A_{gen}");
5941 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("E (GeV)");
5942 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
5944 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
5945 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0Conv",inlm),
5946 nptbins,ptmin,ptmax,200,-1,1);
5947 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("A_{reco} - A_{gen}");
5948 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("E (GeV)");
5949 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
5953 if(fFillArmenterosHisto)
5955 Int_t narmbins = 400;
5957 Float_t armmax = 0.4;
5959 for(Int_t i = 0; i < 7; i++) // MC bin
5961 for(Int_t j = 0; j < 4; j++) // E bin
5963 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
5964 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5965 200, -1, 1, narmbins,armmin,armmax);
5966 fhArmNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5967 fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
5968 outputContainer->Add(fhArmNLocMax1[i][j]) ;
5970 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
5971 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5972 200, -1, 1, narmbins,armmin,armmax);
5973 fhArmNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5974 fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
5975 outputContainer->Add(fhArmNLocMax2[i][j]) ;
5977 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
5978 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5979 200, -1, 1, narmbins,armmin,armmax);
5980 fhArmNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5981 fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
5982 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
5986 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
5987 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5988 200, -1, 1, narmbins,armmin,armmax);
5989 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5990 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
5991 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
5993 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
5994 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5995 200, -1, 1, narmbins,armmin,armmax);
5996 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5997 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
5998 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6000 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6001 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6002 200, -1, 1, narmbins,armmin,armmax);
6003 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
6004 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6005 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6008 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6009 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6010 200, -1, 1, narmbins,armmin,armmax);
6011 fhArmPi0NLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
6012 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6013 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6015 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6016 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6017 200, -1, 1, narmbins,armmin,armmax);
6018 fhArmPi0NLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
6019 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6020 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6022 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6023 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6024 200, -1, 1, narmbins,armmin,armmax);
6025 fhArmPi0NLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
6026 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6027 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6033 return outputContainer ;
6037 //_____________________________________________________________________________
6038 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6039 Int_t & mcindex, Int_t & tag)
6042 // Assign mc index depending on MC bit set, to be used in histograms arrays
6044 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
6046 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6047 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6048 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
6049 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
6050 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6051 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6052 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6053 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6054 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
6056 //printf("MC index %d\n",mcindex);
6060 //____________________________________________________________________________________________
6061 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6062 Int_t mctag, Bool_t matched,
6063 Float_t & eprim, Float_t & asymGen,
6064 Float_t & angleGen, Int_t & noverlaps )
6066 // Check origin of the candidates, get primary kinematics if overlapped meson decay
6069 Int_t mcLabel = cluster->GetLabel();
6071 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6072 eprim = primary.E();
6074 Int_t mesonLabel = -1;
6076 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6078 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6080 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6081 asymGen = TMath::Abs(asymGen);
6082 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6083 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
6087 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6088 asymGen = TMath::Abs(asymGen);
6089 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6090 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
6094 if(!fFillMCOverlapHisto) return;
6096 const UInt_t nlabels = cluster->GetNLabels();
6097 Int_t overpdg[nlabels];
6098 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6100 for(Int_t iover = 0; iover < noverlaps; iover++)
6102 Float_t histobin = -1;
6103 Int_t mpdg = overpdg[iover];
6105 if (mpdg==22) histobin = 0.5;
6106 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6107 else if(mpdg==-999999) histobin = 4.5;
6110 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6111 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6112 else histobin = 3.5;
6113 //printf("charge %f\n",charge);
6116 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6119 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
6120 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6125 //___________________________________________
6126 void AliAnaInsideClusterInvariantMass::Init()
6131 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6133 AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
6135 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6137 AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
6140 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6142 AliFatal("!!STOP: You want to use pure MC data!!\n");
6147 //_____________________________________________________
6148 void AliAnaInsideClusterInvariantMass::InitParameters()
6150 //Initialize the parameters of the analysis.
6151 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6153 fCalorimeter = "EMCAL" ;
6161 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
6162 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
6165 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
6166 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
6171 //__________________________________________________________________
6172 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
6174 //Search for pi0 in fCalorimeter with shower shape analysis
6176 TObjArray * pl = 0x0;
6177 AliVCaloCells* cells = 0x0;
6179 //Select the Calorimeter of the photon
6180 if(fCalorimeter == "PHOS")
6182 pl = GetPHOSClusters();
6183 cells = GetPHOSCells();
6185 else if (fCalorimeter == "EMCAL")
6187 pl = GetEMCALClusters();
6188 cells = GetEMCALCells();
6193 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
6197 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
6199 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6201 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
6203 //-------------------------------------------
6204 // Get cluster parameters, do some rejection
6205 //-------------------------------------------
6207 Float_t en = cluster->E();
6208 Float_t l0 = cluster->GetM02();
6209 Int_t nc = cluster->GetNCells();
6210 Float_t bd = cluster->GetDistanceToBadChannel() ;
6212 //If too small or big E or low number of cells, or close to a bad channel skip it
6214 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6216 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6218 // Track-cluster matching
6220 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6221 if(!fFillTMHisto && matched) continue ;
6223 // Get cluster angles
6226 cluster->GetMomentum(lv, GetVertex(0));
6227 Float_t eta = lv.Eta();
6228 Float_t phi = lv.Phi();
6229 if(phi<0) phi=+TMath::TwoPi();
6231 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
6232 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6234 // Get PID, N local maximum, *** split cluster ***
6237 Double_t mass = 0., angle = 0.;
6238 TLorentzVector lv1, lv2;
6239 Int_t absId1 =-1; Int_t absId2 =-1;
6240 Float_t distbad1 =-1; Float_t distbad2 =-1;
6241 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
6243 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6244 GetVertex(0), nMax, mass, angle,
6245 lv1,lv2,absId1,absId2,
6246 distbad1,distbad2,fidcut1,fidcut2);
6250 Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6255 // Set some index for array histograms
6258 if (nMax == 1) inlm = 0;
6259 else if(nMax == 2) inlm = 1;
6260 else if(nMax > 2) inlm = 2;
6261 else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6263 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6264 if( (fCheckSplitDistToBad) &&
6265 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6268 Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6269 distbad1,distbad2, fidcut1,fidcut2);
6271 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6273 fhMassBadDistClose[inlm]->Fill(en,mass);
6274 fhM02BadDistClose [inlm]->Fill(en,l0 );
6277 if(!fidcut1 || !fidcut2)
6279 fhMassOnBorder[inlm]->Fill(en,mass);
6280 fhM02OnBorder [inlm]->Fill(en,l0 );
6286 // Get sub-cluster parameters
6288 Float_t e1 = lv1.Energy();
6289 Float_t e2 = lv2.Energy();
6291 Double_t tof1 = cells->GetCellTime(absId1);
6292 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6295 Double_t tof2 = cells->GetCellTime(absId2);
6296 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6299 Double_t t12diff = tof1-tof2;
6301 Float_t splitFrac = (e1+e2)/en;
6304 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6309 if(en > 8 && en <= 12) ebin = 0;
6310 if(en > 12 && en <= 16) ebin = 1;
6311 if(en > 16 && en <= 20) ebin = 2;
6312 if(en > 20) ebin = 3;
6314 // MC data histograms and some related calculations
6315 // mc tag, n overlaps, asym of generated mesons
6320 Float_t asymGen = -2;
6321 Float_t angleGen = 2000;
6322 Int_t noverlaps = 0;
6328 GetMCIndex(cluster,mcindex,mctag);
6330 // MC primary kine, generation fractions
6332 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6334 // For cluster with MC pi0 and more than 1 maxima
6340 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6345 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6349 if(fFillSSExtraHisto)
6350 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
6354 if(!matched && ebin >= 0 && fFillEbinHisto)
6355 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6360 FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6362 if(fFillArmenterosHisto && ebin >= 0)
6363 FillArmenterosHistograms(nMax, ebin, mcindex, en, lv1, lv2, l0, pidTag);
6365 if(fFillThetaStarHisto)
6366 FillThetaStarHistograms(nMax,matched,mcindex, en, lv1, lv2, l0, pidTag);
6369 //---------------------------------------------------------------------
6370 // From here start applying some cuts
6371 //---------------------------------------------------------------------
6373 // If set, check just on MC clusters when SS cut is applied
6374 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6376 // For cluster with MC pi0 and more than 1 maxima
6378 if(fFillMCOverlapHisto)
6379 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6385 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6386 nMax,matched,splitFrac, asym, eprim,asymGen);
6390 if(fFillMCOverlapHisto)
6391 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6395 // Fill few histograms, some still without cuts
6396 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6398 if(pidTag==AliCaloPID::kPi0)
6400 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6402 if(fFillSSWeightHisto)
6403 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6405 if(fFillTMHisto && fFillTMResidualHisto)
6406 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6408 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6410 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6411 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6412 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6415 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6417 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6419 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6421 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6426 if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6430 //______________________________________________________________________
6431 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6433 //Print some relevant parameters set for the analysis
6437 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6438 AliAnaCaloTrackCorrBaseClass::Print("");
6439 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
6440 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6441 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
6442 printf("Min. N Cells =%d \n", fMinNCells) ;
6443 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6444 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6450 //___________________________________________________________________________________________________________________
6451 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6452 AliVCaloCells* cells,
6453 AliVCluster * cluster,
6454 Float_t & l0, Float_t & l1,
6455 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6456 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6459 // Calculates new center of gravity in the local EMCAL-module coordinates
6460 // and tranfers into global ALICE coordinates
6461 // Calculates Dispersion and main axis
6465 AliInfo("Cluster pointer null!");
6469 Double_t eCell = 0.;
6470 Float_t fraction = 1.;
6471 Float_t recalFactor = 1.;
6479 Double_t etai = -1.;
6480 Double_t phii = -1.;
6485 Double_t etaMean = 0.;
6486 Double_t phiMean = 0.;
6488 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
6489 // and to check if the cluster is between 2 SM in eta
6491 Bool_t shared = kFALSE;
6494 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6496 //Get from the absid the supermodule, tower and eta/phi numbers
6497 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6498 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6500 //Check if there are cells of different SM
6501 if (iDigit == 0 ) iSM0 = iSupMod;
6502 else if(iSupMod!= iSM0) shared = kTRUE;
6504 //Get the cell energy, if recalibration is on, apply factors
6505 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6506 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6508 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6510 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6513 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6515 if(eCell > eCellMin) energy += eCell;
6519 //Loop on cells, get weighted parameters
6520 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6522 //Get from the absid the supermodule, tower and eta/phi numbers
6523 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6524 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6526 //Get the cell energy, if recalibration is on, apply factors
6527 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6528 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6530 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6532 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6535 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6537 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6538 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6539 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6541 if(energy > 0 && eCell > eCellMin)
6543 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6545 //correct weight, ONLY in simulation
6546 w *= (1 - fWSimu * w );
6548 etai=(Double_t)ieta;
6549 phii=(Double_t)iphi;
6556 sEta += w * etai * etai ;
6557 etaMean += w * etai ;
6558 sPhi += w * phii * phii ;
6559 phiMean += w * phii ;
6560 sEtaPhi += w * etai * phii ;
6563 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6567 //Normalize to the weight
6574 AliError(Form("Wrong weight %f\n", wtot));
6576 //Calculate dispersion
6577 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6579 //Get from the absid the supermodule, tower and eta/phi numbers
6580 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6581 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6583 //Get the cell energy, if recalibration is on, apply factors
6584 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6585 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6586 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6588 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6591 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6593 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6594 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6595 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6597 if(energy > 0 && eCell > eCellMin)
6599 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6601 //correct weight, ONLY in simulation
6602 w *= (1 - fWSimu * w );
6604 etai=(Double_t)ieta;
6605 phii=(Double_t)iphi;
6608 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6609 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6610 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6613 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6616 //Normalize to the weigth and set shower shape parameters
6617 if (wtot > 0 && nstat > 1)
6626 sEta -= etaMean * etaMean ;
6627 sPhi -= phiMean * phiMean ;
6628 sEtaPhi -= etaMean * phiMean ;
6630 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6631 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6637 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6638 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;