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