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 fhM02NLocMax1[i][j] = 0;
128 fhM02NLocMax2[i][j] = 0;
129 fhM02NLocMaxN[i][j] = 0;
130 fhNCellNLocMax1[i][j] = 0;
131 fhNCellNLocMax2[i][j] = 0;
132 fhNCellNLocMaxN[i][j] = 0;
133 fhM02Pi0NLocMax1[i][j] = 0;
134 fhM02EtaNLocMax1[i][j] = 0;
135 fhM02ConNLocMax1[i][j] = 0;
136 fhM02Pi0NLocMax2[i][j] = 0;
137 fhM02EtaNLocMax2[i][j] = 0;
138 fhM02ConNLocMax2[i][j] = 0;
139 fhM02Pi0NLocMaxN[i][j] = 0;
140 fhM02EtaNLocMaxN[i][j] = 0;
141 fhM02ConNLocMaxN[i][j] = 0;
143 fhMassPi0NLocMax1[i][j] = 0;
144 fhMassEtaNLocMax1[i][j] = 0;
145 fhMassConNLocMax1[i][j] = 0;
146 fhMassPi0NLocMax2[i][j] = 0;
147 fhMassEtaNLocMax2[i][j] = 0;
148 fhMassConNLocMax2[i][j] = 0;
149 fhMassPi0NLocMaxN[i][j] = 0;
150 fhMassEtaNLocMaxN[i][j] = 0;
151 fhMassConNLocMaxN[i][j] = 0;
153 fhNCellPi0NLocMax1[i][j] = 0;
154 fhNCellEtaNLocMax1[i][j] = 0;
155 fhNCellPi0NLocMax2[i][j] = 0;
156 fhNCellEtaNLocMax2[i][j] = 0;
157 fhNCellPi0NLocMaxN[i][j] = 0;
158 fhNCellEtaNLocMaxN[i][j] = 0;
160 fhAsyPi0NLocMax1[i][j] = 0;
161 fhAsyEtaNLocMax1[i][j] = 0;
162 fhAsyConNLocMax1[i][j] = 0;
163 fhAsyPi0NLocMax2[i][j] = 0;
164 fhAsyEtaNLocMax2[i][j] = 0;
165 fhAsyConNLocMax2[i][j] = 0;
166 fhAsyPi0NLocMaxN[i][j] = 0;
167 fhAsyEtaNLocMaxN[i][j] = 0;
168 fhAsyConNLocMaxN[i][j] = 0;
170 fhMassM02NLocMax1[i][j]= 0;
171 fhMassM02NLocMax2[i][j]= 0;
172 fhMassM02NLocMaxN[i][j]= 0;
173 fhMassDispEtaNLocMax1[i][j]= 0;
174 fhMassDispEtaNLocMax2[i][j]= 0;
175 fhMassDispEtaNLocMaxN[i][j]= 0;
176 fhMassDispPhiNLocMax1[i][j]= 0;
177 fhMassDispPhiNLocMax2[i][j]= 0;
178 fhMassDispPhiNLocMaxN[i][j]= 0;
179 fhMassDispAsyNLocMax1[i][j]= 0;
180 fhMassDispAsyNLocMax2[i][j]= 0;
181 fhMassDispAsyNLocMaxN[i][j]= 0;
183 fhSplitEFractionNLocMax1[i][j]=0;
184 fhSplitEFractionNLocMax2[i][j]=0;
185 fhSplitEFractionNLocMaxN[i][j]=0;
187 fhMCGenFracNLocMax1[i][j]= 0;
188 fhMCGenFracNLocMax2[i][j]= 0;
189 fhMCGenFracNLocMaxN[i][j]= 0;
191 fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
192 fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
193 fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
195 fhMCGenSplitEFracNLocMax1[i][j]= 0;
196 fhMCGenSplitEFracNLocMax2[i][j]= 0;
197 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
199 fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
200 fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
201 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
203 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
204 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
205 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
207 fhMCGenEvsSplitENLocMax1[i][j]= 0;
208 fhMCGenEvsSplitENLocMax2[i][j]= 0;
209 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
211 fhAsymNLocMax1 [i][j] = 0;
212 fhAsymNLocMax2 [i][j] = 0;
213 fhAsymNLocMaxN [i][j] = 0;
215 fhMassAfterCutsNLocMax1[i][j] = 0;
216 fhMassAfterCutsNLocMax2[i][j] = 0;
217 fhMassAfterCutsNLocMaxN[i][j] = 0;
219 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
220 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
221 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
224 for(Int_t jj = 0; jj < 4; jj++)
226 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
227 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
228 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
230 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
231 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
232 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
234 fhMCGenFracNLocMaxEbin[i][jj] = 0;
235 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
237 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
238 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
239 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
242 fhTrackMatchedDEtaNLocMax1[i] = 0;
243 fhTrackMatchedDPhiNLocMax1[i] = 0;
244 fhTrackMatchedDEtaNLocMax2[i] = 0;
245 fhTrackMatchedDPhiNLocMax2[i] = 0;
246 fhTrackMatchedDEtaNLocMaxN[i] = 0;
247 fhTrackMatchedDPhiNLocMaxN[i] = 0;
249 fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
250 fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
251 fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
252 fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
253 fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
254 fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
256 fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
257 fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
258 fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
259 fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
260 fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
261 fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
263 for(Int_t nlm = 0; nlm < 3; nlm++)
265 fhMCEM02Overlap0 [nlm][i] = 0;
266 fhMCEM02Overlap1 [nlm][i] = 0;
267 fhMCEM02OverlapN [nlm][i] = 0;
268 fhMCEM02Overlap0Match[nlm][i] = 0;
269 fhMCEM02Overlap1Match[nlm][i] = 0;
270 fhMCEM02OverlapNMatch[nlm][i] = 0;
272 fhMCEMassOverlap0 [nlm][i] = 0;
273 fhMCEMassOverlap1 [nlm][i] = 0;
274 fhMCEMassOverlapN [nlm][i] = 0;
275 fhMCEMassOverlap0Match[nlm][i] = 0;
276 fhMCEMassOverlap1Match[nlm][i] = 0;
277 fhMCEMassOverlapNMatch[nlm][i] = 0;
279 fhMCEAsymOverlap0 [nlm][i] = 0;
280 fhMCEAsymOverlap1 [nlm][i] = 0;
281 fhMCEAsymOverlapN [nlm][i] = 0;
282 fhMCEAsymOverlap0Match[nlm][i] = 0;
283 fhMCEAsymOverlap1Match[nlm][i] = 0;
284 fhMCEAsymOverlapNMatch[nlm][i] = 0;
286 fhMCENCellOverlap0 [nlm][i] = 0;
287 fhMCENCellOverlap1 [nlm][i] = 0;
288 fhMCENCellOverlapN [nlm][i] = 0;
289 fhMCENCellOverlap0Match[nlm][i] = 0;
290 fhMCENCellOverlap1Match[nlm][i] = 0;
291 fhMCENCellOverlapNMatch[nlm][i] = 0;
293 fhMCEEpriOverlap0 [nlm][i] = 0;
294 fhMCEEpriOverlap1 [nlm][i] = 0;
295 fhMCEEpriOverlapN [nlm][i] = 0;
296 fhMCEEpriOverlap0Match[nlm][i] = 0;
297 fhMCEEpriOverlap1Match[nlm][i] = 0;
298 fhMCEEpriOverlapNMatch[nlm][i] = 0;
300 fhMCESplitEFracOverlap0 [nlm][i] = 0;
301 fhMCESplitEFracOverlap1 [nlm][i] = 0;
302 fhMCESplitEFracOverlapN [nlm][i] = 0;
303 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
304 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
305 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
307 fhMCENOverlaps [nlm][i] = 0;
308 fhMCENOverlapsMatch [nlm][i] = 0;
312 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
313 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
314 fhMCPi0MassM02OverlapN [nlm][i] = 0;
315 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
316 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
317 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
321 for(Int_t i = 0; i < 2; i++)
323 fhAnglePairNLocMax1 [i] = 0;
324 fhAnglePairNLocMax2 [i] = 0;
325 fhAnglePairNLocMaxN [i] = 0;
326 fhAnglePairMassNLocMax1[i] = 0;
327 fhAnglePairMassNLocMax2[i] = 0;
328 fhAnglePairMassNLocMaxN[i] = 0;
329 fhSplitEFractionvsAsyNLocMax1[i] = 0;
330 fhSplitEFractionvsAsyNLocMax2[i] = 0;
331 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
334 for(Int_t i = 0; i < 4; i++)
336 fhMassM02NLocMax1Ebin[i] = 0 ;
337 fhMassM02NLocMax2Ebin[i] = 0 ;
338 fhMassM02NLocMaxNEbin[i] = 0 ;
340 fhMassAsyNLocMax1Ebin[i] = 0 ;
341 fhMassAsyNLocMax2Ebin[i] = 0 ;
342 fhMassAsyNLocMaxNEbin[i] = 0 ;
344 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
345 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
346 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
348 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
349 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
350 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
352 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
353 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
354 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
356 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
357 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
358 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
360 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
361 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
362 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
365 for(Int_t nlm = 0; nlm < 3; nlm++)
367 fhPi0CellE [nlm] = 0 ;
368 fhPi0CellEFrac [nlm] = 0 ;
369 fhPi0CellLogEFrac[nlm] = 0 ;
371 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
372 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
373 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
375 fhPi0CellEMaxFrac [nlm] = 0 ;
376 fhPi0CellEMax2Frac[nlm] = 0 ;
378 for(Int_t i = 0; i < 10; i++)
380 fhM02WeightPi0 [nlm][i] = 0;
381 fhM02ECellCutPi0[nlm][i] = 0;
389 //_______________________________________________________________________________________________________
390 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,
391 const Int_t mcindex, const Int_t noverlaps)
392 //Float_t mass, Float_t m02,
393 //TLorentzVector l1, TLorentzVector l2)
395 // Check origin NLM tower of the cluster, when MC gives merged pi0
397 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
399 const UInt_t nc = cluster->GetNCells();
402 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
407 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
408 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
410 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
412 // 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",
413 // nMax, noverlaps,mass,m02,
414 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
415 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
417 // // Study the mothers of cluster
418 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
419 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
421 // Int_t mclabel = cluster->GetLabels()[ilab];
424 // Int_t mpdg = -999999;
425 // Int_t mstatus = -1;
426 // Int_t grandLabel = -1;
427 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
429 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
430 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
432 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
434 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
436 // Int_t newLabel = -1;
437 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
438 // 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",
439 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
440 // grandLabel = newLabel;
446 // printf("Cells in cluster %d\n",cluster->GetNCells() );
447 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
449 // Int_t absIdCell = cluster->GetCellAbsId(icell);
450 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
451 // GetReader()->RemapMCLabelForAODs(mcLabel);
452 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
453 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
455 // 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);
461 //If only one maxima, consider all the towers in the cluster
464 for (UInt_t icell = 0; icell < nc; icell++ )
466 list [icell] = cluster->GetCellAbsId(icell);
467 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
471 Int_t nmaxima = nMax;
472 if(nMax==1) nmaxima = nc ;
474 //Find highest energy Local Maxima Towers
479 for(Int_t i = 0; i < nmaxima; i++)
481 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
488 //Find second highest
489 for(Int_t i = 0; i < nmaxima; i++)
491 if(i==imax) continue;
493 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
503 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
504 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
506 //---------------------------------------------------------
507 //---------------------------------------------------------
508 // Compare ancestors of all local maxima at cell MC level
509 //---------------------------------------------------------
510 //---------------------------------------------------------
512 // Check that the highest mc label and the max cluster label are the same
513 Int_t mcLabelMax = -1 ;
516 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
517 GetReader()->RemapMCLabelForAODs(mcLabelMax);
520 Int_t mcLabelMax2 = -1 ;
523 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
524 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
527 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
528 Bool_t matchHighLMAndHighMC = kFALSE;
530 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
532 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
534 matchHighLMAndHighMC = kTRUE;
535 //printf("\t *** MATCH cluster and LM maximum ***\n");
539 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
540 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
542 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
543 matchHighLMAndHighMC = kTRUE;
547 //printf("\t \t *** NO MATCH***\n");
548 matchHighLMAndHighMC = kFALSE;
552 // Compare the common ancestors of the 2 highest energy local maxima
553 Int_t ancPDG = 0, ancStatus = -1;
554 TLorentzVector momentum; TVector3 prodVertex;
556 Bool_t high = kFALSE;
559 // // print maxima origin
560 // for(Int_t i = 0; i < nMax; i++)
562 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
563 // GetReader()->RemapMCLabelForAODs(mcLabel1);
565 // Bool_t ok =kFALSE,gok = kFALSE;
566 // Int_t pdg = -22222, status = -1;
567 // Int_t gpdg = -22222, gstatus = -1;
568 // Int_t ggpdg = -22222, ggstatus = -1;
569 // Int_t gLabel = -1, ggLabel = -1;
570 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
571 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
572 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
573 // 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",
574 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
577 for(Int_t i = 0; i < nmaxima-1; i++)
579 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
580 GetReader()->RemapMCLabelForAODs(mcLabel1);
582 for(Int_t j = i+1; j < nmaxima; j++)
584 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
585 GetReader()->RemapMCLabelForAODs(mcLabel2);
587 if(mcLabel1 < 0 || mcLabel2 < 0 )
589 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
593 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
594 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
597 if((i==imax && j==imax2) || (j==imax && i==imax2))
602 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
604 // If both bits are set, it could be that one of the maxima had a conversion
605 // reset the bit in this case
608 //printf("\t Reset low bit\n");
614 Int_t pdg = -22222, status = -1;
615 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
616 //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);
621 Float_t en = cluster->E();
623 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
624 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
628 if(matchHighLMAndHighMC)
630 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
631 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
632 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
633 else fhMCPi0NoneNLMPair->Fill(en,nMax);
637 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
638 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
639 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
640 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
645 if(matchHighLMAndHighMC)
647 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
648 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
649 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
650 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
654 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
655 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
656 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
657 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
661 //----------------------------------------------------------------------
662 //----------------------------------------------------------------------
663 // Compare MC decay photon projection to cell location and Local Maxima
664 //----------------------------------------------------------------------
665 //----------------------------------------------------------------------
667 // Get the mother pi0
670 Int_t pdg = -22222, status = -1;
673 Int_t label = cluster->GetLabel();
674 TLorentzVector pi0Kine;
676 while( pdg!=111 && label>=0 )
678 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
681 if(pdg!=111 || label < 0)
683 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
687 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
691 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
695 // Get daughter photon kinematics
696 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
697 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
698 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
699 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
701 if(pdg1!=22 || pdg0 != 22)
703 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
707 // In what cells did the photons hit
708 Float_t eta0 = photon0Kine.Eta();
709 Float_t eta1 = photon1Kine.Eta();
711 Float_t phi0 = photon0Kine.Phi();
712 Float_t phi1 = photon1Kine.Phi();
714 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
716 // 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",
717 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
718 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
719 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
721 // TLorentzVector momclus;
722 // cluster->GetMomentum(momclus,GetVertex(0));
723 // 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());
726 if(phi0 < 0 ) phi0+=TMath::TwoPi();
727 if(phi1 < 0 ) phi1+=TMath::TwoPi();
729 Int_t absId0=-1, absId1=-1;
730 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
731 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
733 if(absId1 < 0 || absId1 < 0)
735 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
739 //-----------------------------------------------
740 // Check that the 2 photons hit the Local Maxima
741 //-----------------------------------------------
744 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
746 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
747 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
749 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
750 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
751 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
752 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
754 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
755 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
757 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
758 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
759 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
760 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
762 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
763 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
767 Bool_t match0 = kFALSE;
768 Bool_t match1 = kFALSE;
771 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
773 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
774 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
776 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
777 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
780 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
782 // If one or the 2 not matched, check with the other MC labels
783 // only in case there was a conversion
785 Int_t absId0second = -1;
786 Int_t absId1second = -1;
787 Int_t secLabel0 = -1;
788 Int_t secLabel1 = -1;
792 Int_t secpdg = -999999;
793 Int_t secstatus = -1;
794 Int_t secgrandLabel = -1;
796 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
797 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
799 if((!match0 || !match1) && mcindex == kmcPi0Conv)
801 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
803 Int_t mclabel = cluster->GetLabels()[ilab];
805 //printf("Check label %d - %d\n",ilab,mclabel);
807 if(mclabel == label0 || mclabel == label1)
809 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
810 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
811 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
815 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
817 // match mc label and parent photon
818 Int_t tmplabel = mclabel;
819 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
821 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
823 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
825 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
827 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
828 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
829 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
832 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
834 tmplabel = secgrandLabel;
838 // Get the position of the found secondaries mother
839 if(!match0 && secLabel0 > 0)
841 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
843 //Float_t eta = mother.Eta();
844 //Float_t phi = mother.Phi();
845 //if(phi < 0 ) phi+=TMath::TwoPi();
846 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
848 //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());
850 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
851 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
854 if(!match1 && secLabel1 > 0)
856 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
858 //Float_t eta = mother.Eta();
859 //Float_t phi = mother.Phi();
860 //if(phi < 0 ) phi+=TMath::TwoPi();
861 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
863 //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());
865 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
866 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
869 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
873 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
874 if( match0 && match1 )
876 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
877 // printf("a) Both Photons hit local maxima \n");
879 if(!noverlaps)fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
880 else fhMCPi0DecayPhotonHitHighLMOverlap->Fill(en,nMax);
885 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
886 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
888 //---------------------------------------------
889 // Check the adjacent cells to the local maxima
890 //---------------------------------------------
894 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) match0 = kTRUE;
895 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
896 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) match0 = kTRUE;
897 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
902 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) match1 = kTRUE;
903 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
905 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) match1 = kTRUE;
906 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
909 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
913 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
914 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
916 if(!noverlaps) fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
917 else fhMCPi0DecayPhotonAdjHighLMOverlap->Fill(en,nMax);
923 // Decay photon cells are adjacent?
925 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
927 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
928 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
929 if(!noverlaps) fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
930 else fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
935 //--------------------
936 // Other Local maxima
937 //--------------------
939 Bool_t matchMCHitOtherLM = kFALSE;
942 for(Int_t i = 0; i < nmaxima; i++)
944 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
950 for(Int_t i = 0; i < nmaxima; i++)
952 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
956 if(matchMCHitOtherLM)
958 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
959 // printf("d) One Photon hits a local maxima, the other another not high \n");
961 if(!noverlaps) fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
962 else fhMCPi0DecayPhotonHitOtherLMOverlap->Fill(en,nMax);
967 // Adjacent to other maxima
969 Bool_t adjacentOther1 = kFALSE;
972 for(Int_t i = 0; i < nmaxima; i++)
974 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
975 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
977 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
979 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
981 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
985 Bool_t adjacentOther0 = kFALSE;
988 for(Int_t i = 0; i < nmaxima; i++)
990 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
991 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
993 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
995 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
997 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1001 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1004 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1005 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1007 if(!noverlaps) fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1008 else fhMCPi0DecayPhotonAdjOtherLMOverlap->Fill(en,nMax);
1013 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1014 // printf("f) No hit found \n");
1015 if(!noverlaps) fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1016 else fhMCPi0DecayPhotonHitNoLMOverlap->Fill(en,nMax);
1020 //___________________________________________________________________________________________________________________
1021 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched,
1022 const Float_t en, const Float_t angle, const Float_t mass)
1024 // Fill histograms related to opening angle
1028 fhAnglePairNLocMax1[matched]->Fill(en,angle);
1029 if( en > fHistoECut ) fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
1033 fhAnglePairNLocMax2[matched]->Fill(en,angle);
1034 if( en > fHistoECut ) fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
1038 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
1039 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
1044 //__________________________________________________________________________________________________________________________________________
1045 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1046 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1048 // Fill some histograms integrating in few energy bins
1052 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1053 if(IsDataMC())fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1055 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1056 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1060 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1061 if(IsDataMC())fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1063 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1064 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1068 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1069 if(IsDataMC())fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1071 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1072 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1077 //________________________________________________________________________________________________________________________
1078 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1079 const Int_t nMax, const Float_t mass, const Float_t l0,
1080 const Float_t eta, const Float_t phi,
1081 const Bool_t matched, const Int_t mcindex)
1083 // Fill histograms for clusters before any selection after spliting
1085 Float_t splitFrac = (e1+e2)/en;
1088 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1090 fhNLocMax[0][matched]->Fill(en,nMax);
1091 if(IsDataMC()) fhNLocMax[mcindex][matched]->Fill(en,nMax);
1095 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1096 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1100 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1101 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1106 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1107 if( IsDataMC() ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1109 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1110 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1113 else if( nMax == 2 )
1115 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1116 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1120 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1121 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1126 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1127 if( IsDataMC() ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1129 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1130 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1133 else if( nMax >= 3 )
1135 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1136 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1140 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1141 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1147 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1148 if( IsDataMC() ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1150 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1151 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1158 //________________________________________________________________________________________________________________________
1159 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1160 const Float_t e1, const Float_t e2,
1161 const Int_t nMax, const Float_t mass, const Float_t l0,
1162 const Bool_t matched, const Int_t mcindex)
1164 // Fill histograms for clusters passing the first M02 selection
1166 Float_t efrac = eprim/en;
1167 Float_t efracSplit = 0;
1168 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1170 Float_t splitFrac = (e1+e2)/en;
1173 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1175 Int_t inlm = nMax-1;
1176 if(inlm > 2) inlm = 2;
1177 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1179 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1180 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1181 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1182 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1184 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1188 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1189 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1194 fhMassNLocMax1[0][matched]->Fill(en,mass );
1195 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1197 // Effect of cuts in mass histograms
1199 if(!matched && m02OK && m02On )
1201 fhMassM02CutNLocMax1->Fill(en,mass);
1202 fhAsymM02CutNLocMax1->Fill(en,asym );
1203 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1206 if((m02OK && asyOK) && (asyOn || m02On))
1208 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1209 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1211 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1213 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1214 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1220 fhMassNLocMax2[0][matched]->Fill(en,mass );
1221 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1223 // Effect of cuts in mass histograms
1225 if(!matched && m02OK && m02On )
1227 fhMassM02CutNLocMax2->Fill(en,mass);
1228 fhAsymM02CutNLocMax2->Fill(en,asym );
1229 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1232 if((m02OK && asyOK) && (asyOn || m02On))
1234 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1235 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1237 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1239 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1240 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1246 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1247 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1249 // Effect of cuts in mass histograms
1250 if(!matched && m02OK && m02On )
1252 fhMassM02CutNLocMaxN->Fill(en,mass);
1253 fhAsymM02CutNLocMaxN->Fill(en,asym );
1254 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1257 if((m02OK && asyOK) && (asyOn || m02On))
1259 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1260 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1262 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1264 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1265 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1274 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1275 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1277 if((m02OK && asyOK) && (asyOn || m02On))
1279 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1280 if(splitFrac > splitFracMin)
1281 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1286 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1287 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1289 if((m02OK && asyOK) && (asyOn || m02On))
1291 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1292 if(splitFrac >splitFracMin)
1293 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1298 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1299 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1301 if((m02OK && asyOK) && (asyOn || m02On))
1303 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1304 if(splitFrac > splitFracMin )
1305 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1308 }//Work with MC truth
1312 //________________________________________________________________________________________________________________________
1313 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1314 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1315 const Float_t mass, const Float_t l0,
1316 const Float_t eta, const Float_t phi,
1317 const Bool_t matched, const Int_t mcindex)
1319 // Fill histograms for clusters passing the pi0 selection
1322 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1326 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1327 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1328 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1329 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1333 if(fFillHighMultHisto)
1335 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1336 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1338 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1339 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1344 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1345 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1346 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1347 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1351 if(fFillHighMultHisto)
1353 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1354 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1356 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1357 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1362 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1363 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1364 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1365 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1369 if(fFillHighMultHisto)
1371 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1372 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1374 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1375 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1383 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1384 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1385 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1386 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1391 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1392 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1393 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1394 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1398 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1399 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1400 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1401 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1403 }//Work with MC truth
1406 //________________________________________________________________________________________________________________________
1407 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1408 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1409 const Float_t mass, const Float_t l0,
1410 const Float_t eta, const Float_t phi,
1411 const Bool_t matched, const Int_t mcindex)
1413 // Fill histograms for clusters passing the eta selection
1416 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1420 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1421 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1422 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1423 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1427 if(fFillHighMultHisto)
1429 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1430 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1432 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1433 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1438 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
1439 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
1440 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
1441 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
1445 if(fFillHighMultHisto)
1447 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
1448 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
1450 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
1451 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1456 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
1457 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
1458 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
1459 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
1463 if(fFillHighMultHisto)
1465 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
1466 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1468 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
1469 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1477 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
1478 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
1479 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
1480 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
1484 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
1485 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
1486 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
1487 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
1492 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1493 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1494 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1495 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1497 }//Work with MC truth
1501 //_____________________________________________________________________________________________________________________
1502 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
1503 const Float_t mass, const Float_t l0,
1504 const Bool_t matched, const Int_t mcindex)
1506 // Fill histograms for clusters passing the photon selection
1510 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
1511 fhMassConNLocMax1[0][matched]->Fill(en,mass);
1512 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
1516 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
1517 fhMassConNLocMax2[0][matched]->Fill(en,mass);
1518 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
1522 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
1523 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
1524 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
1531 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
1532 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
1533 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
1537 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
1538 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
1539 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
1543 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
1544 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
1545 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
1548 }//Work with MC truth
1551 //_____________________________________________________________________________________________________________________
1552 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
1553 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
1554 const Float_t l0, const Float_t mass,
1555 const Int_t nMax, const Bool_t matched,
1556 const Float_t splitFrac, const Float_t asym,
1557 const Float_t eprim, const Float_t asymGen)
1559 // Fill histograms needing some MC input
1561 Float_t efrac = eprim/en;
1562 Float_t efracSplit = 0;
1563 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1565 //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",
1566 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1568 if(ebin >= 0 && fFillEbinHisto)
1570 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1571 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1576 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1577 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
1578 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1582 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
1583 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1586 if( en > fHistoECut )
1588 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1590 if(!matched && ebin >= 0 && fFillEbinHisto)
1592 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1593 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1595 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1596 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
1602 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1603 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1604 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1608 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
1609 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1612 if( en > fHistoECut )
1614 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1616 if(!matched && ebin >= 0 && fFillEbinHisto)
1618 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1619 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1621 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1622 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
1629 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1630 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1631 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1635 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
1636 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
1639 if( en > fHistoECut )
1641 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
1643 if(!matched && ebin >= 0 && fFillEbinHisto)
1645 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1646 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1648 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
1649 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
1655 //__________________________________________________________________________________________________________________________________________________
1656 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
1657 const Int_t nc, const Float_t mass, const Float_t l0,
1658 const Float_t asym, const Float_t splitFrac,
1659 const Int_t inlm, const Int_t ebin, const Bool_t matched,
1660 const Int_t mcindex, const Int_t noverlaps)
1662 // Fill histograms for MC Overlaps
1664 //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);
1666 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
1670 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
1674 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
1675 fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
1676 fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
1677 fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1678 fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
1679 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
1680 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
1682 else if(noverlaps == 1)
1684 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
1685 fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
1686 fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
1687 fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1688 fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
1689 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
1690 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
1692 else if(noverlaps > 1)
1694 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
1695 fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
1696 fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
1697 fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1698 fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
1699 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1700 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
1703 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
1705 else if(fFillTMHisto)
1707 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
1711 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
1712 fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
1713 fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
1714 fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1715 fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
1716 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
1717 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
1719 else if(noverlaps == 1)
1721 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
1722 fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
1723 fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
1724 fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1725 fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
1726 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
1727 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
1729 else if(noverlaps > 1)
1731 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
1732 fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
1733 fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
1734 fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
1735 fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
1736 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1737 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
1740 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
1745 //__________________________________________________________________________________________________
1746 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
1747 const Bool_t matched, const Int_t mcindex,
1748 const Float_t mass , const Float_t l0)
1751 // Fill optional histograms with more SS parameters
1755 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
1756 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
1758 if (mcindex==kmcPi0 && !matched)
1760 if( energy > fHistoECut)
1762 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
1763 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
1767 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
1768 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
1772 else if( nMax == 2 )
1774 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
1775 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
1778 if (mcindex==kmcPi0 && !matched)
1780 if( energy > fHistoECut)
1782 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
1783 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
1787 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
1788 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
1792 else if( nMax >= 3 )
1794 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
1795 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
1797 if (mcindex==kmcPi0 && !matched)
1799 if( energy > fHistoECut)
1801 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
1802 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
1806 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
1807 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
1813 //______________________________________________________________________________________________________
1814 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
1815 const Bool_t matched, const Int_t mcindex,
1816 const Float_t mass , const Int_t ebin)
1818 // Fill optional histograms with more SS parameters
1820 Float_t en = cluster->E();
1822 // Get more Shower Shape parameters
1823 Float_t ll0 = 0., ll1 = 0.;
1824 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
1825 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1827 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
1828 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
1830 Float_t dispAsy = -1;
1831 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
1835 if( en > fHistoECut )
1837 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
1838 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
1839 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
1843 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
1844 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
1845 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
1849 if(!matched && ebin >= 0 && fFillEbinHisto)
1851 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
1852 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
1853 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
1856 else if( nMax == 2 )
1858 if( en > fHistoECut )
1860 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
1861 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
1862 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
1866 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
1867 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
1868 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
1872 if(!matched && ebin >= 0 && fFillEbinHisto)
1874 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
1875 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
1876 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
1880 else if( nMax >= 3 )
1882 if( en > fHistoECut )
1884 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
1885 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
1886 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
1890 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
1891 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
1892 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
1896 if(!matched && ebin >= 0 && fFillEbinHisto)
1898 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
1899 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
1900 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
1907 //__________________________________________________________________________________________________
1908 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
1909 const Int_t absId1, const Int_t absId2)
1911 // Calculate weights and fill histograms
1913 AliVCaloCells* cells = 0;
1914 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
1915 else cells = GetPHOSCells();
1917 // First recalculate energy in case non linearity was applied
1919 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1922 Int_t id = clus->GetCellsAbsId()[ipos];
1924 //Recalibrate cell energy if needed
1925 Float_t amp = cells->GetCellAmplitude(id);
1926 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1934 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
1938 //Get amplitude of main local maxima, recalibrate if needed
1939 Float_t amp1 = cells->GetCellAmplitude(absId1);
1940 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
1941 Float_t amp2 = cells->GetCellAmplitude(absId2);
1942 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
1944 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
1945 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
1947 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
1948 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
1949 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
1951 //Get the ratio and log ratio to all cells in cluster
1952 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1954 Int_t id = clus->GetCellsAbsId()[ipos];
1956 //Recalibrate cell energy if needed
1957 Float_t amp = cells->GetCellAmplitude(id);
1958 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1960 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
1961 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
1962 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
1964 if (id!=absId1 && id!=absId2)
1966 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
1967 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
1972 //Recalculate shower shape for different W0
1973 if(fCalorimeter=="EMCAL")
1975 Float_t l0org = clus->GetM02();
1976 Float_t l1org = clus->GetM20();
1977 Float_t dorg = clus->GetDispersion();
1978 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
1980 for(Int_t iw = 0; iw < fSSWeightN; iw++)
1982 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
1983 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
1985 Float_t l0 = 0., l1 = 0.;
1986 Float_t disp = 0., dEta = 0., dPhi = 0.;
1987 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1989 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
1990 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
1993 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
1997 // Set the original values back
1998 clus->SetM02(l0org);
1999 clus->SetM20(l1org);
2000 clus->SetDispersion(dorg);
2001 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2003 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2005 Float_t l0 = 0., l1 = 0.;
2006 Float_t disp = 0., dEta = 0., dPhi = 0.;
2007 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2009 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2010 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2012 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2013 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2020 //________________________________________________________________________________________
2021 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2023 const Int_t mcindex)
2025 // Fill histograms related to track matching
2027 Float_t dZ = cluster->GetTrackDz();
2028 Float_t dR = cluster->GetTrackDx();
2029 Float_t en = cluster->E();
2031 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2033 dR = 2000., dZ = 2000.;
2034 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2037 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2039 if(TMath::Abs(dR) < 999)
2041 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2042 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2043 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2047 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2048 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2049 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2052 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2054 Bool_t positive = kFALSE;
2055 if(track) positive = (track->Charge()>0);
2061 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2062 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2063 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2067 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2068 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2069 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2074 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2075 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2076 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2080 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2081 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2082 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2091 //_______________________________________________________________
2092 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2094 //Save parameters used for analysis
2095 TString parList ; //this will be list of parameters used for this analysis.
2096 const Int_t buffersize = 255;
2097 char onePar[buffersize] ;
2099 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2102 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2104 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2106 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2108 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2110 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2112 if(fFillSSWeightHisto)
2114 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2118 return new TObjString(parList) ;
2122 //________________________________________________________________
2123 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2125 // Create histograms to be saved in output file and
2126 // store them in outputContainer
2127 TList * outputContainer = new TList() ;
2128 outputContainer->SetName("InsideClusterHistos") ;
2130 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2131 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2132 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2133 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2134 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2135 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2137 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2138 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2139 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2140 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2141 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2142 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2144 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2145 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2146 Bool_t splitOn = kFALSE;
2147 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2148 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2149 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2151 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron","#pi^{0} (#gamma->e^{#pm})"};
2152 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron","Pi0Conv"};
2156 if(IsDataMC()) n = 8;
2158 Int_t nMaxBins = 10;
2160 TString sMatched[] = {"","Matched"};
2163 if(!fFillTMHisto) nMatched = 1;
2165 for(Int_t i = 0; i < n; i++)
2167 for(Int_t j = 0; j < nMatched; j++)
2170 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2171 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2172 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2173 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2174 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2175 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2177 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2178 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2179 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2180 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2181 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2182 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2184 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2185 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2186 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2187 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2188 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2189 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2191 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2192 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2193 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2194 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2195 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2196 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2198 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2199 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2200 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2201 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2202 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2203 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2205 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2206 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2207 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2208 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2209 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2210 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2212 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2213 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2214 nptbins,ptmin,ptmax,200,-1,1);
2215 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2216 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2217 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2219 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2220 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2221 nptbins,ptmin,ptmax,200,-1,1);
2222 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2223 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2224 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2226 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2227 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2228 nptbins,ptmin,ptmax,200,-1,1);
2229 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2230 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2231 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2233 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2234 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2235 nptbins,ptmin,ptmax,120,0,1.2);
2236 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2237 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2238 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2240 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2241 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2242 nptbins,ptmin,ptmax,120,0,1.2);
2243 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2244 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2245 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2247 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2248 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2249 nptbins,ptmin,ptmax,120,0,1.2);
2250 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2251 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2252 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
2255 if(i==0 && j==0 && m02On)
2259 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
2260 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2261 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
2262 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
2263 outputContainer->Add(fhMassSplitECutNLocMax1) ;
2265 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2266 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2267 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
2268 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
2269 outputContainer->Add(fhMassSplitECutNLocMax2) ;
2271 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2272 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2273 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2274 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
2275 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
2278 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2279 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2280 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
2281 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
2282 outputContainer->Add(fhMassM02CutNLocMax1) ;
2284 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2285 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2286 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
2287 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
2288 outputContainer->Add(fhMassM02CutNLocMax2) ;
2290 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2291 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2292 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2293 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
2294 outputContainer->Add(fhMassM02CutNLocMaxN) ;
2296 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2297 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2298 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
2299 outputContainer->Add(fhAsymM02CutNLocMax1) ;
2301 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2302 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2303 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
2304 outputContainer->Add(fhAsymM02CutNLocMax2) ;
2306 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2307 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2308 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
2309 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
2314 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2315 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2316 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2317 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2318 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
2319 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
2321 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2322 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2323 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2324 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2325 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
2326 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
2329 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2330 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2331 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2332 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2333 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2334 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
2336 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2337 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()),
2338 nptbins,ptmin,ptmax,120,0,1.2);
2339 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2340 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2341 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
2343 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2344 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()),
2345 nptbins,ptmin,ptmax,120,0,1.2);
2346 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2347 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2348 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
2350 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2351 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()),
2352 nptbins,ptmin,ptmax,120,0,1.2);
2353 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2354 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2355 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
2358 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2359 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2360 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2361 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2362 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
2363 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
2365 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2366 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2367 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2368 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2369 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
2370 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
2372 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2373 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2374 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2375 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2376 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
2377 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
2379 if(fFillSSExtraHisto)
2381 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2382 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2383 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2384 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2385 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2386 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
2388 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2389 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2390 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2391 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2392 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2393 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
2395 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2396 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2397 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2398 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2399 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2400 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
2402 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2403 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2404 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2405 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2406 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2407 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
2409 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2410 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2411 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2412 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2413 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2414 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
2416 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2417 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2418 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2419 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2420 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2421 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
2423 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2424 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()),
2425 200,-1,1,mbins,mmin,mmax);
2426 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2427 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2428 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
2430 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2431 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()),
2432 200,-1,1,mbins,mmin,mmax);
2433 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2434 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2435 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
2437 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2438 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()),
2439 200,-1,1,mbins,mmin,mmax);
2440 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2441 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2442 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
2445 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2446 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2447 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2448 fhNLocMax[i][j] ->SetYTitle("N maxima");
2449 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2450 outputContainer->Add(fhNLocMax[i][j]) ;
2454 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2455 Form("Number of local maxima in cluster %s, M02 cut",ptype[i].Data()),
2456 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2457 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2458 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2459 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2462 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
2464 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2465 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2466 nptbins,ptmin,ptmax,200,0,2);
2467 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2468 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2469 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
2471 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2472 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2473 nptbins,ptmin,ptmax,200,0,2);
2474 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2475 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2476 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
2478 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2479 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2480 nptbins,ptmin,ptmax,200,0,2);
2481 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2482 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2483 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
2485 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2486 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2487 nptbins,ptmin,ptmax,200,0,2);
2488 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2489 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2490 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
2492 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2493 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2494 nptbins,ptmin,ptmax,200,0,2);
2495 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2496 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2497 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
2499 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2500 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2501 nptbins,ptmin,ptmax,200,0,2);
2502 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2503 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2504 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
2507 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2508 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2509 nptbins,ptmin,ptmax,200,0,2);
2510 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2511 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2512 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
2514 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2515 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2516 nptbins,ptmin,ptmax,200,0,2);
2517 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2518 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2519 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
2521 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2522 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2523 nptbins,ptmin,ptmax,200,0,2);
2524 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2525 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2526 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
2528 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2529 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2530 nptbins,ptmin,ptmax,200,0,2);
2531 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2532 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2533 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
2535 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2536 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2537 nptbins,ptmin,ptmax,200,0,2);
2538 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2539 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2540 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
2542 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2543 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2544 nptbins,ptmin,ptmax,200,0,2);
2545 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2546 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2547 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
2549 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2550 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()),
2552 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2553 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2554 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
2556 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2557 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()),
2559 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2560 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2561 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
2564 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2565 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()),
2567 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2568 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2569 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
2572 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2573 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2574 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2575 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2576 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
2577 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
2579 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2580 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2581 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2582 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2583 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
2584 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
2587 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2588 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2589 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2590 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2591 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
2592 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
2598 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2599 Form("n cells vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2600 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2601 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2602 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2603 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2605 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2606 Form("n cells vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2607 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2608 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2609 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2610 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2613 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2614 Form("n cells vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2615 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2616 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2617 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2618 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2621 // Histograms after cluster identification
2626 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2627 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2628 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2629 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2630 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2631 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
2633 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2634 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2635 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2636 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2637 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2638 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
2640 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2641 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2642 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2643 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2644 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2645 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
2647 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2648 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2649 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2650 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2651 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2652 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
2654 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2655 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
2656 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2657 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2658 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2659 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
2661 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2662 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2663 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2664 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2665 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2666 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
2668 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2669 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2670 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2671 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
2672 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2673 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
2675 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2676 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2677 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2678 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
2679 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2680 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
2682 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2683 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2684 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2685 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
2686 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2687 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
2691 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2692 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2693 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2694 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
2695 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2696 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
2698 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2699 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2700 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2701 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
2702 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2703 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
2705 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2706 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2707 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2708 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
2709 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2710 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
2717 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2718 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2719 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2720 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2721 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2722 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
2725 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2726 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2727 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2728 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2729 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2730 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
2732 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2733 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2734 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2735 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2736 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2737 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
2739 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2740 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2741 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2742 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2743 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2744 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
2746 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2747 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2748 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2749 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2750 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2751 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
2753 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2754 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2755 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2756 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2757 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2758 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
2760 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2761 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2762 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2763 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
2764 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2765 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
2767 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2768 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2769 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2770 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
2771 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2772 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
2774 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2775 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2776 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2777 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2778 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2779 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
2783 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2784 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2785 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2786 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
2787 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2788 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
2790 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2791 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2792 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2793 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
2794 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2795 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
2797 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2798 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2799 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2800 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
2801 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2802 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
2807 if(fFillIdConvHisto)
2809 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2810 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2811 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2812 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2813 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2814 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
2816 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2817 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2818 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2819 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2820 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2821 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
2823 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2824 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2825 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2826 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2827 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2828 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
2831 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2832 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2833 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2834 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2835 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2836 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
2838 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2839 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2840 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2841 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2842 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2843 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
2845 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2846 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2847 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2848 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2849 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2850 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
2852 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2853 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2854 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2855 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
2856 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2857 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
2859 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2860 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2861 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2862 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
2863 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2864 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
2866 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2867 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2868 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2869 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2870 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2871 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
2875 } // matched, not matched
2879 for(Int_t j = 0; j < 4; j++)
2882 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
2883 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2884 120,0,1.2,mbins,mmin,mmax);
2885 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2886 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2887 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
2889 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
2890 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2891 120,0,1.2,mbins,mmin,mmax);
2892 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2893 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2894 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
2896 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
2897 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2898 120,0,1.2,mbins,mmin,mmax);
2899 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2900 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2901 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
2903 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
2905 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
2906 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
2907 200,0,2,nMaxBins,0,nMaxBins);
2908 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
2909 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2910 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
2912 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
2913 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
2914 200,0,2,nMaxBins,0,nMaxBins);
2915 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
2916 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
2917 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
2919 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2920 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
2921 200,0,2,mbins,mmin,mmax);
2922 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2923 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2924 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
2926 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2927 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2928 200,0,2,mbins,mmin,mmax);
2929 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2930 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2931 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
2933 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2934 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2935 200,0,2,mbins,mmin,mmax);
2936 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2937 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2938 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
2940 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2941 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
2942 200,0,2,ssbins,ssmin,ssmax);
2943 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2944 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2945 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
2947 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2948 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
2949 200,0,2,ssbins,ssmin,ssmax);
2950 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2951 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2952 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
2954 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2955 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
2956 200,0,2,ssbins,ssmin,ssmax);
2957 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2958 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2959 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
2963 } // MC particle list
2965 if(fFillHighMultHisto)
2969 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
2970 "E vs Centrality, selected pi0 cluster with NLM=1",
2971 nptbins,ptmin,ptmax,100,0,100);
2972 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
2973 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
2974 outputContainer->Add(fhCentralityPi0NLocMax1) ;
2976 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
2977 "E vs Centrality, selected pi0 cluster with NLM=2",
2978 nptbins,ptmin,ptmax,100,0,100);
2979 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
2980 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
2981 outputContainer->Add(fhCentralityPi0NLocMax2) ;
2983 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
2984 "E vs Centrality, selected pi0 cluster with NLM>1",
2985 nptbins,ptmin,ptmax,100,0,100);
2986 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
2987 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
2988 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
2992 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
2993 "E vs Centrality, selected pi0 cluster with NLM=1",
2994 nptbins,ptmin,ptmax,100,0,100);
2995 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
2996 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
2997 outputContainer->Add(fhCentralityEtaNLocMax1) ;
2999 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
3000 "E vs Centrality, selected pi0 cluster with NLM=2",
3001 nptbins,ptmin,ptmax,100,0,100);
3002 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
3003 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
3004 outputContainer->Add(fhCentralityEtaNLocMax2) ;
3006 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
3007 "E vs Centrality, selected pi0 cluster with NLM>1",
3008 nptbins,ptmin,ptmax,100,0,100);
3009 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
3010 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
3011 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3014 // E vs Event plane angle
3016 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3017 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3018 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3019 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3020 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3022 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3023 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3024 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3025 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3026 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3028 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3029 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3030 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3031 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3032 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3036 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3037 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3038 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3039 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3040 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3042 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3043 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3044 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3045 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3046 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3048 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3049 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3050 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3051 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3052 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3058 for(Int_t i = 0; i < 4; i++)
3060 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3061 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3062 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3063 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3064 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3065 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3067 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3068 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3069 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3070 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3071 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3072 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3074 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3075 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3076 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3077 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3078 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3079 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3082 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3083 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
3084 200,-1,1,mbins,mmin,mmax);
3085 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3086 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3087 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3089 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3090 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
3091 200,-1,1,mbins,mmin,mmax);
3092 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3093 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3094 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3096 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3097 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
3098 200,-1,1,mbins,mmin,mmax);
3099 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3100 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3101 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3104 if(IsDataMC() && fFillMCHisto)
3106 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3107 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3108 ssbins,ssmin,ssmax,100,0,1);
3109 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3110 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3111 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3113 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3114 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3115 ssbins,ssmin,ssmax,100,0,1);
3116 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3117 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3118 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3120 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3121 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3122 ssbins,ssmin,ssmax,100,0,1);
3123 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3124 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3125 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3128 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3129 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
3131 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3132 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3133 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3135 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3136 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
3138 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3139 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3140 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3142 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3143 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
3145 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3146 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3147 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3150 if(fFillSSExtraHisto)
3152 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3153 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3154 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3155 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3156 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3157 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3159 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3160 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3161 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3162 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3163 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3164 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3166 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3167 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
3168 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3169 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3170 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3171 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3173 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3174 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3175 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3176 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3177 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3178 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3180 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3181 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3182 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3183 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3184 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3185 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3187 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3188 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
3189 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3190 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3191 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3192 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3194 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3195 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),
3196 200,-1,1,mbins,mmin,mmax);
3197 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3198 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3199 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3201 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3202 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),
3203 200,-1,1,mbins,mmin,mmax);
3204 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3205 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3206 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3208 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3209 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),
3210 200,-1,1,mbins,mmin,mmax);
3211 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3212 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3213 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3218 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3220 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3221 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3222 nptbins,ptmin,ptmax,200,0,2);
3223 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3224 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3225 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3227 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3228 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3229 nptbins,ptmin,ptmax,200,0,2);
3230 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3231 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3232 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3235 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3236 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3237 nptbins,ptmin,ptmax,200,0,2);
3238 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3239 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3240 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3242 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3243 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3244 nptbins,ptmin,ptmax,200,0,2);
3245 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3246 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3247 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3249 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3250 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3251 nptbins,ptmin,ptmax,200,0,2);
3252 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3253 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3254 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3257 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3258 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3259 nptbins,ptmin,ptmax,200,0,2);
3260 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3261 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3262 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
3266 if(fFillTMResidualHisto && fFillTMHisto)
3268 for(Int_t i = 0; i < n; i++)
3271 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
3272 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
3273 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3274 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3275 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
3276 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3278 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
3279 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
3280 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3281 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3282 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
3283 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3285 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
3286 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
3288 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
3289 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
3290 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3291 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3292 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
3293 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3295 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
3296 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
3297 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3298 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3299 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
3300 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3302 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
3303 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
3305 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
3306 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
3307 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3308 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3309 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
3310 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3312 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
3313 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
3314 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3315 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3316 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
3317 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3319 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
3320 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
3322 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
3323 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
3324 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3325 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3326 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
3327 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3329 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
3330 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
3331 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3332 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3333 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
3334 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3336 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
3337 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
3339 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
3340 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
3341 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3342 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3343 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
3344 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3346 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
3347 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
3348 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3349 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3350 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
3351 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3353 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
3354 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
3356 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
3357 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
3358 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3359 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3360 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
3361 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3363 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
3364 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
3365 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3366 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3367 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
3368 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3370 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
3371 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
3373 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
3374 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
3375 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3376 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3377 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
3378 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3380 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
3381 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
3382 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3383 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3384 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
3385 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3387 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
3388 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
3390 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
3391 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
3392 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3393 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3394 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
3395 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3397 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
3398 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
3399 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3400 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3401 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
3402 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3404 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
3405 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
3407 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
3408 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
3409 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3410 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3411 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
3412 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3414 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
3415 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
3416 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3417 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3418 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
3419 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3421 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
3422 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
3429 for(Int_t j = 0; j < nMatched; j++)
3432 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
3433 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
3434 nptbins,ptmin,ptmax,200,0,0.2);
3435 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
3436 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
3437 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
3439 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
3440 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3441 nptbins,ptmin,ptmax,200,0,0.2);
3442 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
3443 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
3444 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
3446 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
3447 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3448 nptbins,ptmin,ptmax,200,0,0.2);
3449 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
3450 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
3451 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
3453 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
3454 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3455 mbins,mmin,mmax,200,0,0.2);
3456 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
3457 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
3458 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
3460 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
3461 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3462 mbins,mmin,mmax,200,0,0.2);
3463 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
3464 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
3465 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
3467 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
3468 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3469 mbins,mmin,mmax,200,0,0.2);
3470 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
3471 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
3472 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
3477 for(Int_t j = 0; j < nMatched; j++)
3479 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
3480 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
3481 100,-1,1,120,0,1.2);
3482 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3483 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3484 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
3486 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
3487 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
3488 100,-1,1,120,0,1.2);
3489 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3490 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3491 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
3493 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
3494 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
3495 100,-1,1,120,0,1.2);
3496 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3497 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3498 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
3502 fhClusterEtaPhiNLocMax1 = new TH2F
3503 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3504 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3505 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
3506 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
3508 fhClusterEtaPhiNLocMax2 = new TH2F
3509 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3510 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3511 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
3512 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
3514 fhClusterEtaPhiNLocMaxN = new TH2F
3515 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3516 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3517 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
3518 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
3520 fhPi0EtaPhiNLocMax1 = new TH2F
3521 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3522 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
3523 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
3524 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
3526 fhPi0EtaPhiNLocMax2 = new TH2F
3527 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3528 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
3529 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
3530 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
3532 fhPi0EtaPhiNLocMaxN = new TH2F
3533 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3534 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3535 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
3536 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
3540 fhEtaEtaPhiNLocMax1 = new TH2F
3541 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3542 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3543 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
3544 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
3546 fhEtaEtaPhiNLocMax2 = new TH2F
3547 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3548 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3549 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
3550 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
3552 fhEtaEtaPhiNLocMaxN = new TH2F
3553 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3554 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3555 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
3556 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
3559 TString snlm[] = {"1","2","N"};
3561 if(fFillSSWeightHisto)
3563 for(Int_t nlm = 0; nlm < 3; nlm++)
3565 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
3566 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
3567 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
3568 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
3569 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
3570 outputContainer->Add(fhPi0CellE[nlm]) ;
3572 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
3573 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
3574 nptbins,ptmin,ptmax, 100,0,1);
3575 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
3576 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
3577 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
3579 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
3580 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
3581 nptbins,ptmin,ptmax, 100,-10,0);
3582 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
3583 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
3584 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
3587 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
3588 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
3589 nptbins,ptmin,ptmax, 100,0,1);
3590 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
3591 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3592 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
3594 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
3595 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
3596 nptbins,ptmin,ptmax, 100,0,1);
3597 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
3598 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
3599 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
3601 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
3602 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
3603 nptbins,ptmin,ptmax, 100,0,1);
3604 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
3605 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
3606 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
3608 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
3609 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
3610 nptbins,ptmin,ptmax, 100,0,1);
3611 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
3612 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
3613 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
3615 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
3616 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
3617 nptbins,ptmin,ptmax, 200,0,2);
3618 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
3619 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3620 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
3623 for(Int_t i = 0; i < fSSWeightN; i++)
3625 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
3626 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
3627 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3628 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3629 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
3630 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
3633 for(Int_t i = 0; i < fSSECellCutN; i++)
3635 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
3636 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
3637 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3638 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3639 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
3640 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
3646 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
3648 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3649 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3650 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3651 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
3653 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3654 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3655 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3656 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
3658 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3659 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3660 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3661 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
3665 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3666 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3667 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3668 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
3670 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3671 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3672 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3673 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
3675 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3676 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3677 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3678 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
3681 if(fFillNCellHisto && IsDataMC())
3684 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3685 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3686 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
3687 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
3689 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3690 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3691 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
3692 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
3694 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3695 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3696 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
3697 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
3699 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3700 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3701 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
3702 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
3704 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3705 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3706 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
3707 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
3709 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3710 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3711 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
3712 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
3714 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3715 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3716 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
3717 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
3719 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3720 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3721 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
3722 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
3724 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3725 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3726 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
3727 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
3729 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3730 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3731 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
3732 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
3734 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3735 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3736 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
3737 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
3739 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3740 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3741 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
3742 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
3746 if(IsDataMC() && fFillMCOverlapHisto)
3748 for(Int_t i = 1; i < n; i++)
3750 for(Int_t j = 0; j < 3; j++)
3752 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3753 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3754 nptbins,ptmin,ptmax,10,0,10);
3755 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
3756 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
3757 outputContainer->Add(fhMCENOverlaps[j][i]) ;
3759 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3760 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3761 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3762 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
3763 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
3764 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
3766 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3767 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3768 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3769 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
3770 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
3771 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
3773 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3774 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3775 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3776 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
3777 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
3778 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
3780 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3781 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3782 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3783 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3784 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
3785 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
3787 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3788 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3789 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3790 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3791 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
3792 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
3794 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3795 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3796 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3797 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
3798 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
3799 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
3801 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3802 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3803 nptbins,ptmin,ptmax,100,0,1);
3804 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
3805 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
3806 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
3808 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3809 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3810 nptbins,ptmin,ptmax,100,0,1);
3811 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
3812 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
3813 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
3815 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3816 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3817 nptbins,ptmin,ptmax,100,0,1);
3818 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
3819 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
3820 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
3823 fhMCENCellOverlap0[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3824 Form("Overlap 0, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3825 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3826 fhMCENCellOverlap0[j][i] ->SetYTitle("n cells");
3827 fhMCENCellOverlap0[j][i] ->SetXTitle("E (GeV)");
3828 outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
3830 fhMCENCellOverlap1[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3831 Form("Overalap 1, n cells vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3832 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3833 fhMCENCellOverlap1[j][i] ->SetYTitle("n cells");
3834 fhMCENCellOverlap1[j][i] ->SetXTitle("E (GeV)");
3835 outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
3837 fhMCENCellOverlapN[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3838 Form("Overlap N, n cells vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3839 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3840 fhMCENCellOverlapN[j][i] ->SetYTitle("n cells");
3841 fhMCENCellOverlapN[j][i] ->SetXTitle("E (GeV)");
3842 outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
3845 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3846 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3847 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3848 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
3849 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
3850 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
3852 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3853 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3854 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3855 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
3856 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
3857 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
3859 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3860 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3861 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3862 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
3863 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
3864 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
3867 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3868 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3869 nptbins,ptmin,ptmax,120,0,1.2);
3870 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3871 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
3872 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
3874 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3875 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3876 nptbins,ptmin,ptmax,120,0,1.2);
3877 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3878 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
3879 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
3881 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3882 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3883 nptbins,ptmin,ptmax,120,0,1.2);
3884 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3885 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
3886 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
3890 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
3891 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3892 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3893 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
3894 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3895 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
3897 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
3898 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3899 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3900 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
3901 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3902 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
3904 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
3905 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3906 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3907 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
3908 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3909 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
3914 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3915 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3916 nptbins,ptmin,ptmax,10,0,10);
3917 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
3918 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
3919 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
3921 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3922 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3923 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3924 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3925 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
3926 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
3928 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3929 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3930 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3931 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3932 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
3933 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
3935 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3936 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3937 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3938 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
3939 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3940 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
3942 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3943 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3944 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3945 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3946 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3947 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
3949 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3950 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3951 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3952 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3953 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3954 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
3956 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3957 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3958 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3959 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3960 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3961 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
3964 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3965 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3966 nptbins,ptmin,ptmax,100,0,1);
3967 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
3968 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3969 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
3971 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3972 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3973 nptbins,ptmin,ptmax,100,0,1);
3974 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
3975 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3976 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
3978 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3979 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3980 nptbins,ptmin,ptmax,100,0,1);
3981 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
3982 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3983 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
3986 fhMCENCellOverlap0Match[j][i] = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3987 Form("Overlap 0, n cells vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3988 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3989 fhMCENCellOverlap0Match[j][i] ->SetYTitle("n cells");
3990 fhMCENCellOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3991 outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
3993 fhMCENCellOverlap1Match[j][i] = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3994 Form("Overalap 1, n cell vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3995 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3996 fhMCENCellOverlap1Match[j][i] ->SetYTitle("n cells");
3997 fhMCENCellOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3998 outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
4000 fhMCENCellOverlapNMatch[j][i] = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4001 Form("Overlap N, n cell vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4002 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4003 fhMCENCellOverlapNMatch[j][i] ->SetYTitle("n cells");
4004 fhMCENCellOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4005 outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
4007 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4008 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4009 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4010 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4011 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4012 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
4014 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4015 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4016 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4017 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
4018 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
4019 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
4021 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4022 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4023 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
4024 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
4025 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
4026 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
4029 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
4030 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4031 nptbins,ptmin,ptmax,120,0,1.2);
4032 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4033 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
4034 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
4036 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4037 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4038 nptbins,ptmin,ptmax,120,0,1.2);
4039 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4040 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
4041 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
4043 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
4044 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
4045 nptbins,ptmin,ptmax,120,0,1.2);
4046 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
4047 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
4048 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
4053 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4054 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4055 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4056 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4057 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4058 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4060 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4061 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4062 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4063 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4064 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4065 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
4067 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4068 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4069 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4070 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
4071 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4072 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
4080 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4081 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4082 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
4083 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
4084 outputContainer->Add(fhMCPi0HighNLMPair) ;
4086 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4087 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4088 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
4089 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
4090 outputContainer->Add(fhMCPi0LowNLMPair) ;
4092 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4093 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4094 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
4095 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
4096 outputContainer->Add(fhMCPi0AnyNLMPair) ;
4098 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4099 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4100 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
4101 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
4102 outputContainer->Add(fhMCPi0NoneNLMPair) ;
4105 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4106 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4107 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
4108 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4109 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
4111 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4112 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4113 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
4114 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4115 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
4117 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4118 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4119 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
4120 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4121 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
4123 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4124 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4125 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
4126 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4127 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
4133 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4134 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4135 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
4136 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
4137 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
4139 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4140 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4141 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
4142 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
4143 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
4145 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4146 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4147 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
4148 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
4149 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
4151 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4152 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4153 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
4154 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
4155 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
4157 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4158 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4159 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4160 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4161 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
4163 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4164 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4165 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4166 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4167 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
4169 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4170 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4171 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4172 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4173 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
4175 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4176 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4177 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4178 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4179 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
4181 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
4182 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4183 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
4184 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
4185 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
4187 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
4188 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4189 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
4190 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
4191 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
4193 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
4194 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4195 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
4196 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
4197 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
4199 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
4200 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4201 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
4202 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
4203 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
4205 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
4206 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4207 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
4208 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
4209 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
4211 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
4212 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4213 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
4214 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
4215 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
4218 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
4219 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4220 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
4221 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
4222 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
4224 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
4225 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4226 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
4227 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
4228 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
4230 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
4231 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4232 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
4233 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
4234 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
4236 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
4237 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4238 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
4239 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
4240 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
4242 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
4243 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4244 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
4245 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
4246 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
4248 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
4249 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4250 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
4251 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
4252 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
4255 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
4256 nptbins,ptmin,ptmax,5,0,5);
4257 //fhMCEOverlapType ->SetYTitle("Overlap Type");
4258 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
4259 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4260 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4261 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4262 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
4263 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
4264 outputContainer->Add(fhMCEOverlapType) ;
4266 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
4267 nptbins,ptmin,ptmax,5,0,5);
4268 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
4269 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
4270 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4271 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4272 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4273 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
4274 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
4275 outputContainer->Add(fhMCEOverlapTypeMatch) ;
4277 }// MC analysis, check overlaps
4279 return outputContainer ;
4283 //_____________________________________________________________________________
4284 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
4285 Int_t & mcindex, Int_t & tag)
4288 // Assign mc index depending on MC bit set, to be used in histograms arrays
4290 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
4292 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
4293 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
4294 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
4295 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
4296 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4297 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
4298 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4299 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
4300 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
4301 else mcindex = kmcHadron;
4306 //______________________________________________________________________________________________________________
4307 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
4308 const Int_t mctag, const Bool_t matched,
4309 Float_t & eprim, Float_t & asymGen, Int_t & noverlaps )
4311 // Check origin of the candidates, get primary kinematics if overlapped meson decay
4314 Int_t mcLabel = cluster->GetLabel();
4316 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
4317 eprim = primary.E();
4319 Int_t mesonLabel = -1;
4321 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
4323 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
4325 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
4326 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
4327 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4331 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
4332 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
4333 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4337 if(!fFillMCOverlapHisto) return;
4339 const UInt_t nlabels = cluster->GetNLabels();
4340 Int_t overpdg[nlabels];
4341 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
4343 for(Int_t iover = 0; iover < noverlaps; iover++)
4345 Float_t histobin = -1;
4346 Int_t mpdg = overpdg[iover];
4348 if (mpdg==22) histobin = 0.5;
4349 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
4350 else if(mpdg==-999999) histobin = 4.5;
4353 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
4354 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
4355 else histobin = 3.5;
4356 //printf("charge %f\n",charge);
4359 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
4362 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
4363 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
4368 //___________________________________________
4369 void AliAnaInsideClusterInvariantMass::Init()
4373 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
4375 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
4378 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
4380 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
4384 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
4386 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
4393 //_____________________________________________________
4394 void AliAnaInsideClusterInvariantMass::InitParameters()
4396 //Initialize the parameters of the analysis.
4397 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
4399 fCalorimeter = "EMCAL" ;
4407 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
4408 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
4411 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
4412 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
4417 //__________________________________________________________________
4418 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
4420 //Search for pi0 in fCalorimeter with shower shape analysis
4422 TObjArray * pl = 0x0;
4423 AliVCaloCells* cells = 0x0;
4425 //Select the Calorimeter of the photon
4426 if(fCalorimeter == "PHOS")
4428 pl = GetPHOSClusters();
4429 cells = GetPHOSCells();
4431 else if (fCalorimeter == "EMCAL")
4433 pl = GetEMCALClusters();
4434 cells = GetEMCALCells();
4439 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
4443 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
4445 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
4447 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
4449 //-------------------------------------------
4450 // Get cluster parameters, do some rejection
4451 //-------------------------------------------
4453 Float_t en = cluster->E();
4454 Float_t l0 = cluster->GetM02();
4455 Int_t nc = cluster->GetNCells();
4456 Float_t bd = cluster->GetDistanceToBadChannel() ;
4458 //If too small or big E or low number of cells, or close to a bad channel skip it
4460 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
4462 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
4464 // Track-cluster matching
4466 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
4467 if(!fFillTMHisto && matched) continue ;
4469 // Get cluster angles
4472 cluster->GetMomentum(lv, GetVertex(0));
4473 Float_t eta = lv.Eta();
4474 Float_t phi = lv.Phi();
4475 if(phi<0) phi=+TMath::TwoPi();
4477 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
4478 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
4480 // Get PID, N local maximum, *** split cluster ***
4483 Double_t mass = 0., angle = 0.;
4484 TLorentzVector l1, l2;
4485 Int_t absId1 =-1; Int_t absId2 =-1;
4486 Float_t distbad1 =-1; Float_t distbad2 =-1;
4487 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
4489 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
4490 GetVertex(0), nMax, mass, angle,
4491 l1,l2,absId1,absId2,
4492 distbad1,distbad2,fidcut1,fidcut2);
4496 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
4501 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
4502 if( (fCheckSplitDistToBad) &&
4503 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
4506 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
4507 distbad1,distbad2, fidcut1,fidcut2);
4511 // Set some index for array histograms
4514 if (nMax == 1) inlm = 0;
4515 else if(nMax == 2) inlm = 1;
4516 else if(nMax > 2) inlm = 2;
4517 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
4519 // Get sub-cluster parameters
4521 Float_t e1 = l1.Energy();
4522 Float_t e2 = l2.Energy();
4524 Double_t tof1 = cells->GetCellTime(absId1);
4525 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4528 Double_t tof2 = cells->GetCellTime(absId2);
4529 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4532 Double_t t12diff = tof1-tof2;
4534 Float_t splitFrac = (e1+e2)/en;
4537 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
4542 if(en > 8 && en <= 12) ebin = 0;
4543 if(en > 12 && en <= 16) ebin = 1;
4544 if(en > 16 && en <= 20) ebin = 2;
4545 if(en > 20) ebin = 3;
4547 // MC data histograms and some related calculations
4548 // mc tag, n overlaps, asym of generated mesons
4553 Float_t asymGen = -2;
4554 Int_t noverlaps = 0;
4560 GetMCIndex(cluster,mcindex,mctag);
4562 // MC primary kine, generation fractions
4564 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,noverlaps);
4566 // For cluster with MC pi0 and more than 1 maxima
4568 if(fFillMCOverlapHisto)
4569 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps);
4570 //mass, l0, l1, l2);
4575 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
4576 nMax,matched,splitFrac, asym, eprim,asymGen);
4580 if(fFillMCOverlapHisto)
4581 FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
4586 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
4591 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
4595 if(fFillTMHisto && fFillTMResidualHisto)
4596 FillTrackMatchingHistograms(cluster,nMax,mcindex);
4600 if(fFillSSExtraHisto)
4601 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
4605 if(!matched && ebin > 0 && fFillEbinHisto)
4606 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
4611 FillAngleHistograms(matched,nMax,en,angle,mass);
4613 //---------------------------------------------------------------------
4614 // From here start applying some cuts
4615 //---------------------------------------------------------------------
4617 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
4619 if(pidTag==AliCaloPID::kPi0)
4621 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4623 if(fFillSSWeightHisto)
4624 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
4626 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
4628 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4630 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
4632 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
4637 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
4641 //______________________________________________________________________
4642 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
4644 //Print some relevant parameters set for the analysis
4648 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4649 AliAnaCaloTrackCorrBaseClass::Print("");
4650 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
4651 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
4652 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
4653 printf("Min. N Cells =%d \n", fMinNCells) ;
4654 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
4655 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
4661 //___________________________________________________________________________________________________________________
4662 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
4663 AliVCaloCells* cells,
4664 AliVCluster * cluster,
4665 Float_t & l0, Float_t & l1,
4666 Float_t & disp, Float_t & dEta, Float_t & dPhi,
4667 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
4670 // Calculates new center of gravity in the local EMCAL-module coordinates
4671 // and tranfers into global ALICE coordinates
4672 // Calculates Dispersion and main axis
4676 AliInfo("Cluster pointer null!");
4680 Double_t eCell = 0.;
4681 Float_t fraction = 1.;
4682 Float_t recalFactor = 1.;
4690 Double_t etai = -1.;
4691 Double_t phii = -1.;
4696 Double_t etaMean = 0.;
4697 Double_t phiMean = 0.;
4699 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
4700 // and to check if the cluster is between 2 SM in eta
4702 Bool_t shared = kFALSE;
4705 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4707 //Get from the absid the supermodule, tower and eta/phi numbers
4708 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4709 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4711 //Check if there are cells of different SM
4712 if (iDigit == 0 ) iSM0 = iSupMod;
4713 else if(iSupMod!= iSM0) shared = kTRUE;
4715 //Get the cell energy, if recalibration is on, apply factors
4716 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4717 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4719 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4721 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4724 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4726 if(eCell > eCellMin) energy += eCell;
4730 //Loop on cells, get weighted parameters
4731 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4733 //Get from the absid the supermodule, tower and eta/phi numbers
4734 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4735 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4737 //Get the cell energy, if recalibration is on, apply factors
4738 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4739 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4741 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4743 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4746 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4748 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4749 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4750 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4752 if(energy > 0 && eCell > eCellMin)
4754 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4756 //correct weight, ONLY in simulation
4757 w *= (1 - fWSimu * w );
4759 etai=(Double_t)ieta;
4760 phii=(Double_t)iphi;
4767 sEta += w * etai * etai ;
4768 etaMean += w * etai ;
4769 sPhi += w * phii * phii ;
4770 phiMean += w * phii ;
4771 sEtaPhi += w * etai * phii ;
4774 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4778 //Normalize to the weight
4785 AliError(Form("Wrong weight %f\n", wtot));
4787 //Calculate dispersion
4788 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4790 //Get from the absid the supermodule, tower and eta/phi numbers
4791 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4792 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4794 //Get the cell energy, if recalibration is on, apply factors
4795 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4796 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4797 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4799 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4802 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4804 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4805 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4806 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4808 if(energy > 0 && eCell > eCellMin)
4810 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4812 //correct weight, ONLY in simulation
4813 w *= (1 - fWSimu * w );
4815 etai=(Double_t)ieta;
4816 phii=(Double_t)iphi;
4819 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
4820 dEta += w * (etai-etaMean)*(etai-etaMean) ;
4821 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
4824 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4827 //Normalize to the weigth and set shower shape parameters
4828 if (wtot > 0 && nstat > 1)
4837 sEta -= etaMean * etaMean ;
4838 sPhi -= phiMean * phiMean ;
4839 sEtaPhi -= etaMean * phiMean ;
4841 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4842 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4848 dEta = 0. ; dPhi = 0. ; disp = 0. ;
4849 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;