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 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
69 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
70 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
71 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
72 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
73 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
74 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
75 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
76 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
77 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
78 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
79 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
80 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
81 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
82 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
83 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
84 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
85 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
86 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
87 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
88 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
89 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
90 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
91 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
92 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
93 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
94 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
95 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
96 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
97 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
98 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
99 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
100 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
101 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
102 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
103 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
104 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
108 // Init array of histograms
109 for(Int_t i = 0; i < 7; i++)
111 for(Int_t j = 0; j < 2; j++)
113 fhMassNLocMax1[i][j] = 0;
114 fhMassNLocMax2[i][j] = 0;
115 fhMassNLocMaxN[i][j] = 0;
117 fhNLocMaxM02Cut[i][j] = 0;
118 fhSplitClusterENLocMax [i][j] = 0;
119 fhSplitClusterEPi0NLocMax[i][j] = 0;
120 fhM02NLocMax1[i][j] = 0;
121 fhM02NLocMax2[i][j] = 0;
122 fhM02NLocMaxN[i][j] = 0;
123 fhNCellNLocMax1[i][j] = 0;
124 fhNCellNLocMax2[i][j] = 0;
125 fhNCellNLocMaxN[i][j] = 0;
126 fhM02Pi0NLocMax1[i][j] = 0;
127 fhM02EtaNLocMax1[i][j] = 0;
128 fhM02ConNLocMax1[i][j] = 0;
129 fhM02Pi0NLocMax2[i][j] = 0;
130 fhM02EtaNLocMax2[i][j] = 0;
131 fhM02ConNLocMax2[i][j] = 0;
132 fhM02Pi0NLocMaxN[i][j] = 0;
133 fhM02EtaNLocMaxN[i][j] = 0;
134 fhM02ConNLocMaxN[i][j] = 0;
136 fhMassPi0NLocMax1[i][j] = 0;
137 fhMassEtaNLocMax1[i][j] = 0;
138 fhMassConNLocMax1[i][j] = 0;
139 fhMassPi0NLocMax2[i][j] = 0;
140 fhMassEtaNLocMax2[i][j] = 0;
141 fhMassConNLocMax2[i][j] = 0;
142 fhMassPi0NLocMaxN[i][j] = 0;
143 fhMassEtaNLocMaxN[i][j] = 0;
144 fhMassConNLocMaxN[i][j] = 0;
146 fhNCellPi0NLocMax1[i][j] = 0;
147 fhNCellEtaNLocMax1[i][j] = 0;
148 fhNCellPi0NLocMax2[i][j] = 0;
149 fhNCellEtaNLocMax2[i][j] = 0;
150 fhNCellPi0NLocMaxN[i][j] = 0;
151 fhNCellEtaNLocMaxN[i][j] = 0;
153 fhAsyPi0NLocMax1[i][j] = 0;
154 fhAsyEtaNLocMax1[i][j] = 0;
155 fhAsyConNLocMax1[i][j] = 0;
156 fhAsyPi0NLocMax2[i][j] = 0;
157 fhAsyEtaNLocMax2[i][j] = 0;
158 fhAsyConNLocMax2[i][j] = 0;
159 fhAsyPi0NLocMaxN[i][j] = 0;
160 fhAsyEtaNLocMaxN[i][j] = 0;
161 fhAsyConNLocMaxN[i][j] = 0;
163 fhMassM02NLocMax1[i][j]= 0;
164 fhMassM02NLocMax2[i][j]= 0;
165 fhMassM02NLocMaxN[i][j]= 0;
166 fhMassDispEtaNLocMax1[i][j]= 0;
167 fhMassDispEtaNLocMax2[i][j]= 0;
168 fhMassDispEtaNLocMaxN[i][j]= 0;
169 fhMassDispPhiNLocMax1[i][j]= 0;
170 fhMassDispPhiNLocMax2[i][j]= 0;
171 fhMassDispPhiNLocMaxN[i][j]= 0;
172 fhMassDispAsyNLocMax1[i][j]= 0;
173 fhMassDispAsyNLocMax2[i][j]= 0;
174 fhMassDispAsyNLocMaxN[i][j]= 0;
176 fhSplitEFractionNLocMax1[i][j]=0;
177 fhSplitEFractionNLocMax2[i][j]=0;
178 fhSplitEFractionNLocMaxN[i][j]=0;
180 fhAnglePairNLocMax1 [i][j] = 0;
181 fhAnglePairNLocMax2 [i][j] = 0;
182 fhAnglePairNLocMaxN [i][j] = 0;
184 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
185 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
186 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
188 fhAnglePairPi0NLocMax1 [i][j] = 0;
189 fhAnglePairPi0NLocMax2 [i][j] = 0;
190 fhAnglePairPi0NLocMaxN [i][j] = 0;
192 fhAnglePairMassNLocMax1 [i][j] = 0;
193 fhAnglePairMassNLocMax2 [i][j] = 0;
194 fhAnglePairMassNLocMaxN [i][j] = 0;
196 fhAnglePairM02NLocMax1 [i][j] = 0;
197 fhAnglePairM02NLocMax2 [i][j] = 0;
198 fhAnglePairM02NLocMaxN [i][j] = 0;
200 fhCosThStarNLocMax1 [i][j] = 0;
201 fhCosThStarNLocMax2 [i][j] = 0;
202 fhCosThStarNLocMaxN [i][j] = 0;
204 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
205 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
206 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
208 fhCosThStarPi0NLocMax1 [i][j] = 0;
209 fhCosThStarPi0NLocMax2 [i][j] = 0;
210 fhCosThStarPi0NLocMaxN [i][j] = 0;
212 fhMCGenFracNLocMax1[i][j]= 0;
213 fhMCGenFracNLocMax2[i][j]= 0;
214 fhMCGenFracNLocMaxN[i][j]= 0;
216 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
217 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
218 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
220 fhMCGenSplitEFracNLocMax1[i][j]= 0;
221 fhMCGenSplitEFracNLocMax2[i][j]= 0;
222 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
224 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
225 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
226 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
228 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
229 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
230 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
232 fhMCGenEvsSplitENLocMax1[i][j]= 0;
233 fhMCGenEvsSplitENLocMax2[i][j]= 0;
234 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
236 fhAsymNLocMax1 [i][j] = 0;
237 fhAsymNLocMax2 [i][j] = 0;
238 fhAsymNLocMaxN [i][j] = 0;
240 fhMassAfterCutsNLocMax1[i][j] = 0;
241 fhMassAfterCutsNLocMax2[i][j] = 0;
242 fhMassAfterCutsNLocMaxN[i][j] = 0;
245 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
246 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
247 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
250 for(Int_t jj = 0; jj < 4; jj++)
252 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
253 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
254 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
256 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
257 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
258 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
260 fhMCGenFracNLocMaxEbin[i][jj] = 0;
261 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
263 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
264 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
265 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
268 fhTrackMatchedDEtaNLocMax1[i] = 0;
269 fhTrackMatchedDPhiNLocMax1[i] = 0;
270 fhTrackMatchedDEtaNLocMax2[i] = 0;
271 fhTrackMatchedDPhiNLocMax2[i] = 0;
272 fhTrackMatchedDEtaNLocMaxN[i] = 0;
273 fhTrackMatchedDPhiNLocMaxN[i] = 0;
275 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
276 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
277 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
278 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
279 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
280 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
282 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
283 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
284 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
285 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
286 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
287 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
289 for(Int_t nlm = 0; nlm < 3; nlm++)
291 fhMCEM02Overlap0 [nlm][i] = 0;
292 fhMCEM02Overlap1 [nlm][i] = 0;
293 fhMCEM02OverlapN [nlm][i] = 0;
294 fhMCEM02Overlap0Match[nlm][i] = 0;
295 fhMCEM02Overlap1Match[nlm][i] = 0;
296 fhMCEM02OverlapNMatch[nlm][i] = 0;
298 fhMCEMassOverlap0 [nlm][i] = 0;
299 fhMCEMassOverlap1 [nlm][i] = 0;
300 fhMCEMassOverlapN [nlm][i] = 0;
301 fhMCEMassOverlap0Match[nlm][i] = 0;
302 fhMCEMassOverlap1Match[nlm][i] = 0;
303 fhMCEMassOverlapNMatch[nlm][i] = 0;
305 fhMCEAsymOverlap0 [nlm][i] = 0;
306 fhMCEAsymOverlap1 [nlm][i] = 0;
307 fhMCEAsymOverlapN [nlm][i] = 0;
308 fhMCEAsymOverlap0Match[nlm][i] = 0;
309 fhMCEAsymOverlap1Match[nlm][i] = 0;
310 fhMCEAsymOverlapNMatch[nlm][i] = 0;
312 fhMCENCellOverlap0 [nlm][i] = 0;
313 fhMCENCellOverlap1 [nlm][i] = 0;
314 fhMCENCellOverlapN [nlm][i] = 0;
315 fhMCENCellOverlap0Match[nlm][i] = 0;
316 fhMCENCellOverlap1Match[nlm][i] = 0;
317 fhMCENCellOverlapNMatch[nlm][i] = 0;
319 fhMCEEpriOverlap0 [nlm][i] = 0;
320 fhMCEEpriOverlap1 [nlm][i] = 0;
321 fhMCEEpriOverlapN [nlm][i] = 0;
322 fhMCEEpriOverlap0Match[nlm][i] = 0;
323 fhMCEEpriOverlap1Match[nlm][i] = 0;
324 fhMCEEpriOverlapNMatch[nlm][i] = 0;
326 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
327 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
328 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
330 fhMCESplitEFracOverlap0 [nlm][i] = 0;
331 fhMCESplitEFracOverlap1 [nlm][i] = 0;
332 fhMCESplitEFracOverlapN [nlm][i] = 0;
333 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
334 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
335 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
337 fhMCENOverlaps [nlm][i] = 0;
338 fhMCENOverlapsMatch [nlm][i] = 0;
342 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
343 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
344 fhMCPi0MassM02OverlapN [nlm][i] = 0;
345 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
346 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
347 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
351 for(Int_t i = 0; i < 2; i++)
353 fhSplitEFractionvsAsyNLocMax1[i] = 0;
354 fhSplitEFractionvsAsyNLocMax2[i] = 0;
355 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
358 for(Int_t i = 0; i < 4; i++)
360 fhMassM02NLocMax1Ebin[i] = 0 ;
361 fhMassM02NLocMax2Ebin[i] = 0 ;
362 fhMassM02NLocMaxNEbin[i] = 0 ;
364 fhMassAsyNLocMax1Ebin[i] = 0 ;
365 fhMassAsyNLocMax2Ebin[i] = 0 ;
366 fhMassAsyNLocMaxNEbin[i] = 0 ;
368 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
369 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
370 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
372 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
373 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
374 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
376 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
377 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
378 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
380 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
381 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
382 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
384 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
385 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
386 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
389 for(Int_t nlm = 0; nlm < 3; nlm++)
392 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
393 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
394 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
395 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
397 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
398 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
399 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
400 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
402 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
403 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
404 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
405 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
407 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
408 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
409 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
410 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
412 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
413 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
414 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
415 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
417 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
418 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
419 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
420 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
422 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
423 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
424 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
425 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
427 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
428 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
429 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
430 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
432 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
433 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
434 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
435 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
436 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
437 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
439 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
440 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
441 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
442 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
443 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
444 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
446 fhPi0CellE [nlm] = 0 ;
447 fhPi0CellEFrac [nlm] = 0 ;
448 fhPi0CellLogEFrac[nlm] = 0 ;
450 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
451 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
452 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
454 fhPi0CellEMaxFrac [nlm] = 0 ;
455 fhPi0CellEMax2Frac[nlm] = 0 ;
457 for(Int_t i = 0; i < 10; i++)
459 fhM02WeightPi0 [nlm][i] = 0;
460 fhM02ECellCutPi0[nlm][i] = 0;
463 fhMassBadDistClose[nlm] = 0;
464 fhM02BadDistClose [nlm] = 0;
465 fhMassOnBorder [nlm] = 0;
466 fhM02OnBorder [nlm] = 0;
468 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
469 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
473 for(Int_t i = 0; i < 7; i++)
475 for(Int_t j = 0; j < 4; j++)
478 fhArmNLocMax1[i][j] = 0;
479 fhArmNLocMax2[i][j] = 0;
480 fhArmNLocMaxN[i][j] = 0;
482 fhArmPi0NLocMax1[i][j] = 0;
483 fhArmPi0NLocMax2[i][j] = 0;
484 fhArmPi0NLocMaxN[i][j] = 0;
486 fhArmAfterCutsNLocMax1[i][j] = 0;
487 fhArmAfterCutsNLocMax2[i][j] = 0;
488 fhArmAfterCutsNLocMaxN[i][j] = 0;
497 //_______________________________________________________________________________________________________
498 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,const Int_t mcindex, const Int_t noverlaps,
499 const Float_t e1, const Float_t e2, const Float_t mass)
501 //TLorentzVector l1, TLorentzVector l2)
503 // Check origin NLM tower of the cluster, when MC gives merged pi0
505 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
507 const UInt_t nc = cluster->GetNCells();
510 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
515 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
516 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
518 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
520 // 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",
521 // nMax, noverlaps,mass,m02,
522 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
523 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
525 // // Study the mothers of cluster
526 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
527 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
529 // Int_t mclabel = cluster->GetLabels()[ilab];
532 // Int_t mpdg = -999999;
533 // Int_t mstatus = -1;
534 // Int_t grandLabel = -1;
535 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
537 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
538 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
540 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
542 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
544 // Int_t newLabel = -1;
545 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
546 // 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",
547 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
548 // grandLabel = newLabel;
554 // printf("Cells in cluster %d\n",cluster->GetNCells() );
555 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
557 // Int_t absIdCell = cluster->GetCellAbsId(icell);
558 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
559 // GetReader()->RemapMCLabelForAODs(mcLabel);
560 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
561 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
563 // 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);
569 //If only one maxima, consider all the towers in the cluster
572 for (UInt_t icell = 0; icell < nc; icell++ )
574 list [icell] = cluster->GetCellAbsId(icell);
575 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
579 Int_t nmaxima = nMax;
580 if(nMax==1) nmaxima = nc ;
582 //Find highest energy Local Maxima Towers
587 for(Int_t i = 0; i < nmaxima; i++)
589 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
596 //Find second highest
597 for(Int_t i = 0; i < nmaxima; i++)
599 if(i==imax) continue;
601 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
611 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
612 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
614 //---------------------------------------------------------
615 //---------------------------------------------------------
616 // Compare ancestors of all local maxima at cell MC level
617 //---------------------------------------------------------
618 //---------------------------------------------------------
620 // Check that the highest mc label and the max cluster label are the same
621 Int_t mcLabelMax = -1 ;
624 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
625 GetReader()->RemapMCLabelForAODs(mcLabelMax);
628 Int_t mcLabelMax2 = -1 ;
631 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
632 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
635 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
636 Bool_t matchHighLMAndHighMC = kFALSE;
638 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
640 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
642 matchHighLMAndHighMC = kTRUE;
643 //printf("\t *** MATCH cluster and LM maximum ***\n");
647 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
648 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
650 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
651 matchHighLMAndHighMC = kTRUE;
655 //printf("\t \t *** NO MATCH***\n");
656 matchHighLMAndHighMC = kFALSE;
660 // Compare the common ancestors of the 2 highest energy local maxima
661 Int_t ancPDG = 0, ancStatus = -1;
662 TLorentzVector momentum; TVector3 prodVertex;
664 Bool_t high = kFALSE;
667 // // print maxima origin
668 // for(Int_t i = 0; i < nMax; i++)
670 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
671 // GetReader()->RemapMCLabelForAODs(mcLabel1);
673 // Bool_t ok =kFALSE,gok = kFALSE;
674 // Int_t pdg = -22222, status = -1;
675 // Int_t gpdg = -22222, gstatus = -1;
676 // Int_t ggpdg = -22222, ggstatus = -1;
677 // Int_t gLabel = -1, ggLabel = -1;
678 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
679 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
680 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
681 // 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",
682 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
685 for(Int_t i = 0; i < nmaxima-1; i++)
687 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
688 GetReader()->RemapMCLabelForAODs(mcLabel1);
690 for(Int_t j = i+1; j < nmaxima; j++)
692 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
693 GetReader()->RemapMCLabelForAODs(mcLabel2);
695 if(mcLabel1 < 0 || mcLabel2 < 0 )
697 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
701 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
702 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
705 if((i==imax && j==imax2) || (j==imax && i==imax2))
710 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
712 // If both bits are set, it could be that one of the maxima had a conversion
713 // reset the bit in this case
716 //printf("\t Reset low bit\n");
722 Int_t pdg = -22222, status = -1;
723 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
724 //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);
729 Float_t en = cluster->E();
731 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
732 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
736 if(matchHighLMAndHighMC)
738 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
739 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
740 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
741 else fhMCPi0NoneNLMPair->Fill(en,nMax);
745 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
746 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
747 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
748 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
753 if(matchHighLMAndHighMC)
755 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
756 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
757 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
758 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
762 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
763 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
764 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
765 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
769 //----------------------------------------------------------------------
770 //----------------------------------------------------------------------
771 // Compare MC decay photon projection to cell location and Local Maxima
772 //----------------------------------------------------------------------
773 //----------------------------------------------------------------------
775 // Get the mother pi0
778 Int_t pdg = -22222, status = -1;
781 Int_t label = cluster->GetLabel();
782 TLorentzVector pi0Kine;
784 while( pdg!=111 && label>=0 )
786 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
789 if(pdg!=111 || label < 0)
791 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
795 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
799 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
803 // Get daughter photon kinematics
804 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
805 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
806 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
807 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
809 if(pdg1!=22 || pdg0 != 22)
811 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
815 // In what cells did the photons hit
816 Float_t eta0 = photon0Kine.Eta();
817 Float_t eta1 = photon1Kine.Eta();
819 Float_t phi0 = photon0Kine.Phi();
820 Float_t phi1 = photon1Kine.Phi();
822 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
824 // 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",
825 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
826 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
827 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
829 // TLorentzVector momclus;
830 // cluster->GetMomentum(momclus,GetVertex(0));
831 // 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());
834 if(phi0 < 0 ) phi0+=TMath::TwoPi();
835 if(phi1 < 0 ) phi1+=TMath::TwoPi();
837 Int_t absId0=-1, absId1=-1;
838 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
839 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
841 if(absId1 < 0 || absId1 < 0)
843 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
847 //-----------------------------------------------
848 // Check that the 2 photons hit the Local Maxima
849 //-----------------------------------------------
852 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
854 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
855 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
857 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
858 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
859 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
860 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
862 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
863 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
865 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
866 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
867 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
868 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
870 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
871 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
875 if(inlm > 2) inlm = 2;
877 Bool_t match0 = kFALSE;
878 Bool_t match1 = kFALSE;
881 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
883 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
884 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
886 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
887 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
890 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
892 // If one or the 2 not matched, check with the other MC labels
893 // only in case there was a conversion
895 Int_t absId0second = -1;
896 Int_t absId1second = -1;
897 Int_t secLabel0 = -1;
898 Int_t secLabel1 = -1;
902 Int_t secpdg = -999999;
903 Int_t secstatus = -1;
904 Int_t secgrandLabel = -1;
906 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
907 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
909 if((!match0 || !match1) && mcindex == kmcPi0Conv)
911 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
913 Int_t mclabel = cluster->GetLabels()[ilab];
915 //printf("Check label %d - %d\n",ilab,mclabel);
917 if(mclabel == label0 || mclabel == label1)
919 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
920 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
921 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
925 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
927 // match mc label and parent photon
928 Int_t tmplabel = mclabel;
929 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
931 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
933 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
935 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
937 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
938 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
939 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
942 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
944 tmplabel = secgrandLabel;
948 // Get the position of the found secondaries mother
949 if(!match0 && secLabel0 > 0)
951 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
953 //Float_t eta = mother.Eta();
954 //Float_t phi = mother.Phi();
955 //if(phi < 0 ) phi+=TMath::TwoPi();
956 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
958 //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());
960 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
961 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
964 if(!match1 && secLabel1 > 0)
966 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
968 //Float_t eta = mother.Eta();
969 //Float_t phi = mother.Phi();
970 //if(phi < 0 ) phi+=TMath::TwoPi();
971 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
973 //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());
975 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
976 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
979 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
983 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
984 if( match0 && match1 )
986 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
987 // printf("a) Both Photons hit local maxima \n");
991 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
992 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
993 if(match0 && imatch0 == imax)
995 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
996 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
997 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
998 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1002 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1003 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1004 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1005 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1010 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1011 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1012 if(match0 && imatch0 == imax )
1014 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1015 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1016 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1017 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1021 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1022 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1023 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1024 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1032 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1033 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1035 //---------------------------------------------
1036 // Check the adjacent cells to the local maxima
1037 //---------------------------------------------
1041 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
1042 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1043 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1044 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1049 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
1050 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1052 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1053 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1056 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1058 if(match0 && match1)
1060 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1061 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1065 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1066 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1068 if(match0 && imatch0 == imax)
1070 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1071 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1072 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1073 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1077 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1078 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1079 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1080 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1085 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1086 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1087 if(match0 && imatch0 == imax)
1089 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1090 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1091 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1092 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1096 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1097 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1098 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1099 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1106 // Decay photon cells are adjacent?
1108 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1110 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1111 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1114 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1115 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1119 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1120 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1126 //--------------------
1127 // Other Local maxima
1128 //--------------------
1130 Bool_t matchMCHitOtherLM = kFALSE;
1133 for(Int_t i = 0; i < nmaxima; i++)
1135 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1141 for(Int_t i = 0; i < nmaxima; i++)
1143 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1147 if(matchMCHitOtherLM)
1149 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1150 // printf("d) One Photon hits a local maxima, the other another not high \n");
1154 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1155 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1156 if(match0 && imatch0 == imax)
1158 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1159 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1163 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1164 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1169 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1170 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1171 if(match0 && imatch0 == imax)
1173 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1174 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1178 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1179 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1186 // Adjacent to other maxima
1188 Bool_t adjacentOther1 = kFALSE;
1191 for(Int_t i = 0; i < nmaxima; i++)
1193 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1194 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1196 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1198 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1200 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1204 Bool_t adjacentOther0 = kFALSE;
1207 for(Int_t i = 0; i < nmaxima; i++)
1209 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1210 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1212 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1214 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1216 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1220 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1223 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1224 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1228 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1229 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1230 if(match0 && imatch0 == imax)
1232 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1233 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1237 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1238 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1243 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1244 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1245 if(match0 && imatch0 == imax)
1247 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1248 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1252 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1253 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1260 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1261 // printf("f) No hit found \n");
1264 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1265 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1269 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1270 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1275 //_____________________________________________________________________________________________________________________
1276 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched, const Int_t mcIndex,
1277 const Float_t en, const Float_t angle, const Float_t mass,
1278 const Float_t anglePrim, const Float_t m02,
1279 const Float_t asym, const Int_t pid)
1281 // Fill histograms related to opening angle
1283 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1284 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1285 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1286 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1290 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1292 if((m02OK && asyOK) && (asyOn || m02On))
1293 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1294 if(pid==AliCaloPID::kPi0)
1295 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1299 fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1300 fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1305 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1307 if((m02OK && asyOK) && (asyOn || m02On))
1308 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1309 if(pid==AliCaloPID::kPi0)
1310 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1312 if( en > fHistoECut )
1314 fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1315 fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1320 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1322 if((m02OK && asyOK) && (asyOn || m02On))
1323 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1324 if(pid==AliCaloPID::kPi0)
1325 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1327 if( en > fHistoECut )
1329 fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1330 fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1334 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1338 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1341 fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1342 fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1344 if((m02OK && asyOK) && (asyOn || m02On))
1345 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1346 if(pid==AliCaloPID::kPi0)
1347 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1349 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1351 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1352 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1358 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1359 if( en > fHistoECut )
1361 fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1362 fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1365 if((m02OK && asyOK) && (asyOn || m02On))
1366 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1367 if(pid==AliCaloPID::kPi0)
1368 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1370 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1372 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1373 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1378 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1379 if( en > fHistoECut )
1381 fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1382 fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1384 if((m02OK && asyOK) && (asyOn || m02On))
1385 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1386 if(pid==AliCaloPID::kPi0)
1387 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1389 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1391 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1392 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1400 //______________________________________________________________________________________________________________________
1401 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(const Int_t nMax, const Int_t ebin, const Int_t mcIndex,
1402 const Float_t en, TLorentzVector g1, TLorentzVector g2,
1403 const Float_t m02, const Int_t pid)
1405 // Fill Armeteros type histograms
1407 // Get pTArm and AlphaArm
1408 TLorentzVector pi0 = g1+g2;
1409 Float_t momentumSquaredMother = pi0.P()*pi0.P();
1410 Float_t momentumDaughter1AlongMother = 0.;
1411 Float_t momentumDaughter2AlongMother = 0.;
1413 if (momentumSquaredMother > 0.)
1415 momentumDaughter1AlongMother = (g1.Px()*pi0.Px() + g1.Py()*pi0.Py()+ g1.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1416 momentumDaughter2AlongMother = (g2.Px()*pi0.Px() + g2.Py()*pi0.Py()+ g2.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1419 Float_t momentumSquaredDaughter1 = g1.P()*g1.P();
1420 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1423 if (ptArmSquared > 0.)
1424 pTArm = sqrt(ptArmSquared);
1426 Float_t alphaArm = 0.;
1427 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1428 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1430 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1432 if(GetDebug() > 2 ) printf("AliAnaInsideClusterInvariantMass::FillArmenterosHistograms() - E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1434 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1435 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1436 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1437 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1441 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1442 if((m02OK && asyOK) && (asyOn || m02On))
1443 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1444 if(pid==AliCaloPID::kPi0)
1445 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1449 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1450 if((m02OK && asyOK) && (asyOn || m02On))
1451 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1452 if(pid==AliCaloPID::kPi0)
1453 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1457 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1458 if((m02OK && asyOK) && (asyOn || m02On))
1459 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1460 if(pid==AliCaloPID::kPi0)
1461 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1464 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1468 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1469 if((m02OK && asyOK) && (asyOn || m02On))
1470 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1471 if(pid==AliCaloPID::kPi0)
1472 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1476 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1477 if((m02OK && asyOK) && (asyOn || m02On))
1478 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1479 if(pid==AliCaloPID::kPi0)
1480 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1484 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1485 if((m02OK && asyOK) && (asyOn || m02On))
1486 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1487 if(pid==AliCaloPID::kPi0)
1488 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1495 //______________________________________________________________________________________________________________________
1496 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(const Int_t nMax, const Bool_t matched, const Int_t mcIndex,
1497 const Float_t en, TLorentzVector g1, TLorentzVector g2,
1498 const Float_t m02, const Int_t pid)
1500 // Fill cos Theta^star histograms
1503 // Get cos Theta^star
1504 TLorentzVector pi0 = g1+g2;
1505 TLorentzVector g1Boost = g1;
1506 g1Boost.Boost(-pi0.BoostVector());
1507 Float_t cosThStar=TMath::Cos(g1Boost.Vect().Angle(pi0.Vect()));
1509 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1511 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1512 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1513 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1514 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1516 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1520 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1522 if((m02OK && asyOK) && (asyOn || m02On))
1523 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1524 if(pid==AliCaloPID::kPi0)
1525 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1529 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1531 if((m02OK && asyOK) && (asyOn || m02On))
1532 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1533 if(pid==AliCaloPID::kPi0)
1534 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1538 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1540 if((m02OK && asyOK) && (asyOn || m02On))
1541 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1542 if(pid==AliCaloPID::kPi0)
1543 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1546 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1550 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1552 if((m02OK && asyOK) && (asyOn || m02On))
1553 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1554 if(pid==AliCaloPID::kPi0)
1555 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1559 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1561 if((m02OK && asyOK) && (asyOn || m02On))
1562 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1563 if(pid==AliCaloPID::kPi0)
1564 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1568 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1570 if((m02OK && asyOK) && (asyOn || m02On))
1571 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1572 if(pid==AliCaloPID::kPi0)
1573 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1580 //__________________________________________________________________________________________________________________________________________
1581 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1582 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1584 // Fill some histograms integrating in few energy bins
1588 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1589 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1591 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1592 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1596 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1597 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1599 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1600 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1604 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1605 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1607 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1608 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1613 //________________________________________________________________________________________________________________________
1614 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1615 const Int_t nMax, const Float_t mass, const Float_t l0,
1616 const Float_t eta, const Float_t phi,
1617 const Bool_t matched, const Int_t mcindex)
1619 // Fill histograms for clusters before any selection after spliting
1621 Float_t splitFrac = (e1+e2)/en;
1624 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1626 fhNLocMax [0][matched]->Fill(en,nMax);
1627 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1628 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1629 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1630 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1632 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1634 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1635 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1636 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1637 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1638 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1643 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1644 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1646 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1648 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1649 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1654 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1655 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1657 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1658 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1661 else if( nMax == 2 )
1663 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1664 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1666 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1668 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1669 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1674 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1675 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1677 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1678 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1681 else if( nMax >= 3 )
1683 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1684 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1686 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1688 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1689 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1695 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1696 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1698 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1699 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1706 //________________________________________________________________________________________________________________________
1707 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1708 const Float_t e1, const Float_t e2,
1709 const Int_t nMax, const Float_t mass, const Float_t l0,
1710 const Bool_t matched, const Int_t mcindex)
1712 // Fill histograms for clusters passing the first M02 selection
1714 Float_t efrac = eprim/en;
1715 Float_t efracSplit = 0;
1716 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1718 Float_t splitFrac = (e1+e2)/en;
1721 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1723 Int_t inlm = nMax-1;
1724 if(inlm > 2) inlm = 2;
1725 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1727 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1728 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1729 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1730 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1732 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1736 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1737 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1738 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1739 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1741 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1742 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1743 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1749 fhMassNLocMax1[0][matched]->Fill(en,mass );
1750 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1752 // Effect of cuts in mass histograms
1754 if(!matched && asyOK && asyOn )
1756 fhMassAsyCutNLocMax1->Fill(en,mass);
1757 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1760 if(!matched && m02OK && m02On )
1762 fhMassM02CutNLocMax1->Fill(en,mass);
1763 fhAsymM02CutNLocMax1->Fill(en,asym );
1764 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1767 if((m02OK && asyOK) && (asyOn || m02On))
1769 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1770 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1772 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1774 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1775 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1781 fhMassNLocMax2[0][matched]->Fill(en,mass );
1782 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1784 // Effect of cuts in mass histograms
1786 if(!matched && asyOK && asyOn )
1788 fhMassAsyCutNLocMax2->Fill(en,mass);
1789 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1792 if(!matched && m02OK && m02On )
1794 fhMassM02CutNLocMax2->Fill(en,mass);
1795 fhAsymM02CutNLocMax2->Fill(en,asym );
1796 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1799 if((m02OK && asyOK) && (asyOn || m02On))
1801 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1802 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1804 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1806 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1807 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1813 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1814 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1816 // Effect of cuts in mass histograms
1818 if(!matched && asyOK && asyOn )
1820 fhMassAsyCutNLocMaxN->Fill(en,mass);
1821 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1824 if(!matched && m02OK && m02On )
1826 fhMassM02CutNLocMaxN->Fill(en,mass);
1827 fhAsymM02CutNLocMaxN->Fill(en,asym );
1828 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1831 if((m02OK && asyOK) && (asyOn || m02On))
1833 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1834 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1836 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1838 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1839 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1844 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1848 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1849 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1851 if((m02OK && asyOK) && (asyOn || m02On))
1853 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1854 if(splitFrac > splitFracMin)
1855 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1860 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1861 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1863 if((m02OK && asyOK) && (asyOn || m02On))
1865 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1866 if(splitFrac >splitFracMin)
1867 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1872 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1873 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1875 if((m02OK && asyOK) && (asyOn || m02On))
1877 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1878 if(splitFrac > splitFracMin )
1879 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1882 }//Work with MC truth
1886 //________________________________________________________________________________________________________________________
1887 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1888 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1889 const Float_t mass, const Float_t l0,
1890 const Float_t eta, const Float_t phi,
1891 const Bool_t matched, const Int_t mcindex)
1893 // Fill histograms for clusters passing the pi0 selection
1896 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1898 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
1899 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
1900 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
1902 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
1903 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
1905 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1907 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
1908 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
1913 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1914 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1915 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1916 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1920 if(fFillHighMultHisto)
1922 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1923 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1925 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1926 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1931 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1932 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1933 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1934 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1938 if(fFillHighMultHisto)
1940 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1941 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1943 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1944 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1949 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1950 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1951 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1952 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1956 if(fFillHighMultHisto)
1958 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1959 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1961 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1962 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1966 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1968 fhNLocMaxIdPi0 [mcindex][matched]->Fill(en,nMax);
1969 fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
1970 fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
1974 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1975 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1976 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1977 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1982 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1983 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1984 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1985 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1989 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
1990 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1991 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
1992 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1994 }//Work with MC truth
1997 //________________________________________________________________________________________________________________________
1998 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1999 const Int_t nc, const Int_t nMax, const Float_t t12diff,
2000 const Float_t mass, const Float_t l0,
2001 const Float_t eta, const Float_t phi,
2002 const Bool_t matched, const Int_t mcindex)
2004 // Fill histograms for clusters passing the eta selection
2007 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2011 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2012 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2013 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2014 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2018 if(fFillHighMultHisto)
2020 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2021 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2023 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2024 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2029 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2030 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2031 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2032 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2036 if(fFillHighMultHisto)
2038 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2039 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2041 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2042 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2047 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2048 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2049 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2050 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2054 if(fFillHighMultHisto)
2056 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2057 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2059 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2060 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2064 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2068 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2069 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2070 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2071 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2075 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2076 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2077 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2078 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2083 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
2084 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2085 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
2086 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2088 }//Work with MC truth
2092 //_____________________________________________________________________________________________________________________
2093 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
2094 const Float_t mass, const Float_t l0,
2095 const Bool_t matched, const Int_t mcindex)
2097 // Fill histograms for clusters passing the photon selection
2101 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2102 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2103 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2107 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2108 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2109 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2113 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2114 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2115 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2118 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2122 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2123 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2124 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2128 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2129 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2130 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2134 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2135 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2136 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2139 }//Work with MC truth
2142 //_____________________________________________________________________________________________________________________
2143 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
2144 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
2145 const Float_t l0, const Float_t mass,
2146 const Int_t nMax, const Bool_t matched,
2147 const Float_t splitFrac, const Float_t asym,
2148 const Float_t eprim, const Float_t asymGen)
2150 // Fill histograms needing some MC input
2152 Float_t efrac = eprim/en;
2153 Float_t efracSplit = 0;
2154 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2155 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2157 //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",
2158 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2160 if(ebin >= 0 && fFillEbinHisto)
2162 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2163 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2168 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2169 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2170 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2171 if(asym > 0 && !matched)
2173 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2174 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2179 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2180 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2183 if( en > fHistoECut )
2185 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2187 if(!matched && ebin >= 0 && fFillEbinHisto)
2189 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2190 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2192 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2194 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2195 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2202 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2203 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2204 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2206 if(asym > 0 && !matched)
2208 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2209 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2214 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2215 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2218 if( en > fHistoECut )
2220 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2222 if(!matched && ebin >= 0 && fFillEbinHisto)
2224 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2225 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2226 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2228 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2229 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2237 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2238 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2239 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2240 if(asym > 0 && !matched)
2242 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2243 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2248 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2249 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2252 if( en > fHistoECut )
2254 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2256 if(!matched && ebin >= 0 && fFillEbinHisto)
2258 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2259 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2261 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2263 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2264 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2271 //__________________________________________________________________________________________________________________________________________________
2272 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
2273 const Int_t nc, const Float_t mass, const Float_t l0,
2274 const Float_t asym, const Float_t splitFrac,
2275 const Int_t inlm, const Int_t ebin, const Bool_t matched,
2276 const Int_t mcindex, const Int_t noverlaps)
2278 // Fill histograms for MC Overlaps
2280 //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);
2282 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2286 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2290 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2291 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2292 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2293 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2294 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2295 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2296 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2298 else if(noverlaps == 1)
2300 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2301 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2302 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2303 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2304 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2305 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2306 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2308 else if(noverlaps > 1)
2310 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2311 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2312 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2313 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2314 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2315 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2316 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2319 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
2321 else if(fFillTMHisto)
2323 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2327 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2328 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2329 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2330 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2331 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2332 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2333 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2335 else if(noverlaps == 1)
2337 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2338 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2339 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2340 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2341 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2342 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2343 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2345 else if(noverlaps > 1)
2347 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2348 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2349 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2350 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2351 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2352 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2353 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2356 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
2361 //__________________________________________________________________________________________________
2362 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
2363 const Bool_t matched, const Int_t mcindex,
2364 const Float_t mass , const Float_t l0)
2367 // Fill optional histograms with more SS parameters
2371 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2372 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2374 if (mcindex==kmcPi0 && !matched)
2376 if( energy > fHistoECut)
2378 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2379 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2383 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2384 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2388 else if( nMax == 2 )
2390 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2391 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2394 if (mcindex==kmcPi0 && !matched)
2396 if( energy > fHistoECut)
2398 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2399 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2403 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2404 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2408 else if( nMax >= 3 )
2410 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2411 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2413 if (mcindex==kmcPi0 && !matched)
2415 if( energy > fHistoECut)
2417 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2418 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2422 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2423 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2429 //______________________________________________________________________________________________________
2430 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
2431 const Bool_t matched, const Int_t mcindex,
2432 const Float_t mass , const Int_t ebin)
2434 // Fill optional histograms with more SS parameters
2436 Float_t en = cluster->E();
2438 // Get more Shower Shape parameters
2439 Float_t ll0 = 0., ll1 = 0.;
2440 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2441 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2443 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2444 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2446 Float_t dispAsy = -1;
2447 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2451 if( en > fHistoECut )
2453 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2454 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2455 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2457 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2459 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2460 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2461 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2465 if(!matched && ebin >= 0 && fFillEbinHisto)
2467 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2468 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2469 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2472 else if( nMax == 2 )
2474 if( en > fHistoECut )
2476 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2477 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2478 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2480 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2482 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2483 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2484 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2488 if(!matched && ebin >= 0 && fFillEbinHisto)
2490 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2491 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2492 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2496 else if( nMax >= 3 )
2498 if( en > fHistoECut )
2500 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2501 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2502 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2504 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2506 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2507 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2508 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2512 if(!matched && ebin >= 0 && fFillEbinHisto)
2514 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2515 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2516 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2523 //__________________________________________________________________________________________________
2524 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
2525 const Int_t absId1, const Int_t absId2)
2527 // Calculate weights and fill histograms
2529 AliVCaloCells* cells = 0;
2530 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2531 else cells = GetPHOSCells();
2533 // First recalculate energy in case non linearity was applied
2535 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2538 Int_t id = clus->GetCellsAbsId()[ipos];
2540 //Recalibrate cell energy if needed
2541 Float_t amp = cells->GetCellAmplitude(id);
2542 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2550 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
2554 //Get amplitude of main local maxima, recalibrate if needed
2555 Float_t amp1 = cells->GetCellAmplitude(absId1);
2556 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2557 Float_t amp2 = cells->GetCellAmplitude(absId2);
2558 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2560 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2561 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2563 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2564 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2565 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2567 //Get the ratio and log ratio to all cells in cluster
2568 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2570 Int_t id = clus->GetCellsAbsId()[ipos];
2572 //Recalibrate cell energy if needed
2573 Float_t amp = cells->GetCellAmplitude(id);
2574 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2576 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2577 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2578 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2580 if (id!=absId1 && id!=absId2)
2582 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2583 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2588 //Recalculate shower shape for different W0
2589 if(fCalorimeter=="EMCAL")
2591 Float_t l0org = clus->GetM02();
2592 Float_t l1org = clus->GetM20();
2593 Float_t dorg = clus->GetDispersion();
2594 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2596 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2598 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2599 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2601 Float_t l0 = 0., l1 = 0.;
2602 Float_t disp = 0., dEta = 0., dPhi = 0.;
2603 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2605 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2606 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2609 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2613 // Set the original values back
2614 clus->SetM02(l0org);
2615 clus->SetM20(l1org);
2616 clus->SetDispersion(dorg);
2617 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2619 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2621 Float_t l0 = 0., l1 = 0.;
2622 Float_t disp = 0., dEta = 0., dPhi = 0.;
2623 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2625 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2626 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2628 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2629 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2636 //________________________________________________________________________________________
2637 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster, const Int_t nMax,
2638 const Int_t mcindex)
2640 // Fill histograms related to track matching
2642 Float_t dZ = cluster->GetTrackDz();
2643 Float_t dR = cluster->GetTrackDx();
2644 Float_t en = cluster->E();
2646 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2648 dR = 2000., dZ = 2000.;
2649 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2652 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2654 if(TMath::Abs(dR) < 999)
2656 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2657 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2658 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2660 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2662 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2663 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2664 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2667 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2669 Bool_t positive = kFALSE;
2670 if(track) positive = (track->Charge()>0);
2676 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2677 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2678 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2680 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2682 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2683 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2684 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2689 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2690 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2691 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2693 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2695 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2696 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2697 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2706 //_______________________________________________________________
2707 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2709 //Save parameters used for analysis
2710 TString parList ; //this will be list of parameters used for this analysis.
2711 const Int_t buffersize = 255;
2712 char onePar[buffersize] ;
2714 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2717 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2719 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2721 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2723 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2725 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2727 if(fFillSSWeightHisto)
2729 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2733 return new TObjString(parList) ;
2737 //________________________________________________________________
2738 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2740 // Create histograms to be saved in output file and
2741 // store them in outputContainer
2742 TList * outputContainer = new TList() ;
2743 outputContainer->SetName("InsideClusterHistos") ;
2745 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2746 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2747 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2748 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2749 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2750 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2752 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2753 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2754 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2755 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2756 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2757 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2759 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2760 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2761 Bool_t splitOn = kFALSE;
2762 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2763 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2764 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2766 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
2767 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
2768 TString snlm [] = {"1","2","N"};
2770 TString sEBin[] = {"8 < E < 12 GeV","12 < E < 16 GeV", "16 < E < 20 GeV", "E > 20 GeV" };
2774 if(IsDataMC()) n = 7;
2776 Int_t nMaxBins = 10;
2778 TString sMatched[] = {"","Matched"};
2781 if(!fFillTMHisto) nMatched = 1;
2783 if(fCheckSplitDistToBad)
2785 for(Int_t inlm = 0; inlm < 3; inlm++)
2787 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
2788 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2789 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2790 fhMassBadDistClose[inlm]->SetYTitle("M (GeV/c^{2})");
2791 fhMassBadDistClose[inlm]->SetXTitle("E (GeV)");
2792 outputContainer->Add(fhMassBadDistClose[inlm]) ;
2794 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
2795 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2796 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2797 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
2798 fhM02BadDistClose[inlm]->SetXTitle("E (GeV)");
2799 outputContainer->Add(fhM02BadDistClose[inlm]) ;
2801 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
2802 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2803 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2804 fhMassOnBorder[inlm]->SetYTitle("M (GeV/c^{2})");
2805 fhMassOnBorder[inlm]->SetXTitle("E (GeV)");
2806 outputContainer->Add(fhMassOnBorder[inlm]) ;
2808 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
2809 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2810 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2811 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
2812 fhM02OnBorder[inlm]->SetXTitle("E (GeV)");
2813 outputContainer->Add(fhM02OnBorder[inlm]) ;
2818 for(Int_t i = 0; i < n; i++)
2820 for(Int_t j = 0; j < nMatched; j++)
2823 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2824 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2825 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2826 fhNLocMax[i][j] ->SetYTitle("N maxima");
2827 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2828 outputContainer->Add(fhNLocMax[i][j]) ;
2830 fhLM1NLocMax[i][j] = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2831 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2832 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2833 fhLM1NLocMax[i][j] ->SetYTitle("N maxima");
2834 fhLM1NLocMax[i][j] ->SetXTitle("E (GeV)");
2835 outputContainer->Add(fhLM1NLocMax[i][j]) ;
2837 fhLM2NLocMax[i][j] = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2838 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2839 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2840 fhLM2NLocMax[i][j] ->SetYTitle("N maxima");
2841 fhLM2NLocMax[i][j] ->SetXTitle("E (GeV)");
2842 outputContainer->Add(fhLM2NLocMax[i][j]) ;
2846 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2847 Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2848 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2849 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2850 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2851 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2853 fhLM1NLocMaxM02Cut[i][j] = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2854 Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2855 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2856 fhLM1NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
2857 fhLM1NLocMaxM02Cut[i][j] ->SetXTitle("E (GeV)");
2858 outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
2860 fhLM2NLocMaxM02Cut[i][j] = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2861 Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2862 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2863 fhLM2NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
2864 fhLM2NLocMaxM02Cut[i][j] ->SetXTitle("E (GeV)");
2865 outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
2870 fhNLocMaxIdPi0[i][j] = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2871 Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2872 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2873 fhNLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2874 fhNLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
2875 outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
2878 fhLM1NLocMaxIdPi0[i][j] = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2879 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2880 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2881 fhLM1NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2882 fhLM1NLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
2883 outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
2885 fhLM2NLocMaxIdPi0[i][j] = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2886 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2887 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2888 fhLM2NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2889 fhLM2NLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
2890 outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
2895 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2896 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
2897 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2898 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
2899 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
2900 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
2903 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2904 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
2905 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2906 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
2907 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
2908 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
2912 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2913 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2914 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2915 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2916 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2917 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2919 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2920 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2921 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2922 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2923 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2924 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2927 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2928 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2929 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2930 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2931 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2932 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2935 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2936 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2937 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2938 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2939 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2940 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2942 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2943 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2944 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2945 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2946 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2947 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2949 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2950 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2951 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2952 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2953 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2954 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2956 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2957 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2958 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2959 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2960 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2961 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2963 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2964 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2965 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2966 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2967 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2968 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2970 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2971 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2972 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2973 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2974 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2975 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2977 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2978 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2979 nptbins,ptmin,ptmax,200,-1,1);
2980 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2981 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2982 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2984 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2985 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2986 nptbins,ptmin,ptmax,200,-1,1);
2987 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2988 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2989 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2991 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2992 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2993 nptbins,ptmin,ptmax,200,-1,1);
2994 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2995 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2996 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2998 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2999 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3000 nptbins,ptmin,ptmax,120,0,1.2);
3001 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
3002 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3003 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3005 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3006 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3007 nptbins,ptmin,ptmax,120,0,1.2);
3008 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
3009 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3010 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3012 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3013 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3014 nptbins,ptmin,ptmax,120,0,1.2);
3015 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
3016 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3017 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3023 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
3024 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3025 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
3026 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
3027 outputContainer->Add(fhMassM02CutNLocMax1) ;
3029 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
3030 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3031 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
3032 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
3033 outputContainer->Add(fhMassM02CutNLocMax2) ;
3035 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3036 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3037 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3038 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
3039 outputContainer->Add(fhMassM02CutNLocMaxN) ;
3041 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3042 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3043 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
3044 outputContainer->Add(fhAsymM02CutNLocMax1) ;
3046 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3047 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3048 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
3049 outputContainer->Add(fhAsymM02CutNLocMax2) ;
3051 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3052 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3053 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
3054 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3057 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
3058 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3059 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
3060 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
3061 outputContainer->Add(fhMassSplitECutNLocMax1) ;
3063 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3064 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3065 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
3066 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
3067 outputContainer->Add(fhMassSplitECutNLocMax2) ;
3069 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3070 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3071 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3072 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
3073 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3079 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
3080 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3081 fhMassAsyCutNLocMax1->SetYTitle("M (GeV/c^{2})");
3082 fhMassAsyCutNLocMax1->SetXTitle("E (GeV)");
3083 outputContainer->Add(fhMassAsyCutNLocMax1) ;
3085 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
3086 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3087 fhMassAsyCutNLocMax2->SetYTitle("M (GeV/c^{2})");
3088 fhMassAsyCutNLocMax2->SetXTitle("E (GeV)");
3089 outputContainer->Add(fhMassAsyCutNLocMax2) ;
3091 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3092 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3093 fhMassAsyCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3094 fhMassAsyCutNLocMaxN->SetXTitle("E (GeV)");
3095 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3097 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of NLM=1 vs cluster Energy, AsyCut, no TM",
3098 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3099 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3100 fhM02AsyCutNLocMax1->SetXTitle("E (GeV)");
3101 outputContainer->Add(fhM02AsyCutNLocMax1) ;
3103 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of NLM=2 vs cluster Energy, AsyCut, no TM",
3104 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3105 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3106 fhM02AsyCutNLocMax2->SetXTitle("E (GeV)");
3107 outputContainer->Add(fhM02AsyCutNLocMax2) ;
3109 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
3110 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3111 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3112 fhM02AsyCutNLocMaxN->SetXTitle("E (GeV)");
3113 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3119 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3120 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3121 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3122 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3123 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
3124 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3126 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3127 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3128 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3129 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3130 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
3131 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3134 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3135 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3136 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3137 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3138 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3139 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3141 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3142 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()),
3143 nptbins,ptmin,ptmax,120,0,1.2);
3144 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
3145 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3146 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3148 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3149 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()),
3150 nptbins,ptmin,ptmax,120,0,1.2);
3151 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
3152 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3153 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3155 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3156 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()),
3157 nptbins,ptmin,ptmax,120,0,1.2);
3158 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
3159 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3160 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3163 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3164 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3165 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3166 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3167 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3168 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
3170 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3171 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3172 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3173 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3174 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3175 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
3177 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3178 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3179 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3180 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3181 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3182 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
3184 if(fFillSSExtraHisto)
3186 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3187 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3188 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3189 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3190 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3191 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
3193 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3194 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3195 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3196 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3197 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3198 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
3200 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3201 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3202 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3203 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3204 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3205 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
3207 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3208 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3209 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3210 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3211 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3212 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
3214 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3215 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3216 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3217 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3218 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3219 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
3221 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3222 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3223 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3224 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3225 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3226 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
3228 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3229 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()),
3230 200,-1,1,mbins,mmin,mmax);
3231 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3232 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3233 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
3235 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3236 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()),
3237 200,-1,1,mbins,mmin,mmax);
3238 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3239 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3240 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
3242 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3243 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()),
3244 200,-1,1,mbins,mmin,mmax);
3245 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3246 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3247 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
3251 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3253 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3254 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3255 nptbins,ptmin,ptmax,200,0,2);
3256 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3257 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3258 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
3260 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3261 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3262 nptbins,ptmin,ptmax,200,0,2);
3263 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3264 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3265 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
3267 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3268 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3269 nptbins,ptmin,ptmax,200,0,2);
3270 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3271 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3272 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
3274 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3275 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3276 nptbins,ptmin,ptmax,200,0,2);
3277 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3278 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3279 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3281 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3282 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3283 nptbins,ptmin,ptmax,200,0,2);
3284 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3285 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3286 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3288 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3289 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3290 nptbins,ptmin,ptmax,200,0,2);
3291 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3292 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3293 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3296 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3297 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3298 nptbins,ptmin,ptmax,200,0,2);
3299 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3300 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3301 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
3303 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3304 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3305 nptbins,ptmin,ptmax,200,0,2);
3306 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3307 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3308 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
3310 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3311 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3312 nptbins,ptmin,ptmax,200,0,2);
3313 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3314 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3315 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
3317 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3318 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3319 nptbins,ptmin,ptmax,200,0,2);
3320 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3321 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3322 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3324 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3325 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3326 nptbins,ptmin,ptmax,200,0,2);
3327 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3328 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3329 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3331 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3332 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3333 nptbins,ptmin,ptmax,200,0,2);
3334 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3335 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3336 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3338 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3339 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()),
3341 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3342 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3343 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3345 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3346 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()),
3348 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3349 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3350 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3353 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3354 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()),
3356 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3357 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3358 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3361 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3362 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3363 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3364 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3365 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
3366 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3368 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3369 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3370 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3371 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3372 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
3373 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3376 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3377 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3378 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3379 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3380 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
3381 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3384 // Histograms after cluster identification
3389 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3390 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3391 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3392 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3393 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3394 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3396 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3397 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3398 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3399 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3400 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3401 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3403 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3404 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3405 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3406 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3407 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3408 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3410 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3411 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3412 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3413 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3414 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3415 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3417 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3418 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
3419 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3420 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3421 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3422 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3424 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3425 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3426 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3427 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3428 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3429 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3431 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3432 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3433 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3434 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
3435 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3436 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3438 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3439 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3440 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3441 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
3442 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3443 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3445 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3446 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3447 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3448 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
3449 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3450 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3454 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3455 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3456 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3457 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
3458 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3459 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3461 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3462 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3463 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3464 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
3465 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3466 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3468 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3469 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3470 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3471 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
3472 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3473 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3480 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3481 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3482 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3483 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3484 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3485 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3488 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3489 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3490 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3491 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3492 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3493 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3495 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3496 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3497 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3498 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3499 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3500 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3502 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3503 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3504 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3505 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3506 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3507 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3509 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3510 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3511 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3512 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3513 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3514 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3516 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3517 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3518 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3519 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3520 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3521 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3523 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3524 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3525 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3526 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
3527 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3528 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3530 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3531 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3532 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3533 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
3534 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3535 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
3537 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3538 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3539 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3540 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3541 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3542 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
3546 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3547 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3548 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3549 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
3550 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3551 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
3553 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3554 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3555 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3556 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
3557 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3558 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
3560 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3561 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3562 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3563 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
3564 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3565 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
3570 if(fFillIdConvHisto)
3572 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3573 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3574 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3575 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3576 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3577 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
3579 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3580 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3581 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3582 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3583 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3584 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
3586 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3587 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3588 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3589 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3590 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3591 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
3594 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3595 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3596 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3597 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3598 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3599 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
3601 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3602 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3603 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3604 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3605 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3606 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
3608 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3609 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3610 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3611 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3612 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3613 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
3615 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3616 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3617 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3618 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
3619 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3620 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
3622 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3623 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3624 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3625 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
3626 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3627 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
3629 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3630 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3631 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3632 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3633 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3634 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
3638 } // matched, not matched
3642 for(Int_t j = 0; j < 4; j++)
3645 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
3646 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3647 120,0,1.2,mbins,mmin,mmax);
3648 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3649 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3650 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
3652 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
3653 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3654 120,0,1.2,mbins,mmin,mmax);
3655 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3656 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3657 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
3659 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
3660 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3661 120,0,1.2,mbins,mmin,mmax);
3662 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3663 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3664 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
3666 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
3668 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
3669 Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3670 200,0,2,nMaxBins,0,nMaxBins);
3671 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
3672 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3673 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
3675 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
3676 Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
3677 200,0,2,nMaxBins,0,nMaxBins);
3678 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
3679 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
3680 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
3682 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3683 Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3684 200,0,2,mbins,mmin,mmax);
3685 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3686 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3687 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
3689 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3690 Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3691 200,0,2,mbins,mmin,mmax);
3692 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3693 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3694 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
3696 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3697 Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
3698 200,0,2,mbins,mmin,mmax);
3699 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3700 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3701 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
3703 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3704 Form("#lambda_{0}^{2} vs E for N max = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
3705 200,0,2,ssbins,ssmin,ssmax);
3706 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3707 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3708 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
3710 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3711 Form("#lambda_{0}^{2} vs E for N max = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
3712 200,0,2,ssbins,ssmin,ssmax);
3713 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3714 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3715 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
3717 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3718 Form("#lambda_{0}^{2} vs E for N max > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
3719 200,0,2,ssbins,ssmin,ssmax);
3720 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3721 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3722 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
3726 } // MC particle list
3728 if(fFillHighMultHisto)
3732 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
3733 "E vs Centrality, selected pi0 cluster with NLM=1",
3734 nptbins,ptmin,ptmax,100,0,100);
3735 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
3736 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
3737 outputContainer->Add(fhCentralityPi0NLocMax1) ;
3739 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
3740 "E vs Centrality, selected pi0 cluster with NLM=2",
3741 nptbins,ptmin,ptmax,100,0,100);
3742 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
3743 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
3744 outputContainer->Add(fhCentralityPi0NLocMax2) ;
3746 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
3747 "E vs Centrality, selected pi0 cluster with NLM>1",
3748 nptbins,ptmin,ptmax,100,0,100);
3749 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
3750 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
3751 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
3755 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
3756 "E vs Centrality, selected pi0 cluster with NLM=1",
3757 nptbins,ptmin,ptmax,100,0,100);
3758 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
3759 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
3760 outputContainer->Add(fhCentralityEtaNLocMax1) ;
3762 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3763 "E vs Centrality, selected pi0 cluster with NLM=2",
3764 nptbins,ptmin,ptmax,100,0,100);
3765 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3766 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3767 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3769 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3770 "E vs Centrality, selected pi0 cluster with NLM>1",
3771 nptbins,ptmin,ptmax,100,0,100);
3772 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3773 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3774 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3777 // E vs Event plane angle
3779 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3780 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3781 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3782 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3783 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3785 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3786 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3787 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3788 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3789 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3791 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3792 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3793 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3794 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3795 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3799 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3800 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3801 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3802 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3803 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3805 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3806 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3807 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3808 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3809 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3811 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3812 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3813 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3814 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3815 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3821 for(Int_t i = 0; i < 4; i++)
3823 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3824 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
3825 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3826 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3827 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3828 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3830 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3831 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
3832 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3833 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3834 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3835 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3837 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3838 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
3839 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3840 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3841 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3842 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3845 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3846 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, %s",sEBin[i].Data()),
3847 200,-1,1,mbins,mmin,mmax);
3848 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3849 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3850 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3852 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3853 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, %s",sEBin[i].Data()),
3854 200,-1,1,mbins,mmin,mmax);
3855 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3856 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3857 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3859 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3860 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
3861 200,-1,1,mbins,mmin,mmax);
3862 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3863 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3864 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3867 if(IsDataMC() && fFillMCHisto)
3869 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3870 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
3871 ssbins,ssmin,ssmax,100,0,1);
3872 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3873 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3874 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3876 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3877 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
3878 ssbins,ssmin,ssmax,100,0,1);
3879 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3880 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3881 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3883 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3884 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
3885 ssbins,ssmin,ssmax,100,0,1);
3886 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3887 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3888 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3891 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3892 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, %s",sEBin[i].Data()),
3894 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3895 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3896 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3898 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3899 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, %s",sEBin[i].Data()),
3901 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3902 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3903 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3905 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3906 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
3908 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3909 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3910 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3913 if(fFillSSExtraHisto)
3915 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3916 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
3917 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3918 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3919 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3920 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3922 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3923 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
3924 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3925 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3926 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3927 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3929 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3930 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
3931 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3932 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3933 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3934 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3936 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3937 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
3938 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3939 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3940 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3941 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3943 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3944 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
3945 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3946 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3947 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3948 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3950 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3951 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
3952 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3953 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3954 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3955 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3957 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3958 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()),
3959 200,-1,1,mbins,mmin,mmax);
3960 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3961 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3962 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3964 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3965 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()),
3966 200,-1,1,mbins,mmin,mmax);
3967 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3968 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3969 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3971 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3972 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()),
3973 200,-1,1,mbins,mmin,mmax);
3974 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3975 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3976 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3981 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3983 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3984 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3985 nptbins,ptmin,ptmax,200,0,2);
3986 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3987 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3988 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3990 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3991 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3992 nptbins,ptmin,ptmax,200,0,2);
3993 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3994 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3995 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3998 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3999 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
4000 nptbins,ptmin,ptmax,200,0,2);
4001 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
4002 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
4003 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4005 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4006 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
4007 nptbins,ptmin,ptmax,200,0,2);
4008 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4009 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
4010 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4012 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4013 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
4014 nptbins,ptmin,ptmax,200,0,2);
4015 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4016 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
4017 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4020 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4021 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
4022 nptbins,ptmin,ptmax,200,0,2);
4023 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
4024 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
4025 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4029 if(fFillTMResidualHisto && fFillTMHisto)
4031 for(Int_t i = 0; i < n; i++)
4034 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
4035 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4036 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4037 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4038 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4039 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
4041 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
4042 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4043 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4044 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4045 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4046 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
4048 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
4049 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4051 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
4052 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4053 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4054 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4055 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4056 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
4058 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
4059 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4060 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4061 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4062 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4063 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
4065 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
4066 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4068 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
4069 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4070 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4071 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4072 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4073 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
4075 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
4076 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4077 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4078 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4079 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4080 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
4082 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
4083 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4085 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
4086 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4087 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4088 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4089 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4090 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4092 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
4093 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4094 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4095 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4096 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4097 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4099 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4100 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4102 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
4103 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4104 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4105 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4106 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4107 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4109 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
4110 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4111 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4112 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4113 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4114 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4116 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4117 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4119 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
4120 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4121 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4122 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4123 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4124 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4126 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
4127 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4128 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4129 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4130 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4131 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4133 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4134 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4136 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
4137 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4138 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4139 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4140 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4141 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4143 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
4144 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4145 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4146 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4147 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4148 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4150 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4151 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4153 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
4154 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4155 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4156 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4157 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4158 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4160 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
4161 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4162 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4163 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4164 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4165 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4167 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4168 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4170 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
4171 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4172 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4173 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4174 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4175 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4177 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
4178 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4179 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4180 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4181 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4182 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4184 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4185 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4192 for(Int_t i = 0; i < n; i++)
4194 for(Int_t j = 0; j < nMatched; j++)
4197 fhAnglePairNLocMax1[i][j] = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4198 Form("Opening angle split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4199 nptbins,ptmin,ptmax,200,0,0.2);
4200 fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4201 fhAnglePairNLocMax1[i][j]->SetXTitle("E (GeV)");
4202 outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4204 fhAnglePairNLocMax2[i][j] = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4205 Form("Opening angle split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4206 nptbins,ptmin,ptmax,200,0,0.2);
4207 fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4208 fhAnglePairNLocMax2[i][j]->SetXTitle("E (GeV)");
4209 outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4211 fhAnglePairNLocMaxN[i][j] = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4212 Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4213 nptbins,ptmin,ptmax,200,0,0.2);
4214 fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4215 fhAnglePairNLocMaxN[i][j]->SetXTitle("E (GeV)");
4216 outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4220 fhAnglePairAfterCutsNLocMax1[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4221 Form("Opening angle split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4222 nptbins,ptmin,ptmax,200,0,0.2);
4223 fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4224 fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4225 outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4227 fhAnglePairAfterCutsNLocMax2[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4228 Form("Opening angle split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4229 nptbins,ptmin,ptmax,200,0,0.2);
4230 fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4231 fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4232 outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4234 fhAnglePairAfterCutsNLocMaxN[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4235 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4236 nptbins,ptmin,ptmax,200,0,0.2);
4237 fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4238 fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4239 outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4243 fhAnglePairPi0NLocMax1[i][j] = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4244 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4245 nptbins,ptmin,ptmax,200,0,0.2);
4246 fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4247 fhAnglePairPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4248 outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4250 fhAnglePairPi0NLocMax2[i][j] = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4251 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4252 nptbins,ptmin,ptmax,200,0,0.2);
4253 fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4254 fhAnglePairPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4255 outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4257 fhAnglePairPi0NLocMaxN[i][j] = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4258 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4259 nptbins,ptmin,ptmax,200,0,0.2);
4260 fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4261 fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4262 outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4264 fhAnglePairMassNLocMax1[i][j] = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4265 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()),
4266 mbins,mmin,mmax,200,0,0.2);
4267 fhAnglePairMassNLocMax1[i][j]->SetXTitle("M (GeV/c^{2})");
4268 fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4269 outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4272 fhAnglePairMassNLocMax2[i][j] = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4273 Form("Opening angle split sub-clusters of cluster NLM=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4274 mbins,mmin,mmax,200,0,0.2);
4275 fhAnglePairMassNLocMax2[i][j]->SetXTitle("M (GeV/c^{2})");
4276 fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4277 outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4279 fhAnglePairMassNLocMaxN[i][j] = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4280 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4281 mbins,mmin,mmax,200,0,0.2);
4282 fhAnglePairMassNLocMaxN[i][j]->SetXTitle("M (GeV/c^{2})");
4283 fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4284 outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;
4287 fhAnglePairM02NLocMax1[i][j] = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4288 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()),
4289 ssbins,ssmin,ssmax,200,0,0.2);
4290 fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4291 fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4292 outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4295 fhAnglePairM02NLocMax2[i][j] = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4296 Form("Opening angle split sub-clusters of cluster NLM=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4297 ssbins,ssmin,ssmax,200,0,0.2);
4298 fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4299 fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4300 outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4302 fhAnglePairM02NLocMaxN[i][j] = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4303 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4304 ssbins,ssmin,ssmax,200,0,0.2);
4305 fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4306 fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4307 outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4314 fhAnglePairPrimPi0RecoNLocMax1 = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4315 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=1",
4316 nptbins,ptmin,ptmax,300,0,3);
4317 fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4318 fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("E (GeV)");
4319 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4321 fhAnglePairPrimPi0RecoNLocMax2 = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4322 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=2",
4323 nptbins,ptmin,ptmax,300,0,3);
4324 fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4325 fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("E (GeV)");
4326 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4328 fhAnglePairPrimPi0RecoNLocMaxN = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4329 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4330 nptbins,ptmin,ptmax,300,0,3);
4331 fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4332 fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("E (GeV)");
4333 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4336 fhAnglePairPrimPi0vsRecoNLocMax1 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4337 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, NLM=1",
4338 200,0,0.2,200,0,0.2);
4339 fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4340 fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4341 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4343 fhAnglePairPrimPi0vsRecoNLocMax2 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4344 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4345 200,0,0.2,200,0,0.2);
4346 fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4347 fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4348 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4350 fhAnglePairPrimPi0vsRecoNLocMaxN = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4351 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4352 200,0,0.2,200,0,0.2);
4353 fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4354 fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4355 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4360 // Same as asymmetry ...
4361 if(fFillThetaStarHisto)
4363 for(Int_t i = 0; i < n; i++)
4365 for(Int_t j = 0; j < nMatched; j++)
4368 fhCosThStarNLocMax1[i][j] = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4369 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4370 nptbins,ptmin,ptmax,200,-1,1);
4371 fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4372 fhCosThStarNLocMax1[i][j]->SetXTitle("E (GeV)");
4373 outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4375 fhCosThStarNLocMax2[i][j] = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4376 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4377 nptbins,ptmin,ptmax,200,-1,1);
4378 fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4379 fhCosThStarNLocMax2[i][j]->SetXTitle("E (GeV)");
4380 outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4382 fhCosThStarNLocMaxN[i][j] = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4383 Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4384 nptbins,ptmin,ptmax,200,-1,1);
4385 fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4386 fhCosThStarNLocMaxN[i][j]->SetXTitle("E (GeV)");
4387 outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4391 fhCosThStarAfterCutsNLocMax1[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4392 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4393 nptbins,ptmin,ptmax,200,-1,1);
4394 fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4395 fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4396 outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4398 fhCosThStarAfterCutsNLocMax2[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4399 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4400 nptbins,ptmin,ptmax,200,-1,1);
4401 fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4402 fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4403 outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4405 fhCosThStarAfterCutsNLocMaxN[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4406 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4407 nptbins,ptmin,ptmax,200,-1,1);
4408 fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4409 fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4410 outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4414 fhCosThStarPi0NLocMax1[i][j] = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4415 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4416 nptbins,ptmin,ptmax,200,-1,1);
4417 fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4418 fhCosThStarPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4419 outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4421 fhCosThStarPi0NLocMax2[i][j] = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4422 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4423 nptbins,ptmin,ptmax,200,-1,1);
4424 fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4425 fhCosThStarPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4426 outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4428 fhCosThStarPi0NLocMaxN[i][j] = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4429 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4430 nptbins,ptmin,ptmax,200,-1,1);
4431 fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4432 fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4433 outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4440 for(Int_t j = 0; j < nMatched; j++)
4442 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4443 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
4444 100,-1,1,120,0,1.2);
4445 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4446 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4447 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
4449 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4450 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
4451 100,-1,1,120,0,1.2);
4452 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4453 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4454 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
4456 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4457 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
4458 100,-1,1,120,0,1.2);
4459 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4460 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4461 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
4465 fhClusterEtaPhiNLocMax1 = new TH2F
4466 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4467 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4468 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
4469 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
4471 fhClusterEtaPhiNLocMax2 = new TH2F
4472 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4473 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4474 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
4475 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
4477 fhClusterEtaPhiNLocMaxN = new TH2F
4478 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4479 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4480 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
4481 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
4483 fhPi0EtaPhiNLocMax1 = new TH2F
4484 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4485 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
4486 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
4487 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
4489 fhPi0EtaPhiNLocMax2 = new TH2F
4490 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4491 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
4492 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
4493 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
4495 fhPi0EtaPhiNLocMaxN = new TH2F
4496 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4497 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4498 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
4499 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
4503 fhEtaEtaPhiNLocMax1 = new TH2F
4504 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4505 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4506 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
4507 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
4509 fhEtaEtaPhiNLocMax2 = new TH2F
4510 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4511 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4512 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
4513 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
4515 fhEtaEtaPhiNLocMaxN = new TH2F
4516 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4517 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4518 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
4519 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
4522 if(fFillSSWeightHisto)
4524 for(Int_t nlm = 0; nlm < 3; nlm++)
4526 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
4527 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
4528 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
4529 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
4530 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
4531 outputContainer->Add(fhPi0CellE[nlm]) ;
4533 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
4534 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
4535 nptbins,ptmin,ptmax, 100,0,1);
4536 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
4537 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
4538 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
4540 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
4541 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
4542 nptbins,ptmin,ptmax, 100,-10,0);
4543 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
4544 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
4545 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
4548 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
4549 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
4550 nptbins,ptmin,ptmax, 100,0,1);
4551 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
4552 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4553 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
4555 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
4556 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
4557 nptbins,ptmin,ptmax, 100,0,1);
4558 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
4559 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
4560 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
4562 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
4563 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
4564 nptbins,ptmin,ptmax, 100,0,1);
4565 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
4566 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
4567 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
4569 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
4570 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
4571 nptbins,ptmin,ptmax, 100,0,1);
4572 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
4573 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
4574 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
4576 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
4577 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
4578 nptbins,ptmin,ptmax, 200,0,2);
4579 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
4580 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4581 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
4584 for(Int_t i = 0; i < fSSWeightN; i++)
4586 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
4587 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
4588 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4589 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4590 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
4591 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
4594 for(Int_t i = 0; i < fSSECellCutN; i++)
4596 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
4597 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
4598 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4599 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4600 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
4601 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
4607 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
4609 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4610 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4611 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4612 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
4614 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4615 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4616 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4617 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
4619 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4620 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4621 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4622 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
4626 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4627 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4628 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4629 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
4631 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4632 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4633 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4634 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
4636 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4637 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4638 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4639 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
4642 if(fFillNCellHisto && IsDataMC())
4645 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4646 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4647 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
4648 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
4650 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4651 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4652 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
4653 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
4655 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4656 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4657 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
4658 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
4660 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4661 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4662 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
4663 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
4665 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4666 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4667 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
4668 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
4670 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4671 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4672 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
4673 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
4675 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4676 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4677 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
4678 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
4680 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4681 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4682 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
4683 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
4685 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4686 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4687 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
4688 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
4690 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4691 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4692 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
4693 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
4695 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4696 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4697 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
4698 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
4700 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4701 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4702 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
4703 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
4707 if(IsDataMC() && fFillMCOverlapHisto)
4709 for(Int_t i = 1; i < n; i++)
4711 for(Int_t j = 0; j < 3; j++)
4713 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4714 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4715 nptbins,ptmin,ptmax,10,0,10);
4716 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
4717 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
4718 outputContainer->Add(fhMCENOverlaps[j][i]) ;
4720 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4721 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4722 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4723 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
4724 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
4725 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
4727 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4728 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4729 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4730 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
4731 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
4732 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
4734 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4735 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4736 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4737 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
4738 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
4739 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
4741 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4742 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4743 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4744 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4745 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
4746 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
4748 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4749 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4750 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4751 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4752 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
4753 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
4755 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4756 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4757 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4758 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
4759 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
4760 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
4762 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4763 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4764 nptbins,ptmin,ptmax,100,0,1);
4765 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
4766 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
4767 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
4769 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4770 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4771 nptbins,ptmin,ptmax,100,0,1);
4772 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
4773 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
4774 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
4776 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4777 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4778 nptbins,ptmin,ptmax,100,0,1);
4779 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
4780 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
4781 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
4786 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4787 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4788 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4789 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
4790 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
4791 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
4793 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4794 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4795 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4796 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
4797 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
4798 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
4800 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4801 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4802 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4803 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
4804 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
4805 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
4808 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4809 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4810 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4811 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
4812 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
4813 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
4815 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4816 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4817 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4818 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
4819 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
4820 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
4822 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4823 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4824 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4825 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
4826 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
4827 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
4830 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4831 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4832 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4833 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4834 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4835 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
4837 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4838 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4839 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4840 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4841 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4842 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
4844 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4845 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4846 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4847 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4848 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4849 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
4852 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4853 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4854 nptbins,ptmin,ptmax,120,0,1.2);
4855 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4856 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
4857 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
4859 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4860 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4861 nptbins,ptmin,ptmax,120,0,1.2);
4862 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4863 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
4864 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
4866 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4867 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4868 nptbins,ptmin,ptmax,120,0,1.2);
4869 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4870 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
4871 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
4875 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
4876 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
4877 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4878 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
4879 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4880 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
4882 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
4883 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
4884 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4885 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
4886 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4887 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
4889 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
4890 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
4891 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4892 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
4893 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4894 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
4899 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4900 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4901 nptbins,ptmin,ptmax,10,0,10);
4902 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
4903 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
4904 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
4906 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4907 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4908 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4909 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4910 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
4911 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
4913 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4914 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4915 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4916 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4917 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
4918 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
4920 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4921 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4922 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4923 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
4924 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4925 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
4927 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4928 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4929 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4930 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4931 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4932 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
4934 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4935 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4936 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4937 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4938 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4939 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
4941 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4942 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4943 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4944 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4945 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4946 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
4949 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4950 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4951 nptbins,ptmin,ptmax,100,0,1);
4952 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
4953 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4954 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
4956 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4957 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4958 nptbins,ptmin,ptmax,100,0,1);
4959 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
4960 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4961 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
4963 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4964 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4965 nptbins,ptmin,ptmax,100,0,1);
4966 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
4967 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4968 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
4971 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4972 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4973 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4974 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
4975 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4976 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
4978 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4979 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4980 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4981 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
4982 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4983 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4985 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4986 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4987 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4988 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4989 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4990 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4992 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4993 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4994 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4995 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4996 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4997 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4999 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5000 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5001 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5002 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
5003 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
5004 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5006 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5007 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5008 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5009 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
5010 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
5011 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5014 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5015 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5016 nptbins,ptmin,ptmax,120,0,1.2);
5017 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5018 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
5019 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5021 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5022 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5023 nptbins,ptmin,ptmax,120,0,1.2);
5024 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5025 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
5026 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5028 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5029 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5030 nptbins,ptmin,ptmax,120,0,1.2);
5031 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
5032 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
5033 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5038 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5039 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5040 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5041 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
5042 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5043 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5045 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5046 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5047 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5048 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
5049 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5050 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5052 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5053 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5054 ssbins,ssmin,ssmax,mbins,mmin,mmax);
5055 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
5056 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5057 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5065 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5066 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5067 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
5068 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
5069 outputContainer->Add(fhMCPi0HighNLMPair) ;
5071 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5072 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5073 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
5074 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
5075 outputContainer->Add(fhMCPi0LowNLMPair) ;
5077 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5078 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5079 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
5080 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
5081 outputContainer->Add(fhMCPi0AnyNLMPair) ;
5083 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5084 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5085 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
5086 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
5087 outputContainer->Add(fhMCPi0NoneNLMPair) ;
5090 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5091 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5092 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
5093 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5094 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5096 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5097 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5098 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
5099 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5100 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5102 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5103 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5104 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
5105 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5106 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5108 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5109 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5110 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
5111 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5112 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5115 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5116 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5117 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
5118 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
5119 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5121 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5122 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5123 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
5124 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
5125 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5127 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5128 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5129 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
5130 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
5131 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5133 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5134 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5135 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
5136 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
5137 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5139 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5140 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5141 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5142 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5143 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5145 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5146 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5147 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5148 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5149 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5151 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5152 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5153 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5154 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5155 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5157 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5158 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5159 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5160 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5161 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5164 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5165 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5166 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
5167 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
5168 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5170 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5171 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5172 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
5173 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
5174 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5176 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5177 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5178 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
5179 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
5180 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5182 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5183 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5184 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
5185 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
5186 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5188 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5189 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5190 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
5191 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
5192 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5194 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5195 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5196 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
5197 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
5198 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5201 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5202 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5203 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
5204 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
5205 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5207 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5208 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5209 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
5210 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
5211 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5213 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5214 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5215 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
5216 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
5217 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5219 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5220 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5221 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
5222 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
5223 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5225 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5226 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5227 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
5228 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
5229 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5231 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5232 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5233 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
5234 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
5235 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5238 for(Int_t nlm = 0; nlm < 3; nlm++)
5240 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5241 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5242 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5243 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5244 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("E (GeV)");
5245 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5247 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5248 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5249 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5250 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5251 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("E (GeV)");
5252 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5254 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5255 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5256 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5257 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5258 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5259 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5261 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5262 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5263 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5264 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5265 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5266 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5268 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5269 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5270 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5271 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5272 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("E (GeV)");
5273 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5275 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5276 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5277 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5278 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5279 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("E (GeV)");
5280 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5283 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5284 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5285 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5286 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5287 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5288 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5290 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5291 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()),
5292 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5293 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5294 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5295 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5297 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5298 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5299 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5300 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5301 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5302 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5304 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5305 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()),
5306 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5307 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5308 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5309 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5311 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5312 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5313 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5314 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5315 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("E (GeV)");
5316 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5318 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5319 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
5320 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5321 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5322 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5323 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5325 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5326 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()),
5327 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5328 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5329 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5330 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5332 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5333 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()),
5334 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5335 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5336 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E pi0 (GeV)");
5337 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5339 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5340 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()),
5341 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5342 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5343 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5344 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5346 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5347 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()),
5348 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5349 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5350 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5351 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5353 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5354 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()),
5355 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5356 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5357 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5358 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5360 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5361 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()),
5362 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5363 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5364 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5365 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5367 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5368 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()),
5369 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5370 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5371 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5372 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5374 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5375 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()),
5376 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5377 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5378 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5379 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5381 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5382 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()),
5383 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5384 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5385 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5386 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5388 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5389 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()),
5390 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5391 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5392 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5393 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5395 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5396 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5397 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5398 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5399 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5400 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5402 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5403 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()),
5404 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5405 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5406 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5407 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5409 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5410 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()),
5411 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5412 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5413 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5414 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5416 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5417 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()),
5418 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5419 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5420 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5421 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5423 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5424 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()),
5425 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5426 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5427 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5428 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5430 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5431 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()),
5432 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5433 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5434 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
5435 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5438 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5439 Form("(E_{reco}-E_{gen})/E_{gen} vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5440 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5441 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5442 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5443 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5445 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5446 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()),
5447 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5448 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5449 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E (GeV)");
5450 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5452 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5453 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()),
5454 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5455 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5456 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5457 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5459 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5460 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()),
5461 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5462 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5463 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5464 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5466 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5467 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()),
5468 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5469 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5470 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5471 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
5473 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5474 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()),
5475 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5476 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5477 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5478 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
5480 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5481 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()),
5482 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5483 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5484 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5485 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5487 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5488 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()),
5489 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5490 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5491 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5492 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5494 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5495 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()),
5496 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5497 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5498 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5499 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
5501 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5502 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()),
5503 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5504 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5505 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5506 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
5508 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5509 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5510 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5511 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5512 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5513 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
5515 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5516 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()),
5517 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5518 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5519 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5520 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
5522 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5523 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()),
5524 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5525 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5526 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5527 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
5529 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5530 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()),
5531 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5532 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5533 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5534 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
5536 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5537 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()),
5538 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5539 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5540 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5541 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5543 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5544 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()),
5545 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5546 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5547 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5548 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5552 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
5553 nptbins,ptmin,ptmax,5,0,5);
5554 //fhMCEOverlapType ->SetYTitle("Overlap Type");
5555 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
5556 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5557 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5558 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5559 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
5560 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
5561 outputContainer->Add(fhMCEOverlapType) ;
5563 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
5564 nptbins,ptmin,ptmax,5,0,5);
5565 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
5566 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
5567 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5568 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5569 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5570 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
5571 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
5572 outputContainer->Add(fhMCEOverlapTypeMatch) ;
5574 }// MC analysis, check overlaps
5579 for(Int_t inlm = 0; inlm < 3; inlm++)
5581 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
5582 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0",inlm),
5583 nptbins,ptmin,ptmax,200,-1,1);
5584 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("A_{reco} - A_{gen}");
5585 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("E (GeV)");
5586 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
5588 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
5589 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0Conv",inlm),
5590 nptbins,ptmin,ptmax,200,-1,1);
5591 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("A_{reco} - A_{gen}");
5592 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("E (GeV)");
5593 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
5597 if(fFillArmenterosHisto)
5599 Int_t narmbins = 400;
5601 Float_t armmax = 0.4;
5603 for(Int_t i = 0; i < 7; i++) // MC bin
5605 for(Int_t j = 0; j < 4; j++) // E bin
5607 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
5608 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5609 200, -1, 1, narmbins,armmin,armmax);
5610 fhArmNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5611 fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
5612 outputContainer->Add(fhArmNLocMax1[i][j]) ;
5614 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
5615 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5616 200, -1, 1, narmbins,armmin,armmax);
5617 fhArmNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5618 fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
5619 outputContainer->Add(fhArmNLocMax2[i][j]) ;
5621 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
5622 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5623 200, -1, 1, narmbins,armmin,armmax);
5624 fhArmNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5625 fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
5626 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
5630 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
5631 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5632 200, -1, 1, narmbins,armmin,armmax);
5633 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5634 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
5635 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
5637 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
5638 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5639 200, -1, 1, narmbins,armmin,armmax);
5640 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5641 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
5642 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
5644 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
5645 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5646 200, -1, 1, narmbins,armmin,armmax);
5647 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5648 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
5649 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
5652 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
5653 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5654 200, -1, 1, narmbins,armmin,armmax);
5655 fhArmPi0NLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5656 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
5657 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
5659 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
5660 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5661 200, -1, 1, narmbins,armmin,armmax);
5662 fhArmPi0NLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5663 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
5664 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
5666 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
5667 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5668 200, -1, 1, narmbins,armmin,armmax);
5669 fhArmPi0NLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5670 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
5671 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
5677 return outputContainer ;
5681 //_____________________________________________________________________________
5682 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
5683 Int_t & mcindex, Int_t & tag)
5686 // Assign mc index depending on MC bit set, to be used in histograms arrays
5688 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
5690 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
5691 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
5692 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
5693 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
5694 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5695 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
5696 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5697 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
5698 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
5700 //printf("MC index %d\n",mcindex);
5704 //______________________________________________________________________________________________________________
5705 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
5706 const Int_t mctag, const Bool_t matched,
5707 Float_t & eprim, Float_t & asymGen, Float_t & angleGen, Int_t & noverlaps )
5709 // Check origin of the candidates, get primary kinematics if overlapped meson decay
5712 Int_t mcLabel = cluster->GetLabel();
5714 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
5715 eprim = primary.E();
5717 Int_t mesonLabel = -1;
5719 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
5721 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
5723 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
5724 asymGen = TMath::Abs(asymGen);
5725 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
5726 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5730 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
5731 asymGen = TMath::Abs(asymGen);
5732 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
5733 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5737 if(!fFillMCOverlapHisto) return;
5739 const UInt_t nlabels = cluster->GetNLabels();
5740 Int_t overpdg[nlabels];
5741 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
5743 for(Int_t iover = 0; iover < noverlaps; iover++)
5745 Float_t histobin = -1;
5746 Int_t mpdg = overpdg[iover];
5748 if (mpdg==22) histobin = 0.5;
5749 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
5750 else if(mpdg==-999999) histobin = 4.5;
5753 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
5754 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
5755 else histobin = 3.5;
5756 //printf("charge %f\n",charge);
5759 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
5762 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
5763 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
5768 //___________________________________________
5769 void AliAnaInsideClusterInvariantMass::Init()
5773 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
5775 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
5778 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
5780 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
5784 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
5786 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
5793 //_____________________________________________________
5794 void AliAnaInsideClusterInvariantMass::InitParameters()
5796 //Initialize the parameters of the analysis.
5797 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
5799 fCalorimeter = "EMCAL" ;
5807 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
5808 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
5811 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
5812 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
5817 //__________________________________________________________________
5818 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
5820 //Search for pi0 in fCalorimeter with shower shape analysis
5822 TObjArray * pl = 0x0;
5823 AliVCaloCells* cells = 0x0;
5825 //Select the Calorimeter of the photon
5826 if(fCalorimeter == "PHOS")
5828 pl = GetPHOSClusters();
5829 cells = GetPHOSCells();
5831 else if (fCalorimeter == "EMCAL")
5833 pl = GetEMCALClusters();
5834 cells = GetEMCALCells();
5839 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
5843 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
5845 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
5847 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
5849 //-------------------------------------------
5850 // Get cluster parameters, do some rejection
5851 //-------------------------------------------
5853 Float_t en = cluster->E();
5854 Float_t l0 = cluster->GetM02();
5855 Int_t nc = cluster->GetNCells();
5856 Float_t bd = cluster->GetDistanceToBadChannel() ;
5858 //If too small or big E or low number of cells, or close to a bad channel skip it
5860 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
5862 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
5864 // Track-cluster matching
5866 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
5867 if(!fFillTMHisto && matched) continue ;
5869 // Get cluster angles
5872 cluster->GetMomentum(lv, GetVertex(0));
5873 Float_t eta = lv.Eta();
5874 Float_t phi = lv.Phi();
5875 if(phi<0) phi=+TMath::TwoPi();
5877 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
5878 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
5880 // Get PID, N local maximum, *** split cluster ***
5883 Double_t mass = 0., angle = 0.;
5884 TLorentzVector lv1, lv2;
5885 Int_t absId1 =-1; Int_t absId2 =-1;
5886 Float_t distbad1 =-1; Float_t distbad2 =-1;
5887 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
5889 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
5890 GetVertex(0), nMax, mass, angle,
5891 lv1,lv2,absId1,absId2,
5892 distbad1,distbad2,fidcut1,fidcut2);
5896 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5901 // Set some index for array histograms
5904 if (nMax == 1) inlm = 0;
5905 else if(nMax == 2) inlm = 1;
5906 else if(nMax > 2) inlm = 2;
5907 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
5909 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
5910 if( (fCheckSplitDistToBad) &&
5911 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
5914 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
5915 distbad1,distbad2, fidcut1,fidcut2);
5917 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
5919 fhMassBadDistClose[inlm]->Fill(en,mass);
5920 fhM02BadDistClose [inlm]->Fill(en,l0 );
5923 if(!fidcut1 || !fidcut2)
5925 fhMassOnBorder[inlm]->Fill(en,mass);
5926 fhM02OnBorder [inlm]->Fill(en,l0 );
5932 // Get sub-cluster parameters
5934 Float_t e1 = lv1.Energy();
5935 Float_t e2 = lv2.Energy();
5937 Double_t tof1 = cells->GetCellTime(absId1);
5938 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5941 Double_t tof2 = cells->GetCellTime(absId2);
5942 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5945 Double_t t12diff = tof1-tof2;
5947 Float_t splitFrac = (e1+e2)/en;
5950 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
5955 if(en > 8 && en <= 12) ebin = 0;
5956 if(en > 12 && en <= 16) ebin = 1;
5957 if(en > 16 && en <= 20) ebin = 2;
5958 if(en > 20) ebin = 3;
5960 // MC data histograms and some related calculations
5961 // mc tag, n overlaps, asym of generated mesons
5966 Float_t asymGen = -2;
5967 Float_t angleGen = 2000;
5968 Int_t noverlaps = 0;
5974 GetMCIndex(cluster,mcindex,mctag);
5976 // MC primary kine, generation fractions
5978 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
5980 // For cluster with MC pi0 and more than 1 maxima
5986 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
5991 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
5995 if(fFillSSExtraHisto)
5996 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
6000 if(!matched && ebin >= 0 && fFillEbinHisto)
6001 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6006 FillAngleHistograms(nMax,matched,mcindex,en,angle,mass,angleGen,l0, asym,pidTag);
6008 if(fFillArmenterosHisto && ebin >= 0)
6009 FillArmenterosHistograms(nMax, ebin, mcindex, en, lv1, lv2, l0, pidTag);
6011 if(fFillThetaStarHisto)
6012 FillThetaStarHistograms(nMax,matched,mcindex, en, lv1, lv2, l0, pidTag);
6015 //---------------------------------------------------------------------
6016 // From here start applying some cuts
6017 //---------------------------------------------------------------------
6019 // If set, check just on MC clusters when SS cut is applied
6020 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6022 // For cluster with MC pi0 and more than 1 maxima
6024 if(fFillMCOverlapHisto)
6025 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6031 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6032 nMax,matched,splitFrac, asym, eprim,asymGen);
6036 if(fFillMCOverlapHisto)
6037 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6041 // Fill few histograms, some still without cuts
6042 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6044 if(pidTag==AliCaloPID::kPi0)
6046 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6048 if(fFillSSWeightHisto)
6049 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6051 if(fFillTMHisto && fFillTMResidualHisto)
6052 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6054 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6056 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6057 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6058 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6061 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6063 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6065 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6067 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6072 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
6076 //______________________________________________________________________
6077 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6079 //Print some relevant parameters set for the analysis
6083 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6084 AliAnaCaloTrackCorrBaseClass::Print("");
6085 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
6086 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6087 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
6088 printf("Min. N Cells =%d \n", fMinNCells) ;
6089 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6090 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6096 //___________________________________________________________________________________________________________________
6097 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6098 AliVCaloCells* cells,
6099 AliVCluster * cluster,
6100 Float_t & l0, Float_t & l1,
6101 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6102 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6105 // Calculates new center of gravity in the local EMCAL-module coordinates
6106 // and tranfers into global ALICE coordinates
6107 // Calculates Dispersion and main axis
6111 AliInfo("Cluster pointer null!");
6115 Double_t eCell = 0.;
6116 Float_t fraction = 1.;
6117 Float_t recalFactor = 1.;
6125 Double_t etai = -1.;
6126 Double_t phii = -1.;
6131 Double_t etaMean = 0.;
6132 Double_t phiMean = 0.;
6134 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
6135 // and to check if the cluster is between 2 SM in eta
6137 Bool_t shared = kFALSE;
6140 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6142 //Get from the absid the supermodule, tower and eta/phi numbers
6143 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6144 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6146 //Check if there are cells of different SM
6147 if (iDigit == 0 ) iSM0 = iSupMod;
6148 else if(iSupMod!= iSM0) shared = kTRUE;
6150 //Get the cell energy, if recalibration is on, apply factors
6151 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6152 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6154 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6156 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6159 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6161 if(eCell > eCellMin) energy += eCell;
6165 //Loop on cells, get weighted parameters
6166 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6168 //Get from the absid the supermodule, tower and eta/phi numbers
6169 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6170 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6172 //Get the cell energy, if recalibration is on, apply factors
6173 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6174 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6176 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6178 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6181 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6183 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6184 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6185 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6187 if(energy > 0 && eCell > eCellMin)
6189 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6191 //correct weight, ONLY in simulation
6192 w *= (1 - fWSimu * w );
6194 etai=(Double_t)ieta;
6195 phii=(Double_t)iphi;
6202 sEta += w * etai * etai ;
6203 etaMean += w * etai ;
6204 sPhi += w * phii * phii ;
6205 phiMean += w * phii ;
6206 sEtaPhi += w * etai * phii ;
6209 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6213 //Normalize to the weight
6220 AliError(Form("Wrong weight %f\n", wtot));
6222 //Calculate dispersion
6223 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6225 //Get from the absid the supermodule, tower and eta/phi numbers
6226 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6227 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6229 //Get the cell energy, if recalibration is on, apply factors
6230 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6231 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6232 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6234 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6237 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6239 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6240 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6241 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6243 if(energy > 0 && eCell > eCellMin)
6245 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6247 //correct weight, ONLY in simulation
6248 w *= (1 - fWSimu * w );
6250 etai=(Double_t)ieta;
6251 phii=(Double_t)iphi;
6254 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6255 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6256 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6259 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6262 //Normalize to the weigth and set shower shape parameters
6263 if (wtot > 0 && nstat > 1)
6272 sEta -= etaMean * etaMean ;
6273 sPhi -= phiMean * phiMean ;
6274 sEtaPhi -= etaMean * phiMean ;
6276 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6277 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6283 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6284 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;