]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
modified AddTask Dalitz
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaInsideClusterInvariantMass.cxx
CommitLineData
992b14a7 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16//_________________________________________________________________________
17//
18// Split clusters with some criteria and calculate invariant mass
19// to identify them as pi0 or conversion
20//
21//
22//-- Author: Gustavo Conesa (LPSC-Grenoble)
23//_________________________________________________________________________
24
25//////////////////////////////////////////////////////////////////////////////
26
27
28// --- ROOT system ---
29#include <TList.h>
30#include <TClonesArray.h>
31#include <TObjString.h>
3c1d9afb 32#include <TH2F.h>
b2e375c7 33#include <TDatabasePDG.h>
992b14a7 34
35// --- Analysis system ---
36#include "AliAnaInsideClusterInvariantMass.h"
37#include "AliCaloTrackReader.h"
38#include "AliMCAnalysisUtils.h"
39#include "AliStack.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"
46
1253480f 47// --- Detectors ---
c5693f62 48//#include "AliPHOSGeoUtils.h"
49#include "AliEMCALGeometry.h"
50
992b14a7 51ClassImp(AliAnaInsideClusterInvariantMass)
52
53//__________________________________________________________________
54AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
0186b6a2 55 AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
56 fMinNCells(0), fMinBadDist(0),
57 fHistoECut(0), fCheckSplitDistToBad(0), fFillAngleHisto(kFALSE),
58 fFillTMHisto(kFALSE), fFillTMResidualHisto(kFALSE), fFillSSExtraHisto(kFALSE),
59 fFillMCHisto(kFALSE), fFillSSWeightHisto(kFALSE), fFillEbinHisto(0),
60 fFillMCOverlapHisto(0), fFillNCellHisto(0), fFillIdConvHisto(0),
29555e96 61 fFillIdEtaHisto(0), fFillHighMultHisto(0),
62 fFillArmenterosHisto(0), fFillThetaStarHisto(0),
0186b6a2 63 fSSWeightN(0), fSSECellCutN(0), fWSimu(0),
64 fhMassAsyCutNLocMax1(0), fhMassAsyCutNLocMax2(0), fhMassAsyCutNLocMaxN(0),
65 fhM02AsyCutNLocMax1(0), fhM02AsyCutNLocMax2(0), fhM02AsyCutNLocMaxN(0),
66 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
67 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
68 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
69 fhMCGenFracAfterCutsNLocMax1MCPi0(0), fhMCGenFracAfterCutsNLocMax2MCPi0(0), fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
70 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
71 fhNCellMassEHighNLocMax1MCPi0(0), fhNCellM02EHighNLocMax1MCPi0(0),
72 fhNCellMassELowNLocMax1MCPi0(0), fhNCellM02ELowNLocMax1MCPi0(0),
73 fhNCellMassEHighNLocMax2MCPi0(0), fhNCellM02EHighNLocMax2MCPi0(0),
74 fhNCellMassELowNLocMax2MCPi0(0), fhNCellM02ELowNLocMax2MCPi0(0),
75 fhNCellMassEHighNLocMaxNMCPi0(0), fhNCellM02EHighNLocMaxNMCPi0(0),
76 fhNCellMassELowNLocMaxNMCPi0(0), fhNCellM02ELowNLocMaxNMCPi0(0),
77 fhAnglePairPrimPi0RecoNLocMax1(0), fhAnglePairPrimPi0RecoNLocMax2(0), fhAnglePairPrimPi0RecoNLocMaxN(0),
78 fhAnglePairPrimPi0vsRecoNLocMax1(0), fhAnglePairPrimPi0vsRecoNLocMax2(0), fhAnglePairPrimPi0vsRecoNLocMaxN(0),
79 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
80 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
81 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
82 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
83 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
84 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
85 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
86 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
87 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
88 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
89 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
90 fhMCPi0HighNLMPair(0), fhMCPi0LowNLMPair(0),
91 fhMCPi0AnyNLMPair(0), fhMCPi0NoneNLMPair(0),
92 fhMCPi0HighNLMPairNoMCMatch(0), fhMCPi0LowNLMPairNoMCMatch(0),
93 fhMCPi0AnyNLMPairNoMCMatch(0), fhMCPi0NoneNLMPairNoMCMatch(0),
94 fhMCPi0HighNLMPairOverlap(0), fhMCPi0LowNLMPairOverlap(0),
95 fhMCPi0AnyNLMPairOverlap(0), fhMCPi0NoneNLMPairOverlap(0),
96 fhMCPi0HighNLMPairNoMCMatchOverlap(0), fhMCPi0LowNLMPairNoMCMatchOverlap(0),
97 fhMCPi0AnyNLMPairNoMCMatchOverlap(0), fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
98 fhMCPi0DecayPhotonHitHighLM(0), fhMCPi0DecayPhotonAdjHighLM(0),
99 fhMCPi0DecayPhotonHitOtherLM(0), fhMCPi0DecayPhotonAdjOtherLM(0),
100 fhMCPi0DecayPhotonAdjacent(0), fhMCPi0DecayPhotonHitNoLM(0),
101 fhMCPi0DecayPhotonHitHighLMOverlap(0), fhMCPi0DecayPhotonAdjHighLMOverlap(0),
102 fhMCPi0DecayPhotonHitOtherLMOverlap(0), fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
103 fhMCPi0DecayPhotonAdjacentOverlap(0), fhMCPi0DecayPhotonHitNoLMOverlap(0),
104 fhMCEOverlapType(0), fhMCEOverlapTypeMatch(0)
992b14a7 105{
106 //default ctor
107
108 // Init array of histograms
cb99fa55 109 for(Int_t i = 0; i < 7; i++)
5c46c992 110 {
111 for(Int_t j = 0; j < 2; j++)
112 {
5c46c992 113 fhMassNLocMax1[i][j] = 0;
114 fhMassNLocMax2[i][j] = 0;
115 fhMassNLocMaxN[i][j] = 0;
116 fhNLocMax[i][j] = 0;
5c46c992 117 fhNLocMaxM02Cut[i][j] = 0;
cc909e6f 118 fhSplitClusterENLocMax [i][j] = 0;
119 fhSplitClusterEPi0NLocMax[i][j] = 0;
5c46c992 120 fhM02NLocMax1[i][j] = 0;
121 fhM02NLocMax2[i][j] = 0;
122 fhM02NLocMaxN[i][j] = 0;
123 fhNCellNLocMax1[i][j] = 0;
124 fhNCellNLocMax2[i][j] = 0;
125 fhNCellNLocMaxN[i][j] = 0;
c8710850 126 fhM02Pi0NLocMax1[i][j] = 0;
127 fhM02EtaNLocMax1[i][j] = 0;
128 fhM02ConNLocMax1[i][j] = 0;
129 fhM02Pi0NLocMax2[i][j] = 0;
130 fhM02EtaNLocMax2[i][j] = 0;
131 fhM02ConNLocMax2[i][j] = 0;
132 fhM02Pi0NLocMaxN[i][j] = 0;
133 fhM02EtaNLocMaxN[i][j] = 0;
134 fhM02ConNLocMaxN[i][j] = 0;
135
136 fhMassPi0NLocMax1[i][j] = 0;
137 fhMassEtaNLocMax1[i][j] = 0;
138 fhMassConNLocMax1[i][j] = 0;
139 fhMassPi0NLocMax2[i][j] = 0;
140 fhMassEtaNLocMax2[i][j] = 0;
141 fhMassConNLocMax2[i][j] = 0;
142 fhMassPi0NLocMaxN[i][j] = 0;
143 fhMassEtaNLocMaxN[i][j] = 0;
144 fhMassConNLocMaxN[i][j] = 0;
cb99fa55 145
1253480f 146 fhNCellPi0NLocMax1[i][j] = 0;
147 fhNCellEtaNLocMax1[i][j] = 0;
148 fhNCellPi0NLocMax2[i][j] = 0;
149 fhNCellEtaNLocMax2[i][j] = 0;
150 fhNCellPi0NLocMaxN[i][j] = 0;
151 fhNCellEtaNLocMaxN[i][j] = 0;
c8710850 152
153 fhAsyPi0NLocMax1[i][j] = 0;
154 fhAsyEtaNLocMax1[i][j] = 0;
155 fhAsyConNLocMax1[i][j] = 0;
156 fhAsyPi0NLocMax2[i][j] = 0;
157 fhAsyEtaNLocMax2[i][j] = 0;
158 fhAsyConNLocMax2[i][j] = 0;
159 fhAsyPi0NLocMaxN[i][j] = 0;
160 fhAsyEtaNLocMaxN[i][j] = 0;
161 fhAsyConNLocMaxN[i][j] = 0;
e671adc2 162
0137016b 163 fhMassM02NLocMax1[i][j]= 0;
164 fhMassM02NLocMax2[i][j]= 0;
d2655d46 165 fhMassM02NLocMaxN[i][j]= 0;
166 fhMassDispEtaNLocMax1[i][j]= 0;
167 fhMassDispEtaNLocMax2[i][j]= 0;
168 fhMassDispEtaNLocMaxN[i][j]= 0;
169 fhMassDispPhiNLocMax1[i][j]= 0;
170 fhMassDispPhiNLocMax2[i][j]= 0;
171 fhMassDispPhiNLocMaxN[i][j]= 0;
172 fhMassDispAsyNLocMax1[i][j]= 0;
173 fhMassDispAsyNLocMax2[i][j]= 0;
174 fhMassDispAsyNLocMaxN[i][j]= 0;
8e81c2cf 175
fc01318e 176 fhSplitEFractionNLocMax1[i][j]=0;
177 fhSplitEFractionNLocMax2[i][j]=0;
178 fhSplitEFractionNLocMaxN[i][j]=0;
179
29555e96 180 fhAnglePairNLocMax1 [i][j] = 0;
181 fhAnglePairNLocMax2 [i][j] = 0;
182 fhAnglePairNLocMaxN [i][j] = 0;
183
184 fhAnglePairAfterCutsNLocMax1[i][j] = 0;
185 fhAnglePairAfterCutsNLocMax2[i][j] = 0;
186 fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
187
188 fhAnglePairPi0NLocMax1 [i][j] = 0;
189 fhAnglePairPi0NLocMax2 [i][j] = 0;
190 fhAnglePairPi0NLocMaxN [i][j] = 0;
191
192 fhAnglePairMassNLocMax1 [i][j] = 0;
193 fhAnglePairMassNLocMax2 [i][j] = 0;
194 fhAnglePairMassNLocMaxN [i][j] = 0;
195
196 fhCosThStarNLocMax1 [i][j] = 0;
197 fhCosThStarNLocMax2 [i][j] = 0;
198 fhCosThStarNLocMaxN [i][j] = 0;
199
200 fhCosThStarAfterCutsNLocMax1[i][j] = 0;
201 fhCosThStarAfterCutsNLocMax2[i][j] = 0;
202 fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
203
204 fhCosThStarPi0NLocMax1 [i][j] = 0;
205 fhCosThStarPi0NLocMax2 [i][j] = 0;
206 fhCosThStarPi0NLocMaxN [i][j] = 0;
0186b6a2 207
8e81c2cf 208 fhMCGenFracNLocMax1[i][j]= 0;
209 fhMCGenFracNLocMax2[i][j]= 0;
210 fhMCGenFracNLocMaxN[i][j]= 0;
4914e781 211
212 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
213 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
214 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
5094c724 215
216 fhMCGenSplitEFracNLocMax1[i][j]= 0;
217 fhMCGenSplitEFracNLocMax2[i][j]= 0;
bb2d339b 218 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
4914e781 219
220 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
221 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
222 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
bb2d339b 223
224 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
225 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
226 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
227
228 fhMCGenEvsSplitENLocMax1[i][j]= 0;
229 fhMCGenEvsSplitENLocMax2[i][j]= 0;
e671adc2 230 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
231
232 fhAsymNLocMax1 [i][j] = 0;
233 fhAsymNLocMax2 [i][j] = 0;
234 fhAsymNLocMaxN [i][j] = 0;
74858845 235
236 fhMassAfterCutsNLocMax1[i][j] = 0;
237 fhMassAfterCutsNLocMax2[i][j] = 0;
238 fhMassAfterCutsNLocMaxN[i][j] = 0;
cb99fa55 239
74858845 240
241 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
242 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
243 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
8e81c2cf 244 }
19391b8c 245
8e81c2cf 246 for(Int_t jj = 0; jj < 4; jj++)
247 {
53f2c382 248 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
249 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
250 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
8e81c2cf 251
252 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
253 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
254 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
53f2c382 255
fc01318e 256 fhMCGenFracNLocMaxEbin[i][jj] = 0;
53f2c382 257 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
fc01318e 258
259 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
260 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
261 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
5c46c992 262 }
263
b2e375c7 264 fhTrackMatchedDEtaNLocMax1[i] = 0;
c8710850 265 fhTrackMatchedDPhiNLocMax1[i] = 0;
266 fhTrackMatchedDEtaNLocMax2[i] = 0;
267 fhTrackMatchedDPhiNLocMax2[i] = 0;
268 fhTrackMatchedDEtaNLocMaxN[i] = 0;
269 fhTrackMatchedDPhiNLocMaxN[i] = 0;
b2e375c7 270
271 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
272 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
273 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
274 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
275 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
276 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
277
278 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
279 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
280 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
281 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
282 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
283 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
243c2909 284
b2e375c7 285 for(Int_t nlm = 0; nlm < 3; nlm++)
286 {
287 fhMCEM02Overlap0 [nlm][i] = 0;
288 fhMCEM02Overlap1 [nlm][i] = 0;
289 fhMCEM02OverlapN [nlm][i] = 0;
290 fhMCEM02Overlap0Match[nlm][i] = 0;
291 fhMCEM02Overlap1Match[nlm][i] = 0;
292 fhMCEM02OverlapNMatch[nlm][i] = 0;
293
294 fhMCEMassOverlap0 [nlm][i] = 0;
295 fhMCEMassOverlap1 [nlm][i] = 0;
296 fhMCEMassOverlapN [nlm][i] = 0;
297 fhMCEMassOverlap0Match[nlm][i] = 0;
298 fhMCEMassOverlap1Match[nlm][i] = 0;
299 fhMCEMassOverlapNMatch[nlm][i] = 0;
83351853 300
4914e781 301 fhMCEAsymOverlap0 [nlm][i] = 0;
302 fhMCEAsymOverlap1 [nlm][i] = 0;
303 fhMCEAsymOverlapN [nlm][i] = 0;
304 fhMCEAsymOverlap0Match[nlm][i] = 0;
305 fhMCEAsymOverlap1Match[nlm][i] = 0;
306 fhMCEAsymOverlapNMatch[nlm][i] = 0;
307
74e3eb22 308 fhMCENCellOverlap0 [nlm][i] = 0;
309 fhMCENCellOverlap1 [nlm][i] = 0;
310 fhMCENCellOverlapN [nlm][i] = 0;
311 fhMCENCellOverlap0Match[nlm][i] = 0;
312 fhMCENCellOverlap1Match[nlm][i] = 0;
313 fhMCENCellOverlapNMatch[nlm][i] = 0;
314
4914e781 315 fhMCEEpriOverlap0 [nlm][i] = 0;
316 fhMCEEpriOverlap1 [nlm][i] = 0;
317 fhMCEEpriOverlapN [nlm][i] = 0;
318 fhMCEEpriOverlap0Match[nlm][i] = 0;
319 fhMCEEpriOverlap1Match[nlm][i] = 0;
320 fhMCEEpriOverlapNMatch[nlm][i] = 0;
cc909e6f 321
322 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
323 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
324 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
4914e781 325
83351853 326 fhMCESplitEFracOverlap0 [nlm][i] = 0;
327 fhMCESplitEFracOverlap1 [nlm][i] = 0;
328 fhMCESplitEFracOverlapN [nlm][i] = 0;
329 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
330 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
331 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
b2e375c7 332
333 fhMCENOverlaps [nlm][i] = 0;
334 fhMCENOverlapsMatch [nlm][i] = 0;
b583134f 335
b2e375c7 336 if(i > 3) continue ;
337
338 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
339 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
340 fhMCPi0MassM02OverlapN [nlm][i] = 0;
341 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
342 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
343 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
344 }
992b14a7 345 }
346
5c46c992 347 for(Int_t i = 0; i < 2; i++)
348 {
e671adc2 349 fhSplitEFractionvsAsyNLocMax1[i] = 0;
350 fhSplitEFractionvsAsyNLocMax2[i] = 0;
351 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
5c46c992 352 }
353
7b686344 354 for(Int_t i = 0; i < 4; i++)
355 {
356 fhMassM02NLocMax1Ebin[i] = 0 ;
357 fhMassM02NLocMax2Ebin[i] = 0 ;
358 fhMassM02NLocMaxNEbin[i] = 0 ;
b8eb40fc 359
360 fhMassAsyNLocMax1Ebin[i] = 0 ;
361 fhMassAsyNLocMax2Ebin[i] = 0 ;
362 fhMassAsyNLocMaxNEbin[i] = 0 ;
363
364 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
365 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
366 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
d2655d46 367
368 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
369 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
370 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
371
372 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
373 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
374 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
375
376 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
377 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
378 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
8e81c2cf 379
380 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
381 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
382 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
7b686344 383 }
384
dbe09c26 385 for(Int_t nlm = 0; nlm < 3; nlm++)
386 {
b583134f 387
388 fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
389 fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;
390 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;
391 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;
392
393 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;
394 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;
395 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;
396 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;
397
398 fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;
399 fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;
400 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;
401 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;
402
403 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;
404 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;
405 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;
29555e96 406 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
407
408 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
409 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
410 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
411 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
b583134f 412
29555e96 413 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
414 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
415 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
416 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
417
418 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
419 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
420 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
421 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
422
423 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
424 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
425 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
426 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
427
428 fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
b583134f 429 fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;
430 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;
431 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;
432 fhMCPi0DecayPhotonAdjacentMass [nlm] = 0 ;
433 fhMCPi0DecayPhotonHitNoLMMass [nlm] = 0 ;
434
435 fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
436 fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;
437 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;
438 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;
439 fhMCPi0DecayPhotonAdjacentOverlapMass [nlm] = 0 ;
440 fhMCPi0DecayPhotonHitNoLMOverlapMass [nlm] = 0 ;
441
dbe09c26 442 fhPi0CellE [nlm] = 0 ;
443 fhPi0CellEFrac [nlm] = 0 ;
444 fhPi0CellLogEFrac[nlm] = 0 ;
445
19391b8c 446 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
447 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
448 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
449
450 fhPi0CellEMaxFrac [nlm] = 0 ;
451 fhPi0CellEMax2Frac[nlm] = 0 ;
452
dbe09c26 453 for(Int_t i = 0; i < 10; i++)
19391b8c 454 {
455 fhM02WeightPi0 [nlm][i] = 0;
456 fhM02ECellCutPi0[nlm][i] = 0;
457 }
ce49dd72 458
459 fhMassBadDistClose[nlm] = 0;
460 fhM02BadDistClose [nlm] = 0;
461 fhMassOnBorder [nlm] = 0;
462 fhM02OnBorder [nlm] = 0;
b583134f 463
464 fhAsyMCGenRecoDiffMCPi0 [nlm] = 0;
465 fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
466
dbe09c26 467 }
468
ed10b649 469 for(Int_t i = 0; i < 7; i++)
470 {
471 for(Int_t j = 0; j < 4; j++)
472 {
473
474 fhArmNLocMax1[i][j] = 0;
475 fhArmNLocMax2[i][j] = 0;
476 fhArmNLocMaxN[i][j] = 0;
477
478 fhArmPi0NLocMax1[i][j] = 0;
479 fhArmPi0NLocMax2[i][j] = 0;
480 fhArmPi0NLocMaxN[i][j] = 0;
481
482 fhArmAfterCutsNLocMax1[i][j] = 0;
483 fhArmAfterCutsNLocMax2[i][j] = 0;
484 fhArmAfterCutsNLocMaxN[i][j] = 0;
485
486 }
487 }
488
992b14a7 489 InitParameters();
19391b8c 490
992b14a7 491}
492
b2e375c7 493//_______________________________________________________________________________________________________
b583134f 494void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,const Int_t mcindex, const Int_t noverlaps,
495 const Float_t e1, const Float_t e2, const Float_t mass)
496 //Float_t m02,
4914e781 497 //TLorentzVector l1, TLorentzVector l2)
b2e375c7 498{
499 // Check origin NLM tower of the cluster, when MC gives merged pi0
500
b2e375c7 501 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
36769d30 502
b2e375c7 503 const UInt_t nc = cluster->GetNCells();
504 Int_t list[nc];
505 Float_t elist[nc];
506 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
36769d30 507
4914e781 508
509 //// PRINTS /////
510
511 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
512 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
513
514// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
b2e375c7 515// {
4914e781 516// 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",
517// nMax, noverlaps,mass,m02,
518// l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
519// l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
36769d30 520//
4914e781 521// // Study the mothers of cluster
522// printf("Cluster MC labels %d \n", cluster->GetNLabels());
523// for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
36769d30 524// {
4914e781 525// Int_t mclabel = cluster->GetLabels()[ilab];
526//
527// Bool_t mOK = 0;
528// Int_t mpdg = -999999;
529// Int_t mstatus = -1;
530// Int_t grandLabel = -1;
531// TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
532//
533// printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
534// ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
535//
536// if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
36769d30 537// {
4914e781 538// while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
539// {
540// Int_t newLabel = -1;
541// TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
542// 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",
543// ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
544// grandLabel = newLabel;
545//
546// }
36769d30 547// }
548// }
b2e375c7 549//
4914e781 550// printf("Cells in cluster %d\n",cluster->GetNCells() );
551// for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
552// {
553// Int_t absIdCell = cluster->GetCellAbsId(icell);
554// Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
555// GetReader()->RemapMCLabelForAODs(mcLabel);
556// Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
557// Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
558//
559// 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);
560// }
bfa0a1a7 561// }
4914e781 562 //// PRINTS /////
563
bfa0a1a7 564
565 //If only one maxima, consider all the towers in the cluster
566 if(nMax==1)
567 {
36769d30 568 for (UInt_t icell = 0; icell < nc; icell++ )
569 {
570 list [icell] = cluster->GetCellAbsId(icell);
571 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
572 }
b2e375c7 573 }
574
83351853 575 Int_t nmaxima = nMax;
576 if(nMax==1) nmaxima = nc ;
577
b2e375c7 578 //Find highest energy Local Maxima Towers
579 Int_t imax = -1;
580 Int_t imax2 = -1;
581 Float_t emax = -1;
582 Float_t emax2 = -1;
83351853 583 for(Int_t i = 0; i < nmaxima; i++)
b2e375c7 584 {
585 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
586 if(elist[i] > emax)
587 {
588 imax = i;
589 emax = elist[i];
590 }
591 }
592 //Find second highest
83351853 593 for(Int_t i = 0; i < nmaxima; i++)
b2e375c7 594 {
595 if(i==imax) continue;
bfa0a1a7 596
83351853 597 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
36769d30 598
83351853 599
b2e375c7 600 if(elist[i] > emax2)
601 {
602 imax2 = i;
603 emax2 = elist[i];
604 }
605 }
606
4914e781 607// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
608// printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
b2e375c7 609
36769d30 610 //---------------------------------------------------------
83351853 611 //---------------------------------------------------------
612 // Compare ancestors of all local maxima at cell MC level
613 //---------------------------------------------------------
36769d30 614 //---------------------------------------------------------
83351853 615
b2e375c7 616 // Check that the highest mc label and the max cluster label are the same
87c4fd53 617 Int_t mcLabelMax = -1 ;
618 if(imax >=0 )
619 {
620 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
621 GetReader()->RemapMCLabelForAODs(mcLabelMax);
622 }
623
624 Int_t mcLabelMax2 = -1 ;
625 if(imax >=0 )
626 {
627 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
628 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
629 }
b2e375c7 630
631 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
632 Bool_t matchHighLMAndHighMC = kFALSE;
633
36769d30 634 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
635
87c4fd53 636 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
b2e375c7 637 {
638 matchHighLMAndHighMC = kTRUE;
36769d30 639 //printf("\t *** MATCH cluster and LM maximum ***\n");
b2e375c7 640 }
641 else
642 {
36769d30 643 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
87c4fd53 644 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
b2e375c7 645 {
36769d30 646 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
b2e375c7 647 matchHighLMAndHighMC = kTRUE;
648 }
649 else
650 {
36769d30 651 //printf("\t \t *** NO MATCH***\n");
b2e375c7 652 matchHighLMAndHighMC = kFALSE;
653 }
654 }
655
656 // Compare the common ancestors of the 2 highest energy local maxima
657 Int_t ancPDG = 0, ancStatus = -1;
658 TLorentzVector momentum; TVector3 prodVertex;
659 Int_t ancLabel = 0;
660 Bool_t high = kFALSE;
661 Bool_t low = kFALSE;
662
663// // print maxima origin
664// for(Int_t i = 0; i < nMax; i++)
665// {
666// Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
667// GetReader()->RemapMCLabelForAODs(mcLabel1);
668//
669// Bool_t ok =kFALSE,gok = kFALSE;
670// Int_t pdg = -22222, status = -1;
671// Int_t gpdg = -22222, gstatus = -1;
672// Int_t ggpdg = -22222, ggstatus = -1;
673// Int_t gLabel = -1, ggLabel = -1;
674// TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
675// TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
676// TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
677// 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",
678// i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
679// }
83351853 680
bfa0a1a7 681 for(Int_t i = 0; i < nmaxima-1; i++)
b2e375c7 682 {
683 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
684 GetReader()->RemapMCLabelForAODs(mcLabel1);
685
bfa0a1a7 686 for(Int_t j = i+1; j < nmaxima; j++)
b2e375c7 687 {
688 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
689 GetReader()->RemapMCLabelForAODs(mcLabel2);
690
691 if(mcLabel1 < 0 || mcLabel2 < 0 )
692 {
693 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
694 continue;
695 }
83351853 696
b2e375c7 697 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
698 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
699 if(ancPDG==111)
700 {
701 if((i==imax && j==imax2) || (j==imax && i==imax2))
702 high = kTRUE;
703 else
704 low = kTRUE;
705 }
706 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
707 {
708 // If both bits are set, it could be that one of the maxima had a conversion
709 // reset the bit in this case
710 if(high && low)
711 {
712 //printf("\t Reset low bit\n");
713 low = kFALSE;
714 }
715 }
716
717 Bool_t ok =kFALSE;
718 Int_t pdg = -22222, status = -1;
719 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
b2e375c7 720 //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);
721
722 }
723 }
724
725 Float_t en = cluster->E();
726
4914e781 727// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
728// printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
b2e375c7 729
36769d30 730 if(!noverlaps)
b2e375c7 731 {
36769d30 732 if(matchHighLMAndHighMC)
733 {
734 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
735 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
736 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
737 else fhMCPi0NoneNLMPair->Fill(en,nMax);
738 }
739 else
740 {
741 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
742 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
743 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
744 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
745 }
b2e375c7 746 }
747 else
748 {
36769d30 749 if(matchHighLMAndHighMC)
750 {
751 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
752 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
753 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
754 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
755 }
756 else
757 {
758 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
759 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
760 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
761 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
762 }
b2e375c7 763 }
1253480f 764
36769d30 765 //----------------------------------------------------------------------
83351853 766 //----------------------------------------------------------------------
767 // Compare MC decay photon projection to cell location and Local Maxima
768 //----------------------------------------------------------------------
36769d30 769 //----------------------------------------------------------------------
83351853 770
771 // Get the mother pi0
772
773 Bool_t ok = kFALSE;
774 Int_t pdg = -22222, status = -1;
775 Int_t gLabel = -1;
776
777 Int_t label = cluster->GetLabel();
778 TLorentzVector pi0Kine;
779
780 while( pdg!=111 && label>=0 )
781 {
782 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
783 }
784
785 if(pdg!=111 || label < 0)
786 {
787 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
788 return;
789 }
790
791 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
792
793 if(nDaugthers != 2)
794 {
795 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
796 return;
797 }
798
799 // Get daughter photon kinematics
800 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
801 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
802 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
803 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
804
805 if(pdg1!=22 || pdg0 != 22)
806 {
807 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
808 return;
809 }
810
811 // In what cells did the photons hit
812 Float_t eta0 = photon0Kine.Eta();
813 Float_t eta1 = photon1Kine.Eta();
814
815 Float_t phi0 = photon0Kine.Phi();
816 Float_t phi1 = photon1Kine.Phi();
817
4914e781 818// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
819// {
820// 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",
821// label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
822// label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
823// label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
824//
825// TLorentzVector momclus;
826// cluster->GetMomentum(momclus,GetVertex(0));
827// 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());
828// }
36769d30 829
83351853 830 if(phi0 < 0 ) phi0+=TMath::TwoPi();
831 if(phi1 < 0 ) phi1+=TMath::TwoPi();
832
833 Int_t absId0=-1, absId1=-1;
834 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
835 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
836
837 if(absId1 < 0 || absId1 < 0)
838 {
4914e781 839 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
83351853 840 return;
841 }
842
36769d30 843 //-----------------------------------------------
83351853 844 // Check that the 2 photons hit the Local Maxima
36769d30 845 //-----------------------------------------------
83351853 846
4914e781 847
848// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
849// {
850// printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
851// printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
852//
853// Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
854// Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
855// Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
856// Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
857//
858// printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
859// absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
860//
861// Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
862// if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
863// Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
864// if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
865//
866// printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
867// list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
868// }
869
b583134f 870 Int_t inlm = nMax-1;
871 if(inlm > 2) inlm = 2;
83351853 872
36769d30 873 Bool_t match0 = kFALSE;
874 Bool_t match1 = kFALSE;
875 Int_t imatch0 = -1;
876 Int_t imatch1 = -1;
877 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
87c4fd53 878 {
36769d30 879 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
880 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
881
882 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
883 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
87c4fd53 884 }
83351853 885
36769d30 886 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
887
888 // If one or the 2 not matched, check with the other MC labels
889 // only in case there was a conversion
83351853 890
36769d30 891 Int_t absId0second = -1;
892 Int_t absId1second = -1;
893 Int_t secLabel0 = -1;
894 Int_t secLabel1 = -1;
895 Int_t mcLabel0 = -1;
896 Int_t mcLabel1 = -1;
897 Bool_t secOK = 0;
898 Int_t secpdg = -999999;
899 Int_t secstatus = -1;
900 Int_t secgrandLabel = -1;
901
902 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
903 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
904
905 if((!match0 || !match1) && mcindex == kmcPi0Conv)
83351853 906 {
36769d30 907 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
908 {
909 Int_t mclabel = cluster->GetLabels()[ilab];
910
911 //printf("Check label %d - %d\n",ilab,mclabel);
912
913 if(mclabel == label0 || mclabel == label1)
914 {
915 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
916 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
917 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
918 continue ;
919 }
920
921 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
922
923 // match mc label and parent photon
924 Int_t tmplabel = mclabel;
925 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
926 {
927 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
928
929 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
930
931 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
932 {
933 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
934 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
935 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
936 }
937
938 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
83351853 939
36769d30 940 tmplabel = secgrandLabel;
941 }
942 }
83351853 943
36769d30 944 // Get the position of the found secondaries mother
945 if(!match0 && secLabel0 > 0)
87c4fd53 946 {
36769d30 947 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
948
4914e781 949 //Float_t eta = mother.Eta();
950 //Float_t phi = mother.Phi();
951 //if(phi < 0 ) phi+=TMath::TwoPi();
952 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
36769d30 953
954 //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());
955
956 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
957 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
87c4fd53 958 }
36769d30 959
960 if(!match1 && secLabel1 > 0)
87c4fd53 961 {
36769d30 962 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
963
4914e781 964 //Float_t eta = mother.Eta();
965 //Float_t phi = mother.Phi();
966 //if(phi < 0 ) phi+=TMath::TwoPi();
967 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
36769d30 968
969 //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());
970
971 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
972 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
87c4fd53 973 }
36769d30 974
975 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
976
977 }
978
979 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
980 if( match0 && match1 )
981 {
4914e781 982// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
983// printf("a) Both Photons hit local maxima \n");
36769d30 984
b583134f 985 if(!noverlaps)
986 {
987 fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
988 fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
989 if(match0 && imatch0 == imax)
990 {
cb99fa55 991 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
992 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
29555e96 993 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
994 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 995 }
996 else
997 {
cb99fa55 998 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
999 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
29555e96 1000 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1001 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1002 }
1003 }
1004 else
1005 {
1006 fhMCPi0DecayPhotonHitHighLMOverlap ->Fill(en,nMax);
1007 fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1008 if(match0 && imatch0 == imax )
1009 {
cb99fa55 1010 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1011 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
29555e96 1012 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1013 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1014 }
1015 else
1016 {
cb99fa55 1017 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1018 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
29555e96 1019 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1020 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1021 }
1022
1023 }
36769d30 1024
1025 return ;
1026 }
1027
1028 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1029 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1030
1031 //---------------------------------------------
1032 // Check the adjacent cells to the local maxima
1033 //---------------------------------------------
1034
36769d30 1035 if(!match0)
1036 {
b583134f 1037 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) { match0 = kTRUE; imatch0 = imax ; }
36769d30 1038 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
b583134f 1039 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
36769d30 1040 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1041 }
1042
1043 if(!match1)
1044 {
b583134f 1045 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax ; }
36769d30 1046 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1047
b583134f 1048 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
36769d30 1049 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1050 }
1051
1052 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1053
1054 if(match0 && match1)
1055 {
4914e781 1056// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1057// printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
83351853 1058
b583134f 1059 if(!noverlaps)
1060 {
1061 fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
1062 fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1063
1064 if(match0 && imatch0 == imax)
1065 {
cb99fa55 1066 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1067 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
29555e96 1068 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1069 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1070 }
1071 else
1072 {
cb99fa55 1073 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1074 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
29555e96 1075 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1076 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1077 }
1078 }
1079 else
1080 {
1081 fhMCPi0DecayPhotonAdjHighLMOverlap ->Fill(en,nMax);
1082 fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1083 if(match0 && imatch0 == imax)
1084 {
cb99fa55 1085 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1086 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
29555e96 1087 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1088 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1089 }
1090 else
1091 {
cb99fa55 1092 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1093 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
29555e96 1094 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1095 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1096 }
1097 }
36769d30 1098
1099 return;
1100 }
36769d30 1101
1102 // Decay photon cells are adjacent?
1103
1104 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1105 {
4914e781 1106// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1107// printf("c) Both Photons hit a local maxima and in adjacent cells \n");
b583134f 1108 if(!noverlaps)
1109 {
1110 fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
1111 fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1112 }
1113 else
1114 {
1115 fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
1116 fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1117 }
83351853 1118
36769d30 1119 return;
83351853 1120 }
1121
36769d30 1122 //--------------------
1123 // Other Local maxima
1124 //--------------------
1125
83351853 1126 Bool_t matchMCHitOtherLM = kFALSE;
36769d30 1127 if(!match1)
1128 {
1129 for(Int_t i = 0; i < nmaxima; i++)
1130 {
1131 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1132 }
1133 }
1134
1135 if(!match0)
1136 {
1137 for(Int_t i = 0; i < nmaxima; i++)
1138 {
1139 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1140 }
1141 }
1142
1143 if(matchMCHitOtherLM)
1144 {
4914e781 1145// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1146// printf("d) One Photon hits a local maxima, the other another not high \n");
36769d30 1147
b583134f 1148 if(!noverlaps)
1149 {
1150 fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
1151 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1152 if(match0 && imatch0 == imax)
1153 {
cb99fa55 1154 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1155 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1156 }
1157 else
1158 {
cb99fa55 1159 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1160 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1161 }
1162 }
1163 else
1164 {
1165 fhMCPi0DecayPhotonHitOtherLMOverlap ->Fill(en,nMax);
1166 fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1167 if(match0 && imatch0 == imax)
1168 {
cb99fa55 1169 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1170 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1171 }
1172 else
1173 {
cb99fa55 1174 if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1175 if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1176 }
1177 }
36769d30 1178
1179 return ;
1180 }
1181
1182 // Adjacent to other maxima
1183
1184 Bool_t adjacentOther1 = kFALSE;
1185 if(match0)
83351853 1186 {
36769d30 1187 for(Int_t i = 0; i < nmaxima; i++)
83351853 1188 {
36769d30 1189 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1190 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
83351853 1191
36769d30 1192 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1193
1194 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1195
1196 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
83351853 1197 }
1198 }
1199
36769d30 1200 Bool_t adjacentOther0 = kFALSE;
1201 if(match1)
83351853 1202 {
36769d30 1203 for(Int_t i = 0; i < nmaxima; i++)
83351853 1204 {
36769d30 1205 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1206 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
83351853 1207
36769d30 1208 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1209
1210 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1211
1212 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
83351853 1213 }
1214 }
1215
36769d30 1216 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1217 {
4914e781 1218
1219// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1220// printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
36769d30 1221
b583134f 1222 if(!noverlaps)
1223 {
1224 fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1225 fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1226 if(match0 && imatch0 == imax)
1227 {
cb99fa55 1228 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1229 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1230 }
1231 else
1232 {
cb99fa55 1233 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1234 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1235 }
1236 }
1237 else
1238 {
1239 fhMCPi0DecayPhotonAdjOtherLMOverlap ->Fill(en,nMax);
1240 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1241 if(match0 && imatch0 == imax)
1242 {
cb99fa55 1243 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1244 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
b583134f 1245 }
1246 else
1247 {
cb99fa55 1248 if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1249 if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
b583134f 1250 }
1251 }
36769d30 1252
1253 return;
1254 }
1255
4914e781 1256// if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1257// printf("f) No hit found \n");
b583134f 1258 if(!noverlaps)
1259 {
1260 fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1261 fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1262 }
1263 else
1264 {
1265 fhMCPi0DecayPhotonHitNoLMOverlap ->Fill(en,nMax);
1266 fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1267 }
83351853 1268
b2e375c7 1269}
1270
0186b6a2 1271//_____________________________________________________________________________________________________________________
1272void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched, const Int_t mcIndex,
1273 const Float_t en, const Float_t angle, const Float_t mass,
29555e96 1274 const Float_t anglePrim, const Float_t m02,
1275 const Float_t asym, const Int_t pid)
b2e375c7 1276{
1277 // Fill histograms related to opening angle
29555e96 1278
1279 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1280 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1281 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1282 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1283
b2e375c7 1284 if (nMax==1)
1285 {
0186b6a2 1286 fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
29555e96 1287
1288 if((m02OK && asyOK) && (asyOn || m02On))
1289 fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1290 if(pid==AliCaloPID::kPi0)
1291 fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1292
0186b6a2 1293 if( en > 15 ) fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
b2e375c7 1294 }
1295 else if(nMax==2)
1296 {
0186b6a2 1297 fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
29555e96 1298
1299 if((m02OK && asyOK) && (asyOn || m02On))
1300 fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1301 if(pid==AliCaloPID::kPi0)
1302 fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1303
0186b6a2 1304 if( en > fHistoECut ) fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
b2e375c7 1305 }
1306 else if(nMax >2)
1307 {
0186b6a2 1308 fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
29555e96 1309
1310 if((m02OK && asyOK) && (asyOn || m02On))
1311 fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1312 if(pid==AliCaloPID::kPi0)
1313 fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1314
0186b6a2 1315 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1316 }
1317
1318 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1319 {
1320 if (nMax==1)
1321 {
1322 fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1323 if( en > fHistoECut ) fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
29555e96 1324
1325 if((m02OK && asyOK) && (asyOn || m02On))
1326 fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1327 if(pid==AliCaloPID::kPi0)
1328 fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1329
0186b6a2 1330 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1331 {
1332 fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1333 if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1334
1335 }
1336 }
1337 else if(nMax==2)
1338 {
1339 fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1340 if( en > fHistoECut ) fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
29555e96 1341
1342 if((m02OK && asyOK) && (asyOn || m02On))
1343 fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1344 if(pid==AliCaloPID::kPi0)
1345 fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1346
0186b6a2 1347 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1348 {
1349 fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1350 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1351 }
1352 }
1353 else if(nMax >2)
1354 {
1355 fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1356 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
29555e96 1357
1358 if((m02OK && asyOK) && (asyOn || m02On))
1359 fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1360 if(pid==AliCaloPID::kPi0)
1361 fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1362
0186b6a2 1363 if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1364 {
1365 fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1366 if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1367 }
1368 }
1369
b2e375c7 1370 }
1371
1372}
1373
cb99fa55 1374//______________________________________________________________________________________________________________________
1375void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(const Int_t nMax, const Int_t ebin, const Int_t mcIndex,
29555e96 1376 const Float_t en, TLorentzVector g1, TLorentzVector g2,
cb99fa55 1377 const Float_t m02, const Int_t pid)
1378{
1379 // Fill Armeteros type histograms
be894c1d 1380
1381 // Get pTArm and AlphaArm
29555e96 1382 TLorentzVector pi0 = g1+g2;
be894c1d 1383 Float_t momentumSquaredMother = pi0.P()*pi0.P();
1384 Float_t momentumDaughter1AlongMother = 0.;
1385 Float_t momentumDaughter2AlongMother = 0.;
1386
1387 if (momentumSquaredMother > 0.)
1388 {
1389 momentumDaughter1AlongMother = (g1.Px()*pi0.Px() + g1.Py()*pi0.Py()+ g1.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1390 momentumDaughter2AlongMother = (g2.Px()*pi0.Px() + g2.Py()*pi0.Py()+ g2.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1391 }
1392
1393 Float_t momentumSquaredDaughter1 = g1.P()*g1.P();
1394 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1395
1396 Float_t pTArm = 0.;
1397 if (ptArmSquared > 0.)
1398 pTArm = sqrt(ptArmSquared);
1399
1400 Float_t alphaArm = 0.;
1401 if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1402 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1403
cb99fa55 1404 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
be894c1d 1405
1406 if(GetDebug() > 2 ) printf("AliAnaInsideClusterInvariantMass::FillArmenterosHistograms() - E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1407
cb99fa55 1408 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1409 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1410 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1411 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
cb99fa55 1412
1413 if (nMax==1)
1414 {
be894c1d 1415 fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1416 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1417 fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1418 if(pid==AliCaloPID::kPi0)
be894c1d 1419 fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1420 }
1421 else if(nMax==2)
1422 {
be894c1d 1423 fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1424 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1425 fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1426 if(pid==AliCaloPID::kPi0)
be894c1d 1427 fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1428 }
1429 else if(nMax >2)
1430 {
be894c1d 1431 fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1432 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1433 fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1434 if(pid==AliCaloPID::kPi0)
be894c1d 1435 fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1436 }
1437
ed10b649 1438 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
cb99fa55 1439 {
1440 if (nMax==1)
1441 {
be894c1d 1442 fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1443 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1444 fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1445 if(pid==AliCaloPID::kPi0)
be894c1d 1446 fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1447 }
1448 else if(nMax==2)
1449 {
be894c1d 1450 fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1451 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1452 fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1453 if(pid==AliCaloPID::kPi0)
be894c1d 1454 fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1455 }
1456 else if(nMax >2)
1457 {
be894c1d 1458 fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1459 if((m02OK && asyOK) && (asyOn || m02On))
be894c1d 1460 fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1461 if(pid==AliCaloPID::kPi0)
be894c1d 1462 fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
cb99fa55 1463 }
1464
1465 }
1466
1467}
1468
29555e96 1469//______________________________________________________________________________________________________________________
1470void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(const Int_t nMax, const Bool_t matched, const Int_t mcIndex,
1471 const Float_t en, TLorentzVector g1, TLorentzVector g2,
1472 const Float_t m02, const Int_t pid)
1473{
1474 // Fill cos Theta^star histograms
1475
1476
1477 // Get cos Theta^star
1478 TLorentzVector pi0 = g1+g2;
1479 TLorentzVector g1Boost = g1;
1480 g1Boost.Boost(-pi0.BoostVector());
1481 Float_t cosThStar=TMath::Cos(g1Boost.Vect().Angle(pi0.Vect()));
1482
1483 Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1484
1485 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1486 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1487 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1488 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1489
1490 //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1491
1492 if (nMax==1)
1493 {
1494 fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1495
1496 if((m02OK && asyOK) && (asyOn || m02On))
1497 fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1498 if(pid==AliCaloPID::kPi0)
1499 fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1500 }
1501 else if(nMax==2)
1502 {
1503 fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1504
1505 if((m02OK && asyOK) && (asyOn || m02On))
1506 fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1507 if(pid==AliCaloPID::kPi0)
1508 fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1509 }
1510 else if(nMax >2)
1511 {
1512 fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1513
1514 if((m02OK && asyOK) && (asyOn || m02On))
1515 fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1516 if(pid==AliCaloPID::kPi0)
1517 fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1518 }
1519
1520 if(IsDataMC() && mcIndex > 0 && mcIndex < 7)
1521 {
1522 if (nMax==1)
1523 {
1524 fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1525
1526 if((m02OK && asyOK) && (asyOn || m02On))
1527 fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1528 if(pid==AliCaloPID::kPi0)
1529 fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1530 }
1531 else if(nMax==2)
1532 {
1533 fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1534
1535 if((m02OK && asyOK) && (asyOn || m02On))
1536 fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1537 if(pid==AliCaloPID::kPi0)
1538 fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1539 }
1540 else if(nMax >2)
1541 {
1542 fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1543
1544 if((m02OK && asyOK) && (asyOn || m02On))
1545 fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1546 if(pid==AliCaloPID::kPi0)
1547 fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1548 }
1549
1550 }
1551
1552}
1553
b2e375c7 1554//__________________________________________________________________________________________________________________________________________
1555void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1556 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1557{
1558 // Fill some histograms integrating in few energy bins
1253480f 1559
b2e375c7 1560 if (nMax==1)
1561 {
1562 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
cb99fa55 1563 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
b2e375c7 1564
1565 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1566 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1567 }
1568 else if(nMax==2)
1569 {
1570 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
cb99fa55 1571 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
b2e375c7 1572
1573 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1574 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1575 }
1576 else if(nMax > 2 )
1577 {
1578 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
cb99fa55 1579 if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
b2e375c7 1580
1581 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1582 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1583 }
1584
1585}
1586
1253480f 1587//________________________________________________________________________________________________________________________
1588void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1589 const Int_t nMax, const Float_t mass, const Float_t l0,
1590 const Float_t eta, const Float_t phi,
1591 const Bool_t matched, const Int_t mcindex)
1592{
1593 // Fill histograms for clusters before any selection after spliting
1594
1595 Float_t splitFrac = (e1+e2)/en;
1596
1597 Float_t asym = -10;
1598 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1599
29555e96 1600 fhNLocMax [0][matched]->Fill(en,nMax);
1601 fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1602 fhLM2NLocMax[0][matched]->Fill(e2,nMax);
cc909e6f 1603 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1604 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1605
cb99fa55 1606 if(IsDataMC() && mcindex > 0 && mcindex < 7)
cc909e6f 1607 {
29555e96 1608 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1609 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1610 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
b583134f 1611 fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1612 fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
cc909e6f 1613 }
1253480f 1614
1615 if ( nMax == 1 )
1616 {
1617 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1618 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1619
cb99fa55 1620 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 1621 {
1622 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1623 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1624 }
1625
1626 if(en > fHistoECut)
1627 {
1628 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
cb99fa55 1629 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1253480f 1630
1631 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1632 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1633 }
1634 }
1635 else if( nMax == 2 )
1636 {
1637 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1638 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1639
cb99fa55 1640 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 1641 {
1642 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1643 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1644 }
1645
1646 if(en > fHistoECut)
1647 {
1648 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
cb99fa55 1649 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1253480f 1650
1651 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1652 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1653 }
1654 }
1655 else if( nMax >= 3 )
1656 {
1657 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1658 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1659
cb99fa55 1660 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 1661 {
1662 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1663 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1664 }
1665
1666 if(en > fHistoECut)
1667 {
1668
1669 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
cb99fa55 1670 if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1253480f 1671
1672 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1673 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1674 }
1675 }
1676
1677
1678}
1679
1680//________________________________________________________________________________________________________________________
1681void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1682 const Float_t e1, const Float_t e2,
1683 const Int_t nMax, const Float_t mass, const Float_t l0,
1684 const Bool_t matched, const Int_t mcindex)
1685{
1686 // Fill histograms for clusters passing the first M02 selection
1687
1688 Float_t efrac = eprim/en;
1689 Float_t efracSplit = 0;
1690 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1691
1692 Float_t splitFrac = (e1+e2)/en;
1693
1694 Float_t asym = -10;
1695 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1696
1697 Int_t inlm = nMax-1;
1698 if(inlm > 2) inlm = 2;
1699 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1700
1701 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1702 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1703 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1704 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1705
1706 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1707
1708 if(m02On && m02OK)
1709 {
29555e96 1710 fhNLocMaxM02Cut [0][matched]->Fill(en,nMax);
1711 fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1712 fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1713 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1714 {
1715 fhNLocMaxM02Cut [mcindex][matched]->Fill(en,nMax);
1716 fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1717 fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1718 }
1253480f 1719 }
1720
1721 if (nMax==1)
1722 {
1723 fhMassNLocMax1[0][matched]->Fill(en,mass );
1724 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1725
1726 // Effect of cuts in mass histograms
cb99fa55 1727
1728 if(!matched && asyOK && asyOn )
1729 {
1730 fhMassAsyCutNLocMax1->Fill(en,mass);
1731 fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1732 }
1253480f 1733
1734 if(!matched && m02OK && m02On )
1735 {
1736 fhMassM02CutNLocMax1->Fill(en,mass);
1737 fhAsymM02CutNLocMax1->Fill(en,asym );
1738 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1739 }
1740
1741 if((m02OK && asyOK) && (asyOn || m02On))
1742 {
1743 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1744 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1745
1746 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1747 {
1748 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1749 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1750 }
1751 }
1752 }
1753 else if(nMax==2)
1754 {
1755 fhMassNLocMax2[0][matched]->Fill(en,mass );
1756 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1757
1758 // Effect of cuts in mass histograms
1759
cb99fa55 1760 if(!matched && asyOK && asyOn )
1761 {
1762 fhMassAsyCutNLocMax2->Fill(en,mass);
1763 fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1764 }
1765
1253480f 1766 if(!matched && m02OK && m02On )
1767 {
1768 fhMassM02CutNLocMax2->Fill(en,mass);
1769 fhAsymM02CutNLocMax2->Fill(en,asym );
1770 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1771 }
1772
1773 if((m02OK && asyOK) && (asyOn || m02On))
1774 {
1775 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1776 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1777
1778 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1779 {
1780 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1781 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1782 }
1783 }
1784 }
1785 else if(nMax >2)
1786 {
1787 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1788 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1789
1790 // Effect of cuts in mass histograms
cb99fa55 1791
1792 if(!matched && asyOK && asyOn )
1793 {
1794 fhMassAsyCutNLocMaxN->Fill(en,mass);
1795 fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1796 }
1797
1253480f 1798 if(!matched && m02OK && m02On )
1799 {
1800 fhMassM02CutNLocMaxN->Fill(en,mass);
1801 fhAsymM02CutNLocMaxN->Fill(en,asym );
1802 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1803 }
1804
1805 if((m02OK && asyOK) && (asyOn || m02On))
1806 {
1807 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1808 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1809
1810 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1811 {
1812 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1813 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1814 }
1815 }
1816 }
1817
cb99fa55 1818 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 1819 {
1820 if (nMax==1)
1821 {
1822 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1823 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1824
1825 if((m02OK && asyOK) && (asyOn || m02On))
1826 {
1827 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1828 if(splitFrac > splitFracMin)
1829 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1830 }
1831 }
1832 else if(nMax==2)
1833 {
1834 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1835 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1836
1837 if((m02OK && asyOK) && (asyOn || m02On))
1838 {
1839 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1840 if(splitFrac >splitFracMin)
1841 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1842 }
1843 }
1844 else if(nMax >2)
1845 {
1846 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1847 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1848
1849 if((m02OK && asyOK) && (asyOn || m02On))
1850 {
1851 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1852 if(splitFrac > splitFracMin )
1853 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1854 }
1855 }
1856 }//Work with MC truth
1857}
1858
1859
1860//________________________________________________________________________________________________________________________
cc909e6f 1861void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1862 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1253480f 1863 const Float_t mass, const Float_t l0,
1864 const Float_t eta, const Float_t phi,
1865 const Bool_t matched, const Int_t mcindex)
1866{
1867 // Fill histograms for clusters passing the pi0 selection
1868
1869 Float_t asym = -10;
1870 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1871
29555e96 1872 fhNLocMaxIdPi0 [0][matched]->Fill(en,nMax);
1873 fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
1874 fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
1875
cc909e6f 1876 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
1877 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
1878
cb99fa55 1879 if(IsDataMC() && mcindex > 0 && mcindex < 7)
cc909e6f 1880 {
1881 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
1882 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
1883 }
1884
1253480f 1885 if (nMax==1)
1886 {
1887 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1888 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1889 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1890 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1891
1892 if(!matched)
1893 {
1894 if(fFillHighMultHisto)
1895 {
1896 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1897 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1898 }
1899 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1900 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1901 }
1902 }
1903 else if(nMax==2)
1904 {
1905 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1906 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1907 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1908 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1909
1910 if(!matched)
1911 {
1912 if(fFillHighMultHisto)
1913 {
1914 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1915 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1916 }
1917 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1918 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1919 }
1920 }
1921 else if(nMax >2)
1922 {
1923 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1924 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1925 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1926 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1927
1928 if(!matched)
1929 {
1930 if(fFillHighMultHisto)
1931 {
1932 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1933 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1934 }
1935 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1936 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1937 }
1938 }
1939
cb99fa55 1940 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 1941 {
29555e96 1942 fhNLocMax [mcindex][matched]->Fill(en,nMax);
1943 fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1944 fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1945
1253480f 1946 if (nMax==1)
1947 {
1948 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1949 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1950 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1951 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1952
1953 }
1954 else if(nMax==2)
1955 {
1956 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1957 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1958 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1959 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1960 }
1961 else if(nMax >2)
1962 {
cc909e6f 1963 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
1253480f 1964 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
cc909e6f 1965 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
1253480f 1966 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1967 }
1968 }//Work with MC truth
1969}
1970
1971//________________________________________________________________________________________________________________________
1972void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1973 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1974 const Float_t mass, const Float_t l0,
1975 const Float_t eta, const Float_t phi,
1976 const Bool_t matched, const Int_t mcindex)
1977{
1978 // Fill histograms for clusters passing the eta selection
1979
1980 Float_t asym = -10;
1981 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1982
1983 if (nMax==1)
1984 {
1985 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1986 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1987 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1988 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1989
1990 if(!matched)
1991 {
1992 if(fFillHighMultHisto)
1993 {
1994 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1995 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1996 }
1997 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1998 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1999 }
2000 }
2001 else if(nMax==2)
2002 {
2003 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2004 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2005 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2006 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2007
2008 if(!matched)
2009 {
2010 if(fFillHighMultHisto)
2011 {
2012 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2013 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2014 }
2015 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2016 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2017 }
2018 }
2019 else if(nMax >2)
2020 {
2021 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2022 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2023 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2024 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2025
2026 if(!matched)
2027 {
2028 if(fFillHighMultHisto)
2029 {
2030 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2031 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2032 }
2033 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2034 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2035 }
2036 }
2037
cb99fa55 2038 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 2039 {
2040 if (nMax==1)
2041 {
2042 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2043 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2044 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2045 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2046 }
2047 else if(nMax==2)
2048 {
2049 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2050 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2051 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2052 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2053
2054 }
2055 else if(nMax >2)
2056 {
2057 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
2058 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2059 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
2060 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2061 }
2062 }//Work with MC truth
2063}
2064
2065
2066//_____________________________________________________________________________________________________________________
2067void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
2068 const Float_t mass, const Float_t l0,
2069 const Bool_t matched, const Int_t mcindex)
2070{
2071 // Fill histograms for clusters passing the photon selection
2072
2073 if (nMax==1)
2074 {
2075 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2076 fhMassConNLocMax1[0][matched]->Fill(en,mass);
2077 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2078 }
2079 else if(nMax==2)
2080 {
2081 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2082 fhMassConNLocMax2[0][matched]->Fill(en,mass);
2083 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2084 }
2085 else if(nMax >2)
2086 {
2087 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2088 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2089 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2090 }
2091
cb99fa55 2092 if(IsDataMC() && mcindex > 0 && mcindex < 7)
1253480f 2093 {
2094 if (nMax==1)
2095 {
2096 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2097 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2098 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2099 }
2100 else if(nMax==2)
2101 {
2102 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2103 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2104 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2105 }
2106 else if(nMax >2)
2107 {
2108 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2109 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2110 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2111 }
2112
2113 }//Work with MC truth
2114}
2115
b2e375c7 2116//_____________________________________________________________________________________________________________________
2117void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
4914e781 2118 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
b2e375c7 2119 const Float_t l0, const Float_t mass,
2120 const Int_t nMax, const Bool_t matched,
2121 const Float_t splitFrac, const Float_t asym,
2122 const Float_t eprim, const Float_t asymGen)
2123{
2124 // Fill histograms needing some MC input
1253480f 2125
b2e375c7 2126 Float_t efrac = eprim/en;
2127 Float_t efracSplit = 0;
2128 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
b583134f 2129 Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2130
b2e375c7 2131 //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",
2132 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2133
2134 if(ebin >= 0 && fFillEbinHisto)
2135 {
2136 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2137 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2138 }
2139
2140 if (nMax==1)
2141 {
2142 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2143 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
2144 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
b583134f 2145 if(asym > 0 && !matched)
2146 {
2147 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[0] ->Fill(en, asymDiff );
2148 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2149 }
2150
4914e781 2151 if(noverlaps==0)
2152 {
2153 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
2154 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2155 }
2156
b2e375c7 2157 if( en > fHistoECut )
2158 {
2159 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2160
2161 if(!matched && ebin >= 0 && fFillEbinHisto)
2162 {
2163 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2164 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2165
b583134f 2166 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2167 {
2168 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2169 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
2170 }
b2e375c7 2171 }
2172 }
2173 }
2174 else if(nMax==2)
2175 {
2176 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2177 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2178 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
b583134f 2179
2180 if(asym > 0 && !matched)
2181 {
2182 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[1] ->Fill(en, asymDiff );
2183 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2184 }
b2e375c7 2185
4914e781 2186 if(noverlaps==0)
2187 {
2188 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
2189 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
2190 }
2191
b2e375c7 2192 if( en > fHistoECut )
2193 {
2194 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2195
2196 if(!matched && ebin >= 0 && fFillEbinHisto)
2197 {
2198 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2199 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
b583134f 2200 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2201 {
2202 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2203 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
2204 }
b2e375c7 2205 }
2206 }
2207
2208 }
2209 else if(nMax > 2 )
2210 {
2211 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2212 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2213 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
b583134f 2214 if(asym > 0 && !matched)
2215 {
2216 if (mcindex==kmcPi0) fhAsyMCGenRecoDiffMCPi0[2] ->Fill(en, asymDiff );
2217 else if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2218 }
2219
4914e781 2220 if(noverlaps==0)
2221 {
2222 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
2223 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
2224 }
2225
b2e375c7 2226 if( en > fHistoECut )
2227 {
2228 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2229
2230 if(!matched && ebin >= 0 && fFillEbinHisto)
2231 {
2232 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2233 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2234
b583134f 2235 if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2236 {
2237 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2238 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
2239 }
b2e375c7 2240 }
2241 }
2242 }
2243}
2244
83351853 2245//__________________________________________________________________________________________________________________________________________________
4914e781 2246void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
74e3eb22 2247 const Int_t nc, const Float_t mass, const Float_t l0,
4914e781 2248 const Float_t asym, const Float_t splitFrac,
b2e375c7 2249 const Int_t inlm, const Int_t ebin, const Bool_t matched,
2250 const Int_t mcindex, const Int_t noverlaps)
2251{
b2e375c7 2252 // Fill histograms for MC Overlaps
2253
2254 //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);
1253480f 2255
b2e375c7 2256 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2257
2258 if(!matched)
2259 {
2260 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2261
2262 if (noverlaps == 0)
2263 {
74e3eb22 2264 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
2265 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2266 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2267 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2268 if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
83351853 2269 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2270 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2271 }
2272 else if(noverlaps == 1)
2273 {
74e3eb22 2274 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
2275 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2276 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2277 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2278 if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
83351853 2279 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2280 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2281 }
2282 else if(noverlaps > 1)
2283 {
74e3eb22 2284 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
2285 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2286 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2287 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2288 if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
83351853 2289 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2290 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2291 }
2292 else
2293 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
2294 }
2295 else if(fFillTMHisto)
2296 {
2297 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2298
2299 if (noverlaps == 0)
2300 {
74e3eb22 2301 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
2302 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2303 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2304 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2305 if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
83351853 2306 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2307 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2308 }
2309 else if(noverlaps == 1)
2310 {
74e3eb22 2311 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
2312 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2313 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2314 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2315 if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
83351853 2316 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2317 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2318 }
2319 else if(noverlaps > 1)
2320 {
74e3eb22 2321 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
2322 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2323 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2324 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
cb99fa55 2325 if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
83351853 2326 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
b2e375c7 2327 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2328 }
2329 else
2330 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
2331 }
2332}
2333
4914e781 2334
2335//__________________________________________________________________________________________________
2336void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
2337 const Bool_t matched, const Int_t mcindex,
2338 const Float_t mass , const Float_t l0)
2339
2340{
2341 // Fill optional histograms with more SS parameters
1253480f 2342
4914e781 2343 if (nMax==1)
2344 {
2345 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2346 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2347
2348 if (mcindex==kmcPi0 && !matched)
2349 {
2350 if( energy > fHistoECut)
2351 {
2352 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2353 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2354 }
2355 else
2356 {
2357 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2358 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2359 }
2360 }
2361 }
2362 else if( nMax == 2 )
2363 {
2364 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2365 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2366
2367
2368 if (mcindex==kmcPi0 && !matched)
2369 {
2370 if( energy > fHistoECut)
2371 {
2372 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2373 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2374 }
2375 else
2376 {
2377 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2378 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2379 }
2380 }
2381 }
2382 else if( nMax >= 3 )
2383 {
2384 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2385 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2386
2387 if (mcindex==kmcPi0 && !matched)
2388 {
2389 if( energy > fHistoECut)
2390 {
2391 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2392 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2393 }
2394 else
2395 {
2396 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2397 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2398 }
2399 }
2400 }
2401}
2402
b2e375c7 2403//______________________________________________________________________________________________________
2404void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
2405 const Bool_t matched, const Int_t mcindex,
2406 const Float_t mass , const Int_t ebin)
2407{
2408 // Fill optional histograms with more SS parameters
1253480f 2409
b2e375c7 2410 Float_t en = cluster->E();
b2e375c7 2411
2412 // Get more Shower Shape parameters
2413 Float_t ll0 = 0., ll1 = 0.;
2414 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
2415 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2416
2417 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2418 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2419
2420 Float_t dispAsy = -1;
2421 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
b2e375c7 2422
2423 if (nMax==1)
2424 {
b2e375c7 2425 if( en > fHistoECut )
2426 {
2427 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2428 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2429 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2430
cb99fa55 2431 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2432 {
2433 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2434 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2435 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2436 }
2437 }
2438
2439 if(!matched && ebin >= 0 && fFillEbinHisto)
2440 {
2441 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2442 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2443 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2444 }
2445 }
2446 else if( nMax == 2 )
2447 {
b2e375c7 2448 if( en > fHistoECut )
2449 {
2450 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2451 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2452 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2453
cb99fa55 2454 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2455 {
2456 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2457 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2458 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2459 }
2460 }
2461
2462 if(!matched && ebin >= 0 && fFillEbinHisto)
2463 {
2464 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2465 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2466 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2467 }
2468
2469 }
2470 else if( nMax >= 3 )
2471 {
b2e375c7 2472 if( en > fHistoECut )
2473 {
2474 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2475 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2476 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2477
cb99fa55 2478 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2479 {
2480 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2481 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2482 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2483 }
2484 }
2485
2486 if(!matched && ebin >= 0 && fFillEbinHisto)
2487 {
2488 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2489 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2490 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2491 }
2492
2493 }
2494
2495}
2496
19391b8c 2497//__________________________________________________________________________________________________
2498void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
2499 const Int_t absId1, const Int_t absId2)
dbe09c26 2500{
2501 // Calculate weights and fill histograms
1253480f 2502
dbe09c26 2503 AliVCaloCells* cells = 0;
2504 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2505 else cells = GetPHOSCells();
2506
2507 // First recalculate energy in case non linearity was applied
2508 Float_t energy = 0;
2509 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2510 {
2511
2512 Int_t id = clus->GetCellsAbsId()[ipos];
2513
2514 //Recalibrate cell energy if needed
2515 Float_t amp = cells->GetCellAmplitude(id);
2516 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2517
2518 energy += amp;
2519
2520 } // energy loop
2521
2522 if(energy <=0 )
2523 {
2524 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
2525 return;
2526 }
2527
19391b8c 2528 //Get amplitude of main local maxima, recalibrate if needed
2529 Float_t amp1 = cells->GetCellAmplitude(absId1);
2530 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2531 Float_t amp2 = cells->GetCellAmplitude(absId2);
2532 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2533
2534 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2535 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
2536
2537 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
2538 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2539 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2540
dbe09c26 2541 //Get the ratio and log ratio to all cells in cluster
2542 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2543 {
2544 Int_t id = clus->GetCellsAbsId()[ipos];
2545
2546 //Recalibrate cell energy if needed
2547 Float_t amp = cells->GetCellAmplitude(id);
2548 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2549
19391b8c 2550 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
dbe09c26 2551 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
2552 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
19391b8c 2553
2554 if (id!=absId1 && id!=absId2)
2555 {
2556 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2557 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2558 }
2559
dbe09c26 2560 }
2561
2562 //Recalculate shower shape for different W0
2563 if(fCalorimeter=="EMCAL")
2564 {
2565 Float_t l0org = clus->GetM02();
2566 Float_t l1org = clus->GetM20();
2567 Float_t dorg = clus->GetDispersion();
19391b8c 2568 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
dbe09c26 2569
2570 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2571 {
2572 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
8edbd100 2573 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2574
2575 Float_t l0 = 0., l1 = 0.;
2576 Float_t disp = 0., dEta = 0., dPhi = 0.;
2577 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2578
2579 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2580 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2581
dbe09c26 2582
2583 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2584
2585 } // w0 loop
2586
2587 // Set the original values back
2588 clus->SetM02(l0org);
2589 clus->SetM20(l1org);
2590 clus->SetDispersion(dorg);
19391b8c 2591 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2592
2593 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2594 {
2595 Float_t l0 = 0., l1 = 0.;
2596 Float_t disp = 0., dEta = 0., dPhi = 0.;
2597 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
19391b8c 2598
3ae72bd8 2599 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2600 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2601
c0779373 2602 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
19391b8c 2603 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2604
2605 } // w0 loop
3ae72bd8 2606
dbe09c26 2607 }// EMCAL
2608}
2609
b2e375c7 2610//________________________________________________________________________________________
cc909e6f 2611void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster, const Int_t nMax,
b2e375c7 2612 const Int_t mcindex)
2613{
2614 // Fill histograms related to track matching
1253480f 2615
b2e375c7 2616 Float_t dZ = cluster->GetTrackDz();
2617 Float_t dR = cluster->GetTrackDx();
2618 Float_t en = cluster->E();
2619
2620 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2621 {
2622 dR = 2000., dZ = 2000.;
2623 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2624 }
2625
2626 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2627
2628 if(TMath::Abs(dR) < 999)
2629 {
2630 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2631 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2632 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2633
cb99fa55 2634 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2635 {
2636 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2637 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2638 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2639 }
2640
2641 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2642
2643 Bool_t positive = kFALSE;
2644 if(track) positive = (track->Charge()>0);
2645
2646 if(track)
2647 {
2648 if(positive)
2649 {
2650 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2651 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2652 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2653
cb99fa55 2654 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2655 {
2656 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2657 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2658 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2659 }
2660 }
2661 else
2662 {
2663 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2664 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2665 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2666
cb99fa55 2667 if(IsDataMC() && mcindex > 0 && mcindex < 7)
b2e375c7 2668 {
2669 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2670 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2671 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2672 }
2673 }
2674
2675 }// track exists
2676
2677 }
2678}
dbe09c26 2679
992b14a7 2680//_______________________________________________________________
2681TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2682{
2683 //Save parameters used for analysis
2684 TString parList ; //this will be list of parameters used for this analysis.
2685 const Int_t buffersize = 255;
2686 char onePar[buffersize] ;
2687
2688 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2689 parList+=onePar ;
2690
243c2909 2691 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
992b14a7 2692 parList+=onePar ;
c8710850 2693 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
29ca9cad 2694 parList+=onePar ;
c8710850 2695 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
29ca9cad 2696 parList+=onePar ;
e23a0471 2697 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2cb134fb 2698 parList+=onePar ;
3c1d9afb 2699 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
992b14a7 2700 parList+=onePar ;
19391b8c 2701 if(fFillSSWeightHisto)
2702 {
2703 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2704 parList+=onePar ;
2705 }
2706
992b14a7 2707 return new TObjString(parList) ;
2708
2709}
2710
992b14a7 2711//________________________________________________________________
2712TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
1253480f 2713{
992b14a7 2714 // Create histograms to be saved in output file and
2715 // store them in outputContainer
2716 TList * outputContainer = new TList() ;
667432ef 2717 outputContainer->SetName("InsideClusterHistos") ;
992b14a7 2718
745913ae 2719 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2720 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2721 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2722 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
9554fc65 2723 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2724 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1253480f 2725
5c46c992 2726 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2727 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2728 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2729 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2730 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2731 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2732
1253480f 2733 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2734 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2735 Bool_t splitOn = kFALSE;
2736 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2737 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2738 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2739
cb99fa55 2740 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
2741 TString pname[] ={"","Photon","Conversion", "Pi0", "Pi0Conv", "Eta","Hadron"};
ce49dd72 2742 TString snlm [] = {"1","2","N"};
2743
be894c1d 2744 TString sEBin[] = {"8 < E < 12 GeV","12 < E < 16 GeV", "16 < E < 20 GeV", "E > 20 GeV" };
2745
992b14a7 2746 Int_t n = 1;
2747
cb99fa55 2748 if(IsDataMC()) n = 7;
992b14a7 2749
243c2909 2750 Int_t nMaxBins = 10;
2751
5c46c992 2752 TString sMatched[] = {"","Matched"};
2753
8edbd100 2754 Int_t nMatched = 2;
2755 if(!fFillTMHisto) nMatched = 1;
aa12888f 2756
ce49dd72 2757 if(fCheckSplitDistToBad)
2758 {
2759 for(Int_t inlm = 0; inlm < 3; inlm++)
2760 {
2761 fhMassBadDistClose[inlm] = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
2762 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2763 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2764 fhMassBadDistClose[inlm]->SetYTitle("M (GeV/c^{2})");
2765 fhMassBadDistClose[inlm]->SetXTitle("E (GeV)");
2766 outputContainer->Add(fhMassBadDistClose[inlm]) ;
2767
2768 fhM02BadDistClose[inlm] = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
2769 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to bad channel",inlm),
2770 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2771 fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
2772 fhM02BadDistClose[inlm]->SetXTitle("E (GeV)");
2773 outputContainer->Add(fhM02BadDistClose[inlm]) ;
2774
2775 fhMassOnBorder[inlm] = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
2776 Form("Invariant mass of splitted cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2777 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2778 fhMassOnBorder[inlm]->SetYTitle("M (GeV/c^{2})");
2779 fhMassOnBorder[inlm]->SetXTitle("E (GeV)");
2780 outputContainer->Add(fhMassOnBorder[inlm]) ;
2781
2782 fhM02OnBorder[inlm] = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
2783 Form("#lambda_{0}^{2} for cluster with NLM=%d vs E, 2nd LM close to border",inlm),
2784 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2785 fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
2786 fhM02OnBorder[inlm]->SetXTitle("E (GeV)");
2787 outputContainer->Add(fhM02OnBorder[inlm]) ;
2788
2789 }
2790 }
2791
5c46c992 2792 for(Int_t i = 0; i < n; i++)
667432ef 2793 {
8edbd100 2794 for(Int_t j = 0; j < nMatched; j++)
667432ef 2795 {
5c46c992 2796
ce49dd72 2797 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2798 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2799 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2800 fhNLocMax[i][j] ->SetYTitle("N maxima");
2801 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2802 outputContainer->Add(fhNLocMax[i][j]) ;
29555e96 2803
2804 fhLM1NLocMax[i][j] = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2805 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2806 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2807 fhLM1NLocMax[i][j] ->SetYTitle("N maxima");
2808 fhLM1NLocMax[i][j] ->SetXTitle("E1 (GeV)");
2809 outputContainer->Add(fhLM1NLocMax[i][j]) ;
2810
2811 fhLM2NLocMax[i][j] = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2812 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2813 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2814 fhLM2NLocMax[i][j] ->SetYTitle("N maxima");
2815 fhLM2NLocMax[i][j] ->SetXTitle("E1 (GeV)");
2816 outputContainer->Add(fhLM2NLocMax[i][j]) ;
2817
2818 if(m02On)
2819 {
2820 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2821 Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2822 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2823 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2824 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2825 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2826
2827 fhLM1NLocMaxM02Cut[i][j] = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2828 Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2829 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2830 fhLM1NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
2831 fhLM1NLocMaxM02Cut[i][j] ->SetXTitle("E1 (GeV)");
2832 outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
2833
2834 fhLM2NLocMaxM02Cut[i][j] = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2835 Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
2836 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2837 fhLM2NLocMaxM02Cut[i][j] ->SetYTitle("N maxima");
2838 fhLM2NLocMaxM02Cut[i][j] ->SetXTitle("E1 (GeV)");
2839 outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
2840
2841 }
2842
2843
2844 fhNLocMaxIdPi0[i][j] = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2845 Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2846 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2847 fhNLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2848 fhNLocMaxIdPi0[i][j] ->SetXTitle("E (GeV)");
2849 outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
2850
2851
2852 fhLM1NLocMaxIdPi0[i][j] = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2853 Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2854 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2855 fhLM1NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2856 fhLM1NLocMaxIdPi0[i][j] ->SetXTitle("E1 (GeV)");
2857 outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
2858
2859 fhLM2NLocMaxIdPi0[i][j] = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
2860 Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2861 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2862 fhLM2NLocMaxIdPi0[i][j] ->SetYTitle("N maxima");
2863 fhLM2NLocMaxIdPi0[i][j] ->SetXTitle("E1 (GeV)");
2864 outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
2865
2866
2867
ce49dd72 2868
2869 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2870 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
2871 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2872 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
2873 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
2874 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
2875
2876
2877 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2878 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
2879 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2880 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
2881 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
2882 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
2883
2884 if(fFillNCellHisto)
2885 {
2886 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2887 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2888 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2889 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2890 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2891 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2892
2893 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2894 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2895 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2896 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2897 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2898 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2899
2900
2901 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2902 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2903 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2904 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2905 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2906 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2907 }
2908
5c46c992 2909 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 2910 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 2911 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2912 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2913 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2914 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2915
2916 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 2917 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 2918 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2919 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2920 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2921 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2922
2923 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 2924 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 2925 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2926 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2927 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
667432ef 2928 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
1253480f 2929
2930 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2931 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2932 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2933 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2934 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2935 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2936
2937 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2938 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2939 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2940 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2941 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2942 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2943
2944 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%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,ssbins,ssmin,ssmax);
2947 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2948 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2949 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2950
2951 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2952 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2953 nptbins,ptmin,ptmax,200,-1,1);
2954 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2955 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2956 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2957
2958 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2959 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2960 nptbins,ptmin,ptmax,200,-1,1);
2961 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2962 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2963 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2964
2965 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2966 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2967 nptbins,ptmin,ptmax,200,-1,1);
2968 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2969 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2970 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2971
2972 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2973 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2974 nptbins,ptmin,ptmax,120,0,1.2);
2975 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2976 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2977 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2978
2979 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2980 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2981 nptbins,ptmin,ptmax,120,0,1.2);
2982 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2983 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2984 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2985
2986 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2987 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2988 nptbins,ptmin,ptmax,120,0,1.2);
2989 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2990 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2991 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
1253480f 2992
cb99fa55 2993 if(i==0 && j==0 )
1253480f 2994 {
cb99fa55 2995 if(m02On)
1253480f 2996 {
cb99fa55 2997 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2998 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2999 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
3000 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
3001 outputContainer->Add(fhMassM02CutNLocMax1) ;
1253480f 3002
cb99fa55 3003 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
3004 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3005 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
3006 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
3007 outputContainer->Add(fhMassM02CutNLocMax2) ;
1253480f 3008
cb99fa55 3009 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3010 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3011 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3012 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
3013 outputContainer->Add(fhMassM02CutNLocMaxN) ;
3014
3015 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3016 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3017 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
3018 outputContainer->Add(fhAsymM02CutNLocMax1) ;
3019
3020 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3021 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3022 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
3023 outputContainer->Add(fhAsymM02CutNLocMax2) ;
3024
3025 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3026 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
3027 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
3028 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3029 if(splitOn)
3030 {
3031 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
3032 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3033 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
3034 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
3035 outputContainer->Add(fhMassSplitECutNLocMax1) ;
3036
3037 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3038 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3039 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
3040 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
3041 outputContainer->Add(fhMassSplitECutNLocMax2) ;
3042
3043 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
3044 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3045 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3046 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
3047 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3048 }
3049 }//m02on
1253480f 3050
cb99fa55 3051 if(asyOn)
3052 {
3053 fhMassAsyCutNLocMax1 = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
3054 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3055 fhMassAsyCutNLocMax1->SetYTitle("M (GeV/c^{2})");
3056 fhMassAsyCutNLocMax1->SetXTitle("E (GeV)");
3057 outputContainer->Add(fhMassAsyCutNLocMax1) ;
3058
3059 fhMassAsyCutNLocMax2 = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
3060 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3061 fhMassAsyCutNLocMax2->SetYTitle("M (GeV/c^{2})");
3062 fhMassAsyCutNLocMax2->SetXTitle("E (GeV)");
3063 outputContainer->Add(fhMassAsyCutNLocMax2) ;
3064
3065 fhMassAsyCutNLocMaxN = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3066 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3067 fhMassAsyCutNLocMaxN->SetYTitle("M (GeV/c^{2})");
3068 fhMassAsyCutNLocMaxN->SetXTitle("E (GeV)");
3069 outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3070
3071 fhM02AsyCutNLocMax1 = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of NLM=1 vs cluster Energy, AsyCut, no TM",
3072 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3073 fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3074 fhM02AsyCutNLocMax1->SetXTitle("E (GeV)");
3075 outputContainer->Add(fhM02AsyCutNLocMax1) ;
3076
3077 fhM02AsyCutNLocMax2 = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of NLM=2 vs cluster Energy, AsyCut, no TM",
3078 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3079 fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3080 fhM02AsyCutNLocMax2->SetXTitle("E (GeV)");
3081 outputContainer->Add(fhM02AsyCutNLocMax2) ;
3082
3083 fhM02AsyCutNLocMaxN = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2 vs cluster Energy, AsyCut, no TM",
3084 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3085 fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3086 fhM02AsyCutNLocMaxN->SetXTitle("E (GeV)");
3087 outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3088 }
aa12888f 3089 }
3090
1253480f 3091 if(asyOn || m02On)
3092 {
3093 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3094 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3095 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3096 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3097 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
3098 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3099
3100 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3101 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3102 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3103 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3104 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
3105 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3106
3107
3108 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3109 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3110 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3111 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3112 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3113 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3114
3115 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3116 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()),
3117 nptbins,ptmin,ptmax,120,0,1.2);
3118 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
3119 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3120 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3121
3122 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3123 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()),
3124 nptbins,ptmin,ptmax,120,0,1.2);
3125 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
3126 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3127 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3128
3129 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3130 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()),
3131 nptbins,ptmin,ptmax,120,0,1.2);
3132 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
3133 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3134 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3135 }
5c46c992 3136
0137016b 3137 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3138 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 3139 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3140 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3141 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3142 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
3143
3144 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3145 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 3146 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3147 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3148 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3149 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
3150
3151 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 3152 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 3153 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3154 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3155 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3156 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
3157
8e81c2cf 3158 if(fFillSSExtraHisto)
3159 {
3160 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3161 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 3162 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3163 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3164 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3165 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
3166
3167 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3168 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 3169 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3170 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3171 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3172 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
3173
3174 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 3175 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 3176 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3177 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3178 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3179 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
3180
3181 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3182 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 3183 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3184 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3185 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3186 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
3187
3188 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3189 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 3190 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3191 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3192 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3193 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
3194
3195 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3196 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3197 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3198 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3199 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3200 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
3201
3202 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3203 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()),
8e81c2cf 3204 200,-1,1,mbins,mmin,mmax);
3205 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
3206 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3207 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
3208
3209 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 3210 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()),
8e81c2cf 3211 200,-1,1,mbins,mmin,mmax);
3212 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
3213 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3214 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
3215
3216 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3217 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()),
3218 200,-1,1,mbins,mmin,mmax);
3219 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
3220 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3221 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
3222 }
d2655d46 3223
fc01318e 3224
b2e375c7 3225 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
883411b2 3226 {
3227 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3228 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3229 nptbins,ptmin,ptmax,200,0,2);
fb51265c 3230 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 3231 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3232 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
3233
3234 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3235 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3236 nptbins,ptmin,ptmax,200,0,2);
fb51265c 3237 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 3238 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3239 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
3240
883411b2 3241 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3242 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3243 nptbins,ptmin,ptmax,200,0,2);
fb51265c 3244 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 3245 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3246 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
4914e781 3247
3248 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3249 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3250 nptbins,ptmin,ptmax,200,0,2);
4914e781 3251 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3252 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3253 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3254
3255 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3256 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3257 nptbins,ptmin,ptmax,200,0,2);
4914e781 3258 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3259 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3260 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3261
3262 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3263 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3264 nptbins,ptmin,ptmax,200,0,2);
4914e781 3265 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
3266 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3267 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
1253480f 3268
4914e781 3269
5094c724 3270 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3271 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3272 nptbins,ptmin,ptmax,200,0,2);
5094c724 3273 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3274 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
3275 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
3276
3277 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3278 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3279 nptbins,ptmin,ptmax,200,0,2);
5094c724 3280 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3281 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
3282 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
3283
5094c724 3284 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3285 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3286 nptbins,ptmin,ptmax,200,0,2);
5094c724 3287 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3288 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3289 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
1253480f 3290
4914e781 3291 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3292 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3293 nptbins,ptmin,ptmax,200,0,2);
4914e781 3294 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3295 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
3296 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3297
3298 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3299 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3300 nptbins,ptmin,ptmax,200,0,2);
4914e781 3301 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3302 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
3303 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3304
3305 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3306 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3307 nptbins,ptmin,ptmax,200,0,2);
4914e781 3308 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3309 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
3310 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3311
bb2d339b 3312 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3313 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()),
3314 200,0,2,200,0,2);
bb2d339b 3315 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3316 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3317 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
3318
3319 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3320 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()),
3321 200,0,2,200,0,2);
bb2d339b 3322 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3323 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3324 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
3325
3326
3327 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3328 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()),
3329 200,0,2,200,0,2);
bb2d339b 3330 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
3331 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
3332 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
3333
3334
3335 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3336 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3337 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
bb2d339b 3338 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3339 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
3340 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
3341
3342 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3343 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3344 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
bb2d339b 3345 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3346 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
3347 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
3348
3349
3350 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3351 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3352 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
bb2d339b 3353 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
3354 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
3355 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
883411b2 3356 }
ce49dd72 3357
1253480f 3358 // Histograms after cluster identification
17f5b4b6 3359
17f5b4b6 3360
1253480f 3361 // Pi0 //
17f5b4b6 3362
c8710850 3363 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3364 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3365 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 3366 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3367 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
17f5b4b6 3368 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
5c46c992 3369
c8710850 3370 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3371 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3372 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 3373 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3374 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3375 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
5c46c992 3376
c8710850 3377 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3378 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3379 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 3380 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3381 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3382 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
5c46c992 3383
c8710850 3384 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3385 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3386 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 3387 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 3388 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3389 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
bb2d339b 3390
c8710850 3391 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3392 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
3393 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 3394 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 3395 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3396 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
bb2d339b 3397
c8710850 3398 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3399 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3400 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 3401 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 3402 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3403 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
bb2d339b 3404
c8710850 3405 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3406 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
e671adc2 3407 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 3408 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
3409 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3410 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
e671adc2 3411
c8710850 3412 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3413 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
e671adc2 3414 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 3415 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
3416 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3417 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
e671adc2 3418
c8710850 3419 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
1253480f 3420 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
e671adc2 3421 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 3422 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
3423 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3424 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
e671adc2 3425
1253480f 3426 if(fFillNCellHisto)
3427 {
3428 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3429 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3430 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3431 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
3432 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
3433 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3434
3435 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3436 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3437 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3438 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
3439 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
3440 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3441
3442 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3443 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3444 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3445 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
3446 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
3447 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3448 }
3449
3450 // Eta
3451
3452 if(fFillIdEtaHisto)
3453 {
3454 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3455 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3456 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3457 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3458 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3459 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3460
3461
3462 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3463 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3464 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3465 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3466 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3467 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3468
3469 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3470 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3471 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3472 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3473 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3474 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3475
3476 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3477 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3478 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3479 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3480 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3481 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3482
3483 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3484 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3485 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3486 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3487 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3488 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3489
3490 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3491 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3492 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3493 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3494 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3495 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3496
3497 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3498 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3499 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3500 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
3501 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3502 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3503
3504 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3505 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3506 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3507 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
3508 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3509 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
3510
3511 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3512 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3513 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3514 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3515 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3516 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
3517
3518 if(fFillNCellHisto)
3519 {
3520 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3521 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3522 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3523 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
3524 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
3525 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
3526
3527 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3528 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3529 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3530 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
3531 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
3532 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
3533
3534 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3535 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3536 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3537 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
3538 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3539 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
3540
3541 }
3542 }
3543
3544 if(fFillIdConvHisto)
3545 {
3546 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3547 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3548 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3549 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
3550 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3551 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
3552
3553 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3554 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3555 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3556 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
3557 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3558 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
3559
3560 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3561 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3562 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3563 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
3564 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3565 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
3566
3567
3568 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3569 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3570 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3571 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3572 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3573 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
3574
3575 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3576 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3577 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3578 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3579 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3580 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
3581
3582 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3583 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3584 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3585 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
3586 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3587 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
3588
3589 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3590 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3591 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3592 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
3593 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
3594 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
3595
3596 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3597 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3598 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3599 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
3600 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
3601 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
3602
3603 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3604 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3605 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3606 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
3607 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
3608 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
3609
3610 }
e671adc2 3611
5c46c992 3612 } // matched, not matched
3613
19391b8c 3614 if(fFillEbinHisto)
3615 {
883411b2 3616 for(Int_t j = 0; j < 4; j++)
19391b8c 3617 {
53f2c382 3618
fc01318e 3619 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
be894c1d 3620 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3621 120,0,1.2,mbins,mmin,mmax);
fc01318e 3622 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3623 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 3624 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
883411b2 3625
fc01318e 3626 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
be894c1d 3627 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3628 120,0,1.2,mbins,mmin,mmax);
fc01318e 3629 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
3630 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 3631 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
883411b2 3632
fc01318e 3633 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
be894c1d 3634 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3635 120,0,1.2,mbins,mmin,mmax);
fc01318e 3636 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
3637 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 3638 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
883411b2 3639
b2e375c7 3640 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
fc01318e 3641 {
3642 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
be894c1d 3643 Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3644 200,0,2,nMaxBins,0,nMaxBins);
fc01318e 3645 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
fb51265c 3646 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3647 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
fc01318e 3648
3649 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
be894c1d 3650 Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3651 200,0,2,nMaxBins,0,nMaxBins);
fc01318e 3652 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
fb51265c 3653 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3654 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
fc01318e 3655
3656 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
be894c1d 3657 Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3658 200,0,2,mbins,mmin,mmax);
fc01318e 3659 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 3660 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3661 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
fc01318e 3662
3663 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
be894c1d 3664 Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3665 200,0,2,mbins,mmin,mmax);
fc01318e 3666 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 3667 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3668 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
fc01318e 3669
3670 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
be894c1d 3671 Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3672 200,0,2,mbins,mmin,mmax);
fc01318e 3673 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 3674 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3675 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
fc01318e 3676
3677 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
be894c1d 3678 Form("#lambda_{0}^{2} vs E for N max = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3679 200,0,2,ssbins,ssmin,ssmax);
fc01318e 3680 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 3681 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3682 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
fc01318e 3683
3684 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
be894c1d 3685 Form("#lambda_{0}^{2} vs E for N max = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3686 200,0,2,ssbins,ssmin,ssmax);
fc01318e 3687 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 3688 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3689 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
fc01318e 3690
3691 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
be894c1d 3692 Form("#lambda_{0}^{2} vs E for N max > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
19391b8c 3693 200,0,2,ssbins,ssmin,ssmax);
fc01318e 3694 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 3695 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 3696 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
fc01318e 3697 }
883411b2 3698 }
19391b8c 3699 }
5c46c992 3700 } // MC particle list
1253480f 3701
3702 if(fFillHighMultHisto)
3703 {
3704 // E vs centrality
3705
3706 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
3707 "E vs Centrality, selected pi0 cluster with NLM=1",
3708 nptbins,ptmin,ptmax,100,0,100);
3709 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
3710 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
3711 outputContainer->Add(fhCentralityPi0NLocMax1) ;
3712
3713 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
3714 "E vs Centrality, selected pi0 cluster with NLM=2",
3715 nptbins,ptmin,ptmax,100,0,100);
3716 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
3717 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
3718 outputContainer->Add(fhCentralityPi0NLocMax2) ;
3719
3720 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
3721 "E vs Centrality, selected pi0 cluster with NLM>1",
3722 nptbins,ptmin,ptmax,100,0,100);
3723 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
3724 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
3725 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
3726
3727 if(fFillIdEtaHisto)
3728 {
3729 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
3730 "E vs Centrality, selected pi0 cluster with NLM=1",
3731 nptbins,ptmin,ptmax,100,0,100);
3732 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
3733 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
3734 outputContainer->Add(fhCentralityEtaNLocMax1) ;
3735
3736 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3737 "E vs Centrality, selected pi0 cluster with NLM=2",
3738 nptbins,ptmin,ptmax,100,0,100);
3739 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3740 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3741 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3742
3743 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3744 "E vs Centrality, selected pi0 cluster with NLM>1",
3745 nptbins,ptmin,ptmax,100,0,100);
3746 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3747 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3748 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3749 }
3750
3751 // E vs Event plane angle
3752
3753 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3754 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3755 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3756 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3757 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3758
3759 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3760 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3761 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3762 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3763 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3764
3765 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3766 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3767 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3768 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3769 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3770
3771 if(fFillIdEtaHisto)
3772 {
3773 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3774 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3775 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3776 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3777 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3778
3779 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3780 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3781 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3782 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3783 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3784
3785 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3786 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3787 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3788 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3789 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3790 }
3791 }
17f5b4b6 3792
19391b8c 3793 if(fFillEbinHisto)
3794 {
3795 for(Int_t i = 0; i < 4; i++)
8e81c2cf 3796 {
19391b8c 3797 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
be894c1d 3798 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
19391b8c 3799 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3800 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3801 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3802 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3803
3804 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
be894c1d 3805 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
19391b8c 3806 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3807 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3808 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3809 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3810
3811 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
be894c1d 3812 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
19391b8c 3813 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3814 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3815 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3816 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3817
3818
3819 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
be894c1d 3820 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, %s",sEBin[i].Data()),
19391b8c 3821 200,-1,1,mbins,mmin,mmax);
3822 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3823 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3824 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3825
3826 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
be894c1d 3827 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, %s",sEBin[i].Data()),
19391b8c 3828 200,-1,1,mbins,mmin,mmax);
3829 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3830 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3831 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3832
3833 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
be894c1d 3834 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
19391b8c 3835 200,-1,1,mbins,mmin,mmax);
3836 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3837 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3838 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3839
3840
b2e375c7 3841 if(IsDataMC() && fFillMCHisto)
19391b8c 3842 {
3843 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
be894c1d 3844 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, %s",sEBin[i].Data()),
19391b8c 3845 ssbins,ssmin,ssmax,100,0,1);
3846 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3847 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3848 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3849
3850 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
be894c1d 3851 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, %s",sEBin[i].Data()),
19391b8c 3852 ssbins,ssmin,ssmax,100,0,1);
3853 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3854 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3855 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3856
3857 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
be894c1d 3858 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
19391b8c 3859 ssbins,ssmin,ssmax,100,0,1);
3860 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3861 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3862 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3863
3864
3865 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
be894c1d 3866 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, %s",sEBin[i].Data()),
19391b8c 3867 200,-1,1,200,-1,1);
3868 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3869 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3870 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3871
3872 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
be894c1d 3873 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, %s",sEBin[i].Data()),
19391b8c 3874 200,-1,1,200,-1,1);
3875 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3876 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3877 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3878
3879 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
be894c1d 3880 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
19391b8c 3881 200,-1,1,200,-1,1);
3882 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3883 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3884 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3885 }
3886
3887 if(fFillSSExtraHisto)
3888 {
3889 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
be894c1d 3890 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
19391b8c 3891 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3892 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3893 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3894 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3895
3896 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
be894c1d 3897 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
19391b8c 3898 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3899 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3900 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3901 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3902
3903 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
be894c1d 3904 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
19391b8c 3905 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3906 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3907 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3908 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3909
3910 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
be894c1d 3911 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
19391b8c 3912 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3913 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3914 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3915 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3916
3917 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
be894c1d 3918 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
19391b8c 3919 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3920 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3921 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3922 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3923
3924 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
be894c1d 3925 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
19391b8c 3926 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3927 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3928 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3929 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3930
3931 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
be894c1d 3932 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
19391b8c 3933 200,-1,1,mbins,mmin,mmax);
3934 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3935 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3936 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3937
3938 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
be894c1d 3939 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
19391b8c 3940 200,-1,1,mbins,mmin,mmax);
3941 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3942 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3943 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3944
3945 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
be894c1d 3946 Form("Invariant mass of N>2 local maxima cells vs A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
19391b8c 3947 200,-1,1,mbins,mmin,mmax);
3948 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3949 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3950 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3951 }
8e81c2cf 3952 }
19391b8c 3953 }
1253480f 3954
3955 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
c8710850 3956 {
3957 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3958 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3959 nptbins,ptmin,ptmax,200,0,2);
3960 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3961 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3962 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3963
3964 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3965 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3966 nptbins,ptmin,ptmax,200,0,2);
3967 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3968 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3969 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3970
3971
3972 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3973 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3974 nptbins,ptmin,ptmax,200,0,2);
3975 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3976 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3977 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3978
3979 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3980 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3981 nptbins,ptmin,ptmax,200,0,2);
3982 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3983 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3984 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3985
3986 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3987 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3988 nptbins,ptmin,ptmax,200,0,2);
3989 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3990 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3991 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3992
3993
3994 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3995 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3996 nptbins,ptmin,ptmax,200,0,2);
3997 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3998 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3999 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4000
4001 }
4002
8edbd100 4003 if(fFillTMResidualHisto && fFillTMHisto)
8e81c2cf 4004 {
4005 for(Int_t i = 0; i < n; i++)
4006 {
4007
c8710850 4008 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
4009 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
8e81c2cf 4010 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4011 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 4012 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4013 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4014
c8710850 4015 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
4016 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
8e81c2cf 4017 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4018 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 4019 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4020 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4021
c8710850 4022 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
4023 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
8e81c2cf 4024
c8710850 4025 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
4026 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
8e81c2cf 4027 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4028 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 4029 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4030 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4031
c8710850 4032 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
4033 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
8e81c2cf 4034 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4035 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 4036 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4037 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4038
c8710850 4039 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
4040 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
8e81c2cf 4041
c8710850 4042 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
4043 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
8e81c2cf 4044 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4045 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 4046 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4047 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4048
c8710850 4049 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
4050 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
8e81c2cf 4051 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4052 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 4053 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4054 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 4055
c8710850 4056 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
b2e375c7 4057 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
883411b2 4058
b2e375c7 4059 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
4060 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4061 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4062 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4063 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4064 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4065
4066 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
4067 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4068 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4069 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4070 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4071 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
4072
4073 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4074 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4075
4076 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
4077 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4078 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4079 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4080 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4081 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4082
4083 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
4084 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4085 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4086 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4087 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4088 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
4089
4090 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4091 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4092
4093 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
4094 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4095 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4096 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4097 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4098 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4099
4100 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
4101 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4102 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4103 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4104 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4105 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
4106
4107 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4108 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4109
4110 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
4111 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4112 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4113 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4114 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4115 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4116
4117 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
4118 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4119 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4120 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4121 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4122 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
4123
4124 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4125 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4126
4127 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
4128 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4129 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4130 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4131 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4132 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4133
4134 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
4135 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4136 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4137 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4138 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4139 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
4140
4141 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4142 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4143
4144 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
4145 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4146 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4147 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4148 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4149 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4150
4151 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
4152 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4153 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4154 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4155 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4156 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
4157
4158 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4159 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4160
4161 }
4162 }
4163
4164 if(fFillAngleHisto)
4165 {
0186b6a2 4166 for(Int_t i = 0; i < n; i++)
4167 {
4168 for(Int_t j = 0; j < nMatched; j++)
4169 {
4170
0186b6a2 4171 fhAnglePairNLocMax1[i][j] = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4172 Form("Opening angle split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4173 nptbins,ptmin,ptmax,200,0,0.2);
4174 fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4175 fhAnglePairNLocMax1[i][j]->SetXTitle("E (GeV)");
4176 outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4177
4178 fhAnglePairNLocMax2[i][j] = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4179 Form("Opening angle split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4180 nptbins,ptmin,ptmax,200,0,0.2);
4181 fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4182 fhAnglePairNLocMax2[i][j]->SetXTitle("E (GeV)");
4183 outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4184
4185 fhAnglePairNLocMaxN[i][j] = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4186 Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4187 nptbins,ptmin,ptmax,200,0,0.2);
4188 fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4189 fhAnglePairNLocMaxN[i][j]->SetXTitle("E (GeV)");
4190 outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4191
29555e96 4192 if(asyOn || m02On)
4193 {
4194 fhAnglePairAfterCutsNLocMax1[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4195 Form("Opening angle split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4196 nptbins,ptmin,ptmax,200,0,0.2);
4197 fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4198 fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4199 outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4200
4201 fhAnglePairAfterCutsNLocMax2[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4202 Form("Opening angle split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4203 nptbins,ptmin,ptmax,200,0,0.2);
4204 fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4205 fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4206 outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4207
4208 fhAnglePairAfterCutsNLocMaxN[i][j] = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4209 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4210 nptbins,ptmin,ptmax,200,0,0.2);
4211 fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4212 fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4213 outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4214
4215 }
4216
4217 fhAnglePairPi0NLocMax1[i][j] = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4218 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4219 nptbins,ptmin,ptmax,200,0,0.2);
4220 fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4221 fhAnglePairPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4222 outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4223
4224 fhAnglePairPi0NLocMax2[i][j] = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4225 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4226 nptbins,ptmin,ptmax,200,0,0.2);
4227 fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4228 fhAnglePairPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4229 outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4230
4231 fhAnglePairPi0NLocMaxN[i][j] = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4232 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4233 nptbins,ptmin,ptmax,200,0,0.2);
4234 fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4235 fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4236 outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4237
0186b6a2 4238 fhAnglePairMassNLocMax1[i][j] = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
29555e96 4239 Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM=1 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
0186b6a2 4240 mbins,mmin,mmax,200,0,0.2);
4241 fhAnglePairMassNLocMax1[i][j]->SetXTitle("M (GeV/c^{2})");
4242 fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4243 outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4244
29555e96 4245
0186b6a2 4246 fhAnglePairMassNLocMax2[i][j] = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4247 Form("Opening angle split sub-clusters of cluster NLM=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4248 mbins,mmin,mmax,200,0,0.2);
4249 fhAnglePairMassNLocMax2[i][j]->SetXTitle("M (GeV/c^{2})");
4250 fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4251 outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4252
4253 fhAnglePairMassNLocMaxN[i][j] = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4254 Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4255 mbins,mmin,mmax,200,0,0.2);
4256 fhAnglePairMassNLocMaxN[i][j]->SetXTitle("M (GeV/c^{2})");
4257 fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4258 outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;
4259
4260 }
4261 }
4262
4263 if(IsDataMC())
4264 {
4265 fhAnglePairPrimPi0RecoNLocMax1 = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4266 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=1",
4267 nptbins,ptmin,ptmax,300,0,3);
4268 fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4269 fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("E (GeV)");
4270 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4271
4272 fhAnglePairPrimPi0RecoNLocMax2 = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4273 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM=2",
4274 nptbins,ptmin,ptmax,300,0,3);
4275 fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4276 fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("E (GeV)");
4277 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4278
4279 fhAnglePairPrimPi0RecoNLocMaxN = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4280 "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4281 nptbins,ptmin,ptmax,300,0,3);
4282 fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4283 fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("E (GeV)");
4284 outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4285
b2e375c7 4286
0186b6a2 4287 fhAnglePairPrimPi0vsRecoNLocMax1 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4288 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, NLM=1",
4289 200,0,0.2,200,0,0.2);
29555e96 4290 fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4291 fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
0186b6a2 4292 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4293
4294 fhAnglePairPrimPi0vsRecoNLocMax2 = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4295 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4296 200,0,0.2,200,0,0.2);
29555e96 4297 fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4298 fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
0186b6a2 4299 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4300
4301 fhAnglePairPrimPi0vsRecoNLocMaxN = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4302 "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, NLM=2",
4303 200,0,0.2,200,0,0.2);
29555e96 4304 fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4305 fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
0186b6a2 4306 outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
883411b2 4307
4308 }
992b14a7 4309 }
29555e96 4310
4311 // Same as asymmetry ...
4312 if(fFillThetaStarHisto)
4313 {
4314 for(Int_t i = 0; i < n; i++)
4315 {
4316 for(Int_t j = 0; j < nMatched; j++)
4317 {
4318
4319 fhCosThStarNLocMax1[i][j] = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4320 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4321 nptbins,ptmin,ptmax,200,-1,1);
4322 fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4323 fhCosThStarNLocMax1[i][j]->SetXTitle("E (GeV)");
4324 outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4325
4326 fhCosThStarNLocMax2[i][j] = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4327 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4328 nptbins,ptmin,ptmax,200,-1,1);
4329 fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4330 fhCosThStarNLocMax2[i][j]->SetXTitle("E (GeV)");
4331 outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4332
4333 fhCosThStarNLocMaxN[i][j] = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4334 Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4335 nptbins,ptmin,ptmax,200,-1,1);
4336 fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4337 fhCosThStarNLocMaxN[i][j]->SetXTitle("E (GeV)");
4338 outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4339
4340 if(asyOn || m02On)
4341 {
4342 fhCosThStarAfterCutsNLocMax1[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4343 Form("cos(#theta^{*}) split sub-clusters of cluster NLM=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4344 nptbins,ptmin,ptmax,200,-1,1);
4345 fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4346 fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("E (GeV)");
4347 outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4348
4349 fhCosThStarAfterCutsNLocMax2[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4350 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4351 nptbins,ptmin,ptmax,200,-1,1);
4352 fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4353 fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("E (GeV)");
4354 outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4355
4356 fhCosThStarAfterCutsNLocMaxN[i][j] = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4357 Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4358 nptbins,ptmin,ptmax,200,-1,1);
4359 fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4360 fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("E (GeV)");
4361 outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4362
4363 }
4364
4365 fhCosThStarPi0NLocMax1[i][j] = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4366 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4367 nptbins,ptmin,ptmax,200,-1,1);
4368 fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4369 fhCosThStarPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
4370 outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4371
4372 fhCosThStarPi0NLocMax2[i][j] = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4373 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4374 nptbins,ptmin,ptmax,200,-1,1);
4375 fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4376 fhCosThStarPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
4377 outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4378
4379 fhCosThStarPi0NLocMaxN[i][j] = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4380 Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4381 nptbins,ptmin,ptmax,200,-1,1);
4382 fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4383 fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
4384 outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4385
4386 }
4387 }
4388 }
4389
992b14a7 4390
8edbd100 4391 for(Int_t j = 0; j < nMatched; j++)
17f5b4b6 4392 {
4393 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4394 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
4395 100,-1,1,120,0,1.2);
4396 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4397 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4398 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
4399
4400 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4401 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
4402 100,-1,1,120,0,1.2);
4403 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4404 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4405 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
4406
4407 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4408 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
4409 100,-1,1,120,0,1.2);
4410 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
4411 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4412 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
e671adc2 4413 }
9554fc65 4414
1253480f 4415
9554fc65 4416 fhClusterEtaPhiNLocMax1 = new TH2F
4417 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4418 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4419 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
4420 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
1253480f 4421
9554fc65 4422 fhClusterEtaPhiNLocMax2 = new TH2F
4423 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4424 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4425 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
4426 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
4427
4428 fhClusterEtaPhiNLocMaxN = new TH2F
4429 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4430 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4431 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
4432 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
4433
4434 fhPi0EtaPhiNLocMax1 = new TH2F
4435 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4436 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
4437 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
4438 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
4439
4440 fhPi0EtaPhiNLocMax2 = new TH2F
4441 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4442 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
4443 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
4444 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
4445
4446 fhPi0EtaPhiNLocMaxN = new TH2F
4447 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4448 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4449 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
4450 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
1253480f 4451
4452 if(fFillIdEtaHisto)
4453 {
4454 fhEtaEtaPhiNLocMax1 = new TH2F
4455 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4456 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4457 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
4458 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
4459
4460 fhEtaEtaPhiNLocMax2 = new TH2F
4461 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4462 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
4463 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
4464 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
4465
4466 fhEtaEtaPhiNLocMaxN = new TH2F
4467 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4468 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
4469 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
4470 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
4471 }
e671adc2 4472
dbe09c26 4473 if(fFillSSWeightHisto)
4474 {
dbe09c26 4475 for(Int_t nlm = 0; nlm < 3; nlm++)
4476 {
4477 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
4478 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
4479 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
4480 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
4481 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
4482 outputContainer->Add(fhPi0CellE[nlm]) ;
4483
4484 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
4485 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
4486 nptbins,ptmin,ptmax, 100,0,1);
4487 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
4488 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
4489 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
4490
4491 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
1253480f 4492 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
4493 nptbins,ptmin,ptmax, 100,-10,0);
dbe09c26 4494 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
4495 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
4496 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
1253480f 4497
dbe09c26 4498
19391b8c 4499 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
1253480f 4500 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
4501 nptbins,ptmin,ptmax, 100,0,1);
19391b8c 4502 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
4503 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4504 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
4505
4506 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
1253480f 4507 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
4508 nptbins,ptmin,ptmax, 100,0,1);
19391b8c 4509 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
4510 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
4511 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
1253480f 4512
19391b8c 4513 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
1253480f 4514 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
4515 nptbins,ptmin,ptmax, 100,0,1);
19391b8c 4516 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
4517 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
4518 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
4519
4520 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
1253480f 4521 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
4522 nptbins,ptmin,ptmax, 100,0,1);
8edbd100 4523 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
19391b8c 4524 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
4525 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
4526
4527 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
1253480f 4528 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
4529 nptbins,ptmin,ptmax, 200,0,2);
19391b8c 4530 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
4531 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
4532 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
1253480f 4533
19391b8c 4534
dbe09c26 4535 for(Int_t i = 0; i < fSSWeightN; i++)
4536 {
4537 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
1253480f 4538 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
dbe09c26 4539 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4540 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4541 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
4542 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
4543 }
19391b8c 4544
4545 for(Int_t i = 0; i < fSSECellCutN; i++)
4546 {
4547 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
1253480f 4548 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
4549 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
19391b8c 4550 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
4551 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
4552 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
4553 }
1253480f 4554
dbe09c26 4555 }
4556 }
4557
a1fd1b69 4558 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
1253480f 4559
a1fd1b69 4560 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4561 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4562 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4563 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
1253480f 4564
a1fd1b69 4565 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4566 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4567 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4568 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
1253480f 4569
a1fd1b69 4570 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4571 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4572 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4573 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
a1fd1b69 4574
1253480f 4575 if(fFillIdEtaHisto)
4576 {
4577 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4578 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
4579 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
4580 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
4581
4582 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4583 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
4584 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
4585 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
4586
4587 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
4588 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
4589 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
4590 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
4591 }
a1fd1b69 4592
4914e781 4593 if(fFillNCellHisto && IsDataMC())
4594 {
1253480f 4595
4914e781 4596 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4597 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4598 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
4599 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
4600
4601 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4602 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
4603 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
4604 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
1253480f 4605
4914e781 4606 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4607 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4608 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
4609 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
4610
4611 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4612 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
4613 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
4614 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
1253480f 4615
4914e781 4616 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4617 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4618 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
4619 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
4620
4621 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4622 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
4623 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
4624 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
4625
4626 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4627 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4628 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
4629 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
4630
4631 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4632 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
4633 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
4634 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
1253480f 4635
4914e781 4636 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4637 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4638 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
4639 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
4640
4641 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
4642 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
4643 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
4644 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
4645
4646 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4647 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4648 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
4649 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
4650
4651 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
4652 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
4653 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
4654 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
4655
4656 }
b2e375c7 4657
4658 if(IsDataMC() && fFillMCOverlapHisto)
4659 {
4660 for(Int_t i = 1; i < n; i++)
4661 {
4662 for(Int_t j = 0; j < 3; j++)
4663 {
4664 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4665 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4666 nptbins,ptmin,ptmax,10,0,10);
4667 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
4668 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
4669 outputContainer->Add(fhMCENOverlaps[j][i]) ;
4670
4671 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4672 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4673 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4674 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
4675 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
4676 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
4677
4678 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4679 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4680 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4681 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
4682 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
4683 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
4684
4685 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4686 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4687 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4688 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
4689 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
4690 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
4691
4692 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4693 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4694 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4695 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4696 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
4697 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
4698
4699 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4700 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4701 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4702 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4703 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
4704 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
4705
4706 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4707 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4708 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4709 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
4710 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
4711 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
4914e781 4712
4713 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4714 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4715 nptbins,ptmin,ptmax,100,0,1);
4716 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
4717 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
4718 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
4719
4720 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4721 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4722 nptbins,ptmin,ptmax,100,0,1);
4723 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
4724 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
4725 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
4726
4727 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4728 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4729 nptbins,ptmin,ptmax,100,0,1);
4730 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
4731 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
4732 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
74e3eb22 4733
4734
cb99fa55 4735 if(fFillNCellHisto)
4736 {
4737 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4738 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4739 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4740 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
4741 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
4742 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
4743
4744 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4745 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4746 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4747 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
4748 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
4749 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
4750
4751 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4752 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4753 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4754 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
4755 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
4756 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
4757 }
4914e781 4758
4759 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4760 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4761 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4762 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
4763 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
4764 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
4765
4766 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4767 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4768 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4769 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
4770 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
4771 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
4772
4773 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4774 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4775 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4776 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
4777 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
4778 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
1253480f 4779
4914e781 4780
cc909e6f 4781 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
4782 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4783 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4784 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4785 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4786 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
4787
4788 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4789 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4790 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4791 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4792 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4793 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
4794
4795 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
4796 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4797 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4798 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
4799 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
4800 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
4801
4802
83351853 4803 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
1253480f 4804 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4805 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4806 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4807 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
4808 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
4809
4810 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
1253480f 4811 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4812 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4813 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4814 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
4815 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
4816
4817 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
1253480f 4818 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
4819 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4820 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4821 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
4822 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
b2e375c7 4823
4824 if(i < 5)
4825 {
4826 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
be894c1d 4827 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 4828 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 4829 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
4830 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4831 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
4832
4833 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
be894c1d 4834 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 4835 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 4836 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
4837 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4838 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
4839
4840 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
be894c1d 4841 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 4842 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 4843 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
4844 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4845 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
4846 }
4847
4848 if(fFillTMHisto)
4849 {
4850 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4851 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
4852 nptbins,ptmin,ptmax,10,0,10);
4853 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
4854 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
4855 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
4856
4857 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4858 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4859 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4860 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4861 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
4862 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
4863
4864 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4865 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4866 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4867 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
4868 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
4869 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
4870
4871 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4872 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4873 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4874 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
4875 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4876 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
4877
4878 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4879 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4880 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4881 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4882 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4883 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
4884
4885 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4886 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4887 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4888 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4889 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4890 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
4891
4892 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4893 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4894 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4895 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4896 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4897 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
4898
4914e781 4899
4900 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
1253480f 4901 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4902 nptbins,ptmin,ptmax,100,0,1);
4914e781 4903 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
4904 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4905 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
4906
4907 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
1253480f 4908 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4909 nptbins,ptmin,ptmax,100,0,1);
4914e781 4910 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
4911 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4912 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
4913
4914 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
1253480f 4915 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4916 nptbins,ptmin,ptmax,100,0,1);
4914e781 4917 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
4918 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4919 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
74e3eb22 4920
4921
4922 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4923 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4924 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4925 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
4926 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4927 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
1253480f 4928
74e3eb22 4929 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4930 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4931 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4932 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
4933 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4934 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4914e781 4935
74e3eb22 4936 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4937 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4938 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4939 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4940 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4941 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4942
4914e781 4943 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4944 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4945 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4946 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4947 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4948 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4949
4950 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4951 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4952 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4953 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4954 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4955 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
4956
cc909e6f 4957 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4914e781 4958 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4959 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4960 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
4961 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
4962 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
1253480f 4963
4914e781 4964
83351853 4965 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
1253480f 4966 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4967 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4968 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4969 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4970 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
4971
4972 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
1253480f 4973 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4974 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4975 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4976 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4977 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
4978
4979 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
1253480f 4980 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4981 nptbins,ptmin,ptmax,120,0,1.2);
83351853 4982 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4983 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4984 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
1253480f 4985
83351853 4986
b2e375c7 4987 if(i < 5)
4988 {
4989 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
be894c1d 4990 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 4991 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 4992 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4993 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4994 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4995
4996 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
be894c1d 4997 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 4998 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 4999 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
5000 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5001 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5002
5003 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
be894c1d 5004 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
1253480f 5005 ssbins,ssmin,ssmax,mbins,mmin,mmax);
b2e375c7 5006 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
5007 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5008 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5009
5010 }
5011
5012 }
5013 }
5014 }
5015
5016 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5017 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5018 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
5019 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
5020 outputContainer->Add(fhMCPi0HighNLMPair) ;
5021
5022 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5023 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5024 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
5025 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
5026 outputContainer->Add(fhMCPi0LowNLMPair) ;
5027
5028 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5029 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5030 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
5031 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
5032 outputContainer->Add(fhMCPi0AnyNLMPair) ;
5033
5034 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5035 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5036 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
5037 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
5038 outputContainer->Add(fhMCPi0NoneNLMPair) ;
1253480f 5039
b2e375c7 5040
5041 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
1253480f 5042 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
b2e375c7 5043 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
5044 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5045 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5046
5047 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
1253480f 5048 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
b2e375c7 5049 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
5050 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5051 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5052
5053 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
1253480f 5054 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
b2e375c7 5055 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
5056 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5057 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5058
5059 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
1253480f 5060 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
b2e375c7 5061 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
5062 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
5063 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
1253480f 5064
b2e375c7 5065
36769d30 5066 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5067 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5068 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
5069 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
5070 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5071
5072 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5073 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5074 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
5075 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
5076 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5077
5078 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5079 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5080 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
5081 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
5082 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5083
5084 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5085 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5086 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
5087 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
5088 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5089
5090 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5091 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5092 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5093 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5094 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5095
5096 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5097 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5098 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5099 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5100 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5101
5102 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5103 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5104 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5105 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5106 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5107
5108 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5109 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5110 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
5111 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
5112 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
b583134f 5113
1253480f 5114
36769d30 5115 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
83351853 5116 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5117 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
5118 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
5119 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5120
36769d30 5121 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
1253480f 5122 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
83351853 5123 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
5124 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
5125 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
1253480f 5126
36769d30 5127 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
1253480f 5128 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
83351853 5129 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
5130 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
5131 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5132
36769d30 5133 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
1253480f 5134 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
83351853 5135 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
5136 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
5137 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
1253480f 5138
36769d30 5139 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5140 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5141 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
5142 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
5143 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5144
5145 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5146 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
83351853 5147 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
5148 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
5149 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5150
36769d30 5151
5152 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5153 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5154 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
5155 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
5156 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5157
5158 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5159 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5160 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
5161 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
5162 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5163
5164 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5165 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5166 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
5167 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
5168 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5169
5170 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5171 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5172 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
5173 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
5174 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5175
5176 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5177 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5178 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
5179 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
5180 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5181
5182 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5183 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5184 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
5185 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
5186 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5187
1253480f 5188
b583134f 5189 for(Int_t nlm = 0; nlm < 3; nlm++)
5190 {
5191 fhMCPi0DecayPhotonHitHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5192 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
29555e96 5193 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5194 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5195 fhMCPi0DecayPhotonHitHighLMMass[nlm] ->SetXTitle("E (GeV)");
5196 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5197
5198 fhMCPi0DecayPhotonAdjHighLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5199 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
29555e96 5200 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5201 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5202 fhMCPi0DecayPhotonAdjHighLMMass[nlm] ->SetXTitle("E (GeV)");
5203 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5204
5205 fhMCPi0DecayPhotonHitOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5206 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
29555e96 5207 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5208 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5209 fhMCPi0DecayPhotonHitOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5210 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5211
5212 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5213 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
29555e96 5214 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5215 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5216 fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ->SetXTitle("E (GeV)");
5217 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5218
5219 fhMCPi0DecayPhotonAdjacentMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5220 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
29555e96 5221 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5222 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5223 fhMCPi0DecayPhotonAdjacentMass[nlm] ->SetXTitle("E (GeV)");
5224 outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5225
5226 fhMCPi0DecayPhotonHitNoLMMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5227 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
29555e96 5228 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5229 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5230 fhMCPi0DecayPhotonHitNoLMMass[nlm] ->SetXTitle("E (GeV)");
5231 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5232
5233
5234 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5235 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
29555e96 5236 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5237 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5238 fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5239 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5240
5241 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5242 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()),
29555e96 5243 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5244 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5245 fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5246 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5247
5248 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5249 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
29555e96 5250 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5251 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5252 fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5253 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5254
5255 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5256 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()),
29555e96 5257 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5258 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5259 fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5260 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5261
5262 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5263 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
29555e96 5264 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5265 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5266 fhMCPi0DecayPhotonAdjacentOverlapMass[nlm] ->SetXTitle("E (GeV)");
5267 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5268
5269 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5270 Form("Mass vs E for merged pi0 cluster, NLM=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
29555e96 5271 nptbins,ptmin,ptmax,mbins,mmin,mmax);
b583134f 5272 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetYTitle("Mass (MeV/c^{2})");
5273 fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm] ->SetXTitle("E (GeV)");
5274 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
29555e96 5275
b583134f 5276 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
29555e96 5277 Form("(E_{reco}-E_{gen})/E_{gen} vs E pi0 for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
cb99fa55 5278 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5279 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5280 fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5281 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5282
5283 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
29555e96 5284 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5285 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5286 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5287 fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ->SetXTitle("E pi0 (GeV)");
b583134f 5288 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5289
5290 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
29555e96 5291 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5292 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5293 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5294 fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
b583134f 5295 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5296
5297 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
29555e96 5298 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5299 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5300 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5301 fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5302 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5303
5304 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
29555e96 5305 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5306 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5307 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5308 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5309 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5310
5311 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
29555e96 5312 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5313 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5314 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5315 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5316 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5317
5318 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
29555e96 5319 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5320 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5321 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5322 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5323 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5324
5325 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
29555e96 5326 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5327 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
cb99fa55 5328 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5329 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5330 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5331
5332 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
29555e96 5333 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
cb99fa55 5334 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5335 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5336 fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5337 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5338
5339 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
29555e96 5340 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
cb99fa55 5341 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5342 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5343 fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5344 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5345
5346 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
29555e96 5347 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
cb99fa55 5348 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5349 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5350 fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5351 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5352
5353 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
29555e96 5354 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
cb99fa55 5355 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5356 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5357 fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5358 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5359
5360 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
29555e96 5361 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
cb99fa55 5362 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5363 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5364 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5365 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5366
5367 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
29555e96 5368 Form("E_{reco}-E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
cb99fa55 5369 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5370 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5371 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5372 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5373
5374 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
29555e96 5375 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
cb99fa55 5376 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5377 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5378 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5379 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5380
5381 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
29555e96 5382 Form("(E_{reco}-E_{gen})/E_{gen} vs E_{pi0 reco} for merged pi0 cluster, NLM=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
cb99fa55 5383 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5384 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
29555e96 5385 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] ->SetXTitle("E_{pi0 reco} (GeV)");
b583134f 5386 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
29555e96 5387
5388
5389 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5390 Form("(E_{reco}-E_{gen})/E_{gen} vs E for merged pi0 cluster, NLM=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5391 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5392 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5393 fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5394 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5395
5396 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5397 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()),
5398 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5399 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5400 fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ->SetXTitle("E (GeV)");
5401 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5402
5403 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5404 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()),
5405 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5406 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5407 fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5408 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5409
5410 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5411 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()),
5412 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5413 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5414 fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5415 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5416
5417 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5418 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()),
5419 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5420 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5421 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5422 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
5423
5424 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5425 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()),
5426 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5427 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5428 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5429 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
5430
5431 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5432 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()),
5433 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5434 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5435 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5436 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5437
5438 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5439 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()),
5440 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5441 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5442 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] ->SetXTitle("E_{reco} (GeV)");
5443 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
5444
5445 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5446 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()),
5447 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5448 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5449 fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5450 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
5451
5452 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5453 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()),
5454 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5455 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5456 fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5457 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
5458
5459 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5460 Form("E_{reco}-E_{gen} vs E_{reco} for merged pi0 cluster, NLM=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5461 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5462 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5463 fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5464 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
5465
5466 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
5467 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()),
5468 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5469 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5470 fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5471 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
5472
5473 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5474 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()),
5475 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5476 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5477 fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5478 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
5479
5480 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5481 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()),
5482 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5483 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5484 fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5485 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
5486
5487 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5488 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()),
5489 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5490 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5491 fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5492 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5493
5494 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
5495 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()),
5496 nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5497 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetYTitle("(E_{reco}-E_{gen})/E_{gen}");
5498 fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] ->SetXTitle("E_{reco} (GeV)");
5499 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
5500
b583134f 5501 }
5502
b2e375c7 5503 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
5504 nptbins,ptmin,ptmax,5,0,5);
5505 //fhMCEOverlapType ->SetYTitle("Overlap Type");
5506 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
5507 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5508 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5509 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5510 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
36769d30 5511 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
b2e375c7 5512 outputContainer->Add(fhMCEOverlapType) ;
1253480f 5513
b2e375c7 5514 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
1253480f 5515 nptbins,ptmin,ptmax,5,0,5);
b2e375c7 5516 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
5517 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
5518 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
5519 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
5520 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
5521 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
5522 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
5523 outputContainer->Add(fhMCEOverlapTypeMatch) ;
1253480f 5524
b2e375c7 5525 }// MC analysis, check overlaps
5526
ce49dd72 5527
b583134f 5528 if(IsDataMC())
5529 {
5530 for(Int_t inlm = 0; inlm < 3; inlm++)
5531 {
5532 fhAsyMCGenRecoDiffMCPi0[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
5533 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0",inlm),
5534 nptbins,ptmin,ptmax,200,-1,1);
5535 fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("A_{reco} - A_{gen}");
5536 fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("E (GeV)");
5537 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
5538
5539 fhAsyMCGenRecoDiffMCPi0Conv[inlm] = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
5540 Form("Reconstructed - Generated asymmetry with NLM=%d vs E, MC Pi0Conv",inlm),
5541 nptbins,ptmin,ptmax,200,-1,1);
5542 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("A_{reco} - A_{gen}");
5543 fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("E (GeV)");
5544 outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
5545 }
5546 }
5547
cb99fa55 5548 if(fFillArmenterosHisto)
5549 {
be894c1d 5550 Int_t narmbins = 400;
5551 Float_t armmin = 0;
5552 Float_t armmax = 0.4;
5553
ed10b649 5554 for(Int_t i = 0; i < 7; i++) // MC bin
cb99fa55 5555 {
5556 for(Int_t j = 0; j < 4; j++) // E bin
5557 {
5558 fhArmNLocMax1[i][j] = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
be894c1d 5559 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5560 200, -1, 1, narmbins,armmin,armmax);
5561 fhArmNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5562 fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5563 outputContainer->Add(fhArmNLocMax1[i][j]) ;
5564
5565 fhArmNLocMax2[i][j] = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
be894c1d 5566 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5567 200, -1, 1, narmbins,armmin,armmax);
5568 fhArmNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5569 fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5570 outputContainer->Add(fhArmNLocMax2[i][j]) ;
5571
5572 fhArmNLocMaxN[i][j] = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
be894c1d 5573 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5574 200, -1, 1, narmbins,armmin,armmax);
5575 fhArmNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5576 fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5577 outputContainer->Add(fhArmNLocMaxN[i][j]) ;
5578
5579 if(asyOn || m02On)
5580 {
5581 fhArmAfterCutsNLocMax1[i][j] = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
be894c1d 5582 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5583 200, -1, 1, narmbins,armmin,armmax);
5584 fhArmAfterCutsNLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5585 fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5586 outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
5587
5588 fhArmAfterCutsNLocMax2[i][j] = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
be894c1d 5589 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5590 200, -1, 1, narmbins,armmin,armmax);
5591 fhArmAfterCutsNLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5592 fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5593 outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
5594
5595 fhArmAfterCutsNLocMaxN[i][j] = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
be894c1d 5596 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5597 200, -1, 1, narmbins,armmin,armmax);
5598 fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5599 fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5600 outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
5601 }
5602
5603 fhArmPi0NLocMax1[i][j] = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
be894c1d 5604 Form("Armenteros of splitted cluster with NLM=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5605 200, -1, 1, narmbins,armmin,armmax);
5606 fhArmPi0NLocMax1[i][j]->SetYTitle("p_{T}^{Arm}");
5607 fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5608 outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
5609
5610 fhArmPi0NLocMax2[i][j] = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
be894c1d 5611 Form("Armenteros of splitted cluster with NLM=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5612 200, -1, 1, narmbins,armmin,armmax);
5613 fhArmPi0NLocMax2[i][j]->SetYTitle("p_{T}^{Arm}");
5614 fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5615 outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
5616
5617 fhArmPi0NLocMaxN[i][j] = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
be894c1d 5618 Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
5619 200, -1, 1, narmbins,armmin,armmax);
5620 fhArmPi0NLocMaxN[i][j]->SetYTitle("p_{T}^{Arm}");
5621 fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
cb99fa55 5622 outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
5623
5624 }
5625 }
5626 }
5627
992b14a7 5628 return outputContainer ;
5629
5630}
5631
b2e375c7 5632//_____________________________________________________________________________
4914e781 5633void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
5634 Int_t & mcindex, Int_t & tag)
b2e375c7 5635{
5636
5637 // Assign mc index depending on MC bit set, to be used in histograms arrays
1253480f 5638
4914e781 5639 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
b2e375c7 5640
5641 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
5642 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
5643 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
5644 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
5645 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5646 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
5647 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
5648 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
cb99fa55 5649 else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mcindex = kmcHadron;
5650
5651 //printf("MC index %d\n",mcindex);
b2e375c7 5652
5653}
5654
1253480f 5655//______________________________________________________________________________________________________________
4914e781 5656void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
5657 const Int_t mctag, const Bool_t matched,
0186b6a2 5658 Float_t & eprim, Float_t & asymGen, Float_t & angleGen, Int_t & noverlaps )
b2e375c7 5659{
5660 // Check origin of the candidates, get primary kinematics if overlapped meson decay
5661
b2e375c7 5662 Bool_t ok = kFALSE;
5663 Int_t mcLabel = cluster->GetLabel();
5664
5665 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
5666 eprim = primary.E();
5667
36769d30 5668 Int_t mesonLabel = -1;
5669
b2e375c7 5670 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
5671 {
5672 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
5673 {
0186b6a2 5674 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
5675 asymGen = TMath::Abs(asymGen);
36769d30 5676 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
b2e375c7 5677 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5678 }
5679 else
5680 {
0186b6a2 5681 GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
5682 asymGen = TMath::Abs(asymGen);
36769d30 5683 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
b2e375c7 5684 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
5685 }
5686 }
5687
5688 if(!fFillMCOverlapHisto) return;
36769d30 5689
4914e781 5690 const UInt_t nlabels = cluster->GetNLabels();
5691 Int_t overpdg[nlabels];
5692 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
5693
5694 for(Int_t iover = 0; iover < noverlaps; iover++)
5695 {
36769d30 5696 Float_t histobin = -1;
4914e781 5697 Int_t mpdg = overpdg[iover];
5698
36769d30 5699 if (mpdg==22) histobin = 0.5;
5700 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
5701 else if(mpdg==-999999) histobin = 4.5;
5702 else
5703 {
5704 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
5705 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
5706 else histobin = 3.5;
5707 //printf("charge %f\n",charge);
5708 }
5709
5710 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
5711 if(histobin > 0)
5712 {
5713 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
5714 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
5715 }
b2e375c7 5716 }
b2e375c7 5717}
5718
992b14a7 5719//___________________________________________
5720void AliAnaInsideClusterInvariantMass::Init()
b2e375c7 5721{
992b14a7 5722 //Init
5723 //Do some checks
3c1d9afb 5724 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
5725 {
992b14a7 5726 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
5727 abort();
5728 }
3c1d9afb 5729 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
5730 {
992b14a7 5731 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
5732 abort();
5733 }
5734
3c1d9afb 5735 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
5736 {
992b14a7 5737 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
5738 abort();
5739
5740 }
5741
5742}
5743
5744//_____________________________________________________
5745void AliAnaInsideClusterInvariantMass::InitParameters()
5746{
5747 //Initialize the parameters of the analysis.
5748 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
5749
5750 fCalorimeter = "EMCAL" ;
29ca9cad 5751
992b14a7 5752 fMinNCells = 4 ;
2cb134fb 5753 fMinBadDist = 2 ;
dbe09c26 5754
b2e375c7 5755 fHistoECut = 8 ;
5756
dbe09c26 5757 fSSWeightN = 5;
5758 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
5759 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
19391b8c 5760
5761 fSSECellCutN = 10;
5762 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
5763 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
5764
992b14a7 5765}
5766
5767
5768//__________________________________________________________________
5769void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
5770{
5771 //Search for pi0 in fCalorimeter with shower shape analysis
5772
5773 TObjArray * pl = 0x0;
5774 AliVCaloCells* cells = 0x0;
5775
5776 //Select the Calorimeter of the photon
2cb134fb 5777 if(fCalorimeter == "PHOS")
5778 {
992b14a7 5779 pl = GetPHOSClusters();
5780 cells = GetPHOSCells();
5781 }
2cb134fb 5782 else if (fCalorimeter == "EMCAL")
5783 {
992b14a7 5784 pl = GetEMCALClusters();
5785 cells = GetEMCALCells();
5786 }
5787
3c1d9afb 5788 if(!pl || !cells)
5789 {
992b14a7 5790 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
5791 return;
5792 }
5793
5794 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
5795
2cb134fb 5796 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
5797 {
992b14a7 5798 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
5799
b2e375c7 5800 //-------------------------------------------
5801 // Get cluster parameters, do some rejection
5802 //-------------------------------------------
8edbd100 5803
992b14a7 5804 Float_t en = cluster->E();
5805 Float_t l0 = cluster->GetM02();
5806 Int_t nc = cluster->GetNCells();
2cb134fb 5807 Float_t bd = cluster->GetDistanceToBadChannel() ;
d2655d46 5808
2cb134fb 5809 //If too small or big E or low number of cells, or close to a bad channel skip it
b2e375c7 5810
8edbd100 5811 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
2cb134fb 5812
83351853 5813 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
5814
b2e375c7 5815 // Track-cluster matching
5816
5817 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
5818 if(!fFillTMHisto && matched) continue ;
5819
5820 // Get cluster angles
5821
9554fc65 5822 TLorentzVector lv;
5823 cluster->GetMomentum(lv, GetVertex(0));
5824 Float_t eta = lv.Eta();
5825 Float_t phi = lv.Phi();
5826 if(phi<0) phi=+TMath::TwoPi();
5827
2cb134fb 5828 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
5829 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
5830
b2e375c7 5831 // Get PID, N local maximum, *** split cluster ***
d2655d46 5832
3c1d9afb 5833 Int_t nMax = 0;
bfdcf7fb 5834 Double_t mass = 0., angle = 0.;
cb99fa55 5835 TLorentzVector lv1, lv2;
4914e781 5836 Int_t absId1 =-1; Int_t absId2 =-1;
5837 Float_t distbad1 =-1; Float_t distbad2 =-1;
5838 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
b2e375c7 5839
3c1d9afb 5840 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
19391b8c 5841 GetVertex(0), nMax, mass, angle,
cb99fa55 5842 lv1,lv2,absId1,absId2,
4914e781 5843 distbad1,distbad2,fidcut1,fidcut2);
5c46c992 5844 if (nMax <= 0)
5845 {
de454976 5846 if(GetDebug() > 0 )
5847 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5c46c992 5848
4914e781 5849 continue;
992b14a7 5850 }
5851
ce49dd72 5852 // Set some index for array histograms
5853
5854 Int_t inlm = -1;
5855 if (nMax == 1) inlm = 0;
5856 else if(nMax == 2) inlm = 1;
5857 else if(nMax > 2) inlm = 2;
5858 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
5859
4914e781 5860 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
1253480f 5861 if( (fCheckSplitDistToBad) &&
5862 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
4914e781 5863 {
5864 if(GetDebug() > 1)
5865 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
5866 distbad1,distbad2, fidcut1,fidcut2);
ce49dd72 5867
5868 if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
5869 {
5870 fhMassBadDistClose[inlm]->Fill(en,mass);
5871 fhM02BadDistClose [inlm]->Fill(en,l0 );
5872 }
5873
5874 if(!fidcut1 || !fidcut2)
5875 {
5876 fhMassOnBorder[inlm]->Fill(en,mass);
5877 fhM02OnBorder [inlm]->Fill(en,l0 );
5878 }
5879
4914e781 5880 continue ;
5881 }
5882
b2e375c7 5883 // Get sub-cluster parameters
5884
cb99fa55 5885 Float_t e1 = lv1.Energy();
5886 Float_t e2 = lv2.Energy();
cfdf2b91 5887
a1fd1b69 5888 Double_t tof1 = cells->GetCellTime(absId1);
5889 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5890 tof1*=1.e9;
5891
5892 Double_t tof2 = cells->GetCellTime(absId2);
5893 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
5894 tof2*=1.e9;
5895
5896 Double_t t12diff = tof1-tof2;
5897
fc01318e 5898 Float_t splitFrac = (e1+e2)/en;
cfdf2b91 5899
e671adc2 5900 Float_t asym = -10;
5901 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
29ca9cad 5902
b2e375c7 5903 //
5904
5905 Int_t ebin = -1;
5906 if(en > 8 && en <= 12) ebin = 0;
5907 if(en > 12 && en <= 16) ebin = 1;
5908 if(en > 16 && en <= 20) ebin = 2;
5909 if(en > 20) ebin = 3;
5910
1253480f 5911 // MC data histograms and some related calculations
5912 // mc tag, n overlaps, asym of generated mesons
b2e375c7 5913
0186b6a2 5914 Int_t mcindex = -1;
5915 Int_t mctag = -1;
5916 Float_t eprim = -1;
5917 Float_t asymGen = -2;
5918 Float_t angleGen = 2000;
5919 Int_t noverlaps = 0;
b2e375c7 5920
b2e375c7 5921 if(IsDataMC())
1253480f 5922 {
5923 // MC indexes
b2e375c7 5924
1253480f 5925 GetMCIndex(cluster,mcindex,mctag);
5926
5927 // MC primary kine, generation fractions
b2e375c7 5928
0186b6a2 5929 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
1253480f 5930
5931 // For cluster with MC pi0 and more than 1 maxima
b2e375c7 5932
cb99fa55 5933 }
5c46c992 5934
b2e375c7 5935 //
2a77f6f4 5936
1253480f 5937 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
4914e781 5938
5939 //
5940
1253480f 5941 if(fFillNCellHisto)
5942 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
d2655d46 5943
b2e375c7 5944 //
bb2d339b 5945
1253480f 5946 if(fFillSSExtraHisto)
cb99fa55 5947 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
d2655d46 5948
b2e375c7 5949 //
1253480f 5950
cb99fa55 5951 if(!matched && ebin >= 0 && fFillEbinHisto)
1253480f 5952 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
fc01318e 5953
b2e375c7 5954 //
5955
1253480f 5956 if(fFillAngleHisto)
29555e96 5957 FillAngleHistograms(nMax,matched,mcindex,en,angle,mass,angleGen,l0, asym,pidTag);
1253480f 5958
cb99fa55 5959 if(fFillArmenterosHisto && ebin >= 0)
29555e96 5960 FillArmenterosHistograms(nMax, ebin, mcindex, en, lv1, lv2, l0, pidTag);
5961
5962 if(fFillThetaStarHisto)
5963 FillThetaStarHistograms(nMax,matched,mcindex, en, lv1, lv2, l0, pidTag);
5964
cb99fa55 5965
26680f06 5966 //---------------------------------------------------------------------
1253480f 5967 // From here start applying some cuts
26680f06 5968 //---------------------------------------------------------------------
cb99fa55 5969
5970 // If set, check just on MC clusters when SS cut is applied
5971 if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
5972 {
5973 // For cluster with MC pi0 and more than 1 maxima
5974
5975 if(fFillMCOverlapHisto)
5976 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
5977 //l0, l1, l2);
5978
5979 //
5980
5981 if(fFillMCHisto)
5982 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
5983 nMax,matched,splitFrac, asym, eprim,asymGen);
5984
5985 //
5986
5987 if(fFillMCOverlapHisto)
5988 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
5989
5990 }
5991
5992 // Fill few histograms, some still without cuts
1253480f 5993 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
26680f06 5994
1253480f 5995 if(pidTag==AliCaloPID::kPi0)
b2e375c7 5996 {
1253480f 5997 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
17f5b4b6 5998
1253480f 5999 if(fFillSSWeightHisto)
6000 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
cc909e6f 6001
6002 if(fFillTMHisto && fFillTMResidualHisto)
6003 FillTrackMatchingHistograms(cluster,nMax,mcindex);
6004
cb99fa55 6005 if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
cc909e6f 6006 {
6007 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6008 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6009 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6010 }
167f2534 6011 }
1253480f 6012 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
5c46c992 6013 {
1253480f 6014 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
243c2909 6015 }
1253480f 6016 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
5c46c992 6017 {
1253480f 6018 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
243c2909 6019 }
6020
992b14a7 6021 }//loop
6022
6023 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
e23a0471 6024
992b14a7 6025}
6026
6027//______________________________________________________________________
6028void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6029{
6030 //Print some relevant parameters set for the analysis
6031 if(! opt)
6032 return;
6033
6034 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 6035 AliAnaCaloTrackCorrBaseClass::Print("");
243c2909 6036 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
19391b8c 6037 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
6038 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
cfc19369 6039 printf("Min. N Cells =%d \n", fMinNCells) ;
6040 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
19391b8c 6041 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6042
992b14a7 6043 printf(" \n") ;
6044
6045}
6046
19391b8c 6047//___________________________________________________________________________________________________________________
6048void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6049 AliVCaloCells* cells,
6050 AliVCluster * cluster,
6051 Float_t & l0, Float_t & l1,
6052 Float_t & disp, Float_t & dEta, Float_t & dPhi,
6053 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6054 Float_t eCellMin)
6055{
6056 // Calculates new center of gravity in the local EMCAL-module coordinates
6057 // and tranfers into global ALICE coordinates
6058 // Calculates Dispersion and main axis
6059
6060 if(!cluster)
6061 {
6062 AliInfo("Cluster pointer null!");
6063 return;
6064 }
6065
6066 Double_t eCell = 0.;
6067 Float_t fraction = 1.;
6068 Float_t recalFactor = 1.;
6069
6070 Int_t iSupMod = -1;
6071 Int_t iTower = -1;
6072 Int_t iIphi = -1;
6073 Int_t iIeta = -1;
6074 Int_t iphi = -1;
6075 Int_t ieta = -1;
6076 Double_t etai = -1.;
6077 Double_t phii = -1.;
6078
6079 Int_t nstat = 0 ;
6080 Float_t wtot = 0.;
6081 Double_t w = 0.;
6082 Double_t etaMean = 0.;
6083 Double_t phiMean = 0.;
3ae72bd8 6084
19391b8c 6085 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
3ae72bd8 6086 // and to check if the cluster is between 2 SM in eta
6087 Int_t iSM0 = -1;
6088 Bool_t shared = kFALSE;
6089 Float_t energy = 0;
6090
6091 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
19391b8c 6092 {
3ae72bd8 6093 //Get from the absid the supermodule, tower and eta/phi numbers
6094 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6095 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6096
6097 //Check if there are cells of different SM
6098 if (iDigit == 0 ) iSM0 = iSupMod;
6099 else if(iSupMod!= iSM0) shared = kTRUE;
6100
6101 //Get the cell energy, if recalibration is on, apply factors
6102 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6103 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6104
6105 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
19391b8c 6106 {
3ae72bd8 6107 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6108 }
6109
6110 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6111
9ae170de 6112 if(eCell > eCellMin) energy += eCell;
3ae72bd8 6113
6114 }//cell loop
19391b8c 6115
6116 //Loop on cells, get weighted parameters
6117 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6118 {
6119 //Get from the absid the supermodule, tower and eta/phi numbers
6120 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6121 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6122
6123 //Get the cell energy, if recalibration is on, apply factors
6124 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6125 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6126
3ae72bd8 6127 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6128 {
6129 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6130 }
19391b8c 6131
6132 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6133
3ae72bd8 6134 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6135 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6136 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6137
9ae170de 6138 if(energy > 0 && eCell > eCellMin)
19391b8c 6139 {
6140 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
8edbd100 6141
6142 //correct weight, ONLY in simulation
9ae170de 6143 w *= (1 - fWSimu * w );
aa12888f 6144
19391b8c 6145 etai=(Double_t)ieta;
6146 phii=(Double_t)iphi;
6147
6148 if(w > 0.0)
6149 {
6150 wtot += w ;
6151 nstat++;
6152 //Shower shape
6153 sEta += w * etai * etai ;
6154 etaMean += w * etai ;
6155 sPhi += w * phii * phii ;
6156 phiMean += w * phii ;
6157 sEtaPhi += w * etai * phii ;
6158 }
6159 }
9ae170de 6160 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
19391b8c 6161
6162 }//cell loop
6163
6164 //Normalize to the weight
6165 if (wtot > 0)
6166 {
6167 etaMean /= wtot ;
6168 phiMean /= wtot ;
6169 }
6170 else
6171 AliError(Form("Wrong weight %f\n", wtot));
6172
6173 //Calculate dispersion
6174 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6175 {
6176 //Get from the absid the supermodule, tower and eta/phi numbers
6177 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6178 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6179
6180 //Get the cell energy, if recalibration is on, apply factors
6181 fraction = cluster->GetCellAmplitudeFraction(iDigit);
6182 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6183 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6184 {
6185 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6186 }
3ae72bd8 6187
19391b8c 6188 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6189
3ae72bd8 6190 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6191 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6192 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6193
9ae170de 6194 if(energy > 0 && eCell > eCellMin)
19391b8c 6195 {
6196 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6197
8edbd100 6198 //correct weight, ONLY in simulation
9ae170de 6199 w *= (1 - fWSimu * w );
8edbd100 6200
19391b8c 6201 etai=(Double_t)ieta;
6202 phii=(Double_t)iphi;
6203 if(w > 0.0)
6204 {
6205 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6206 dEta += w * (etai-etaMean)*(etai-etaMean) ;
6207 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
6208 }
6209 }
9ae170de 6210 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
19391b8c 6211 }// cell loop
6212
6213 //Normalize to the weigth and set shower shape parameters
6214 if (wtot > 0 && nstat > 1)
6215 {
6216 disp /= wtot ;
6217 dEta /= wtot ;
6218 dPhi /= wtot ;
6219 sEta /= wtot ;
6220 sPhi /= wtot ;
6221 sEtaPhi /= wtot ;
6222
6223 sEta -= etaMean * etaMean ;
6224 sPhi -= phiMean * phiMean ;
6225 sEtaPhi -= etaMean * phiMean ;
6226
6227 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6228 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6229 }
6230 else
6231 {
6232 l0 = 0. ;
6233 l1 = 0. ;
6234 dEta = 0. ; dPhi = 0. ; disp = 0. ;
6235 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;
6236 }
6237
6238}
6239
992b14a7 6240