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(),
57 fMinNCells(0), fMinBadDist(0),
58 fHistoECut(0), fCheckSplitDistToBad(0),
59 fFillAngleHisto(kFALSE),
61 fFillTMResidualHisto(kFALSE),
62 fFillSSExtraHisto(kFALSE),
64 fFillSSWeightHisto(kFALSE),
66 fFillMCOverlapHisto(0),
70 fFillHighMultHisto(0),
71 fFillArmenterosHisto(0),
72 fSSWeightN(0), fSSECellCutN(0),
74 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
75 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
76 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
77 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
78 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
79 fhMCGenFracAfterCutsNLocMax1MCPi0(0),
80 fhMCGenFracAfterCutsNLocMax2MCPi0(0),
81 fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
82 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),
83 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),
84 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
85 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
86 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
87 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
88 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
89 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
90 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
91 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
92 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
93 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
94 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
95 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
96 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
97 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
98 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
99 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
100 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
101 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
102 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
103 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
104 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
105 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
106 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
107 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
108 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
109 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
110 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
111 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
112 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
113 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
114 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
115 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
116 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
120 // Init array of histograms
121 for(Int_t i = 0; i < 7; i++)
123 for(Int_t j = 0; j < 2; j++)
125 fhMassNLocMax1[i][j] = 0;
126 fhMassNLocMax2[i][j] = 0;
127 fhMassNLocMaxN[i][j] = 0;
128 fhArmNLocMax1[i][j] = 0;
129 fhArmNLocMax2[i][j] = 0;
130 fhArmNLocMaxN[i][j] = 0;
132 fhNLocMaxM02Cut[i][j] = 0;
133 fhSplitClusterENLocMax [i][j] = 0;
134 fhSplitClusterEPi0NLocMax[i][j] = 0;
135 fhM02NLocMax1[i][j] = 0;
136 fhM02NLocMax2[i][j] = 0;
137 fhM02NLocMaxN[i][j] = 0;
138 fhNCellNLocMax1[i][j] = 0;
139 fhNCellNLocMax2[i][j] = 0;
140 fhNCellNLocMaxN[i][j] = 0;
141 fhM02Pi0NLocMax1[i][j] = 0;
142 fhM02EtaNLocMax1[i][j] = 0;
143 fhM02ConNLocMax1[i][j] = 0;
144 fhM02Pi0NLocMax2[i][j] = 0;
145 fhM02EtaNLocMax2[i][j] = 0;
146 fhM02ConNLocMax2[i][j] = 0;
147 fhM02Pi0NLocMaxN[i][j] = 0;
148 fhM02EtaNLocMaxN[i][j] = 0;
149 fhM02ConNLocMaxN[i][j] = 0;
151 fhMassPi0NLocMax1[i][j] = 0;
152 fhMassEtaNLocMax1[i][j] = 0;
153 fhMassConNLocMax1[i][j] = 0;
154 fhMassPi0NLocMax2[i][j] = 0;
155 fhMassEtaNLocMax2[i][j] = 0;
156 fhMassConNLocMax2[i][j] = 0;
157 fhMassPi0NLocMaxN[i][j] = 0;
158 fhMassEtaNLocMaxN[i][j] = 0;
159 fhMassConNLocMaxN[i][j] = 0;
161 fhArmPi0NLocMax1[i][j] = 0;
162 fhArmPi0NLocMax2[i][j] = 0;
163 fhArmPi0NLocMaxN[i][j] = 0;
165 fhNCellPi0NLocMax1[i][j] = 0;
166 fhNCellEtaNLocMax1[i][j] = 0;
167 fhNCellPi0NLocMax2[i][j] = 0;
168 fhNCellEtaNLocMax2[i][j] = 0;
169 fhNCellPi0NLocMaxN[i][j] = 0;
170 fhNCellEtaNLocMaxN[i][j] = 0;
172 fhAsyPi0NLocMax1[i][j] = 0;
173 fhAsyEtaNLocMax1[i][j] = 0;
174 fhAsyConNLocMax1[i][j] = 0;
175 fhAsyPi0NLocMax2[i][j] = 0;
176 fhAsyEtaNLocMax2[i][j] = 0;
177 fhAsyConNLocMax2[i][j] = 0;
178 fhAsyPi0NLocMaxN[i][j] = 0;
179 fhAsyEtaNLocMaxN[i][j] = 0;
180 fhAsyConNLocMaxN[i][j] = 0;
182 fhMassM02NLocMax1[i][j]= 0;
183 fhMassM02NLocMax2[i][j]= 0;
184 fhMassM02NLocMaxN[i][j]= 0;
185 fhMassDispEtaNLocMax1[i][j]= 0;
186 fhMassDispEtaNLocMax2[i][j]= 0;
187 fhMassDispEtaNLocMaxN[i][j]= 0;
188 fhMassDispPhiNLocMax1[i][j]= 0;
189 fhMassDispPhiNLocMax2[i][j]= 0;
190 fhMassDispPhiNLocMaxN[i][j]= 0;
191 fhMassDispAsyNLocMax1[i][j]= 0;
192 fhMassDispAsyNLocMax2[i][j]= 0;
193 fhMassDispAsyNLocMaxN[i][j]= 0;
195 fhSplitEFractionNLocMax1[i][j]=0;
196 fhSplitEFractionNLocMax2[i][j]=0;
197 fhSplitEFractionNLocMaxN[i][j]=0;
199 fhMCGenFracNLocMax1[i][j]= 0;
200 fhMCGenFracNLocMax2[i][j]= 0;
201 fhMCGenFracNLocMaxN[i][j]= 0;
203 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
204 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
205 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
207 fhMCGenSplitEFracNLocMax1[i][j]= 0;
208 fhMCGenSplitEFracNLocMax2[i][j]= 0;
209 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
211 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
212 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
213 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
215 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
216 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
217 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
219 fhMCGenEvsSplitENLocMax1[i][j]= 0;
220 fhMCGenEvsSplitENLocMax2[i][j]= 0;
221 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
223 fhAsymNLocMax1 [i][j] = 0;
224 fhAsymNLocMax2 [i][j] = 0;
225 fhAsymNLocMaxN [i][j] = 0;
227 fhMassAfterCutsNLocMax1[i][j] = 0;
228 fhMassAfterCutsNLocMax2[i][j] = 0;
229 fhMassAfterCutsNLocMaxN[i][j] = 0;
231 fhArmAfterCutsNLocMax1[i][j] = 0;
232 fhArmAfterCutsNLocMax2[i][j] = 0;
233 fhArmAfterCutsNLocMaxN[i][j] = 0;
235 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
236 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
237 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
240 for(Int_t jj = 0; jj < 4; jj++)
242 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
243 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
244 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
246 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
247 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
248 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
250 fhMCGenFracNLocMaxEbin[i][jj] = 0;
251 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
253 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
254 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
255 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
258 fhTrackMatchedDEtaNLocMax1[i] = 0;
259 fhTrackMatchedDPhiNLocMax1[i] = 0;
260 fhTrackMatchedDEtaNLocMax2[i] = 0;
261 fhTrackMatchedDPhiNLocMax2[i] = 0;
262 fhTrackMatchedDEtaNLocMaxN[i] = 0;
263 fhTrackMatchedDPhiNLocMaxN[i] = 0;
265 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
266 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
267 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
268 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
269 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
270 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
272 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
273 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
274 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
275 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
276 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
277 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
279 for(Int_t nlm = 0; nlm < 3; nlm++)
281 fhMCEM02Overlap0 [nlm][i] = 0;
282 fhMCEM02Overlap1 [nlm][i] = 0;
283 fhMCEM02OverlapN [nlm][i] = 0;
284 fhMCEM02Overlap0Match[nlm][i] = 0;
285 fhMCEM02Overlap1Match[nlm][i] = 0;
286 fhMCEM02OverlapNMatch[nlm][i] = 0;
288 fhMCEMassOverlap0 [nlm][i] = 0;
289 fhMCEMassOverlap1 [nlm][i] = 0;
290 fhMCEMassOverlapN [nlm][i] = 0;
291 fhMCEMassOverlap0Match[nlm][i] = 0;
292 fhMCEMassOverlap1Match[nlm][i] = 0;
293 fhMCEMassOverlapNMatch[nlm][i] = 0;
295 fhMCEAsymOverlap0 [nlm][i] = 0;
296 fhMCEAsymOverlap1 [nlm][i] = 0;
297 fhMCEAsymOverlapN [nlm][i] = 0;
298 fhMCEAsymOverlap0Match[nlm][i] = 0;
299 fhMCEAsymOverlap1Match[nlm][i] = 0;
300 fhMCEAsymOverlapNMatch[nlm][i] = 0;
302 fhMCENCellOverlap0 [nlm][i] = 0;
303 fhMCENCellOverlap1 [nlm][i] = 0;
304 fhMCENCellOverlapN [nlm][i] = 0;
305 fhMCENCellOverlap0Match[nlm][i] = 0;
306 fhMCENCellOverlap1Match[nlm][i] = 0;
307 fhMCENCellOverlapNMatch[nlm][i] = 0;
309 fhMCEEpriOverlap0 [nlm][i] = 0;
310 fhMCEEpriOverlap1 [nlm][i] = 0;
311 fhMCEEpriOverlapN [nlm][i] = 0;
312 fhMCEEpriOverlap0Match[nlm][i] = 0;
313 fhMCEEpriOverlap1Match[nlm][i] = 0;
314 fhMCEEpriOverlapNMatch[nlm][i] = 0;
316 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
317 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
318 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
320 fhMCESplitEFracOverlap0 [nlm][i] = 0;
321 fhMCESplitEFracOverlap1 [nlm][i] = 0;
322 fhMCESplitEFracOverlapN [nlm][i] = 0;
323 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
324 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
325 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
327 fhMCENOverlaps [nlm][i] = 0;
328 fhMCENOverlapsMatch [nlm][i] = 0;
332 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
333 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
334 fhMCPi0MassM02OverlapN [nlm][i] = 0;
335 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
336 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
337 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
341 for(Int_t i = 0; i < 2; i++)
343 fhAnglePairNLocMax1 [i] = 0;
344 fhAnglePairNLocMax2 [i] = 0;
345 fhAnglePairNLocMaxN [i] = 0;
346 fhAnglePairMassNLocMax1[i] = 0;
347 fhAnglePairMassNLocMax2[i] = 0;
348 fhAnglePairMassNLocMaxN[i] = 0;
349 fhSplitEFractionvsAsyNLocMax1[i] = 0;
350 fhSplitEFractionvsAsyNLocMax2[i] = 0;
351 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
354 for(Int_t i = 0; i < 4; i++)
356 fhMassM02NLocMax1Ebin[i] = 0 ;
357 fhMassM02NLocMax2Ebin[i] = 0 ;
358 fhMassM02NLocMaxNEbin[i] = 0 ;
360 fhMassAsyNLocMax1Ebin[i] = 0 ;
361 fhMassAsyNLocMax2Ebin[i] = 0 ;
362 fhMassAsyNLocMaxNEbin[i] = 0 ;
364 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
365 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
366 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
368 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
369 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
370 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
372 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
373 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
374 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
376 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
377 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
378 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
380 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
381 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
382 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
385 for(Int_t nlm = 0; nlm < 3; nlm++)
388 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
389 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
390 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
391 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
393 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
394 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
395 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
396 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
398 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
399 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
400 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
401 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
403 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
404 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
405 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
406 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
408 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
409 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
410 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
411 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
412 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
413 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
415 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
416 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
417 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
418 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
419 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
420 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
422 fhPi0CellE [nlm] = 0 ;
423 fhPi0CellEFrac [nlm] = 0 ;
424 fhPi0CellLogEFrac[nlm] = 0 ;
426 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
427 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
428 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
430 fhPi0CellEMaxFrac [nlm] = 0 ;
431 fhPi0CellEMax2Frac[nlm] = 0 ;
433 for(Int_t i = 0; i < 10; i++)
435 fhM02WeightPi0 [nlm][i] = 0;
436 fhM02ECellCutPi0[nlm][i] = 0;
439 fhMassBadDistClose[nlm] = 0;
440 fhM02BadDistClose [nlm] = 0;
441 fhMassOnBorder [nlm] = 0;
442 fhM02OnBorder [nlm] = 0;
444 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
445 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
453 //_______________________________________________________________________________________________________
454 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,const Int_t mcindex, const Int_t noverlaps,
455 const Float_t e1, const Float_t e2, const Float_t mass)
457 //TLorentzVector l1, TLorentzVector l2)
459 // Check origin NLM tower of the cluster, when MC gives merged pi0
461 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
463 const UInt_t nc = cluster->GetNCells();
466 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
471 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
472 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
474 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
476 // 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",
477 // nMax, noverlaps,mass,m02,
478 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
479 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
481 // // Study the mothers of cluster
482 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
483 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
485 // Int_t mclabel = cluster->GetLabels()[ilab];
488 // Int_t mpdg = -999999;
489 // Int_t mstatus = -1;
490 // Int_t grandLabel = -1;
491 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
493 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
494 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
496 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
498 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
500 // Int_t newLabel = -1;
501 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
502 // 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",
503 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
504 // grandLabel = newLabel;
510 // printf("Cells in cluster %d\n",cluster->GetNCells() );
511 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
513 // Int_t absIdCell = cluster->GetCellAbsId(icell);
514 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
515 // GetReader()->RemapMCLabelForAODs(mcLabel);
516 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
517 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
519 // 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);
525 //If only one maxima, consider all the towers in the cluster
528 for (UInt_t icell = 0; icell < nc; icell++ )
530 list [icell] = cluster->GetCellAbsId(icell);
531 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
535 Int_t nmaxima = nMax;
536 if(nMax==1) nmaxima = nc ;
538 //Find highest energy Local Maxima Towers
543 for(Int_t i = 0; i < nmaxima; i++)
545 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
552 //Find second highest
553 for(Int_t i = 0; i < nmaxima; i++)
555 if(i==imax) continue;
557 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
567 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
568 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
570 //---------------------------------------------------------
571 //---------------------------------------------------------
572 // Compare ancestors of all local maxima at cell MC level
573 //---------------------------------------------------------
574 //---------------------------------------------------------
576 // Check that the highest mc label and the max cluster label are the same
577 Int_t mcLabelMax = -1 ;
580 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
581 GetReader()->RemapMCLabelForAODs(mcLabelMax);
584 Int_t mcLabelMax2 = -1 ;
587 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
588 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
591 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
592 Bool_t matchHighLMAndHighMC = kFALSE;
594 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
596 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
598 matchHighLMAndHighMC = kTRUE;
599 //printf("\t *** MATCH cluster and LM maximum ***\n");
603 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
604 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
606 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
607 matchHighLMAndHighMC = kTRUE;
611 //printf("\t \t *** NO MATCH***\n");
612 matchHighLMAndHighMC = kFALSE;
616 // Compare the common ancestors of the 2 highest energy local maxima
617 Int_t ancPDG = 0, ancStatus = -1;
618 TLorentzVector momentum; TVector3 prodVertex;
620 Bool_t high = kFALSE;
623 // // print maxima origin
624 // for(Int_t i = 0; i < nMax; i++)
626 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
627 // GetReader()->RemapMCLabelForAODs(mcLabel1);
629 // Bool_t ok =kFALSE,gok = kFALSE;
630 // Int_t pdg = -22222, status = -1;
631 // Int_t gpdg = -22222, gstatus = -1;
632 // Int_t ggpdg = -22222, ggstatus = -1;
633 // Int_t gLabel = -1, ggLabel = -1;
634 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
635 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
636 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
637 // 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",
638 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
641 for(Int_t i = 0; i < nmaxima-1; i++)
643 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
644 GetReader()->RemapMCLabelForAODs(mcLabel1);
646 for(Int_t j = i+1; j < nmaxima; j++)
648 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
649 GetReader()->RemapMCLabelForAODs(mcLabel2);
651 if(mcLabel1 < 0 || mcLabel2 < 0 )
653 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
657 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
658 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
661 if((i==imax && j==imax2) || (j==imax && i==imax2))
666 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
668 // If both bits are set, it could be that one of the maxima had a conversion
669 // reset the bit in this case
672 //printf("\t Reset low bit\n");
678 Int_t pdg = -22222, status = -1;
679 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
680 //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);
685 Float_t en = cluster->E();
687 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
688 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
692 if(matchHighLMAndHighMC)
694 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
695 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
696 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
697 else fhMCPi0NoneNLMPair->Fill(en,nMax);
701 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
702 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
703 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
704 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
709 if(matchHighLMAndHighMC)
711 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
712 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
713 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
714 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
718 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
719 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
720 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
721 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
725 //----------------------------------------------------------------------
726 //----------------------------------------------------------------------
727 // Compare MC decay photon projection to cell location and Local Maxima
728 //----------------------------------------------------------------------
729 //----------------------------------------------------------------------
731 // Get the mother pi0
734 Int_t pdg = -22222, status = -1;
737 Int_t label = cluster->GetLabel();
738 TLorentzVector pi0Kine;
740 while( pdg!=111 && label>=0 )
742 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
745 if(pdg!=111 || label < 0)
747 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
751 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
755 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
759 // Get daughter photon kinematics
760 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
761 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
762 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
763 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
765 if(pdg1!=22 || pdg0 != 22)
767 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
771 // In what cells did the photons hit
772 Float_t eta0 = photon0Kine.Eta();
773 Float_t eta1 = photon1Kine.Eta();
775 Float_t phi0 = photon0Kine.Phi();
776 Float_t phi1 = photon1Kine.Phi();
778 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
780 // 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",
781 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
782 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
783 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
785 // TLorentzVector momclus;
786 // cluster->GetMomentum(momclus,GetVertex(0));
787 // 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());
790 if(phi0 < 0 ) phi0+=TMath::TwoPi();
791 if(phi1 < 0 ) phi1+=TMath::TwoPi();
793 Int_t absId0=-1, absId1=-1;
794 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
795 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
797 if(absId1 < 0 || absId1 < 0)
799 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
803 //-----------------------------------------------
804 // Check that the 2 photons hit the Local Maxima
805 //-----------------------------------------------
808 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
810 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
811 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
813 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
814 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
815 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
816 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
818 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
819 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
821 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
822 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
823 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
824 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
826 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
827 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
831 if(inlm > 2) inlm = 2;
833 Bool_t match0 = kFALSE;
834 Bool_t match1 = kFALSE;
837 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
839 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
840 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
842 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
843 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
846 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
848 // If one or the 2 not matched, check with the other MC labels
849 // only in case there was a conversion
851 Int_t absId0second = -1;
852 Int_t absId1second = -1;
853 Int_t secLabel0 = -1;
854 Int_t secLabel1 = -1;
858 Int_t secpdg = -999999;
859 Int_t secstatus = -1;
860 Int_t secgrandLabel = -1;
862 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
863 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
865 if((!match0 || !match1) && mcindex == kmcPi0Conv)
867 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
869 Int_t mclabel = cluster->GetLabels()[ilab];
871 //printf("Check label %d - %d\n",ilab,mclabel);
873 if(mclabel == label0 || mclabel == label1)
875 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
876 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
877 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
881 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
883 // match mc label and parent photon
884 Int_t tmplabel = mclabel;
885 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
887 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
889 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
891 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
893 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
894 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
895 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
898 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
900 tmplabel = secgrandLabel;
904 // Get the position of the found secondaries mother
905 if(!match0 && secLabel0 > 0)
907 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
909 //Float_t eta = mother.Eta();
910 //Float_t phi = mother.Phi();
911 //if(phi < 0 ) phi+=TMath::TwoPi();
912 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
914 //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());
916 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
917 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
920 if(!match1 && secLabel1 > 0)
922 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
924 //Float_t eta = mother.Eta();
925 //Float_t phi = mother.Phi();
926 //if(phi < 0 ) phi+=TMath::TwoPi();
927 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
929 //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());
931 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
932 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
935 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
939 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
940 if( match0 && match1 )
942 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
943 // printf("a) Both Photons hit local maxima \n");
947 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
948 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
949 if(match0 && imatch0 == imax)
951 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
952 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
956 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
957 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
962 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
963 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
964 if(match0 && imatch0 == imax )
966 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
967 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
971 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
972 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
980 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
981 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
983 //---------------------------------------------
984 // Check the adjacent cells to the local maxima
985 //---------------------------------------------
989 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
990 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
991 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
992 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
997 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
998 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1000 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1001 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1004 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1006 if(match0 && match1)
1008 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1009 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1013 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1014 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1016 if(match0 && imatch0 == imax)
1018 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1019 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1023 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1024 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1029 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1030 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1031 if(match0 && imatch0 == imax)
1033 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1034 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1038 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1039 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1046 // Decay photon cells are adjacent?
1048 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1050 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1051 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1054 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1055 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1059 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1060 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1066 //--------------------
1067 // Other Local maxima
1068 //--------------------
1070 Bool_t matchMCHitOtherLM = kFALSE;
1073 for(Int_t i = 0; i < nmaxima; i++)
1075 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1081 for(Int_t i = 0; i < nmaxima; i++)
1083 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1087 if(matchMCHitOtherLM)
1089 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1090 // printf("d) One Photon hits a local maxima, the other another not high \n");
1094 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1095 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1096 if(match0 && imatch0 == imax)
1098 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1099 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1103 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1104 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1109 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1110 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1111 if(match0 && imatch0 == imax)
1113 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1114 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1118 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1119 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1126 // Adjacent to other maxima
1128 Bool_t adjacentOther1 = kFALSE;
1131 for(Int_t i = 0; i < nmaxima; i++)
1133 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1134 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1136 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1138 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1140 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1144 Bool_t adjacentOther0 = kFALSE;
1147 for(Int_t i = 0; i < nmaxima; i++)
1149 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1150 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1152 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1154 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1156 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1160 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1163 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1164 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1168 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1169 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1170 if(match0 && imatch0 == imax)
1172 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1173 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1177 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1178 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1183 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1184 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1185 if(match0 && imatch0 == imax)
1187 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1188 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1192 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1193 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1200 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1201 // printf("f) No hit found \n");
1204 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1205 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1209 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1210 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1215 //___________________________________________________________________________________________________________________
1216 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched,
1217 const Float_t en, const Float_t angle, const Float_t mass)
1219 // Fill histograms related to opening angle
1223 fhAnglePairNLocMax1[matched]->Fill(en,angle);
1224 if( en > fHistoECut ) fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
1228 fhAnglePairNLocMax2[matched]->Fill(en,angle);
1229 if( en > fHistoECut ) fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
1233 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
1234 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
1239 //______________________________________________________________________________________________________________________
1240 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(const Int_t nMax, const Int_t ebin, const Int_t mcIndex,
1241 TLorentzVector pi0, TLorentzVector g1, TLorentzVector g2,
1242 const Float_t m02, const Int_t pid)
1244 // Fill Armeteros type histograms
1245 Float_t en = pi0.Energy();
1246 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1248 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1249 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1250 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1251 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1253 // TO DO THE CALCULATIONS
1254 Float_t epsilon = 0;
1256 // Float_t angle = g2.Angle(g1.Vect());
1257 // Float_t phiPi0 = pi0.Phi();
1258 // Float_t phiGam1 = g1.Phi();
1259 // Float_t phiGam2 = g2.Phi();
1261 // printf("Phi: Pi0 %f, G1 %f, G2, %f, OpAng %f, G1-G2 %f, Pi0-G1 %f, Pi0-G2 %f, \n",phiPi0,phiGam1,phiGam2,angle,phiGam2-phiGam1,phiPi0-phiGam1,phiPi0-phiGam2);
1265 fhArmNLocMax1[0][ebin]->Fill(epsilon,alpha);
1266 if((m02OK && asyOK) && (asyOn || m02On))
1267 fhArmAfterCutsNLocMax1[0][ebin]->Fill(epsilon,alpha);
1268 if(pid==AliCaloPID::kPi0)
1269 fhArmPi0NLocMax1[0][ebin]->Fill(epsilon,alpha);
1273 fhArmNLocMax2[0][ebin]->Fill(epsilon,alpha);
1274 if((m02OK && asyOK) && (asyOn || m02On))
1275 fhArmAfterCutsNLocMax2[0][ebin]->Fill(epsilon,alpha);
1276 if(pid==AliCaloPID::kPi0)
1277 fhArmPi0NLocMax2[0][ebin]->Fill(epsilon,alpha);
1281 fhArmNLocMaxN[0][ebin]->Fill(epsilon,alpha);
1282 if((m02OK && asyOK) && (asyOn || m02On))
1283 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(epsilon,alpha);
1284 if(pid==AliCaloPID::kPi0)
1285 fhArmPi0NLocMaxN[0][ebin]->Fill(epsilon,alpha);
1288 if(IsDataMC() && mcIndex > 0 && mcIndex < 5)
1292 fhArmNLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1293 if((m02OK && asyOK) && (asyOn || m02On))
1294 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1295 if(pid==AliCaloPID::kPi0)
1296 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(epsilon,alpha);
1300 fhArmNLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1301 if((m02OK && asyOK) && (asyOn || m02On))
1302 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1303 if(pid==AliCaloPID::kPi0)
1304 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(epsilon,alpha);
1308 fhArmNLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1309 if((m02OK && asyOK) && (asyOn || m02On))
1310 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1311 if(pid==AliCaloPID::kPi0)
1312 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(epsilon,alpha);
1319 //__________________________________________________________________________________________________________________________________________
1320 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1321 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1323 // Fill some histograms integrating in few energy bins
1327 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1328 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1330 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1331 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1335 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1336 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1338 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1339 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1343 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1344 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1346 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1347 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1352 //________________________________________________________________________________________________________________________
1353 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1354 const Int_t nMax, const Float_t mass, const Float_t l0,
1355 const Float_t eta, const Float_t phi,
1356 const Bool_t matched, const Int_t mcindex)
1358 // Fill histograms for clusters before any selection after spliting
1360 Float_t splitFrac = (e1+e2)/en;
1363 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1365 fhNLocMax[0][matched]->Fill(en,nMax);
1366 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1367 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1369 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1371 fhNLocMax[mcindex][matched]->Fill(en,nMax);
1372 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1373 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1378 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1379 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1381 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1383 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1384 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1389 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1390 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1392 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1393 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1396 else if( nMax == 2 )
1398 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1399 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1401 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1403 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1404 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1409 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1410 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1412 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1413 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1416 else if( nMax >= 3 )
1418 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1419 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1421 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1423 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1424 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1430 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1431 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1433 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1434 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1441 //________________________________________________________________________________________________________________________
1442 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1443 const Float_t e1, const Float_t e2,
1444 const Int_t nMax, const Float_t mass, const Float_t l0,
1445 const Bool_t matched, const Int_t mcindex)
1447 // Fill histograms for clusters passing the first M02 selection
1449 Float_t efrac = eprim/en;
1450 Float_t efracSplit = 0;
1451 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1453 Float_t splitFrac = (e1+e2)/en;
1456 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1458 Int_t inlm = nMax-1;
1459 if(inlm > 2) inlm = 2;
1460 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1462 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1463 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1464 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1465 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1467 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1471 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1472 if(IsDataMC() && mcindex > 0 && mcindex < 7) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1477 fhMassNLocMax1[0][matched]->Fill(en,mass );
1478 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1480 // Effect of cuts in mass histograms
1482 if(!matched && asyOK && asyOn )
1484 fhMassAsyCutNLocMax1->Fill(en,mass);
1485 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1488 if(!matched && m02OK && m02On )
1490 fhMassM02CutNLocMax1->Fill(en,mass);
1491 fhAsymM02CutNLocMax1->Fill(en,asym );
1492 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1495 if((m02OK && asyOK) && (asyOn || m02On))
1497 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1498 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1500 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1502 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1503 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1509 fhMassNLocMax2[0][matched]->Fill(en,mass );
1510 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1512 // Effect of cuts in mass histograms
1514 if(!matched && asyOK && asyOn )
1516 fhMassAsyCutNLocMax2->Fill(en,mass);
1517 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1520 if(!matched && m02OK && m02On )
1522 fhMassM02CutNLocMax2->Fill(en,mass);
1523 fhAsymM02CutNLocMax2->Fill(en,asym );
1524 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1527 if((m02OK && asyOK) && (asyOn || m02On))
1529 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1530 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1532 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1534 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1535 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1541 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1542 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1544 // Effect of cuts in mass histograms
1546 if(!matched && asyOK && asyOn )
1548 fhMassAsyCutNLocMaxN->Fill(en,mass);
1549 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1552 if(!matched && m02OK && m02On )
1554 fhMassM02CutNLocMaxN->Fill(en,mass);
1555 fhAsymM02CutNLocMaxN->Fill(en,asym );
1556 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1559 if((m02OK && asyOK) && (asyOn || m02On))
1561 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1562 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1564 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1566 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1567 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1572 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1576 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1577 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1579 if((m02OK && asyOK) && (asyOn || m02On))
1581 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1582 if(splitFrac > splitFracMin)
1583 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1588 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1589 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1591 if((m02OK && asyOK) && (asyOn || m02On))
1593 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1594 if(splitFrac >splitFracMin)
1595 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1600 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1601 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1603 if((m02OK && asyOK) && (asyOn || m02On))
1605 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1606 if(splitFrac > splitFracMin )
1607 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1610 }//Work with MC truth
1614 //________________________________________________________________________________________________________________________
1615 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1616 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1617 const Float_t mass, const Float_t l0,
1618 const Float_t eta, const Float_t phi,
1619 const Bool_t matched, const Int_t mcindex)
1621 // Fill histograms for clusters passing the pi0 selection
1624 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1626 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
1627 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
1629 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1631 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
1632 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
1637 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1638 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1639 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1640 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1644 if(fFillHighMultHisto)
1646 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1647 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1649 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1650 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1655 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1656 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1657 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1658 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1662 if(fFillHighMultHisto)
1664 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1665 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1667 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1668 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1673 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1674 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1675 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1676 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1680 if(fFillHighMultHisto)
1682 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1683 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1685 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1686 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1690 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1694 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1695 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1696 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1697 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1702 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1703 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1704 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1705 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1709 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
1710 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1711 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
1712 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1714 }//Work with MC truth
1717 //________________________________________________________________________________________________________________________
1718 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1719 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1720 const Float_t mass, const Float_t l0,
1721 const Float_t eta, const Float_t phi,
1722 const Bool_t matched, const Int_t mcindex)
1724 // Fill histograms for clusters passing the eta selection
1727 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1731 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1732 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1733 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1734 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1738 if(fFillHighMultHisto)
1740 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1741 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1743 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1744 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1749 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
1750 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
1751 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
1752 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
1756 if(fFillHighMultHisto)
1758 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
1759 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
1761 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
1762 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1767 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
1768 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
1769 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
1770 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
1774 if(fFillHighMultHisto)
1776 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
1777 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1779 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
1780 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1784 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1788 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
1789 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
1790 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
1791 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
1795 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
1796 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
1797 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
1798 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
1803 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1804 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1805 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1806 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1808 }//Work with MC truth
1812 //_____________________________________________________________________________________________________________________
1813 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
1814 const Float_t mass, const Float_t l0,
1815 const Bool_t matched, const Int_t mcindex)
1817 // Fill histograms for clusters passing the photon selection
1821 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
1822 fhMassConNLocMax1[0][matched]->Fill(en,mass);
1823 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
1827 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
1828 fhMassConNLocMax2[0][matched]->Fill(en,mass);
1829 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
1833 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
1834 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
1835 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
1838 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1842 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
1843 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
1844 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
1848 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
1849 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
1850 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
1854 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
1855 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
1856 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
1859 }//Work with MC truth
1862 //_____________________________________________________________________________________________________________________
1863 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
1864 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
1865 const Float_t l0, const Float_t mass,
1866 const Int_t nMax, const Bool_t matched,
1867 const Float_t splitFrac, const Float_t asym,
1868 const Float_t eprim, const Float_t asymGen)
1870 // Fill histograms needing some MC input
1872 Float_t efrac = eprim/en;
1873 Float_t efracSplit = 0;
1874 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1875 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
1877 //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",
1878 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1880 if(ebin >= 0 && fFillEbinHisto)
1882 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1883 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1888 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1889 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
1890 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1891 if(asym > 0 && !matched)
1893 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
1894 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
1899 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
1900 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1903 if( en > fHistoECut )
1905 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1907 if(!matched && ebin >= 0 && fFillEbinHisto)
1909 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1910 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1912 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1914 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1915 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
1922 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1923 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1924 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1926 if(asym > 0 && !matched)
1928 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
1929 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
1934 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
1935 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1938 if( en > fHistoECut )
1940 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1942 if(!matched && ebin >= 0 && fFillEbinHisto)
1944 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1945 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1946 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1948 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1949 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
1957 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1958 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1959 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1960 if(asym > 0 && !matched)
1962 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
1963 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
1968 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
1969 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
1972 if( en > fHistoECut )
1974 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
1976 if(!matched && ebin >= 0 && fFillEbinHisto)
1978 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1979 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1981 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
1983 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
1984 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
1991 //__________________________________________________________________________________________________________________________________________________
1992 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
1993 const Int_t nc, const Float_t mass, const Float_t l0,
1994 const Float_t asym, const Float_t splitFrac,
1995 const Int_t inlm, const Int_t ebin, const Bool_t matched,
1996 const Int_t mcindex, const Int_t noverlaps)
1998 // Fill histograms for MC Overlaps
2000 //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);
2002 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2006 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2010 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2011 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2012 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2013 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2014 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2015 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2016 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2018 else if(noverlaps == 1)
2020 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2021 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2022 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2023 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2024 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2025 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2026 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2028 else if(noverlaps > 1)
2030 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2031 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2032 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2033 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2034 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2035 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2036 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2039 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
2041 else if(fFillTMHisto)
2043 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2047 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2048 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2049 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2050 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2051 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2052 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2053 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2055 else if(noverlaps == 1)
2057 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2058 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2059 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2060 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2061 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2062 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2063 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2065 else if(noverlaps > 1)
2067 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2068 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2069 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2070 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2071 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2072 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2073 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2076 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
2081 //__________________________________________________________________________________________________
2082 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
2083 const Bool_t matched, const Int_t mcindex,
2084 const Float_t mass , const Float_t l0)
2087 // Fill optional histograms with more SS parameters
2091 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2092 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2094 if (mcindex==kmcPi0 && !matched)
2096 if( energy > fHistoECut)
2098 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2099 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2103 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2104 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2108 else if( nMax == 2 )
2110 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2111 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2114 if (mcindex==kmcPi0 && !matched)
2116 if( energy > fHistoECut)
2118 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2119 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2123 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2124 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2128 else if( nMax >= 3 )
2130 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2131 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2133 if (mcindex==kmcPi0 && !matched)
2135 if( energy > fHistoECut)
2137 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2138 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2142 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2143 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2149 //______________________________________________________________________________________________________
2150 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
2151 const Bool_t matched, const Int_t mcindex,
2152 const Float_t mass , const Int_t ebin)
2154 // Fill optional histograms with more SS parameters
2156 Float_t en = cluster->E();
2158 // Get more Shower Shape parameters
2159 Float_t ll0 = 0., ll1 = 0.;
2160 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2161 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2163 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2164 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2166 Float_t dispAsy = -1;
2167 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2171 if( en > fHistoECut )
2173 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2174 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2175 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2177 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2179 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2180 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2181 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2185 if(!matched && ebin >= 0 && fFillEbinHisto)
2187 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2188 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2189 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2192 else if( nMax == 2 )
2194 if( en > fHistoECut )
2196 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2197 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2198 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2200 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2202 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2203 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2204 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2208 if(!matched && ebin >= 0 && fFillEbinHisto)
2210 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2211 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2212 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2216 else if( nMax >= 3 )
2218 if( en > fHistoECut )
2220 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2221 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2222 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2224 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2226 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2227 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2228 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2232 if(!matched && ebin >= 0 && fFillEbinHisto)
2234 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2235 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2236 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2243 //__________________________________________________________________________________________________
2244 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
2245 const Int_t absId1, const Int_t absId2)
2247 // Calculate weights and fill histograms
2249 AliVCaloCells* cells = 0;
2250 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2251 else cells = GetPHOSCells();
2253 // First recalculate energy in case non linearity was applied
2255 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2258 Int_t id = clus->GetCellsAbsId()[ipos];
2260 //Recalibrate cell energy if needed
2261 Float_t amp = cells->GetCellAmplitude(id);
2262 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2270 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
2274 //Get amplitude of main local maxima, recalibrate if needed
2275 Float_t amp1 = cells->GetCellAmplitude(absId1);
2276 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2277 Float_t amp2 = cells->GetCellAmplitude(absId2);
2278 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2280 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2281 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2283 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2284 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2285 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2287 //Get the ratio and log ratio to all cells in cluster
2288 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2290 Int_t id = clus->GetCellsAbsId()[ipos];
2292 //Recalibrate cell energy if needed
2293 Float_t amp = cells->GetCellAmplitude(id);
2294 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2296 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
2297 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2298 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2300 if (id!=absId1 && id!=absId2)
2302 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2303 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2308 //Recalculate shower shape for different W0
2309 if(fCalorimeter=="EMCAL")
2311 Float_t l0org = clus->GetM02();
2312 Float_t l1org = clus->GetM20();
2313 Float_t dorg = clus->GetDispersion();
2314 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2316 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2318 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2319 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2321 Float_t l0 = 0., l1 = 0.;
2322 Float_t disp = 0., dEta = 0., dPhi = 0.;
2323 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2325 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2326 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2329 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2333 // Set the original values back
2334 clus->SetM02(l0org);
2335 clus->SetM20(l1org);
2336 clus->SetDispersion(dorg);
2337 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2339 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2341 Float_t l0 = 0., l1 = 0.;
2342 Float_t disp = 0., dEta = 0., dPhi = 0.;
2343 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2345 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2346 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2348 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2349 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2356 //________________________________________________________________________________________
2357 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster, const Int_t nMax,
2358 const Int_t mcindex)
2360 // Fill histograms related to track matching
2362 Float_t dZ = cluster->GetTrackDz();
2363 Float_t dR = cluster->GetTrackDx();
2364 Float_t en = cluster->E();
2366 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2368 dR = 2000., dZ = 2000.;
2369 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2372 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2374 if(TMath::Abs(dR) < 999)
2376 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2377 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2378 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2380 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2382 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2383 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2384 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2387 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2389 Bool_t positive = kFALSE;
2390 if(track) positive = (track->Charge()>0);
2396 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2397 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2398 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2400 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2402 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2403 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2404 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2409 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2410 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2411 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2413 if(IsDataMC() && mcindex > 0 && mcindex < 7)
2415 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2416 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2417 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2426 //_______________________________________________________________
2427 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2429 //Save parameters used for analysis
2430 TString parList ; //this will be list of parameters used for this analysis.
2431 const Int_t buffersize = 255;
2432 char onePar[buffersize] ;
2434 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2437 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2439 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2441 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2443 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2445 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2447 if(fFillSSWeightHisto)
2449 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2453 return new TObjString(parList) ;
2457 //________________________________________________________________
2458 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2460 // Create histograms to be saved in output file and
2461 // store them in outputContainer
2462 TList * outputContainer = new TList() ;
2463 outputContainer->SetName("InsideClusterHistos") ;
2465 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2466 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2467 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2468 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2469 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2470 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2472 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2473 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2474 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2475 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2476 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2477 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2479 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2480 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2481 Bool_t splitOn = kFALSE;
2482 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2483 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2484 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2486 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
2487 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
2488 TString snlm [] = {"1","2","N"};
2492 if(IsDataMC()) n = 7;
2494 Int_t nMaxBins = 10;
2496 TString sMatched[] = {"","Matched"};
2499 if(!fFillTMHisto) nMatched = 1;
2501 if(fCheckSplitDistToBad)
2503 for(Int_t inlm = 0; inlm < 3; inlm++)
2505 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
2506 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2507 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2508 fhMassBadDistClose[inlm]->SetYTitle("M (GeV/c^{2})");
2509 fhMassBadDistClose[inlm]->SetXTitle("E (GeV)");
2510 outputContainer->Add(fhMassBadDistClose[inlm]) ;
2512 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
2513 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2514 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2515 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
2516 fhM02BadDistClose[inlm]->SetXTitle("E (GeV)");
2517 outputContainer->Add(fhM02BadDistClose[inlm]) ;
2519 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
2520 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2521 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2522 fhMassOnBorder[inlm]->SetYTitle("M (GeV/c^{2})");
2523 fhMassOnBorder[inlm]->SetXTitle("E (GeV)");
2524 outputContainer->Add(fhMassOnBorder[inlm]) ;
2526 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
2527 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2528 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2529 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
2530 fhM02OnBorder[inlm]->SetXTitle("E (GeV)");
2531 outputContainer->Add(fhM02OnBorder[inlm]) ;
2536 for(Int_t i = 0; i < n; i++)
2538 for(Int_t j = 0; j < nMatched; j++)
2541 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2542 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2543 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2544 fhNLocMax[i][j] ->SetYTitle("N maxima");
2545 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2546 outputContainer->Add(fhNLocMax[i][j]) ;
2548 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2549 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
2550 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2551 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
2552 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
2553 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
2556 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2557 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
2558 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2559 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
2560 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
2561 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
2565 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2566 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2567 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2568 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2569 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2570 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2572 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2573 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2574 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2575 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2576 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2577 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2580 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2581 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2582 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2583 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2584 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2585 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2588 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2589 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2590 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2591 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2592 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2593 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2595 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2596 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2597 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2598 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2599 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2600 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2602 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2603 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2604 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2605 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2606 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2607 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2609 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2610 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2611 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2612 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2613 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2614 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2616 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2617 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2618 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2619 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2620 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2621 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2623 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2624 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2625 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2626 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2627 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2628 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2630 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2631 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2632 nptbins,ptmin,ptmax,200,-1,1);
2633 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2634 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2635 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2637 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2638 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2639 nptbins,ptmin,ptmax,200,-1,1);
2640 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2641 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2642 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2644 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2645 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2646 nptbins,ptmin,ptmax,200,-1,1);
2647 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2648 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2649 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2651 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2652 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2653 nptbins,ptmin,ptmax,120,0,1.2);
2654 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2655 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2656 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2658 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2659 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2660 nptbins,ptmin,ptmax,120,0,1.2);
2661 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2662 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2663 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2665 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2666 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2667 nptbins,ptmin,ptmax,120,0,1.2);
2668 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2669 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2670 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
2676 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2677 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2678 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
2679 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
2680 outputContainer->Add(fhMassM02CutNLocMax1) ;
2682 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2683 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2684 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
2685 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
2686 outputContainer->Add(fhMassM02CutNLocMax2) ;
2688 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2689 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2690 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2691 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
2692 outputContainer->Add(fhMassM02CutNLocMaxN) ;
2694 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2695 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2696 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
2697 outputContainer->Add(fhAsymM02CutNLocMax1) ;
2699 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2700 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2701 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
2702 outputContainer->Add(fhAsymM02CutNLocMax2) ;
2704 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2705 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2706 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
2707 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
2710 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
2711 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2712 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
2713 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
2714 outputContainer->Add(fhMassSplitECutNLocMax1) ;
2716 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2717 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2718 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
2719 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
2720 outputContainer->Add(fhMassSplitECutNLocMax2) ;
2722 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2723 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2724 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2725 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
2726 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
2732 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2733 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2734 fhMassAsyCutNLocMax1->SetYTitle("M (GeV/c^{2})");
2735 fhMassAsyCutNLocMax1->SetXTitle("E (GeV)");
2736 outputContainer->Add(fhMassAsyCutNLocMax1) ;
2738 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2739 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2740 fhMassAsyCutNLocMax2->SetYTitle("M (GeV/c^{2})");
2741 fhMassAsyCutNLocMax2->SetXTitle("E (GeV)");
2742 outputContainer->Add(fhMassAsyCutNLocMax2) ;
2744 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2745 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2746 fhMassAsyCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2747 fhMassAsyCutNLocMaxN->SetXTitle("E (GeV)");
2748 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
2750 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of NLM=1 vs cluster Energy, AsyCut, no TM",
2751 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2752 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
2753 fhM02AsyCutNLocMax1->SetXTitle("E (GeV)");
2754 outputContainer->Add(fhM02AsyCutNLocMax1) ;
2756 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of NLM=2 vs cluster Energy, AsyCut, no TM",
2757 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2758 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
2759 fhM02AsyCutNLocMax2->SetXTitle("E (GeV)");
2760 outputContainer->Add(fhM02AsyCutNLocMax2) ;
2762 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
2763 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2764 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
2765 fhM02AsyCutNLocMaxN->SetXTitle("E (GeV)");
2766 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
2772 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2773 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2774 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2775 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2776 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
2777 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
2779 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2780 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2781 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2782 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2783 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
2784 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
2787 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2788 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2789 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2790 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2791 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2792 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
2794 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2795 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()),
2796 nptbins,ptmin,ptmax,120,0,1.2);
2797 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2798 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2799 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
2801 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2802 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()),
2803 nptbins,ptmin,ptmax,120,0,1.2);
2804 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2805 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2806 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
2808 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2809 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()),
2810 nptbins,ptmin,ptmax,120,0,1.2);
2811 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2812 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2813 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
2816 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2817 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2818 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2819 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2820 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
2821 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
2823 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2824 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2825 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2826 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2827 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
2828 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
2830 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2831 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2832 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2833 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2834 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
2835 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
2837 if(fFillSSExtraHisto)
2839 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2840 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2841 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2842 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2843 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2844 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
2846 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2847 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2848 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2849 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2850 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2851 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
2853 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2854 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2855 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2856 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2857 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2858 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
2860 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2861 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2862 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2863 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2864 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2865 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
2867 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2868 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2869 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2870 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2871 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2872 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
2874 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2875 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2876 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2877 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2878 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2879 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
2881 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2882 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()),
2883 200,-1,1,mbins,mmin,mmax);
2884 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2885 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2886 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
2888 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2889 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()),
2890 200,-1,1,mbins,mmin,mmax);
2891 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2892 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2893 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
2895 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2896 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()),
2897 200,-1,1,mbins,mmin,mmax);
2898 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2899 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2900 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
2906 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2907 Form("Number of local maxima in cluster %s, M02 cut",ptype[i].Data()),
2908 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2909 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2910 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2911 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2914 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
2916 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2917 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2918 nptbins,ptmin,ptmax,200,0,2);
2919 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2920 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2921 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
2923 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2924 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2925 nptbins,ptmin,ptmax,200,0,2);
2926 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2927 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2928 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
2930 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2931 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2932 nptbins,ptmin,ptmax,200,0,2);
2933 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2934 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2935 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
2937 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2938 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2939 nptbins,ptmin,ptmax,200,0,2);
2940 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2941 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2942 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
2944 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2945 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2946 nptbins,ptmin,ptmax,200,0,2);
2947 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2948 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2949 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
2951 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2952 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2953 nptbins,ptmin,ptmax,200,0,2);
2954 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2955 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2956 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
2959 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2960 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2961 nptbins,ptmin,ptmax,200,0,2);
2962 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2963 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2964 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
2966 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2967 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2968 nptbins,ptmin,ptmax,200,0,2);
2969 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2970 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2971 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
2973 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2974 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2975 nptbins,ptmin,ptmax,200,0,2);
2976 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2977 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2978 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
2980 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2981 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2982 nptbins,ptmin,ptmax,200,0,2);
2983 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2984 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2985 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
2987 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2988 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2989 nptbins,ptmin,ptmax,200,0,2);
2990 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2991 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2992 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
2994 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2995 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2996 nptbins,ptmin,ptmax,200,0,2);
2997 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2998 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2999 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3001 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3002 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()),
3004 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3005 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3006 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3008 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3009 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()),
3011 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3012 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3013 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3016 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3017 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()),
3019 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3020 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3021 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3024 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3025 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3026 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3027 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3028 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
3029 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3031 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3032 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3033 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3034 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3035 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
3036 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3039 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3040 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3041 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3042 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3043 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
3044 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
3047 // Histograms after cluster identification
3052 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3053 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3054 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3055 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3056 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3057 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3059 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3060 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3061 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3062 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3063 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3064 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
3066 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3067 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3068 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3069 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3070 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3071 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
3073 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3074 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3075 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3076 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3077 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3078 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
3080 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3081 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
3082 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3083 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3084 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3085 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
3087 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3088 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3089 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3090 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3091 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3092 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
3094 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3095 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3096 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3097 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
3098 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3099 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
3101 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3102 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3103 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3104 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
3105 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3106 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
3108 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3109 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3110 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3111 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
3112 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3113 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
3117 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3118 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3119 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3120 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
3121 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3122 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3124 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3125 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3126 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3127 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
3128 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3129 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3131 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3132 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3133 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3134 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
3135 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3136 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3143 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3144 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3145 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3146 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3147 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3148 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3151 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3152 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3153 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3154 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3155 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3156 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3158 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3159 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3160 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3161 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3162 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3163 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3165 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3166 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3167 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3168 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3169 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3170 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3172 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3173 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3174 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3175 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3176 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3177 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3179 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3180 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3181 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3182 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3183 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3184 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3186 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3187 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3188 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3189 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
3190 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3191 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3193 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3194 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3195 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3196 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
3197 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3198 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
3200 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3201 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3202 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3203 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3204 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3205 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
3209 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3210 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3211 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3212 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
3213 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3214 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
3216 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3217 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3218 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3219 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
3220 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3221 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
3223 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3224 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3225 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3226 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
3227 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3228 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
3233 if(fFillIdConvHisto)
3235 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3236 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3237 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3238 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3239 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3240 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
3242 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3243 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3244 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3245 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3246 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3247 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
3249 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3250 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3251 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3252 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3253 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3254 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
3257 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3258 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3259 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3260 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3261 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3262 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
3264 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3265 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3266 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3267 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3268 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3269 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
3271 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3272 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3273 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3274 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3275 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3276 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
3278 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3279 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3280 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3281 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
3282 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3283 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
3285 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3286 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3287 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3288 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
3289 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3290 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
3292 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3293 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3294 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3295 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3296 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3297 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
3301 } // matched, not matched
3305 for(Int_t j = 0; j < 4; j++)
3308 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
3309 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3310 120,0,1.2,mbins,mmin,mmax);
3311 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3312 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3313 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
3315 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
3316 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3317 120,0,1.2,mbins,mmin,mmax);
3318 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3319 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3320 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
3322 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
3323 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
3324 120,0,1.2,mbins,mmin,mmax);
3325 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3326 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
3327 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
3329 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
3331 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
3332 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
3333 200,0,2,nMaxBins,0,nMaxBins);
3334 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
3335 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3336 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
3338 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
3339 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
3340 200,0,2,nMaxBins,0,nMaxBins);
3341 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
3342 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
3343 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
3345 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3346 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
3347 200,0,2,mbins,mmin,mmax);
3348 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3349 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3350 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
3352 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3353 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
3354 200,0,2,mbins,mmin,mmax);
3355 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3356 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3357 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
3359 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3360 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
3361 200,0,2,mbins,mmin,mmax);
3362 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3363 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
3364 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
3366 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
3367 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
3368 200,0,2,ssbins,ssmin,ssmax);
3369 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3370 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3371 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
3373 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
3374 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
3375 200,0,2,ssbins,ssmin,ssmax);
3376 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3377 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3378 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
3380 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
3381 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
3382 200,0,2,ssbins,ssmin,ssmax);
3383 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
3384 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3385 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
3389 } // MC particle list
3391 if(fFillHighMultHisto)
3395 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
3396 "E vs Centrality, selected pi0 cluster with NLM=1",
3397 nptbins,ptmin,ptmax,100,0,100);
3398 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
3399 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
3400 outputContainer->Add(fhCentralityPi0NLocMax1) ;
3402 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
3403 "E vs Centrality, selected pi0 cluster with NLM=2",
3404 nptbins,ptmin,ptmax,100,0,100);
3405 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
3406 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
3407 outputContainer->Add(fhCentralityPi0NLocMax2) ;
3409 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
3410 "E vs Centrality, selected pi0 cluster with NLM>1",
3411 nptbins,ptmin,ptmax,100,0,100);
3412 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
3413 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
3414 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
3418 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
3419 "E vs Centrality, selected pi0 cluster with NLM=1",
3420 nptbins,ptmin,ptmax,100,0,100);
3421 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
3422 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
3423 outputContainer->Add(fhCentralityEtaNLocMax1) ;
3425 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3426 "E vs Centrality, selected pi0 cluster with NLM=2",
3427 nptbins,ptmin,ptmax,100,0,100);
3428 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3429 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3430 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3432 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3433 "E vs Centrality, selected pi0 cluster with NLM>1",
3434 nptbins,ptmin,ptmax,100,0,100);
3435 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3436 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3437 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3440 // E vs Event plane angle
3442 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3443 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3444 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3445 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3446 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3448 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3449 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3450 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3451 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3452 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3454 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3455 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3456 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3457 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3458 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3462 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3463 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3464 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3465 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3466 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3468 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3469 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3470 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3471 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3472 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3474 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3475 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3476 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3477 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3478 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3484 for(Int_t i = 0; i < 4; i++)
3486 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3487 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3488 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3489 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3490 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3491 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3493 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3494 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3495 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3496 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3497 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3498 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3500 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3501 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3502 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3503 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3504 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3505 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3508 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3509 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
3510 200,-1,1,mbins,mmin,mmax);
3511 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3512 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3513 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3515 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3516 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
3517 200,-1,1,mbins,mmin,mmax);
3518 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3519 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3520 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3522 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3523 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
3524 200,-1,1,mbins,mmin,mmax);
3525 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3526 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3527 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3530 if(IsDataMC() && fFillMCHisto)
3532 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3533 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3534 ssbins,ssmin,ssmax,100,0,1);
3535 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3536 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3537 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3539 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3540 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3541 ssbins,ssmin,ssmax,100,0,1);
3542 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3543 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3544 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3546 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3547 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3548 ssbins,ssmin,ssmax,100,0,1);
3549 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3550 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3551 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3554 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3555 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
3557 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3558 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3559 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3561 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3562 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
3564 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3565 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3566 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3568 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3569 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
3571 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3572 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3573 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3576 if(fFillSSExtraHisto)
3578 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3579 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3580 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3581 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3582 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3583 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3585 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3586 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3587 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3588 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3589 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3590 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3592 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3593 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
3594 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3595 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3596 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3597 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3599 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3600 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3601 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3602 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3603 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3604 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3606 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3607 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3608 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3609 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3610 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3611 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3613 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3614 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
3615 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3616 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3617 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3618 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3620 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3621 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 bin %d",i),
3622 200,-1,1,mbins,mmin,mmax);
3623 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3624 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3625 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3627 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3628 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 bin %d",i),
3629 200,-1,1,mbins,mmin,mmax);
3630 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3631 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3632 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3634 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3635 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}), E bin %d",i),
3636 200,-1,1,mbins,mmin,mmax);
3637 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3638 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3639 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3644 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3646 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3647 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3648 nptbins,ptmin,ptmax,200,0,2);
3649 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3650 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3651 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3653 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3654 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3655 nptbins,ptmin,ptmax,200,0,2);
3656 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3657 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3658 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3661 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3662 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3663 nptbins,ptmin,ptmax,200,0,2);
3664 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3665 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3666 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3668 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3669 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3670 nptbins,ptmin,ptmax,200,0,2);
3671 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3672 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3673 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3675 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3676 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3677 nptbins,ptmin,ptmax,200,0,2);
3678 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3679 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3680 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3683 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3684 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3685 nptbins,ptmin,ptmax,200,0,2);
3686 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3687 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3688 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
3692 if(fFillTMResidualHisto && fFillTMHisto)
3694 for(Int_t i = 0; i < n; i++)
3697 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
3698 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
3699 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3700 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3701 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
3702 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3704 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
3705 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
3706 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3707 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3708 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
3709 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3711 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
3712 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
3714 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
3715 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
3716 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3717 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3718 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
3719 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3721 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
3722 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
3723 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3724 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3725 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
3726 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3728 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
3729 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
3731 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
3732 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
3733 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3734 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3735 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
3736 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3738 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
3739 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
3740 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3741 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3742 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
3743 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3745 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
3746 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
3748 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
3749 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
3750 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3751 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3752 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
3753 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3755 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
3756 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
3757 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3758 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3759 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
3760 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3762 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
3763 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
3765 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
3766 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
3767 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3768 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3769 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
3770 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3772 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
3773 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
3774 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3775 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3776 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
3777 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3779 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
3780 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
3782 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
3783 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
3784 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3785 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3786 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
3787 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3789 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
3790 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
3791 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3792 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3793 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
3794 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3796 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
3797 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
3799 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
3800 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
3801 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3802 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3803 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
3804 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3806 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
3807 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
3808 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3809 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3810 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
3811 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3813 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
3814 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
3816 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
3817 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
3818 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3819 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3820 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
3821 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3823 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
3824 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
3825 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3826 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3827 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
3828 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3830 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
3831 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
3833 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
3834 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
3835 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3836 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3837 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
3838 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3840 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
3841 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
3842 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3843 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3844 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
3845 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3847 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
3848 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
3855 for(Int_t j = 0; j < nMatched; j++)
3858 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
3859 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
3860 nptbins,ptmin,ptmax,200,0,0.2);
3861 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
3862 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
3863 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
3865 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
3866 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3867 nptbins,ptmin,ptmax,200,0,0.2);
3868 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
3869 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
3870 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
3872 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
3873 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3874 nptbins,ptmin,ptmax,200,0,0.2);
3875 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
3876 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
3877 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
3879 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
3880 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3881 mbins,mmin,mmax,200,0,0.2);
3882 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
3883 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
3884 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
3886 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
3887 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3888 mbins,mmin,mmax,200,0,0.2);
3889 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
3890 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
3891 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
3893 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
3894 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3895 mbins,mmin,mmax,200,0,0.2);
3896 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
3897 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
3898 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
3903 for(Int_t j = 0; j < nMatched; j++)
3905 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
3906 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
3907 100,-1,1,120,0,1.2);
3908 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3909 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3910 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
3912 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
3913 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
3914 100,-1,1,120,0,1.2);
3915 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3916 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3917 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
3919 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
3920 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
3921 100,-1,1,120,0,1.2);
3922 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3923 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3924 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
3928 fhClusterEtaPhiNLocMax1 = new TH2F
3929 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3930 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3931 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
3932 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
3934 fhClusterEtaPhiNLocMax2 = new TH2F
3935 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3936 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3937 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
3938 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
3940 fhClusterEtaPhiNLocMaxN = new TH2F
3941 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3942 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3943 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
3944 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
3946 fhPi0EtaPhiNLocMax1 = new TH2F
3947 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3948 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
3949 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
3950 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
3952 fhPi0EtaPhiNLocMax2 = new TH2F
3953 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3954 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
3955 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
3956 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
3958 fhPi0EtaPhiNLocMaxN = new TH2F
3959 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3960 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3961 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
3962 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
3966 fhEtaEtaPhiNLocMax1 = new TH2F
3967 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3968 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3969 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
3970 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
3972 fhEtaEtaPhiNLocMax2 = new TH2F
3973 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3974 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3975 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
3976 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
3978 fhEtaEtaPhiNLocMaxN = new TH2F
3979 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3980 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3981 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
3982 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
3985 if(fFillSSWeightHisto)
3987 for(Int_t nlm = 0; nlm < 3; nlm++)
3989 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
3990 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
3991 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
3992 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
3993 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
3994 outputContainer->Add(fhPi0CellE[nlm]) ;
3996 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
3997 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
3998 nptbins,ptmin,ptmax, 100,0,1);
3999 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
4000 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
4001 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
4003 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
4004 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
4005 nptbins,ptmin,ptmax, 100,-10,0);
4006 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
4007 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
4008 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
4011 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
4012 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
4013 nptbins,ptmin,ptmax, 100,0,1);
4014 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
4015 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4016 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
4018 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
4019 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
4020 nptbins,ptmin,ptmax, 100,0,1);
4021 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
4022 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
4023 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
4025 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
4026 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
4027 nptbins,ptmin,ptmax, 100,0,1);
4028 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
4029 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
4030 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
4032 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
4033 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
4034 nptbins,ptmin,ptmax, 100,0,1);
4035 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
4036 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
4037 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
4039 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
4040 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
4041 nptbins,ptmin,ptmax, 200,0,2);
4042 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
4043 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4044 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
4047 for(Int_t i = 0; i < fSSWeightN; i++)
4049 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
4050 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
4051 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4052 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4053 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
4054 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
4057 for(Int_t i = 0; i < fSSECellCutN; i++)
4059 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
4060 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
4061 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4062 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4063 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
4064 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
4070 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
4072 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4073 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4074 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4075 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
4077 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4078 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4079 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4080 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
4082 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4083 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4084 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4085 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
4089 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4090 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4091 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4092 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
4094 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4095 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4096 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4097 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
4099 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4100 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4101 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4102 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
4105 if(fFillNCellHisto && IsDataMC())
4108 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4109 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4110 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
4111 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
4113 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4114 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4115 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
4116 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
4118 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4119 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4120 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
4121 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
4123 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4124 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4125 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
4126 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
4128 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4129 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4130 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
4131 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
4133 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4134 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4135 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
4136 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
4138 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4139 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4140 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
4141 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
4143 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4144 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4145 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
4146 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
4148 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4149 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4150 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
4151 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
4153 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4154 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4155 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
4156 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
4158 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4159 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4160 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
4161 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
4163 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4164 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4165 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
4166 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
4170 if(IsDataMC() && fFillMCOverlapHisto)
4172 for(Int_t i = 1; i < n; i++)
4174 for(Int_t j = 0; j < 3; j++)
4176 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4177 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4178 nptbins,ptmin,ptmax,10,0,10);
4179 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
4180 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
4181 outputContainer->Add(fhMCENOverlaps[j][i]) ;
4183 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4184 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4185 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4186 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
4187 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
4188 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
4190 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4191 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4192 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4193 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
4194 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
4195 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
4197 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4198 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4199 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4200 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
4201 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
4202 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
4204 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4205 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4206 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4207 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4208 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
4209 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
4211 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4212 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4213 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4214 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4215 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
4216 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
4218 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4219 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4220 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4221 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
4222 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
4223 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
4225 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4226 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4227 nptbins,ptmin,ptmax,100,0,1);
4228 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
4229 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
4230 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
4232 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4233 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4234 nptbins,ptmin,ptmax,100,0,1);
4235 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
4236 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
4237 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
4239 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4240 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4241 nptbins,ptmin,ptmax,100,0,1);
4242 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
4243 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
4244 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
4249 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4250 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4251 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4252 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
4253 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
4254 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
4256 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4257 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4258 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4259 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
4260 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
4261 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
4263 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4264 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4265 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4266 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
4267 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
4268 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
4271 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4272 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4273 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4274 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
4275 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
4276 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
4278 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4279 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4280 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4281 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
4282 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
4283 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
4285 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4286 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4287 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4288 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
4289 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
4290 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
4293 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4294 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4295 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4296 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4297 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4298 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
4300 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4301 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4302 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4303 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4304 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4305 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
4307 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4308 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4309 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4310 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4311 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4312 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
4315 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4316 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4317 nptbins,ptmin,ptmax,120,0,1.2);
4318 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4319 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
4320 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
4322 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4323 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4324 nptbins,ptmin,ptmax,120,0,1.2);
4325 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4326 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
4327 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
4329 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4330 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4331 nptbins,ptmin,ptmax,120,0,1.2);
4332 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4333 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
4334 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
4338 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
4339 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4340 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4341 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
4342 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4343 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
4345 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
4346 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4347 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4348 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
4349 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4350 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
4352 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
4353 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
4354 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4355 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
4356 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4357 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
4362 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4363 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4364 nptbins,ptmin,ptmax,10,0,10);
4365 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
4366 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
4367 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
4369 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4370 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4371 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4372 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4373 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
4374 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
4376 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4377 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4378 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4379 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4380 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
4381 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
4383 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4384 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4385 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4386 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
4387 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4388 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
4390 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4391 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4392 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4393 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4394 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4395 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
4397 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4398 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4399 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4400 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4401 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4402 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
4404 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4405 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4406 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4407 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4408 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4409 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
4412 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4413 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4414 nptbins,ptmin,ptmax,100,0,1);
4415 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
4416 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4417 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
4419 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4420 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4421 nptbins,ptmin,ptmax,100,0,1);
4422 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
4423 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4424 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
4426 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4427 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4428 nptbins,ptmin,ptmax,100,0,1);
4429 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
4430 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4431 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
4434 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4435 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4436 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4437 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
4438 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4439 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
4441 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4442 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4443 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4444 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
4445 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4446 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4448 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4449 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4450 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4451 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4452 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4453 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4455 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4456 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4457 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4458 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4459 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4460 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4462 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4463 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4464 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4465 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4466 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4467 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
4469 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4470 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4471 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4472 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
4473 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
4474 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
4477 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4478 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4479 nptbins,ptmin,ptmax,120,0,1.2);
4480 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4481 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4482 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
4484 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4485 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4486 nptbins,ptmin,ptmax,120,0,1.2);
4487 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4488 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4489 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
4491 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4492 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4493 nptbins,ptmin,ptmax,120,0,1.2);
4494 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4495 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4496 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
4501 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4502 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4503 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4504 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4505 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4506 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4508 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4509 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4510 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4511 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4512 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4513 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
4515 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4516 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4517 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4518 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
4519 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4520 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
4528 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4529 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4530 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
4531 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
4532 outputContainer->Add(fhMCPi0HighNLMPair) ;
4534 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4535 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4536 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
4537 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
4538 outputContainer->Add(fhMCPi0LowNLMPair) ;
4540 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4541 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4542 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
4543 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
4544 outputContainer->Add(fhMCPi0AnyNLMPair) ;
4546 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4547 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4548 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
4549 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
4550 outputContainer->Add(fhMCPi0NoneNLMPair) ;
4553 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4554 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4555 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
4556 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4557 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
4559 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4560 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4561 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
4562 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4563 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
4565 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4566 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4567 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
4568 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4569 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
4571 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4572 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4573 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
4574 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4575 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
4578 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4579 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4580 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
4581 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
4582 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
4584 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4585 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4586 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
4587 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
4588 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
4590 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4591 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4592 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
4593 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
4594 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
4596 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4597 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4598 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
4599 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
4600 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
4602 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4603 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4604 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4605 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4606 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
4608 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4609 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4610 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4611 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4612 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
4614 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4615 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4616 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4617 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4618 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
4620 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4621 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4622 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4623 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4624 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
4627 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
4628 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4629 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
4630 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
4631 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
4633 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
4634 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4635 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
4636 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
4637 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
4639 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
4640 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4641 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
4642 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
4643 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
4645 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
4646 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4647 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
4648 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
4649 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
4651 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
4652 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4653 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
4654 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
4655 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
4657 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
4658 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4659 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
4660 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
4661 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
4664 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
4665 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4666 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
4667 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
4668 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
4670 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
4671 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4672 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
4673 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
4674 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
4676 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
4677 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4678 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
4679 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
4680 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
4682 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
4683 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4684 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
4685 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
4686 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
4688 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
4689 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4690 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
4691 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
4692 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
4694 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
4695 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4696 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
4697 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
4698 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
4701 for(Int_t nlm = 0; nlm < 3; nlm++)
4703 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
4704 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
4705 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4706 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4707 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("E (GeV)");
4708 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
4710 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
4711 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
4712 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4713 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4714 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("E (GeV)");
4715 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
4717 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
4718 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
4719 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4720 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4721 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("E (GeV)");
4722 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
4724 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
4725 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
4726 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4727 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4728 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("E (GeV)");
4729 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
4731 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
4732 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
4733 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4734 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4735 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("E (GeV)");
4736 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
4738 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
4739 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
4740 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4741 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4742 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("E (GeV)");
4743 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
4746 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
4747 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
4748 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4749 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4750 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4751 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
4753 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
4754 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()),
4755 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4756 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4757 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4758 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
4760 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
4761 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
4762 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4763 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4764 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4765 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
4767 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
4768 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()),
4769 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4770 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4771 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4772 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
4774 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
4775 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
4776 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4777 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4778 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("E (GeV)");
4779 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
4781 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
4782 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
4783 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4784 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
4785 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
4786 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
4788 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
4789 Form("(E_{reco}-E_{gen})/E_{gen} vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
4790 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4791 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4792 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4793 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
4795 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
4796 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()),
4797 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4798 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4799 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E (GeV)");
4800 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
4802 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
4803 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()),
4804 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4805 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4806 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4807 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
4809 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
4810 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()),
4811 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4812 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4813 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4814 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
4816 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
4817 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()),
4818 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4819 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4820 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4821 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
4823 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
4824 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()),
4825 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4826 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4827 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4828 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
4830 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
4831 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()),
4832 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4833 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4834 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4835 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
4837 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
4838 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()),
4839 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4840 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4841 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
4842 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
4844 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
4845 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()),
4846 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4847 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4848 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4849 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
4851 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
4852 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()),
4853 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4854 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4855 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4856 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
4858 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
4859 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
4860 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4861 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4862 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4863 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
4865 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
4866 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()),
4867 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4868 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4869 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4870 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
4872 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
4873 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()),
4874 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4875 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4876 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4877 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
4879 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
4880 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()),
4881 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4882 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4883 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4884 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
4886 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
4887 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()),
4888 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4889 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4890 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4891 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
4893 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
4894 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()),
4895 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
4896 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
4897 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
4898 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
4902 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
4903 nptbins,ptmin,ptmax,5,0,5);
4904 //fhMCEOverlapType ->SetYTitle("Overlap Type");
4905 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
4906 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4907 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4908 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4909 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
4910 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
4911 outputContainer->Add(fhMCEOverlapType) ;
4913 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
4914 nptbins,ptmin,ptmax,5,0,5);
4915 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
4916 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
4917 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4918 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4919 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4920 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
4921 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
4922 outputContainer->Add(fhMCEOverlapTypeMatch) ;
4924 }// MC analysis, check overlaps
4929 for(Int_t inlm = 0; inlm < 3; inlm++)
4931 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
4932 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0",inlm),
4933 nptbins,ptmin,ptmax,200,-1,1);
4934 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("A_{reco} - A_{gen}");
4935 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("E (GeV)");
4936 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
4938 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
4939 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0Conv",inlm),
4940 nptbins,ptmin,ptmax,200,-1,1);
4941 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("A_{reco} - A_{gen}");
4942 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("E (GeV)");
4943 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
4947 if(fFillArmenterosHisto)
4949 for(Int_t i = 0; i < 5; i++) // MC bin
4951 for(Int_t j = 0; j < 4; j++) // E bin
4953 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
4954 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
4955 200, -1, 1, nptbins,ptmin,ptmax);
4956 fhArmNLocMax1[i][j]->SetYTitle("#epsilon");
4957 fhArmNLocMax1[i][j]->SetXTitle("#alpha");
4958 outputContainer->Add(fhArmNLocMax1[i][j]) ;
4960 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
4961 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
4962 200, -1, 1, nptbins,ptmin,ptmax);
4963 fhArmNLocMax2[i][j]->SetYTitle("#epsilon");
4964 fhArmNLocMax2[i][j]->SetXTitle("#alpha");
4965 outputContainer->Add(fhArmNLocMax2[i][j]) ;
4967 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
4968 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
4969 200, -1, 1, nptbins,ptmin,ptmax);
4970 fhArmNLocMaxN[i][j]->SetYTitle("#epsilon");
4971 fhArmNLocMaxN[i][j]->SetXTitle("#alpha");
4972 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
4976 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
4977 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
4978 200, -1, 1, nptbins,ptmin,ptmax);
4979 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#epsilon");
4980 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha");
4981 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
4983 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
4984 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
4985 200, -1, 1, nptbins,ptmin,ptmax);
4986 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#epsilon");
4987 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha");
4988 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
4990 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
4991 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
4992 200, -1, 1, nptbins,ptmin,ptmax);
4993 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#epsilon");
4994 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha");
4995 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
4998 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
4999 Form("Armenteros of splitted cluster with NLM=1, E bin %d, %s",j,ptype[i].Data()),
5000 200, -1, 1, nptbins,ptmin,ptmax);
5001 fhArmPi0NLocMax1[i][j]->SetYTitle("#epsilon");
5002 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha");
5003 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
5005 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
5006 Form("Armenteros of splitted cluster with NLM=2, E bin %d, %s",j,ptype[i].Data()),
5007 200, -1, 1, nptbins,ptmin,ptmax);
5008 fhArmPi0NLocMax2[i][j]->SetYTitle("#epsilon");
5009 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha");
5010 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
5012 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
5013 Form("Armenteros of splitted cluster with NLM>2, E bin %d, %s",j,ptype[i].Data()),
5014 200, -1, 1, nptbins,ptmin,ptmax);
5015 fhArmPi0NLocMaxN[i][j]->SetYTitle("#epsilon");
5016 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha");
5017 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
5023 return outputContainer ;
5027 //_____________________________________________________________________________
5028 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
5029 Int_t & mcindex, Int_t & tag)
5032 // Assign mc index depending on MC bit set, to be used in histograms arrays
5034 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
5036 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
5037 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
5038 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
5039 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
5040 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5041 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
5042 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5043 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
5044 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
5046 //printf("MC index %d\n",mcindex);
5050 //______________________________________________________________________________________________________________
5051 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
5052 const Int_t mctag, const Bool_t matched,
5053 Float_t & eprim, Float_t & asymGen, Int_t & noverlaps )
5055 // Check origin of the candidates, get primary kinematics if overlapped meson decay
5058 Int_t mcLabel = cluster->GetLabel();
5060 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
5061 eprim = primary.E();
5063 Int_t mesonLabel = -1;
5065 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
5067 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
5069 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
5070 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
5071 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5075 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
5076 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
5077 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5081 if(!fFillMCOverlapHisto) return;
5083 const UInt_t nlabels = cluster->GetNLabels();
5084 Int_t overpdg[nlabels];
5085 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
5087 for(Int_t iover = 0; iover < noverlaps; iover++)
5089 Float_t histobin = -1;
5090 Int_t mpdg = overpdg[iover];
5092 if (mpdg==22) histobin = 0.5;
5093 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
5094 else if(mpdg==-999999) histobin = 4.5;
5097 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
5098 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
5099 else histobin = 3.5;
5100 //printf("charge %f\n",charge);
5103 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
5106 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
5107 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
5112 //___________________________________________
5113 void AliAnaInsideClusterInvariantMass::Init()
5117 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
5119 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
5122 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
5124 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
5128 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
5130 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
5137 //_____________________________________________________
5138 void AliAnaInsideClusterInvariantMass::InitParameters()
5140 //Initialize the parameters of the analysis.
5141 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
5143 fCalorimeter = "EMCAL" ;
5151 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
5152 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
5155 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
5156 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
5161 //__________________________________________________________________
5162 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
5164 //Search for pi0 in fCalorimeter with shower shape analysis
5166 TObjArray * pl = 0x0;
5167 AliVCaloCells* cells = 0x0;
5169 //Select the Calorimeter of the photon
5170 if(fCalorimeter == "PHOS")
5172 pl = GetPHOSClusters();
5173 cells = GetPHOSCells();
5175 else if (fCalorimeter == "EMCAL")
5177 pl = GetEMCALClusters();
5178 cells = GetEMCALCells();
5183 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
5187 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
5189 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
5191 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
5193 //-------------------------------------------
5194 // Get cluster parameters, do some rejection
5195 //-------------------------------------------
5197 Float_t en = cluster->E();
5198 Float_t l0 = cluster->GetM02();
5199 Int_t nc = cluster->GetNCells();
5200 Float_t bd = cluster->GetDistanceToBadChannel() ;
5202 //If too small or big E or low number of cells, or close to a bad channel skip it
5204 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
5206 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
5208 // Track-cluster matching
5210 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
5211 if(!fFillTMHisto && matched) continue ;
5213 // Get cluster angles
5216 cluster->GetMomentum(lv, GetVertex(0));
5217 Float_t eta = lv.Eta();
5218 Float_t phi = lv.Phi();
5219 if(phi<0) phi=+TMath::TwoPi();
5221 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
5222 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
5224 // Get PID, N local maximum, *** split cluster ***
5227 Double_t mass = 0., angle = 0.;
5228 TLorentzVector lv1, lv2;
5229 Int_t absId1 =-1; Int_t absId2 =-1;
5230 Float_t distbad1 =-1; Float_t distbad2 =-1;
5231 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
5233 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
5234 GetVertex(0), nMax, mass, angle,
5235 lv1,lv2,absId1,absId2,
5236 distbad1,distbad2,fidcut1,fidcut2);
5240 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5245 // Set some index for array histograms
5248 if (nMax == 1) inlm = 0;
5249 else if(nMax == 2) inlm = 1;
5250 else if(nMax > 2) inlm = 2;
5251 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
5253 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
5254 if( (fCheckSplitDistToBad) &&
5255 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
5258 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
5259 distbad1,distbad2, fidcut1,fidcut2);
5261 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
5263 fhMassBadDistClose[inlm]->Fill(en,mass);
5264 fhM02BadDistClose [inlm]->Fill(en,l0 );
5267 if(!fidcut1 || !fidcut2)
5269 fhMassOnBorder[inlm]->Fill(en,mass);
5270 fhM02OnBorder [inlm]->Fill(en,l0 );
5276 // Get sub-cluster parameters
5278 Float_t e1 = lv1.Energy();
5279 Float_t e2 = lv2.Energy();
5281 Double_t tof1 = cells->GetCellTime(absId1);
5282 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5285 Double_t tof2 = cells->GetCellTime(absId2);
5286 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5289 Double_t t12diff = tof1-tof2;
5291 Float_t splitFrac = (e1+e2)/en;
5294 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
5299 if(en > 8 && en <= 12) ebin = 0;
5300 if(en > 12 && en <= 16) ebin = 1;
5301 if(en > 16 && en <= 20) ebin = 2;
5302 if(en > 20) ebin = 3;
5304 // MC data histograms and some related calculations
5305 // mc tag, n overlaps, asym of generated mesons
5310 Float_t asymGen = -2;
5311 Int_t noverlaps = 0;
5317 GetMCIndex(cluster,mcindex,mctag);
5319 // MC primary kine, generation fractions
5321 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,noverlaps);
5323 // For cluster with MC pi0 and more than 1 maxima
5329 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
5334 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
5338 if(fFillSSExtraHisto)
5339 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
5343 if(!matched && ebin >= 0 && fFillEbinHisto)
5344 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
5349 FillAngleHistograms(matched,nMax,en,angle,mass);
5351 if(fFillArmenterosHisto && ebin >= 0)
5352 FillArmenterosHistograms(nMax, ebin, mcindex, lv, lv1, lv2, l0, pidTag);
5354 //---------------------------------------------------------------------
5355 // From here start applying some cuts
5356 //---------------------------------------------------------------------
5358 // If set, check just on MC clusters when SS cut is applied
5359 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
5361 // For cluster with MC pi0 and more than 1 maxima
5363 if(fFillMCOverlapHisto)
5364 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
5370 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
5371 nMax,matched,splitFrac, asym, eprim,asymGen);
5375 if(fFillMCOverlapHisto)
5376 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
5380 // Fill few histograms, some still without cuts
5381 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
5383 if(pidTag==AliCaloPID::kPi0)
5385 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
5387 if(fFillSSWeightHisto)
5388 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
5390 if(fFillTMHisto && fFillTMResidualHisto)
5391 FillTrackMatchingHistograms(cluster,nMax,mcindex);
5393 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
5395 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
5396 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
5397 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
5400 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
5402 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
5404 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
5406 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
5411 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
5415 //______________________________________________________________________
5416 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
5418 //Print some relevant parameters set for the analysis
5422 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
5423 AliAnaCaloTrackCorrBaseClass::Print("");
5424 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
5425 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
5426 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
5427 printf("Min. N Cells =%d \n", fMinNCells) ;
5428 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
5429 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
5435 //___________________________________________________________________________________________________________________
5436 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
5437 AliVCaloCells* cells,
5438 AliVCluster * cluster,
5439 Float_t & l0, Float_t & l1,
5440 Float_t & disp, Float_t & dEta, Float_t & dPhi,
5441 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
5444 // Calculates new center of gravity in the local EMCAL-module coordinates
5445 // and tranfers into global ALICE coordinates
5446 // Calculates Dispersion and main axis
5450 AliInfo("Cluster pointer null!");
5454 Double_t eCell = 0.;
5455 Float_t fraction = 1.;
5456 Float_t recalFactor = 1.;
5464 Double_t etai = -1.;
5465 Double_t phii = -1.;
5470 Double_t etaMean = 0.;
5471 Double_t phiMean = 0.;
5473 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
5474 // and to check if the cluster is between 2 SM in eta
5476 Bool_t shared = kFALSE;
5479 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5481 //Get from the absid the supermodule, tower and eta/phi numbers
5482 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5483 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5485 //Check if there are cells of different SM
5486 if (iDigit == 0 ) iSM0 = iSupMod;
5487 else if(iSupMod!= iSM0) shared = kTRUE;
5489 //Get the cell energy, if recalibration is on, apply factors
5490 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5491 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5493 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5495 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5498 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5500 if(eCell > eCellMin) energy += eCell;
5504 //Loop on cells, get weighted parameters
5505 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5507 //Get from the absid the supermodule, tower and eta/phi numbers
5508 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5509 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5511 //Get the cell energy, if recalibration is on, apply factors
5512 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5513 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5515 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5517 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5520 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5522 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
5523 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
5524 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
5526 if(energy > 0 && eCell > eCellMin)
5528 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
5530 //correct weight, ONLY in simulation
5531 w *= (1 - fWSimu * w );
5533 etai=(Double_t)ieta;
5534 phii=(Double_t)iphi;
5541 sEta += w * etai * etai ;
5542 etaMean += w * etai ;
5543 sPhi += w * phii * phii ;
5544 phiMean += w * phii ;
5545 sEtaPhi += w * etai * phii ;
5548 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
5552 //Normalize to the weight
5559 AliError(Form("Wrong weight %f\n", wtot));
5561 //Calculate dispersion
5562 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
5564 //Get from the absid the supermodule, tower and eta/phi numbers
5565 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
5566 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
5568 //Get the cell energy, if recalibration is on, apply factors
5569 fraction = cluster->GetCellAmplitudeFraction(iDigit);
5570 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
5571 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
5573 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
5576 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
5578 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
5579 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
5580 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
5582 if(energy > 0 && eCell > eCellMin)
5584 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
5586 //correct weight, ONLY in simulation
5587 w *= (1 - fWSimu * w );
5589 etai=(Double_t)ieta;
5590 phii=(Double_t)iphi;
5593 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
5594 dEta += w * (etai-etaMean)*(etai-etaMean) ;
5595 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
5598 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
5601 //Normalize to the weigth and set shower shape parameters
5602 if (wtot > 0 && nstat > 1)
5611 sEta -= etaMean * etaMean ;
5612 sPhi -= phiMean * phiMean ;
5613 sEtaPhi -= etaMean * phiMean ;
5615 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
5616 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
5622 dEta = 0. ; dPhi = 0. ; disp = 0. ;
5623 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;