1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //_________________________________________________________________________
18 // Split clusters with some criteria and calculate invariant mass
19 // to identify them as pi0 or conversion
22 //-- Author: Gustavo Conesa (LPSC-Grenoble)
23 //_________________________________________________________________________
25 //////////////////////////////////////////////////////////////////////////////
28 // --- ROOT system ---
30 #include <TClonesArray.h>
31 #include <TObjString.h>
33 #include <TDatabasePDG.h>
35 // --- Analysis system ---
36 #include "AliAnaInsideClusterInvariantMass.h"
37 #include "AliCaloTrackReader.h"
38 #include "AliMCAnalysisUtils.h"
40 #include "AliFiducialCut.h"
41 #include "TParticle.h"
42 #include "AliVCluster.h"
43 #include "AliAODEvent.h"
44 #include "AliAODMCParticle.h"
45 #include "AliEMCALGeoParams.h"
48 //#include "AliPHOSGeoUtils.h"
49 #include "AliEMCALGeometry.h"
51 ClassImp(AliAnaInsideClusterInvariantMass)
53 //__________________________________________________________________
54 AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
55 AliAnaCaloTrackCorrBaseClass(),
57 fMinNCells(0), fMinBadDist(0),
58 fHistoECut(0), fCheckSplitDistToBad(0),
59 fFillAngleHisto(kFALSE),
61 fFillTMResidualHisto(kFALSE),
62 fFillSSExtraHisto(kFALSE),
64 fFillSSWeightHisto(kFALSE),
66 fFillMCOverlapHisto(0),
70 fFillHighMultHisto(0),
71 fSSWeightN(0), fSSECellCutN(0),
73 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
74 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
75 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
76 fhMCGenFracAfterCutsNLocMax1MCPi0(0),
77 fhMCGenFracAfterCutsNLocMax2MCPi0(0),
78 fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
79 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),
80 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),
81 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
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),
88 fhCentralityPi0NLocMax1(0), fhCentralityEtaNLocMax1(0),
89 fhCentralityPi0NLocMax2(0), fhCentralityEtaNLocMax2(0),
90 fhCentralityPi0NLocMaxN(0), fhCentralityEtaNLocMaxN(0),
91 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
92 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
93 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
94 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
95 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
96 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0),
97 fhPi0EPairDiffTimeNLM1(0), fhPi0EPairDiffTimeNLM2(0), fhPi0EPairDiffTimeNLMN(0),
98 fhEtaEPairDiffTimeNLM1(0), fhEtaEPairDiffTimeNLM2(0), fhEtaEPairDiffTimeNLMN(0),
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)
117 // Init array of histograms
118 for(Int_t i = 0; i < 8; i++)
120 for(Int_t j = 0; j < 2; j++)
122 fhMassNLocMax1[i][j] = 0;
123 fhMassNLocMax2[i][j] = 0;
124 fhMassNLocMaxN[i][j] = 0;
126 fhNLocMaxM02Cut[i][j] = 0;
127 fhSplitClusterENLocMax [i][j] = 0;
128 fhSplitClusterEPi0NLocMax[i][j] = 0;
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;
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;
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;
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;
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;
172 fhMassM02NLocMax1[i][j]= 0;
173 fhMassM02NLocMax2[i][j]= 0;
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;
185 fhSplitEFractionNLocMax1[i][j]=0;
186 fhSplitEFractionNLocMax2[i][j]=0;
187 fhSplitEFractionNLocMaxN[i][j]=0;
189 fhMCGenFracNLocMax1[i][j]= 0;
190 fhMCGenFracNLocMax2[i][j]= 0;
191 fhMCGenFracNLocMaxN[i][j]= 0;
193 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
194 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
195 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
197 fhMCGenSplitEFracNLocMax1[i][j]= 0;
198 fhMCGenSplitEFracNLocMax2[i][j]= 0;
199 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
201 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
202 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
203 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
205 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
206 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
207 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
209 fhMCGenEvsSplitENLocMax1[i][j]= 0;
210 fhMCGenEvsSplitENLocMax2[i][j]= 0;
211 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
213 fhAsymNLocMax1 [i][j] = 0;
214 fhAsymNLocMax2 [i][j] = 0;
215 fhAsymNLocMaxN [i][j] = 0;
217 fhMassAfterCutsNLocMax1[i][j] = 0;
218 fhMassAfterCutsNLocMax2[i][j] = 0;
219 fhMassAfterCutsNLocMaxN[i][j] = 0;
221 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
222 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
223 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
226 for(Int_t jj = 0; jj < 4; jj++)
228 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
229 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
230 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
232 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
233 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
234 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
236 fhMCGenFracNLocMaxEbin[i][jj] = 0;
237 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
239 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
240 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
241 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
244 fhTrackMatchedDEtaNLocMax1[i] = 0;
245 fhTrackMatchedDPhiNLocMax1[i] = 0;
246 fhTrackMatchedDEtaNLocMax2[i] = 0;
247 fhTrackMatchedDPhiNLocMax2[i] = 0;
248 fhTrackMatchedDEtaNLocMaxN[i] = 0;
249 fhTrackMatchedDPhiNLocMaxN[i] = 0;
251 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
252 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
253 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
254 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
255 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
256 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
258 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
259 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
260 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
261 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
262 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
263 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
265 for(Int_t nlm = 0; nlm < 3; nlm++)
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;
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;
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;
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;
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;
302 fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
303 fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
304 fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
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;
313 fhMCENOverlaps [nlm][i] = 0;
314 fhMCENOverlapsMatch [nlm][i] = 0;
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;
327 for(Int_t i = 0; i < 2; i++)
329 fhAnglePairNLocMax1 [i] = 0;
330 fhAnglePairNLocMax2 [i] = 0;
331 fhAnglePairNLocMaxN [i] = 0;
332 fhAnglePairMassNLocMax1[i] = 0;
333 fhAnglePairMassNLocMax2[i] = 0;
334 fhAnglePairMassNLocMaxN[i] = 0;
335 fhSplitEFractionvsAsyNLocMax1[i] = 0;
336 fhSplitEFractionvsAsyNLocMax2[i] = 0;
337 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
340 for(Int_t i = 0; i < 4; i++)
342 fhMassM02NLocMax1Ebin[i] = 0 ;
343 fhMassM02NLocMax2Ebin[i] = 0 ;
344 fhMassM02NLocMaxNEbin[i] = 0 ;
346 fhMassAsyNLocMax1Ebin[i] = 0 ;
347 fhMassAsyNLocMax2Ebin[i] = 0 ;
348 fhMassAsyNLocMaxNEbin[i] = 0 ;
350 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
351 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
352 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
354 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
355 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
356 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
358 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
359 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
360 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
362 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
363 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
364 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
366 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
367 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
368 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
371 for(Int_t nlm = 0; nlm < 3; nlm++)
373 fhPi0CellE [nlm] = 0 ;
374 fhPi0CellEFrac [nlm] = 0 ;
375 fhPi0CellLogEFrac[nlm] = 0 ;
377 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
378 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
379 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
381 fhPi0CellEMaxFrac [nlm] = 0 ;
382 fhPi0CellEMax2Frac[nlm] = 0 ;
384 for(Int_t i = 0; i < 10; i++)
386 fhM02WeightPi0 [nlm][i] = 0;
387 fhM02ECellCutPi0[nlm][i] = 0;
395 //_______________________________________________________________________________________________________
396 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,
397 const Int_t mcindex, const Int_t noverlaps)
398 //Float_t mass, Float_t m02,
399 //TLorentzVector l1, TLorentzVector l2)
401 // Check origin NLM tower of the cluster, when MC gives merged pi0
403 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
405 const UInt_t nc = cluster->GetNCells();
408 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
413 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
414 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
416 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
418 // 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",
419 // nMax, noverlaps,mass,m02,
420 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
421 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
423 // // Study the mothers of cluster
424 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
425 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
427 // Int_t mclabel = cluster->GetLabels()[ilab];
430 // Int_t mpdg = -999999;
431 // Int_t mstatus = -1;
432 // Int_t grandLabel = -1;
433 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
435 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
436 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
438 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
440 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
442 // Int_t newLabel = -1;
443 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
444 // 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",
445 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
446 // grandLabel = newLabel;
452 // printf("Cells in cluster %d\n",cluster->GetNCells() );
453 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
455 // Int_t absIdCell = cluster->GetCellAbsId(icell);
456 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
457 // GetReader()->RemapMCLabelForAODs(mcLabel);
458 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
459 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
461 // 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);
467 //If only one maxima, consider all the towers in the cluster
470 for (UInt_t icell = 0; icell < nc; icell++ )
472 list [icell] = cluster->GetCellAbsId(icell);
473 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
477 Int_t nmaxima = nMax;
478 if(nMax==1) nmaxima = nc ;
480 //Find highest energy Local Maxima Towers
485 for(Int_t i = 0; i < nmaxima; i++)
487 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
494 //Find second highest
495 for(Int_t i = 0; i < nmaxima; i++)
497 if(i==imax) continue;
499 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
509 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
510 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
512 //---------------------------------------------------------
513 //---------------------------------------------------------
514 // Compare ancestors of all local maxima at cell MC level
515 //---------------------------------------------------------
516 //---------------------------------------------------------
518 // Check that the highest mc label and the max cluster label are the same
519 Int_t mcLabelMax = -1 ;
522 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
523 GetReader()->RemapMCLabelForAODs(mcLabelMax);
526 Int_t mcLabelMax2 = -1 ;
529 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
530 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
533 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
534 Bool_t matchHighLMAndHighMC = kFALSE;
536 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
538 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
540 matchHighLMAndHighMC = kTRUE;
541 //printf("\t *** MATCH cluster and LM maximum ***\n");
545 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
546 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
548 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
549 matchHighLMAndHighMC = kTRUE;
553 //printf("\t \t *** NO MATCH***\n");
554 matchHighLMAndHighMC = kFALSE;
558 // Compare the common ancestors of the 2 highest energy local maxima
559 Int_t ancPDG = 0, ancStatus = -1;
560 TLorentzVector momentum; TVector3 prodVertex;
562 Bool_t high = kFALSE;
565 // // print maxima origin
566 // for(Int_t i = 0; i < nMax; i++)
568 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
569 // GetReader()->RemapMCLabelForAODs(mcLabel1);
571 // Bool_t ok =kFALSE,gok = kFALSE;
572 // Int_t pdg = -22222, status = -1;
573 // Int_t gpdg = -22222, gstatus = -1;
574 // Int_t ggpdg = -22222, ggstatus = -1;
575 // Int_t gLabel = -1, ggLabel = -1;
576 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
577 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
578 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
579 // 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",
580 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
583 for(Int_t i = 0; i < nmaxima-1; i++)
585 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
586 GetReader()->RemapMCLabelForAODs(mcLabel1);
588 for(Int_t j = i+1; j < nmaxima; j++)
590 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
591 GetReader()->RemapMCLabelForAODs(mcLabel2);
593 if(mcLabel1 < 0 || mcLabel2 < 0 )
595 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
599 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
600 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
603 if((i==imax && j==imax2) || (j==imax && i==imax2))
608 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
610 // If both bits are set, it could be that one of the maxima had a conversion
611 // reset the bit in this case
614 //printf("\t Reset low bit\n");
620 Int_t pdg = -22222, status = -1;
621 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
622 //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);
627 Float_t en = cluster->E();
629 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
630 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
634 if(matchHighLMAndHighMC)
636 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
637 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
638 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
639 else fhMCPi0NoneNLMPair->Fill(en,nMax);
643 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
644 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
645 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
646 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
651 if(matchHighLMAndHighMC)
653 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
654 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
655 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
656 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
660 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
661 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
662 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
663 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
667 //----------------------------------------------------------------------
668 //----------------------------------------------------------------------
669 // Compare MC decay photon projection to cell location and Local Maxima
670 //----------------------------------------------------------------------
671 //----------------------------------------------------------------------
673 // Get the mother pi0
676 Int_t pdg = -22222, status = -1;
679 Int_t label = cluster->GetLabel();
680 TLorentzVector pi0Kine;
682 while( pdg!=111 && label>=0 )
684 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
687 if(pdg!=111 || label < 0)
689 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
693 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
697 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
701 // Get daughter photon kinematics
702 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
703 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
704 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
705 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
707 if(pdg1!=22 || pdg0 != 22)
709 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
713 // In what cells did the photons hit
714 Float_t eta0 = photon0Kine.Eta();
715 Float_t eta1 = photon1Kine.Eta();
717 Float_t phi0 = photon0Kine.Phi();
718 Float_t phi1 = photon1Kine.Phi();
720 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
722 // 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",
723 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
724 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
725 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
727 // TLorentzVector momclus;
728 // cluster->GetMomentum(momclus,GetVertex(0));
729 // 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());
732 if(phi0 < 0 ) phi0+=TMath::TwoPi();
733 if(phi1 < 0 ) phi1+=TMath::TwoPi();
735 Int_t absId0=-1, absId1=-1;
736 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
737 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
739 if(absId1 < 0 || absId1 < 0)
741 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
745 //-----------------------------------------------
746 // Check that the 2 photons hit the Local Maxima
747 //-----------------------------------------------
750 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
752 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
753 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
755 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
756 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
757 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
758 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
760 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
761 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
763 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
764 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
765 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
766 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
768 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
769 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
773 Bool_t match0 = kFALSE;
774 Bool_t match1 = kFALSE;
777 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
779 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
780 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
782 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
783 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
786 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
788 // If one or the 2 not matched, check with the other MC labels
789 // only in case there was a conversion
791 Int_t absId0second = -1;
792 Int_t absId1second = -1;
793 Int_t secLabel0 = -1;
794 Int_t secLabel1 = -1;
798 Int_t secpdg = -999999;
799 Int_t secstatus = -1;
800 Int_t secgrandLabel = -1;
802 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
803 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
805 if((!match0 || !match1) && mcindex == kmcPi0Conv)
807 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
809 Int_t mclabel = cluster->GetLabels()[ilab];
811 //printf("Check label %d - %d\n",ilab,mclabel);
813 if(mclabel == label0 || mclabel == label1)
815 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
816 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
817 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
821 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
823 // match mc label and parent photon
824 Int_t tmplabel = mclabel;
825 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
827 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
829 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
831 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
833 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
834 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
835 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
838 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
840 tmplabel = secgrandLabel;
844 // Get the position of the found secondaries mother
845 if(!match0 && secLabel0 > 0)
847 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
849 //Float_t eta = mother.Eta();
850 //Float_t phi = mother.Phi();
851 //if(phi < 0 ) phi+=TMath::TwoPi();
852 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
854 //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());
856 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
857 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
860 if(!match1 && secLabel1 > 0)
862 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
864 //Float_t eta = mother.Eta();
865 //Float_t phi = mother.Phi();
866 //if(phi < 0 ) phi+=TMath::TwoPi();
867 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
869 //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());
871 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
872 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
875 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
879 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
880 if( match0 && match1 )
882 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
883 // printf("a) Both Photons hit local maxima \n");
885 if(!noverlaps)fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
886 else fhMCPi0DecayPhotonHitHighLMOverlap->Fill(en,nMax);
891 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
892 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
894 //---------------------------------------------
895 // Check the adjacent cells to the local maxima
896 //---------------------------------------------
900 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) match0 = kTRUE;
901 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
902 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) match0 = kTRUE;
903 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
908 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) match1 = kTRUE;
909 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
911 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) match1 = kTRUE;
912 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
915 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
919 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
920 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
922 if(!noverlaps) fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
923 else fhMCPi0DecayPhotonAdjHighLMOverlap->Fill(en,nMax);
929 // Decay photon cells are adjacent?
931 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
933 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
934 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
935 if(!noverlaps) fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
936 else fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
941 //--------------------
942 // Other Local maxima
943 //--------------------
945 Bool_t matchMCHitOtherLM = kFALSE;
948 for(Int_t i = 0; i < nmaxima; i++)
950 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
956 for(Int_t i = 0; i < nmaxima; i++)
958 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
962 if(matchMCHitOtherLM)
964 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
965 // printf("d) One Photon hits a local maxima, the other another not high \n");
967 if(!noverlaps) fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
968 else fhMCPi0DecayPhotonHitOtherLMOverlap->Fill(en,nMax);
973 // Adjacent to other maxima
975 Bool_t adjacentOther1 = kFALSE;
978 for(Int_t i = 0; i < nmaxima; i++)
980 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
981 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
983 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
985 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
987 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
991 Bool_t adjacentOther0 = kFALSE;
994 for(Int_t i = 0; i < nmaxima; i++)
996 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
997 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
999 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1001 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1003 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1007 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1010 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1011 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1013 if(!noverlaps) fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1014 else fhMCPi0DecayPhotonAdjOtherLMOverlap->Fill(en,nMax);
1019 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1020 // printf("f) No hit found \n");
1021 if(!noverlaps) fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1022 else fhMCPi0DecayPhotonHitNoLMOverlap->Fill(en,nMax);
1026 //___________________________________________________________________________________________________________________
1027 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched,
1028 const Float_t en, const Float_t angle, const Float_t mass)
1030 // Fill histograms related to opening angle
1034 fhAnglePairNLocMax1[matched]->Fill(en,angle);
1035 if( en > fHistoECut ) fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
1039 fhAnglePairNLocMax2[matched]->Fill(en,angle);
1040 if( en > fHistoECut ) fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
1044 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
1045 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
1050 //__________________________________________________________________________________________________________________________________________
1051 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1052 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1054 // Fill some histograms integrating in few energy bins
1058 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1059 if(IsDataMC())fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1061 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1062 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1066 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1067 if(IsDataMC())fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1069 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1070 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1074 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1075 if(IsDataMC())fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1077 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1078 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1083 //________________________________________________________________________________________________________________________
1084 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1085 const Int_t nMax, const Float_t mass, const Float_t l0,
1086 const Float_t eta, const Float_t phi,
1087 const Bool_t matched, const Int_t mcindex)
1089 // Fill histograms for clusters before any selection after spliting
1091 Float_t splitFrac = (e1+e2)/en;
1094 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1096 fhNLocMax[0][matched]->Fill(en,nMax);
1097 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1098 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1102 fhNLocMax[mcindex][matched]->Fill(en,nMax);
1103 fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1104 fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1109 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1110 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1114 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1115 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1120 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1121 if( IsDataMC() ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1123 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1124 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1127 else if( nMax == 2 )
1129 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1130 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1134 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1135 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1140 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1141 if( IsDataMC() ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1143 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1144 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1147 else if( nMax >= 3 )
1149 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1150 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1154 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1155 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1161 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1162 if( IsDataMC() ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1164 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1165 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1172 //________________________________________________________________________________________________________________________
1173 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1174 const Float_t e1, const Float_t e2,
1175 const Int_t nMax, const Float_t mass, const Float_t l0,
1176 const Bool_t matched, const Int_t mcindex)
1178 // Fill histograms for clusters passing the first M02 selection
1180 Float_t efrac = eprim/en;
1181 Float_t efracSplit = 0;
1182 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1184 Float_t splitFrac = (e1+e2)/en;
1187 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1189 Int_t inlm = nMax-1;
1190 if(inlm > 2) inlm = 2;
1191 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1193 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1194 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1195 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1196 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1198 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1202 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1203 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1208 fhMassNLocMax1[0][matched]->Fill(en,mass );
1209 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1211 // Effect of cuts in mass histograms
1213 if(!matched && m02OK && m02On )
1215 fhMassM02CutNLocMax1->Fill(en,mass);
1216 fhAsymM02CutNLocMax1->Fill(en,asym );
1217 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1220 if((m02OK && asyOK) && (asyOn || m02On))
1222 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1223 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1225 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1227 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1228 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1234 fhMassNLocMax2[0][matched]->Fill(en,mass );
1235 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1237 // Effect of cuts in mass histograms
1239 if(!matched && m02OK && m02On )
1241 fhMassM02CutNLocMax2->Fill(en,mass);
1242 fhAsymM02CutNLocMax2->Fill(en,asym );
1243 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1246 if((m02OK && asyOK) && (asyOn || m02On))
1248 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1249 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1251 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1253 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1254 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1260 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1261 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1263 // Effect of cuts in mass histograms
1264 if(!matched && m02OK && m02On )
1266 fhMassM02CutNLocMaxN->Fill(en,mass);
1267 fhAsymM02CutNLocMaxN->Fill(en,asym );
1268 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1271 if((m02OK && asyOK) && (asyOn || m02On))
1273 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1274 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1276 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1278 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1279 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1288 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1289 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1291 if((m02OK && asyOK) && (asyOn || m02On))
1293 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1294 if(splitFrac > splitFracMin)
1295 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1300 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1301 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1303 if((m02OK && asyOK) && (asyOn || m02On))
1305 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1306 if(splitFrac >splitFracMin)
1307 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1312 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1313 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1315 if((m02OK && asyOK) && (asyOn || m02On))
1317 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1318 if(splitFrac > splitFracMin )
1319 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1322 }//Work with MC truth
1326 //________________________________________________________________________________________________________________________
1327 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1328 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1329 const Float_t mass, const Float_t l0,
1330 const Float_t eta, const Float_t phi,
1331 const Bool_t matched, const Int_t mcindex)
1333 // Fill histograms for clusters passing the pi0 selection
1336 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1338 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
1339 fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
1343 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
1344 fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
1349 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1350 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1351 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1352 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1356 if(fFillHighMultHisto)
1358 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1359 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1361 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1362 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1367 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1368 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1369 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1370 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1374 if(fFillHighMultHisto)
1376 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1377 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1379 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1380 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1385 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1386 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1387 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1388 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1392 if(fFillHighMultHisto)
1394 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1395 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1397 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1398 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1406 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1407 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1408 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1409 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1414 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1415 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1416 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1417 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1421 fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
1422 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1423 fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
1424 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1426 }//Work with MC truth
1429 //________________________________________________________________________________________________________________________
1430 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1431 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1432 const Float_t mass, const Float_t l0,
1433 const Float_t eta, const Float_t phi,
1434 const Bool_t matched, const Int_t mcindex)
1436 // Fill histograms for clusters passing the eta selection
1439 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1443 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1444 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1445 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1446 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1450 if(fFillHighMultHisto)
1452 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1453 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1455 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1456 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1461 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
1462 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
1463 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
1464 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
1468 if(fFillHighMultHisto)
1470 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
1471 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
1473 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
1474 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1479 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
1480 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
1481 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
1482 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
1486 if(fFillHighMultHisto)
1488 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
1489 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1491 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
1492 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1500 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
1501 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
1502 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
1503 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
1507 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
1508 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
1509 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
1510 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
1515 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1516 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1517 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1518 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1520 }//Work with MC truth
1524 //_____________________________________________________________________________________________________________________
1525 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
1526 const Float_t mass, const Float_t l0,
1527 const Bool_t matched, const Int_t mcindex)
1529 // Fill histograms for clusters passing the photon selection
1533 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
1534 fhMassConNLocMax1[0][matched]->Fill(en,mass);
1535 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
1539 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
1540 fhMassConNLocMax2[0][matched]->Fill(en,mass);
1541 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
1545 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
1546 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
1547 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
1554 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
1555 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
1556 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
1560 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
1561 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
1562 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
1566 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
1567 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
1568 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
1571 }//Work with MC truth
1574 //_____________________________________________________________________________________________________________________
1575 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
1576 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
1577 const Float_t l0, const Float_t mass,
1578 const Int_t nMax, const Bool_t matched,
1579 const Float_t splitFrac, const Float_t asym,
1580 const Float_t eprim, const Float_t asymGen)
1582 // Fill histograms needing some MC input
1584 Float_t efrac = eprim/en;
1585 Float_t efracSplit = 0;
1586 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1588 //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",
1589 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1591 if(ebin >= 0 && fFillEbinHisto)
1593 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1594 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1599 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1600 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
1601 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1605 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
1606 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1609 if( en > fHistoECut )
1611 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1613 if(!matched && ebin >= 0 && fFillEbinHisto)
1615 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1616 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1618 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1619 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
1625 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1626 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1627 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1631 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
1632 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1635 if( en > fHistoECut )
1637 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1639 if(!matched && ebin >= 0 && fFillEbinHisto)
1641 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1642 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1644 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1645 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
1652 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1653 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1654 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1658 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
1659 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
1662 if( en > fHistoECut )
1664 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
1666 if(!matched && ebin >= 0 && fFillEbinHisto)
1668 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1669 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1671 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
1672 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
1678 //__________________________________________________________________________________________________________________________________________________
1679 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
1680 const Int_t nc, const Float_t mass, const Float_t l0,
1681 const Float_t asym, const Float_t splitFrac,
1682 const Int_t inlm, const Int_t ebin, const Bool_t matched,
1683 const Int_t mcindex, const Int_t noverlaps)
1685 // Fill histograms for MC Overlaps
1687 //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);
1689 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
1693 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
1697 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
1698 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
1699 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
1700 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1701 fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
1702 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
1703 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
1705 else if(noverlaps == 1)
1707 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
1708 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
1709 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
1710 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1711 fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
1712 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
1713 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
1715 else if(noverlaps > 1)
1717 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
1718 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
1719 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
1720 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1721 fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
1722 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1723 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
1726 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
1728 else if(fFillTMHisto)
1730 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
1734 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
1735 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
1736 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
1737 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1738 fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
1739 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
1740 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
1742 else if(noverlaps == 1)
1744 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
1745 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
1746 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
1747 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1748 fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
1749 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
1750 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
1752 else if(noverlaps > 1)
1754 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
1755 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
1756 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
1757 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1758 fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
1759 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1760 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
1763 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
1768 //__________________________________________________________________________________________________
1769 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
1770 const Bool_t matched, const Int_t mcindex,
1771 const Float_t mass , const Float_t l0)
1774 // Fill optional histograms with more SS parameters
1778 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
1779 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
1781 if (mcindex==kmcPi0 && !matched)
1783 if( energy > fHistoECut)
1785 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
1786 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
1790 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
1791 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
1795 else if( nMax == 2 )
1797 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
1798 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
1801 if (mcindex==kmcPi0 && !matched)
1803 if( energy > fHistoECut)
1805 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
1806 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
1810 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
1811 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
1815 else if( nMax >= 3 )
1817 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
1818 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
1820 if (mcindex==kmcPi0 && !matched)
1822 if( energy > fHistoECut)
1824 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
1825 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
1829 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
1830 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
1836 //______________________________________________________________________________________________________
1837 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
1838 const Bool_t matched, const Int_t mcindex,
1839 const Float_t mass , const Int_t ebin)
1841 // Fill optional histograms with more SS parameters
1843 Float_t en = cluster->E();
1845 // Get more Shower Shape parameters
1846 Float_t ll0 = 0., ll1 = 0.;
1847 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
1848 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1850 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
1851 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
1853 Float_t dispAsy = -1;
1854 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
1858 if( en > fHistoECut )
1860 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
1861 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
1862 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
1866 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
1867 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
1868 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
1872 if(!matched && ebin >= 0 && fFillEbinHisto)
1874 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
1875 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
1876 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
1879 else if( nMax == 2 )
1881 if( en > fHistoECut )
1883 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
1884 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
1885 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
1889 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
1890 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
1891 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
1895 if(!matched && ebin >= 0 && fFillEbinHisto)
1897 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
1898 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
1899 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
1903 else if( nMax >= 3 )
1905 if( en > fHistoECut )
1907 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
1908 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
1909 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
1913 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
1914 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
1915 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
1919 if(!matched && ebin >= 0 && fFillEbinHisto)
1921 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
1922 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
1923 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
1930 //__________________________________________________________________________________________________
1931 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
1932 const Int_t absId1, const Int_t absId2)
1934 // Calculate weights and fill histograms
1936 AliVCaloCells* cells = 0;
1937 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
1938 else cells = GetPHOSCells();
1940 // First recalculate energy in case non linearity was applied
1942 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1945 Int_t id = clus->GetCellsAbsId()[ipos];
1947 //Recalibrate cell energy if needed
1948 Float_t amp = cells->GetCellAmplitude(id);
1949 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1957 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
1961 //Get amplitude of main local maxima, recalibrate if needed
1962 Float_t amp1 = cells->GetCellAmplitude(absId1);
1963 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
1964 Float_t amp2 = cells->GetCellAmplitude(absId2);
1965 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
1967 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
1968 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
1970 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
1971 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
1972 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
1974 //Get the ratio and log ratio to all cells in cluster
1975 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1977 Int_t id = clus->GetCellsAbsId()[ipos];
1979 //Recalibrate cell energy if needed
1980 Float_t amp = cells->GetCellAmplitude(id);
1981 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1983 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
1984 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
1985 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
1987 if (id!=absId1 && id!=absId2)
1989 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
1990 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
1995 //Recalculate shower shape for different W0
1996 if(fCalorimeter=="EMCAL")
1998 Float_t l0org = clus->GetM02();
1999 Float_t l1org = clus->GetM20();
2000 Float_t dorg = clus->GetDispersion();
2001 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2003 for(Int_t iw = 0; iw < fSSWeightN; iw++)
2005 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2006 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2008 Float_t l0 = 0., l1 = 0.;
2009 Float_t disp = 0., dEta = 0., dPhi = 0.;
2010 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2012 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2013 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
2016 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2020 // Set the original values back
2021 clus->SetM02(l0org);
2022 clus->SetM20(l1org);
2023 clus->SetDispersion(dorg);
2024 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2026 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2028 Float_t l0 = 0., l1 = 0.;
2029 Float_t disp = 0., dEta = 0., dPhi = 0.;
2030 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2032 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2033 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2035 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2036 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2043 //________________________________________________________________________________________
2044 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster, const Int_t nMax,
2045 const Int_t mcindex)
2047 // Fill histograms related to track matching
2049 Float_t dZ = cluster->GetTrackDz();
2050 Float_t dR = cluster->GetTrackDx();
2051 Float_t en = cluster->E();
2053 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2055 dR = 2000., dZ = 2000.;
2056 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2059 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2061 if(TMath::Abs(dR) < 999)
2063 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2064 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2065 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2069 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2070 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2071 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2074 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2076 Bool_t positive = kFALSE;
2077 if(track) positive = (track->Charge()>0);
2083 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2084 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2085 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2089 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2090 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2091 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2096 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2097 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2098 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2102 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2103 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2104 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2113 //_______________________________________________________________
2114 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2116 //Save parameters used for analysis
2117 TString parList ; //this will be list of parameters used for this analysis.
2118 const Int_t buffersize = 255;
2119 char onePar[buffersize] ;
2121 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2124 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2126 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2128 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2130 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2132 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2134 if(fFillSSWeightHisto)
2136 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2140 return new TObjString(parList) ;
2144 //________________________________________________________________
2145 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2147 // Create histograms to be saved in output file and
2148 // store them in outputContainer
2149 TList * outputContainer = new TList() ;
2150 outputContainer->SetName("InsideClusterHistos") ;
2152 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2153 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2154 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2155 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2156 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2157 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2159 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2160 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2161 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2162 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2163 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2164 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2166 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2167 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2168 Bool_t splitOn = kFALSE;
2169 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2170 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2171 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2173 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron","#pi^{0} (#gamma->e^{#pm})"};
2174 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron","Pi0Conv"};
2178 if(IsDataMC()) n = 8;
2180 Int_t nMaxBins = 10;
2182 TString sMatched[] = {"","Matched"};
2185 if(!fFillTMHisto) nMatched = 1;
2187 for(Int_t i = 0; i < n; i++)
2189 for(Int_t j = 0; j < nMatched; j++)
2192 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2193 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2194 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2195 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2196 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2197 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2199 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2200 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2201 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2202 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2203 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2204 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2206 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2207 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2208 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2209 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2210 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2211 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2213 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2214 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2215 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2216 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2217 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2218 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2220 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2221 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2222 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2223 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2224 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2225 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2227 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2228 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2229 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2230 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2231 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2232 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2234 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2235 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2236 nptbins,ptmin,ptmax,200,-1,1);
2237 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2238 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2239 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2241 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2242 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2243 nptbins,ptmin,ptmax,200,-1,1);
2244 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2245 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2246 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2248 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2249 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2250 nptbins,ptmin,ptmax,200,-1,1);
2251 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2252 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2253 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2255 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2256 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2257 nptbins,ptmin,ptmax,120,0,1.2);
2258 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2259 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2260 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2262 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2263 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2264 nptbins,ptmin,ptmax,120,0,1.2);
2265 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2266 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2267 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2269 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2270 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2271 nptbins,ptmin,ptmax,120,0,1.2);
2272 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2273 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2274 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
2277 if(i==0 && j==0 && m02On)
2281 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
2282 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2283 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
2284 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
2285 outputContainer->Add(fhMassSplitECutNLocMax1) ;
2287 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2288 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2289 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
2290 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
2291 outputContainer->Add(fhMassSplitECutNLocMax2) ;
2293 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2294 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2295 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2296 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
2297 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
2300 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2301 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2302 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
2303 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
2304 outputContainer->Add(fhMassM02CutNLocMax1) ;
2306 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2307 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2308 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
2309 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
2310 outputContainer->Add(fhMassM02CutNLocMax2) ;
2312 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2313 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2314 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2315 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
2316 outputContainer->Add(fhMassM02CutNLocMaxN) ;
2318 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2319 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2320 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
2321 outputContainer->Add(fhAsymM02CutNLocMax1) ;
2323 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2324 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2325 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
2326 outputContainer->Add(fhAsymM02CutNLocMax2) ;
2328 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2329 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2330 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
2331 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
2336 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2337 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2338 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2339 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2340 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
2341 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
2343 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2344 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2345 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2346 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2347 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
2348 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
2351 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2352 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2353 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2354 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2355 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2356 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
2358 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2359 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()),
2360 nptbins,ptmin,ptmax,120,0,1.2);
2361 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2362 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2363 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
2365 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2366 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()),
2367 nptbins,ptmin,ptmax,120,0,1.2);
2368 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2369 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2370 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
2372 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2373 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()),
2374 nptbins,ptmin,ptmax,120,0,1.2);
2375 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2376 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2377 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
2380 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2381 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2382 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2383 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2384 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
2385 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
2387 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2388 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2389 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2390 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2391 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
2392 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
2394 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2395 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2396 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2397 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2398 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
2399 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
2401 if(fFillSSExtraHisto)
2403 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2404 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2405 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2406 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2407 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2408 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
2410 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2411 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2412 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2413 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2414 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2415 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
2417 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2418 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2419 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2420 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2421 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2422 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
2424 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2425 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2426 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2427 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2428 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2429 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
2431 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2432 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2433 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2434 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2435 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2436 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
2438 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2439 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2440 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2441 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2442 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2443 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
2445 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2446 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()),
2447 200,-1,1,mbins,mmin,mmax);
2448 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2449 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2450 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
2452 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2453 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()),
2454 200,-1,1,mbins,mmin,mmax);
2455 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2456 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2457 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
2459 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2460 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()),
2461 200,-1,1,mbins,mmin,mmax);
2462 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2463 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2464 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
2467 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2468 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2469 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2470 fhNLocMax[i][j] ->SetYTitle("N maxima");
2471 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2472 outputContainer->Add(fhNLocMax[i][j]) ;
2474 fhSplitClusterENLocMax[i][j] = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2475 Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
2476 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2477 fhSplitClusterENLocMax[i][j] ->SetYTitle("N maxima");
2478 fhSplitClusterENLocMax[i][j] ->SetXTitle("E (GeV)");
2479 outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
2482 fhSplitClusterEPi0NLocMax[i][j] = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2483 Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
2484 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2485 fhSplitClusterEPi0NLocMax[i][j] ->SetYTitle("N maxima");
2486 fhSplitClusterEPi0NLocMax[i][j] ->SetXTitle("E (GeV)");
2487 outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
2492 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2493 Form("Number of local maxima in cluster %s, M02 cut",ptype[i].Data()),
2494 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2495 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2496 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2497 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2500 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
2502 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2503 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2504 nptbins,ptmin,ptmax,200,0,2);
2505 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2506 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2507 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
2509 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2510 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2511 nptbins,ptmin,ptmax,200,0,2);
2512 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2513 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2514 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
2516 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2517 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2518 nptbins,ptmin,ptmax,200,0,2);
2519 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2520 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2521 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
2523 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2524 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2525 nptbins,ptmin,ptmax,200,0,2);
2526 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2527 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2528 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
2530 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2531 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2532 nptbins,ptmin,ptmax,200,0,2);
2533 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2534 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2535 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
2537 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2538 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2539 nptbins,ptmin,ptmax,200,0,2);
2540 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2541 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2542 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
2545 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2546 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2547 nptbins,ptmin,ptmax,200,0,2);
2548 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2549 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2550 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
2552 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2553 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2554 nptbins,ptmin,ptmax,200,0,2);
2555 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2556 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2557 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
2559 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2560 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2561 nptbins,ptmin,ptmax,200,0,2);
2562 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2563 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2564 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
2566 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2567 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2568 nptbins,ptmin,ptmax,200,0,2);
2569 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2570 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2571 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
2573 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2574 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2575 nptbins,ptmin,ptmax,200,0,2);
2576 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2577 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2578 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
2580 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2581 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2582 nptbins,ptmin,ptmax,200,0,2);
2583 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2584 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2585 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
2587 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2588 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()),
2590 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2591 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2592 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
2594 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2595 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()),
2597 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2598 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2599 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
2602 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2603 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()),
2605 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2606 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2607 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
2610 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2611 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2612 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2613 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2614 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
2615 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
2617 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2618 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2619 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2620 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2621 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
2622 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
2625 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2626 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2627 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2628 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2629 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
2630 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
2636 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2637 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2638 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2639 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2640 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2641 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2643 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2644 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2645 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2646 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2647 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2648 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2651 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2652 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2653 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2654 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2655 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2656 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2659 // Histograms after cluster identification
2664 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2665 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2666 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2667 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2668 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2669 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
2671 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2672 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2673 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2674 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2675 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2676 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
2678 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2679 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2680 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2681 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2682 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2683 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
2685 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2686 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2687 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2688 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2689 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2690 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
2692 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2693 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
2694 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2695 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2696 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2697 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
2699 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2700 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2701 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2702 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2703 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2704 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
2706 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2707 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2708 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2709 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
2710 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2711 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
2713 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2714 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2715 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2716 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
2717 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2718 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
2720 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2721 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2722 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2723 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
2724 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2725 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
2729 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2730 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2731 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2732 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
2733 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2734 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
2736 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2737 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2738 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2739 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
2740 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2741 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
2743 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2744 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2745 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2746 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
2747 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2748 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
2755 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2756 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2757 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2758 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2759 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2760 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
2763 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2764 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2765 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2766 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2767 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2768 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
2770 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2771 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2772 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2773 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2774 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2775 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
2777 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2778 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2779 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2780 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2781 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2782 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
2784 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2785 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2786 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2787 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2788 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2789 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
2791 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2792 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2793 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2794 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2795 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2796 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
2798 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2799 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2800 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2801 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
2802 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2803 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
2805 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2806 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2807 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2808 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
2809 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2810 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
2812 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2813 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2814 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2815 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2816 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2817 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
2821 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2822 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2823 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2824 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
2825 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2826 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
2828 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2829 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2830 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2831 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
2832 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2833 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
2835 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2836 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2837 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2838 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
2839 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2840 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
2845 if(fFillIdConvHisto)
2847 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2848 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2849 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2850 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2851 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2852 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
2854 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2855 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2856 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2857 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2858 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2859 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
2861 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2862 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2863 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2864 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2865 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2866 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
2869 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2870 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2871 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2872 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2873 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2874 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
2876 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2877 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2878 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2879 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2880 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2881 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
2883 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2884 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2885 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2886 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2887 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2888 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
2890 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2891 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2892 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2893 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
2894 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2895 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
2897 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2898 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2899 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2900 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
2901 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2902 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
2904 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2905 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2906 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2907 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2908 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2909 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
2913 } // matched, not matched
2917 for(Int_t j = 0; j < 4; j++)
2920 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
2921 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2922 120,0,1.2,mbins,mmin,mmax);
2923 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2924 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2925 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
2927 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
2928 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2929 120,0,1.2,mbins,mmin,mmax);
2930 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2931 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2932 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
2934 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
2935 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2936 120,0,1.2,mbins,mmin,mmax);
2937 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2938 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2939 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
2941 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
2943 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
2944 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
2945 200,0,2,nMaxBins,0,nMaxBins);
2946 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
2947 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2948 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
2950 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
2951 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
2952 200,0,2,nMaxBins,0,nMaxBins);
2953 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
2954 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
2955 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
2957 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2958 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
2959 200,0,2,mbins,mmin,mmax);
2960 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2961 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2962 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
2964 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2965 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2966 200,0,2,mbins,mmin,mmax);
2967 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2968 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2969 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
2971 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2972 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2973 200,0,2,mbins,mmin,mmax);
2974 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2975 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2976 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
2978 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2979 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
2980 200,0,2,ssbins,ssmin,ssmax);
2981 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2982 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2983 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
2985 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2986 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
2987 200,0,2,ssbins,ssmin,ssmax);
2988 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2989 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2990 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
2992 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2993 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
2994 200,0,2,ssbins,ssmin,ssmax);
2995 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2996 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2997 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
3001 } // MC particle list
3003 if(fFillHighMultHisto)
3007 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
3008 "E vs Centrality, selected pi0 cluster with NLM=1",
3009 nptbins,ptmin,ptmax,100,0,100);
3010 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
3011 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
3012 outputContainer->Add(fhCentralityPi0NLocMax1) ;
3014 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
3015 "E vs Centrality, selected pi0 cluster with NLM=2",
3016 nptbins,ptmin,ptmax,100,0,100);
3017 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
3018 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
3019 outputContainer->Add(fhCentralityPi0NLocMax2) ;
3021 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
3022 "E vs Centrality, selected pi0 cluster with NLM>1",
3023 nptbins,ptmin,ptmax,100,0,100);
3024 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
3025 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
3026 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
3030 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
3031 "E vs Centrality, selected pi0 cluster with NLM=1",
3032 nptbins,ptmin,ptmax,100,0,100);
3033 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
3034 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
3035 outputContainer->Add(fhCentralityEtaNLocMax1) ;
3037 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3038 "E vs Centrality, selected pi0 cluster with NLM=2",
3039 nptbins,ptmin,ptmax,100,0,100);
3040 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3041 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3042 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3044 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3045 "E vs Centrality, selected pi0 cluster with NLM>1",
3046 nptbins,ptmin,ptmax,100,0,100);
3047 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3048 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3049 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3052 // E vs Event plane angle
3054 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3055 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3056 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3057 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3058 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3060 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3061 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3062 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3063 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3064 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3066 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3067 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3068 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3069 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3070 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3074 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3075 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3076 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3077 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3078 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3080 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3081 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3082 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3083 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3084 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3086 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3087 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3088 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3089 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3090 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3096 for(Int_t i = 0; i < 4; i++)
3098 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3099 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3100 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3101 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3102 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3103 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3105 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3106 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3107 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3108 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3109 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3110 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3112 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3113 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3114 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3115 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3116 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3117 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3120 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3121 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
3122 200,-1,1,mbins,mmin,mmax);
3123 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3124 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3125 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3127 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3128 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
3129 200,-1,1,mbins,mmin,mmax);
3130 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3131 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3132 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3134 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3135 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
3136 200,-1,1,mbins,mmin,mmax);
3137 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3138 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3139 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3142 if(IsDataMC() && fFillMCHisto)
3144 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3145 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3146 ssbins,ssmin,ssmax,100,0,1);
3147 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3148 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3149 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3151 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3152 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3153 ssbins,ssmin,ssmax,100,0,1);
3154 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3155 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3156 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3158 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3159 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3160 ssbins,ssmin,ssmax,100,0,1);
3161 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3162 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3163 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3166 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3167 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
3169 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3170 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3171 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3173 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3174 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
3176 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3177 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3178 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3180 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3181 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
3183 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3184 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3185 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3188 if(fFillSSExtraHisto)
3190 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3191 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3192 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3193 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3194 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3195 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3197 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3198 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3199 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3200 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3201 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3202 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3204 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3205 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
3206 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3207 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3208 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3209 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3211 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3212 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3213 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3214 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3215 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3216 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3218 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3219 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3220 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3221 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3222 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3223 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3225 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3226 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
3227 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3228 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3229 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3230 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3232 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3233 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),
3234 200,-1,1,mbins,mmin,mmax);
3235 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3236 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3237 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3239 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3240 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),
3241 200,-1,1,mbins,mmin,mmax);
3242 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3243 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3244 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3246 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3247 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),
3248 200,-1,1,mbins,mmin,mmax);
3249 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3250 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3251 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3256 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3258 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3259 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3260 nptbins,ptmin,ptmax,200,0,2);
3261 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3262 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3263 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3265 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3266 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3267 nptbins,ptmin,ptmax,200,0,2);
3268 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3269 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3270 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3273 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3274 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3275 nptbins,ptmin,ptmax,200,0,2);
3276 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3277 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3278 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3280 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3281 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3282 nptbins,ptmin,ptmax,200,0,2);
3283 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3284 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3285 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3287 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3288 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3289 nptbins,ptmin,ptmax,200,0,2);
3290 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3291 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3292 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3295 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3296 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3297 nptbins,ptmin,ptmax,200,0,2);
3298 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3299 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3300 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
3304 if(fFillTMResidualHisto && fFillTMHisto)
3306 for(Int_t i = 0; i < n; i++)
3309 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
3310 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
3311 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3312 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3313 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
3314 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3316 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
3317 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
3318 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3319 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3320 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
3321 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3323 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
3324 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
3326 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
3327 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
3328 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3329 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3330 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
3331 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3333 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
3334 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
3335 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3336 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3337 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
3338 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3340 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
3341 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
3343 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
3344 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
3345 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3346 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3347 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
3348 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3350 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
3351 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
3352 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3353 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3354 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
3355 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3357 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
3358 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
3360 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
3361 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
3362 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3363 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3364 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
3365 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3367 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
3368 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
3369 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3370 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3371 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
3372 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3374 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
3375 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
3377 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
3378 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
3379 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3380 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3381 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
3382 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3384 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
3385 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
3386 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3387 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3388 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
3389 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3391 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
3392 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
3394 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
3395 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
3396 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3397 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3398 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
3399 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3401 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
3402 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
3403 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3404 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3405 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
3406 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3408 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
3409 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
3411 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
3412 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
3413 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3414 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3415 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
3416 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3418 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
3419 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
3420 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3421 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3422 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
3423 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3425 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
3426 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
3428 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
3429 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
3430 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3431 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3432 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
3433 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3435 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
3436 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
3437 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3438 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3439 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
3440 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3442 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
3443 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
3445 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
3446 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
3447 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3448 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3449 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
3450 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3452 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
3453 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
3454 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3455 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3456 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
3457 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3459 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
3460 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
3467 for(Int_t j = 0; j < nMatched; j++)
3470 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
3471 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
3472 nptbins,ptmin,ptmax,200,0,0.2);
3473 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
3474 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
3475 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
3477 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
3478 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3479 nptbins,ptmin,ptmax,200,0,0.2);
3480 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
3481 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
3482 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
3484 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
3485 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3486 nptbins,ptmin,ptmax,200,0,0.2);
3487 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
3488 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
3489 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
3491 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
3492 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3493 mbins,mmin,mmax,200,0,0.2);
3494 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
3495 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
3496 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
3498 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
3499 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3500 mbins,mmin,mmax,200,0,0.2);
3501 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
3502 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
3503 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
3505 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
3506 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3507 mbins,mmin,mmax,200,0,0.2);
3508 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
3509 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
3510 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
3515 for(Int_t j = 0; j < nMatched; j++)
3517 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
3518 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
3519 100,-1,1,120,0,1.2);
3520 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3521 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3522 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
3524 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
3525 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
3526 100,-1,1,120,0,1.2);
3527 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3528 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3529 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
3531 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
3532 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
3533 100,-1,1,120,0,1.2);
3534 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3535 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3536 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
3540 fhClusterEtaPhiNLocMax1 = new TH2F
3541 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3542 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3543 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
3544 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
3546 fhClusterEtaPhiNLocMax2 = new TH2F
3547 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3548 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3549 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
3550 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
3552 fhClusterEtaPhiNLocMaxN = new TH2F
3553 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3554 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3555 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
3556 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
3558 fhPi0EtaPhiNLocMax1 = new TH2F
3559 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3560 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
3561 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
3562 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
3564 fhPi0EtaPhiNLocMax2 = new TH2F
3565 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3566 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
3567 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
3568 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
3570 fhPi0EtaPhiNLocMaxN = new TH2F
3571 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3572 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3573 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
3574 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
3578 fhEtaEtaPhiNLocMax1 = new TH2F
3579 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3580 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3581 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
3582 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
3584 fhEtaEtaPhiNLocMax2 = new TH2F
3585 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3586 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3587 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
3588 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
3590 fhEtaEtaPhiNLocMaxN = new TH2F
3591 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3592 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3593 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
3594 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
3597 TString snlm[] = {"1","2","N"};
3599 if(fFillSSWeightHisto)
3601 for(Int_t nlm = 0; nlm < 3; nlm++)
3603 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
3604 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
3605 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
3606 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
3607 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
3608 outputContainer->Add(fhPi0CellE[nlm]) ;
3610 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
3611 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
3612 nptbins,ptmin,ptmax, 100,0,1);
3613 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
3614 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
3615 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
3617 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
3618 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
3619 nptbins,ptmin,ptmax, 100,-10,0);
3620 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
3621 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
3622 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
3625 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
3626 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
3627 nptbins,ptmin,ptmax, 100,0,1);
3628 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
3629 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3630 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
3632 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
3633 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
3634 nptbins,ptmin,ptmax, 100,0,1);
3635 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
3636 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
3637 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
3639 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
3640 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
3641 nptbins,ptmin,ptmax, 100,0,1);
3642 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
3643 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
3644 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
3646 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
3647 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
3648 nptbins,ptmin,ptmax, 100,0,1);
3649 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
3650 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
3651 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
3653 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
3654 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
3655 nptbins,ptmin,ptmax, 200,0,2);
3656 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
3657 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3658 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
3661 for(Int_t i = 0; i < fSSWeightN; i++)
3663 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
3664 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
3665 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3666 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3667 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
3668 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
3671 for(Int_t i = 0; i < fSSECellCutN; i++)
3673 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
3674 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
3675 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3676 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3677 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
3678 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
3684 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
3686 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3687 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3688 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3689 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
3691 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3692 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3693 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3694 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
3696 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3697 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3698 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3699 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
3703 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3704 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3705 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3706 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
3708 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3709 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3710 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3711 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
3713 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3714 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3715 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3716 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
3719 if(fFillNCellHisto && IsDataMC())
3722 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3723 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3724 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
3725 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
3727 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3728 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3729 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
3730 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
3732 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3733 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3734 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
3735 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
3737 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3738 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3739 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
3740 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
3742 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3743 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3744 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
3745 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
3747 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3748 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3749 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
3750 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
3752 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3753 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3754 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
3755 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
3757 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3758 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3759 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
3760 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
3762 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3763 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3764 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
3765 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
3767 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3768 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3769 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
3770 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
3772 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3773 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3774 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
3775 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
3777 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3778 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3779 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
3780 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
3784 if(IsDataMC() && fFillMCOverlapHisto)
3786 for(Int_t i = 1; i < n; i++)
3788 for(Int_t j = 0; j < 3; j++)
3790 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3791 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3792 nptbins,ptmin,ptmax,10,0,10);
3793 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
3794 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
3795 outputContainer->Add(fhMCENOverlaps[j][i]) ;
3797 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3798 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3799 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3800 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
3801 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
3802 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
3804 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3805 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3806 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3807 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
3808 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
3809 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
3811 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3812 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3813 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3814 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
3815 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
3816 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
3818 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3819 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3820 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3821 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3822 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
3823 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
3825 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3826 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3827 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3828 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3829 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
3830 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
3832 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3833 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3834 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3835 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
3836 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
3837 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
3839 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3840 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3841 nptbins,ptmin,ptmax,100,0,1);
3842 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
3843 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
3844 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
3846 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3847 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3848 nptbins,ptmin,ptmax,100,0,1);
3849 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
3850 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
3851 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
3853 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3854 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3855 nptbins,ptmin,ptmax,100,0,1);
3856 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
3857 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
3858 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
3861 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3862 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3863 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3864 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
3865 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
3866 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
3868 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3869 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3870 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3871 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
3872 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
3873 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
3875 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3876 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3877 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3878 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
3879 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
3880 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
3883 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3884 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3885 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3886 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
3887 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
3888 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
3890 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3891 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3892 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3893 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
3894 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
3895 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
3897 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3898 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3899 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3900 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
3901 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
3902 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
3905 fhMCEEpriOverlap0IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3906 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3907 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3908 fhMCEEpriOverlap0IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
3909 fhMCEEpriOverlap0IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
3910 outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
3912 fhMCEEpriOverlap1IdPi0[j][i] = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3913 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3914 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3915 fhMCEEpriOverlap1IdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
3916 fhMCEEpriOverlap1IdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
3917 outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
3919 fhMCEEpriOverlapNIdPi0[j][i] = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3920 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3921 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3922 fhMCEEpriOverlapNIdPi0[j][i] ->SetYTitle("E_{gen} (GeV)");
3923 fhMCEEpriOverlapNIdPi0[j][i] ->SetXTitle("E_{reco} (GeV)");
3924 outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
3927 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3928 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3929 nptbins,ptmin,ptmax,120,0,1.2);
3930 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3931 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
3932 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
3934 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3935 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3936 nptbins,ptmin,ptmax,120,0,1.2);
3937 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3938 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
3939 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
3941 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3942 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3943 nptbins,ptmin,ptmax,120,0,1.2);
3944 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3945 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
3946 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
3950 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
3951 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3952 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3953 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
3954 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3955 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
3957 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
3958 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3959 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3960 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
3961 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3962 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
3964 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
3965 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3966 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3967 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
3968 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3969 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
3974 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3975 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3976 nptbins,ptmin,ptmax,10,0,10);
3977 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
3978 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
3979 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
3981 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3982 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3983 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3984 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3985 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
3986 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
3988 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3989 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3990 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3991 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3992 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
3993 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
3995 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3996 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3997 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3998 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
3999 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4000 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
4002 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4003 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4004 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4005 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4006 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4007 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
4009 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4010 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4011 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4012 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4013 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4014 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
4016 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4017 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4018 nptbins,ptmin,ptmax,mbins,mmin,mmax);
4019 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
4020 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4021 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
4024 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4025 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4026 nptbins,ptmin,ptmax,100,0,1);
4027 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
4028 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4029 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
4031 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4032 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4033 nptbins,ptmin,ptmax,100,0,1);
4034 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
4035 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4036 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
4038 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4039 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4040 nptbins,ptmin,ptmax,100,0,1);
4041 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
4042 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4043 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
4046 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4047 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4048 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4049 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
4050 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4051 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
4053 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4054 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4055 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4056 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
4057 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4058 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4060 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4061 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4062 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4063 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4064 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4065 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4067 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4068 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4069 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4070 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4071 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4072 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4074 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4075 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4076 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4077 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4078 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4079 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
4081 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4082 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4083 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4084 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
4085 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
4086 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
4089 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4090 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4091 nptbins,ptmin,ptmax,120,0,1.2);
4092 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4093 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4094 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
4096 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4097 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4098 nptbins,ptmin,ptmax,120,0,1.2);
4099 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4100 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4101 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
4103 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4104 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4105 nptbins,ptmin,ptmax,120,0,1.2);
4106 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4107 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4108 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
4113 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4114 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4115 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4116 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4117 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4118 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4120 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4121 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4122 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4123 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4124 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4125 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
4127 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4128 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4129 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4130 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
4131 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4132 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
4140 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4141 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4142 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
4143 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
4144 outputContainer->Add(fhMCPi0HighNLMPair) ;
4146 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4147 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4148 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
4149 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
4150 outputContainer->Add(fhMCPi0LowNLMPair) ;
4152 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4153 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4154 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
4155 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
4156 outputContainer->Add(fhMCPi0AnyNLMPair) ;
4158 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4159 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4160 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
4161 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
4162 outputContainer->Add(fhMCPi0NoneNLMPair) ;
4165 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4166 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4167 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
4168 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4169 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
4171 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4172 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4173 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
4174 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4175 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
4177 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4178 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4179 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
4180 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4181 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
4183 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4184 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4185 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
4186 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4187 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
4193 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4194 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4195 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
4196 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
4197 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
4199 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4200 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4201 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
4202 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
4203 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
4205 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4206 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4207 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
4208 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
4209 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
4211 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4212 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4213 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
4214 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
4215 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
4217 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4218 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4219 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4220 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4221 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
4223 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4224 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4225 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4226 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4227 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
4229 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4230 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4231 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4232 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4233 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
4235 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4236 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4237 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4238 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4239 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
4241 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
4242 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4243 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
4244 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
4245 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
4247 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
4248 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4249 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
4250 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
4251 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
4253 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
4254 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4255 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
4256 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
4257 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
4259 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
4260 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4261 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
4262 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
4263 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
4265 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
4266 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4267 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
4268 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
4269 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
4271 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
4272 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4273 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
4274 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
4275 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
4278 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
4279 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4280 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
4281 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
4282 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
4284 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
4285 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4286 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
4287 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
4288 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
4290 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
4291 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4292 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
4293 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
4294 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
4296 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
4297 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4298 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
4299 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
4300 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
4302 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
4303 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4304 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
4305 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
4306 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
4308 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
4309 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4310 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
4311 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
4312 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
4315 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
4316 nptbins,ptmin,ptmax,5,0,5);
4317 //fhMCEOverlapType ->SetYTitle("Overlap Type");
4318 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
4319 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4320 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4321 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4322 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
4323 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
4324 outputContainer->Add(fhMCEOverlapType) ;
4326 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
4327 nptbins,ptmin,ptmax,5,0,5);
4328 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
4329 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
4330 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4331 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4332 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4333 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
4334 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
4335 outputContainer->Add(fhMCEOverlapTypeMatch) ;
4337 }// MC analysis, check overlaps
4339 return outputContainer ;
4343 //_____________________________________________________________________________
4344 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
4345 Int_t & mcindex, Int_t & tag)
4348 // Assign mc index depending on MC bit set, to be used in histograms arrays
4350 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
4352 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
4353 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
4354 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
4355 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
4356 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4357 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
4358 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4359 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
4360 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
4361 else mcindex = kmcHadron;
4366 //______________________________________________________________________________________________________________
4367 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
4368 const Int_t mctag, const Bool_t matched,
4369 Float_t & eprim, Float_t & asymGen, Int_t & noverlaps )
4371 // Check origin of the candidates, get primary kinematics if overlapped meson decay
4374 Int_t mcLabel = cluster->GetLabel();
4376 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
4377 eprim = primary.E();
4379 Int_t mesonLabel = -1;
4381 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
4383 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
4385 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
4386 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
4387 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4391 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
4392 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
4393 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4397 if(!fFillMCOverlapHisto) return;
4399 const UInt_t nlabels = cluster->GetNLabels();
4400 Int_t overpdg[nlabels];
4401 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
4403 for(Int_t iover = 0; iover < noverlaps; iover++)
4405 Float_t histobin = -1;
4406 Int_t mpdg = overpdg[iover];
4408 if (mpdg==22) histobin = 0.5;
4409 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
4410 else if(mpdg==-999999) histobin = 4.5;
4413 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
4414 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
4415 else histobin = 3.5;
4416 //printf("charge %f\n",charge);
4419 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
4422 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
4423 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
4428 //___________________________________________
4429 void AliAnaInsideClusterInvariantMass::Init()
4433 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
4435 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
4438 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
4440 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
4444 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
4446 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
4453 //_____________________________________________________
4454 void AliAnaInsideClusterInvariantMass::InitParameters()
4456 //Initialize the parameters of the analysis.
4457 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
4459 fCalorimeter = "EMCAL" ;
4467 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
4468 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
4471 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
4472 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
4477 //__________________________________________________________________
4478 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
4480 //Search for pi0 in fCalorimeter with shower shape analysis
4482 TObjArray * pl = 0x0;
4483 AliVCaloCells* cells = 0x0;
4485 //Select the Calorimeter of the photon
4486 if(fCalorimeter == "PHOS")
4488 pl = GetPHOSClusters();
4489 cells = GetPHOSCells();
4491 else if (fCalorimeter == "EMCAL")
4493 pl = GetEMCALClusters();
4494 cells = GetEMCALCells();
4499 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
4503 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
4505 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
4507 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
4509 //-------------------------------------------
4510 // Get cluster parameters, do some rejection
4511 //-------------------------------------------
4513 Float_t en = cluster->E();
4514 Float_t l0 = cluster->GetM02();
4515 Int_t nc = cluster->GetNCells();
4516 Float_t bd = cluster->GetDistanceToBadChannel() ;
4518 //If too small or big E or low number of cells, or close to a bad channel skip it
4520 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
4522 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
4524 // Track-cluster matching
4526 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
4527 if(!fFillTMHisto && matched) continue ;
4529 // Get cluster angles
4532 cluster->GetMomentum(lv, GetVertex(0));
4533 Float_t eta = lv.Eta();
4534 Float_t phi = lv.Phi();
4535 if(phi<0) phi=+TMath::TwoPi();
4537 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
4538 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
4540 // Get PID, N local maximum, *** split cluster ***
4543 Double_t mass = 0., angle = 0.;
4544 TLorentzVector l1, l2;
4545 Int_t absId1 =-1; Int_t absId2 =-1;
4546 Float_t distbad1 =-1; Float_t distbad2 =-1;
4547 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
4549 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
4550 GetVertex(0), nMax, mass, angle,
4551 l1,l2,absId1,absId2,
4552 distbad1,distbad2,fidcut1,fidcut2);
4556 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
4561 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
4562 if( (fCheckSplitDistToBad) &&
4563 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
4566 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
4567 distbad1,distbad2, fidcut1,fidcut2);
4571 // Set some index for array histograms
4574 if (nMax == 1) inlm = 0;
4575 else if(nMax == 2) inlm = 1;
4576 else if(nMax > 2) inlm = 2;
4577 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
4579 // Get sub-cluster parameters
4581 Float_t e1 = l1.Energy();
4582 Float_t e2 = l2.Energy();
4584 Double_t tof1 = cells->GetCellTime(absId1);
4585 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4588 Double_t tof2 = cells->GetCellTime(absId2);
4589 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4592 Double_t t12diff = tof1-tof2;
4594 Float_t splitFrac = (e1+e2)/en;
4597 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
4602 if(en > 8 && en <= 12) ebin = 0;
4603 if(en > 12 && en <= 16) ebin = 1;
4604 if(en > 16 && en <= 20) ebin = 2;
4605 if(en > 20) ebin = 3;
4607 // MC data histograms and some related calculations
4608 // mc tag, n overlaps, asym of generated mesons
4613 Float_t asymGen = -2;
4614 Int_t noverlaps = 0;
4620 GetMCIndex(cluster,mcindex,mctag);
4622 // MC primary kine, generation fractions
4624 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,noverlaps);
4626 // For cluster with MC pi0 and more than 1 maxima
4628 if(fFillMCOverlapHisto)
4629 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps);
4630 //mass, l0, l1, l2);
4635 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
4636 nMax,matched,splitFrac, asym, eprim,asymGen);
4640 if(fFillMCOverlapHisto)
4641 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
4646 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
4651 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
4655 if(fFillSSExtraHisto)
4656 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
4660 if(!matched && ebin > 0 && fFillEbinHisto)
4661 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
4666 FillAngleHistograms(matched,nMax,en,angle,mass);
4668 //---------------------------------------------------------------------
4669 // From here start applying some cuts
4670 //---------------------------------------------------------------------
4672 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
4674 if(pidTag==AliCaloPID::kPi0)
4676 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4678 if(fFillSSWeightHisto)
4679 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
4681 if(fFillTMHisto && fFillTMResidualHisto)
4682 FillTrackMatchingHistograms(cluster,nMax,mcindex);
4684 if(fFillMCOverlapHisto && IsDataMC() && !matched)
4686 if (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
4687 else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
4688 else if(noverlaps > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
4691 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
4693 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4695 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
4697 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
4702 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
4706 //______________________________________________________________________
4707 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
4709 //Print some relevant parameters set for the analysis
4713 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4714 AliAnaCaloTrackCorrBaseClass::Print("");
4715 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
4716 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
4717 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
4718 printf("Min. N Cells =%d \n", fMinNCells) ;
4719 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
4720 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
4726 //___________________________________________________________________________________________________________________
4727 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
4728 AliVCaloCells* cells,
4729 AliVCluster * cluster,
4730 Float_t & l0, Float_t & l1,
4731 Float_t & disp, Float_t & dEta, Float_t & dPhi,
4732 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
4735 // Calculates new center of gravity in the local EMCAL-module coordinates
4736 // and tranfers into global ALICE coordinates
4737 // Calculates Dispersion and main axis
4741 AliInfo("Cluster pointer null!");
4745 Double_t eCell = 0.;
4746 Float_t fraction = 1.;
4747 Float_t recalFactor = 1.;
4755 Double_t etai = -1.;
4756 Double_t phii = -1.;
4761 Double_t etaMean = 0.;
4762 Double_t phiMean = 0.;
4764 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
4765 // and to check if the cluster is between 2 SM in eta
4767 Bool_t shared = kFALSE;
4770 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4772 //Get from the absid the supermodule, tower and eta/phi numbers
4773 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4774 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4776 //Check if there are cells of different SM
4777 if (iDigit == 0 ) iSM0 = iSupMod;
4778 else if(iSupMod!= iSM0) shared = kTRUE;
4780 //Get the cell energy, if recalibration is on, apply factors
4781 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4782 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4784 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4786 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4789 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4791 if(eCell > eCellMin) energy += eCell;
4795 //Loop on cells, get weighted parameters
4796 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4798 //Get from the absid the supermodule, tower and eta/phi numbers
4799 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4800 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4802 //Get the cell energy, if recalibration is on, apply factors
4803 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4804 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4806 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4808 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4811 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4813 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4814 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4815 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4817 if(energy > 0 && eCell > eCellMin)
4819 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4821 //correct weight, ONLY in simulation
4822 w *= (1 - fWSimu * w );
4824 etai=(Double_t)ieta;
4825 phii=(Double_t)iphi;
4832 sEta += w * etai * etai ;
4833 etaMean += w * etai ;
4834 sPhi += w * phii * phii ;
4835 phiMean += w * phii ;
4836 sEtaPhi += w * etai * phii ;
4839 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4843 //Normalize to the weight
4850 AliError(Form("Wrong weight %f\n", wtot));
4852 //Calculate dispersion
4853 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4855 //Get from the absid the supermodule, tower and eta/phi numbers
4856 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4857 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4859 //Get the cell energy, if recalibration is on, apply factors
4860 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4861 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4862 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4864 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4867 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4869 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4870 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4871 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4873 if(energy > 0 && eCell > eCellMin)
4875 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4877 //correct weight, ONLY in simulation
4878 w *= (1 - fWSimu * w );
4880 etai=(Double_t)ieta;
4881 phii=(Double_t)iphi;
4884 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
4885 dEta += w * (etai-etaMean)*(etai-etaMean) ;
4886 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
4889 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4892 //Normalize to the weigth and set shower shape parameters
4893 if (wtot > 0 && nstat > 1)
4902 sEta -= etaMean * etaMean ;
4903 sPhi -= phiMean * phiMean ;
4904 sEtaPhi -= etaMean * phiMean ;
4906 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4907 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4913 dEta = 0. ; dPhi = 0. ; disp = 0. ;
4914 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;