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 fhMCEEpriOverlap0 [nlm][i] = 0;
287 fhMCEEpriOverlap1 [nlm][i] = 0;
288 fhMCEEpriOverlapN [nlm][i] = 0;
289 fhMCEEpriOverlap0Match[nlm][i] = 0;
290 fhMCEEpriOverlap1Match[nlm][i] = 0;
291 fhMCEEpriOverlapNMatch[nlm][i] = 0;
293 fhMCESplitEFracOverlap0 [nlm][i] = 0;
294 fhMCESplitEFracOverlap1 [nlm][i] = 0;
295 fhMCESplitEFracOverlapN [nlm][i] = 0;
296 fhMCESplitEFracOverlap0Match[nlm][i] = 0;
297 fhMCESplitEFracOverlap1Match[nlm][i] = 0;
298 fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
300 fhMCENOverlaps [nlm][i] = 0;
301 fhMCENOverlapsMatch [nlm][i] = 0;
305 fhMCPi0MassM02Overlap0 [nlm][i] = 0;
306 fhMCPi0MassM02Overlap1 [nlm][i] = 0;
307 fhMCPi0MassM02OverlapN [nlm][i] = 0;
308 fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
309 fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
310 fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
314 for(Int_t i = 0; i < 2; i++)
316 fhAnglePairNLocMax1 [i] = 0;
317 fhAnglePairNLocMax2 [i] = 0;
318 fhAnglePairNLocMaxN [i] = 0;
319 fhAnglePairMassNLocMax1[i] = 0;
320 fhAnglePairMassNLocMax2[i] = 0;
321 fhAnglePairMassNLocMaxN[i] = 0;
322 fhSplitEFractionvsAsyNLocMax1[i] = 0;
323 fhSplitEFractionvsAsyNLocMax2[i] = 0;
324 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
327 for(Int_t i = 0; i < 4; i++)
329 fhMassM02NLocMax1Ebin[i] = 0 ;
330 fhMassM02NLocMax2Ebin[i] = 0 ;
331 fhMassM02NLocMaxNEbin[i] = 0 ;
333 fhMassAsyNLocMax1Ebin[i] = 0 ;
334 fhMassAsyNLocMax2Ebin[i] = 0 ;
335 fhMassAsyNLocMaxNEbin[i] = 0 ;
337 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
338 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
339 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
341 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
342 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
343 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
345 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
346 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
347 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
349 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
350 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
351 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
353 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
354 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
355 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
358 for(Int_t nlm = 0; nlm < 3; nlm++)
360 fhPi0CellE [nlm] = 0 ;
361 fhPi0CellEFrac [nlm] = 0 ;
362 fhPi0CellLogEFrac[nlm] = 0 ;
364 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
365 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
366 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
368 fhPi0CellEMaxFrac [nlm] = 0 ;
369 fhPi0CellEMax2Frac[nlm] = 0 ;
371 for(Int_t i = 0; i < 10; i++)
373 fhM02WeightPi0 [nlm][i] = 0;
374 fhM02ECellCutPi0[nlm][i] = 0;
382 //_______________________________________________________________________________________________________
383 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster,
384 const Int_t mcindex, const Int_t noverlaps)
385 //Float_t mass, Float_t m02,
386 //TLorentzVector l1, TLorentzVector l2)
388 // Check origin NLM tower of the cluster, when MC gives merged pi0
390 if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
392 const UInt_t nc = cluster->GetNCells();
395 Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
400 //if(mcindex==kmcPi0) printf("** Normal Pi0 **\n");
401 //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
403 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
405 // 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",
406 // nMax, noverlaps,mass,m02,
407 // l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
408 // l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
410 // // Study the mothers of cluster
411 // printf("Cluster MC labels %d \n", cluster->GetNLabels());
412 // for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
414 // Int_t mclabel = cluster->GetLabels()[ilab];
417 // Int_t mpdg = -999999;
418 // Int_t mstatus = -1;
419 // Int_t grandLabel = -1;
420 // TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
422 // printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
423 // ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
425 // if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
427 // while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
429 // Int_t newLabel = -1;
430 // TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
431 // 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",
432 // ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
433 // grandLabel = newLabel;
439 // printf("Cells in cluster %d\n",cluster->GetNCells() );
440 // for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
442 // Int_t absIdCell = cluster->GetCellAbsId(icell);
443 // Int_t mcLabel = GetEMCALCells()->GetCellMCLabel(absIdCell);
444 // GetReader()->RemapMCLabelForAODs(mcLabel);
445 // Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
446 // Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
448 // 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);
454 //If only one maxima, consider all the towers in the cluster
457 for (UInt_t icell = 0; icell < nc; icell++ )
459 list [icell] = cluster->GetCellAbsId(icell);
460 elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
464 Int_t nmaxima = nMax;
465 if(nMax==1) nmaxima = nc ;
467 //Find highest energy Local Maxima Towers
472 for(Int_t i = 0; i < nmaxima; i++)
474 //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
481 //Find second highest
482 for(Int_t i = 0; i < nmaxima; i++)
484 if(i==imax) continue;
486 //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
496 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
497 // printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
499 //---------------------------------------------------------
500 //---------------------------------------------------------
501 // Compare ancestors of all local maxima at cell MC level
502 //---------------------------------------------------------
503 //---------------------------------------------------------
505 // Check that the highest mc label and the max cluster label are the same
506 Int_t mcLabelMax = -1 ;
509 mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
510 GetReader()->RemapMCLabelForAODs(mcLabelMax);
513 Int_t mcLabelMax2 = -1 ;
516 mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
517 GetReader()->RemapMCLabelForAODs(mcLabelMax2);
520 Int_t mcLabelclusterMax = cluster->GetLabels()[0];
521 Bool_t matchHighLMAndHighMC = kFALSE;
523 //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
525 if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
527 matchHighLMAndHighMC = kTRUE;
528 //printf("\t *** MATCH cluster and LM maximum ***\n");
532 //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
533 if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
535 //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
536 matchHighLMAndHighMC = kTRUE;
540 //printf("\t \t *** NO MATCH***\n");
541 matchHighLMAndHighMC = kFALSE;
545 // Compare the common ancestors of the 2 highest energy local maxima
546 Int_t ancPDG = 0, ancStatus = -1;
547 TLorentzVector momentum; TVector3 prodVertex;
549 Bool_t high = kFALSE;
552 // // print maxima origin
553 // for(Int_t i = 0; i < nMax; i++)
555 // Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
556 // GetReader()->RemapMCLabelForAODs(mcLabel1);
558 // Bool_t ok =kFALSE,gok = kFALSE;
559 // Int_t pdg = -22222, status = -1;
560 // Int_t gpdg = -22222, gstatus = -1;
561 // Int_t ggpdg = -22222, ggstatus = -1;
562 // Int_t gLabel = -1, ggLabel = -1;
563 // TLorentzVector primary =GetMCAnalysisUtils()->GetMother (mcLabel1,GetReader(), pdg, status, ok);
564 // TLorentzVector gprimary =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
565 // TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel ,GetReader(),ggpdg,ggstatus,gok);
566 // 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",
567 // i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
570 for(Int_t i = 0; i < nmaxima-1; i++)
572 Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
573 GetReader()->RemapMCLabelForAODs(mcLabel1);
575 for(Int_t j = i+1; j < nmaxima; j++)
577 Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
578 GetReader()->RemapMCLabelForAODs(mcLabel2);
580 if(mcLabel1 < 0 || mcLabel2 < 0 )
582 //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
586 ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
587 GetReader(),ancPDG,ancStatus,momentum,prodVertex);
590 if((i==imax && j==imax2) || (j==imax && i==imax2))
595 else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
597 // If both bits are set, it could be that one of the maxima had a conversion
598 // reset the bit in this case
601 //printf("\t Reset low bit\n");
607 Int_t pdg = -22222, status = -1;
608 TLorentzVector primary =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
609 //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);
614 Float_t en = cluster->E();
616 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
617 // printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
621 if(matchHighLMAndHighMC)
623 if (high && !low) fhMCPi0HighNLMPair->Fill(en,nMax);
624 else if(low && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
625 else if(low && high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
626 else fhMCPi0NoneNLMPair->Fill(en,nMax);
630 if (high && !low) fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
631 else if(low && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
632 else if(low && high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
633 else fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
638 if(matchHighLMAndHighMC)
640 if (high && !low) fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
641 else if(low && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
642 else if(low && high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
643 else fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
647 if (high && !low) fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
648 else if(low && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
649 else if(low && high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
650 else fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
654 //----------------------------------------------------------------------
655 //----------------------------------------------------------------------
656 // Compare MC decay photon projection to cell location and Local Maxima
657 //----------------------------------------------------------------------
658 //----------------------------------------------------------------------
660 // Get the mother pi0
663 Int_t pdg = -22222, status = -1;
666 Int_t label = cluster->GetLabel();
667 TLorentzVector pi0Kine;
669 while( pdg!=111 && label>=0 )
671 pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
674 if(pdg!=111 || label < 0)
676 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Mother Pi0 not found!\n");
680 Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
684 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - N daughters %d !=2!\n",nDaugthers);
688 // Get daughter photon kinematics
689 Int_t pdg0 = -22222, status0 = -1; Int_t label0 = -1;
690 TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
691 Int_t pdg1 = -22222, status1 = -1; Int_t label1 = -1;
692 TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
694 if(pdg1!=22 || pdg0 != 22)
696 printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
700 // In what cells did the photons hit
701 Float_t eta0 = photon0Kine.Eta();
702 Float_t eta1 = photon1Kine.Eta();
704 Float_t phi0 = photon0Kine.Phi();
705 Float_t phi1 = photon1Kine.Phi();
707 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
709 // 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",
710 // label , pi0Kine.E() , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
711 // label0, photon0Kine.E(), eta0, phi0*TMath::RadToDeg(),
712 // label1, photon1Kine.E(), eta1, phi1*TMath::RadToDeg());
714 // TLorentzVector momclus;
715 // cluster->GetMomentum(momclus,GetVertex(0));
716 // 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());
719 if(phi0 < 0 ) phi0+=TMath::TwoPi();
720 if(phi1 < 0 ) phi1+=TMath::TwoPi();
722 Int_t absId0=-1, absId1=-1;
723 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
724 GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
726 if(absId1 < 0 || absId1 < 0)
728 //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() - Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
732 //-----------------------------------------------
733 // Check that the 2 photons hit the Local Maxima
734 //-----------------------------------------------
737 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
739 // printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
740 // printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
742 // Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
743 // Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
744 // Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
745 // Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
747 // printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
748 // absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
750 // Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
751 // if(imax >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
752 // Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
753 // if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
755 // printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
756 // list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
760 Bool_t match0 = kFALSE;
761 Bool_t match1 = kFALSE;
764 if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
766 if (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
767 else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
769 if (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
770 else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
773 //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
775 // If one or the 2 not matched, check with the other MC labels
776 // only in case there was a conversion
778 Int_t absId0second = -1;
779 Int_t absId1second = -1;
780 Int_t secLabel0 = -1;
781 Int_t secLabel1 = -1;
785 Int_t secpdg = -999999;
786 Int_t secstatus = -1;
787 Int_t secgrandLabel = -1;
789 if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
790 if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
792 if((!match0 || !match1) && mcindex == kmcPi0Conv)
794 for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
796 Int_t mclabel = cluster->GetLabels()[ilab];
798 //printf("Check label %d - %d\n",ilab,mclabel);
800 if(mclabel == label0 || mclabel == label1)
802 //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
803 if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
804 if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
808 //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
810 // match mc label and parent photon
811 Int_t tmplabel = mclabel;
812 while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
814 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
816 //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
818 if((secgrandLabel == label0) || (secgrandLabel == label1 ))
820 //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
821 if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
822 if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
825 //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
827 tmplabel = secgrandLabel;
831 // Get the position of the found secondaries mother
832 if(!match0 && secLabel0 > 0)
834 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
836 //Float_t eta = mother.Eta();
837 //Float_t phi = mother.Phi();
838 //if(phi < 0 ) phi+=TMath::TwoPi();
839 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
841 //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());
843 if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax ; }
844 if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
847 if(!match1 && secLabel1 > 0)
849 TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
851 //Float_t eta = mother.Eta();
852 //Float_t phi = mother.Phi();
853 //if(phi < 0 ) phi+=TMath::TwoPi();
854 //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
856 //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());
858 if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax ; }
859 if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
862 //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
866 //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
867 if( match0 && match1 )
869 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
870 // printf("a) Both Photons hit local maxima \n");
872 if(!noverlaps)fhMCPi0DecayPhotonHitHighLM ->Fill(en,nMax);
873 else fhMCPi0DecayPhotonHitHighLMOverlap->Fill(en,nMax);
878 //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
879 //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
881 //---------------------------------------------
882 // Check the adjacent cells to the local maxima
883 //---------------------------------------------
887 if(imatch1!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax])) match0 = kTRUE;
888 //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
889 if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) match0 = kTRUE;
890 //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
895 if(imatch0!=imax && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) match1 = kTRUE;
896 //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
898 if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) match1 = kTRUE;
899 //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
902 //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
906 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
907 // printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
909 if(!noverlaps) fhMCPi0DecayPhotonAdjHighLM ->Fill(en,nMax);
910 else fhMCPi0DecayPhotonAdjHighLMOverlap->Fill(en,nMax);
916 // Decay photon cells are adjacent?
918 if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
920 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
921 // printf("c) Both Photons hit a local maxima and in adjacent cells \n");
922 if(!noverlaps) fhMCPi0DecayPhotonAdjacent ->Fill(en,nMax);
923 else fhMCPi0DecayPhotonAdjacentOverlap ->Fill(en,nMax);
928 //--------------------
929 // Other Local maxima
930 //--------------------
932 Bool_t matchMCHitOtherLM = kFALSE;
935 for(Int_t i = 0; i < nmaxima; i++)
937 if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
943 for(Int_t i = 0; i < nmaxima; i++)
945 if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
949 if(matchMCHitOtherLM)
951 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
952 // printf("d) One Photon hits a local maxima, the other another not high \n");
954 if(!noverlaps) fhMCPi0DecayPhotonHitOtherLM ->Fill(en,nMax);
955 else fhMCPi0DecayPhotonHitOtherLMOverlap->Fill(en,nMax);
960 // Adjacent to other maxima
962 Bool_t adjacentOther1 = kFALSE;
965 for(Int_t i = 0; i < nmaxima; i++)
967 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
968 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
970 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
972 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
974 //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
978 Bool_t adjacentOther0 = kFALSE;
981 for(Int_t i = 0; i < nmaxima; i++)
983 Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
984 GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
986 //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
988 if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
990 //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
994 if((match0 && adjacentOther1) || (match1 && adjacentOther0))
997 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
998 // printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1000 if(!noverlaps) fhMCPi0DecayPhotonAdjOtherLM ->Fill(en,nMax);
1001 else fhMCPi0DecayPhotonAdjOtherLMOverlap->Fill(en,nMax);
1006 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1007 // printf("f) No hit found \n");
1008 if(!noverlaps) fhMCPi0DecayPhotonHitNoLM ->Fill(en,nMax);
1009 else fhMCPi0DecayPhotonHitNoLMOverlap->Fill(en,nMax);
1013 //___________________________________________________________________________________________________________________
1014 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(const Int_t nMax, const Bool_t matched,
1015 const Float_t en, const Float_t angle, const Float_t mass)
1017 // Fill histograms related to opening angle
1021 fhAnglePairNLocMax1[matched]->Fill(en,angle);
1022 if( en > fHistoECut ) fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
1026 fhAnglePairNLocMax2[matched]->Fill(en,angle);
1027 if( en > fHistoECut ) fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
1031 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
1032 if( en > fHistoECut ) fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
1037 //__________________________________________________________________________________________________________________________________________
1038 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(const Int_t ebin , const Int_t nMax, const Int_t mcindex,
1039 const Float_t splitFrac, const Float_t mass, const Float_t asym, const Float_t l0)
1041 // Fill some histograms integrating in few energy bins
1045 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1046 if(IsDataMC())fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1048 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1049 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
1053 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1054 if(IsDataMC())fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1056 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
1057 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
1061 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1062 if(IsDataMC())fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1064 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
1065 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
1070 //________________________________________________________________________________________________________________________
1071 void AliAnaInsideClusterInvariantMass::FillHistograms1(const Float_t en, const Float_t e1, const Float_t e2,
1072 const Int_t nMax, const Float_t mass, const Float_t l0,
1073 const Float_t eta, const Float_t phi,
1074 const Bool_t matched, const Int_t mcindex)
1076 // Fill histograms for clusters before any selection after spliting
1078 Float_t splitFrac = (e1+e2)/en;
1081 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1083 fhNLocMax[0][matched]->Fill(en,nMax);
1084 if(IsDataMC()) fhNLocMax[mcindex][matched]->Fill(en,nMax);
1088 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1089 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1093 fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1094 fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1099 fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1100 if( IsDataMC() ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1102 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1103 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1106 else if( nMax == 2 )
1108 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1109 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1113 fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1114 fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1119 fhMassM02NLocMax2[0][matched]->Fill(l0, mass );
1120 if( IsDataMC() ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1122 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1123 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1126 else if( nMax >= 3 )
1128 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1129 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1133 fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1134 fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1140 fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1141 if( IsDataMC() ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1143 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1144 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1151 //________________________________________________________________________________________________________________________
1152 void AliAnaInsideClusterInvariantMass::FillHistograms2(const Float_t en, const Float_t eprim,
1153 const Float_t e1, const Float_t e2,
1154 const Int_t nMax, const Float_t mass, const Float_t l0,
1155 const Bool_t matched, const Int_t mcindex)
1157 // Fill histograms for clusters passing the first M02 selection
1159 Float_t efrac = eprim/en;
1160 Float_t efracSplit = 0;
1161 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1163 Float_t splitFrac = (e1+e2)/en;
1166 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1168 Int_t inlm = nMax-1;
1169 if(inlm > 2) inlm = 2;
1170 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1172 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1173 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1174 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1175 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1177 //printf("splitFracMin %f, val %f, m02ok %d, asyok %d\n",splitFracMin,splitFrac,m02OK,asyOK);
1181 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1182 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1187 fhMassNLocMax1[0][matched]->Fill(en,mass );
1188 fhAsymNLocMax1[0][matched]->Fill(en,asym );
1190 // Effect of cuts in mass histograms
1192 if(!matched && m02OK && m02On )
1194 fhMassM02CutNLocMax1->Fill(en,mass);
1195 fhAsymM02CutNLocMax1->Fill(en,asym );
1196 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1199 if((m02OK && asyOK) && (asyOn || m02On))
1201 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1202 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1204 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1206 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
1207 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
1213 fhMassNLocMax2[0][matched]->Fill(en,mass );
1214 fhAsymNLocMax2[0][matched]->Fill(en,asym );
1216 // Effect of cuts in mass histograms
1218 if(!matched && m02OK && m02On )
1220 fhMassM02CutNLocMax2->Fill(en,mass);
1221 fhAsymM02CutNLocMax2->Fill(en,asym );
1222 if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1225 if((m02OK && asyOK) && (asyOn || m02On))
1227 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1228 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1230 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1232 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
1233 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
1239 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1240 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1242 // Effect of cuts in mass histograms
1243 if(!matched && m02OK && m02On )
1245 fhMassM02CutNLocMaxN->Fill(en,mass);
1246 fhAsymM02CutNLocMaxN->Fill(en,asym );
1247 if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1250 if((m02OK && asyOK) && (asyOn || m02On))
1252 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1253 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1255 if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1257 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
1258 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
1267 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
1268 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
1270 if((m02OK && asyOK) && (asyOn || m02On))
1272 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
1273 if(splitFrac > splitFracMin)
1274 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
1279 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
1280 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
1282 if((m02OK && asyOK) && (asyOn || m02On))
1284 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
1285 if(splitFrac >splitFracMin)
1286 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
1291 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
1292 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
1294 if((m02OK && asyOK) && (asyOn || m02On))
1296 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
1297 if(splitFrac > splitFracMin )
1298 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
1301 }//Work with MC truth
1305 //________________________________________________________________________________________________________________________
1306 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(const Float_t en, const Float_t e1, const Float_t e2,
1307 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1308 const Float_t mass, const Float_t l0,
1309 const Float_t eta, const Float_t phi,
1310 const Bool_t matched, const Int_t mcindex)
1312 // Fill histograms for clusters passing the pi0 selection
1315 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1319 fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
1320 fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
1321 fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
1322 if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
1326 if(fFillHighMultHisto)
1328 fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
1329 fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
1331 if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
1332 fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1337 fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
1338 fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
1339 fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
1340 if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
1344 if(fFillHighMultHisto)
1346 fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
1347 fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
1349 if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
1350 fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1355 fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
1356 fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
1357 fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
1358 if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
1362 if(fFillHighMultHisto)
1364 fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
1365 fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1367 if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
1368 fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1376 fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
1377 fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
1378 fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
1379 if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
1384 fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
1385 fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
1386 fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
1387 if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
1391 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1392 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1393 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1394 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1396 }//Work with MC truth
1399 //________________________________________________________________________________________________________________________
1400 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(const Float_t en, const Float_t e1, const Float_t e2,
1401 const Int_t nc, const Int_t nMax, const Float_t t12diff,
1402 const Float_t mass, const Float_t l0,
1403 const Float_t eta, const Float_t phi,
1404 const Bool_t matched, const Int_t mcindex)
1406 // Fill histograms for clusters passing the eta selection
1409 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1413 fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
1414 fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
1415 fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
1416 if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
1420 if(fFillHighMultHisto)
1422 fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
1423 fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
1425 if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
1426 fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
1431 fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
1432 fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
1433 fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
1434 if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
1438 if(fFillHighMultHisto)
1440 fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
1441 fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
1443 if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
1444 fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
1449 fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
1450 fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
1451 fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
1452 if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
1456 if(fFillHighMultHisto)
1458 fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
1459 fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
1461 if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
1462 fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
1470 fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
1471 fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
1472 fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
1473 if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
1477 fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
1478 fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
1479 fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
1480 if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
1485 fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0);
1486 fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
1487 fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym);
1488 if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
1490 }//Work with MC truth
1494 //_____________________________________________________________________________________________________________________
1495 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(const Float_t en, const Int_t nMax, const Float_t asym,
1496 const Float_t mass, const Float_t l0,
1497 const Bool_t matched, const Int_t mcindex)
1499 // Fill histograms for clusters passing the photon selection
1503 fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
1504 fhMassConNLocMax1[0][matched]->Fill(en,mass);
1505 fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
1509 fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
1510 fhMassConNLocMax2[0][matched]->Fill(en,mass);
1511 fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
1515 fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
1516 fhMassConNLocMaxN[0][matched]->Fill(en,mass);
1517 fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
1524 fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
1525 fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
1526 fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
1530 fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
1531 fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
1532 fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
1536 fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
1537 fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
1538 fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
1541 }//Work with MC truth
1544 //_____________________________________________________________________________________________________________________
1545 void AliAnaInsideClusterInvariantMass::FillMCHistograms(const Float_t en, const Float_t e1 , const Float_t e2,
1546 const Int_t ebin, const Int_t mcindex,const Int_t noverlaps,
1547 const Float_t l0, const Float_t mass,
1548 const Int_t nMax, const Bool_t matched,
1549 const Float_t splitFrac, const Float_t asym,
1550 const Float_t eprim, const Float_t asymGen)
1552 // Fill histograms needing some MC input
1554 Float_t efrac = eprim/en;
1555 Float_t efracSplit = 0;
1556 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1558 //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",
1559 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1561 if(ebin >= 0 && fFillEbinHisto)
1563 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1564 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1569 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1570 fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en , efracSplit );
1571 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1575 fhMCGenFracNLocMax1NoOverlap [mcindex][matched]->Fill(en , efrac );
1576 fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1579 if( en > fHistoECut )
1581 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1583 if(!matched && ebin >= 0 && fFillEbinHisto)
1585 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1586 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1588 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1589 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
1595 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1596 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1597 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1601 fhMCGenFracNLocMax2NoOverlap [mcindex][matched]->Fill(en , efrac );
1602 fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en , efracSplit );
1605 if( en > fHistoECut )
1607 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1609 if(!matched && ebin >= 0 && fFillEbinHisto)
1611 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1612 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1614 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1615 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
1622 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1623 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1624 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1628 fhMCGenFracNLocMaxNNoOverlap [mcindex][matched]->Fill(en , efrac );
1629 fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en , efracSplit );
1632 if( en > fHistoECut )
1634 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
1636 if(!matched && ebin >= 0 && fFillEbinHisto)
1638 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1639 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1641 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
1642 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
1648 //__________________________________________________________________________________________________________________________________________________
1649 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(const Float_t en, const Float_t enprim,
1650 const Float_t mass, const Float_t l0,
1651 const Float_t asym, const Float_t splitFrac,
1652 const Int_t inlm, const Int_t ebin, const Bool_t matched,
1653 const Int_t mcindex, const Int_t noverlaps)
1655 // Fill histograms for MC Overlaps
1657 //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);
1659 //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
1663 fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
1667 fhMCEM02Overlap0 [inlm][mcindex]->Fill(en, l0);
1668 fhMCEMassOverlap0[inlm][mcindex]->Fill(en, mass);
1669 fhMCEEpriOverlap0[inlm][mcindex]->Fill(en, enprim);
1670 fhMCEAsymOverlap0[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1671 fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
1672 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
1674 else if(noverlaps == 1)
1676 fhMCEM02Overlap1 [inlm][mcindex]->Fill(en, l0);
1677 fhMCEMassOverlap1[inlm][mcindex]->Fill(en, mass);
1678 fhMCEEpriOverlap1[inlm][mcindex]->Fill(en, enprim);
1679 fhMCEAsymOverlap1[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1680 fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
1681 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
1683 else if(noverlaps > 1)
1685 fhMCEM02OverlapN [inlm][mcindex]->Fill(en, l0);
1686 fhMCEMassOverlapN[inlm][mcindex]->Fill(en, mass);
1687 fhMCEEpriOverlapN[inlm][mcindex]->Fill(en, enprim);
1688 fhMCEAsymOverlapN[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1689 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1690 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
1693 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps = %d!!", noverlaps);
1695 else if(fFillTMHisto)
1697 fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
1701 fhMCEM02Overlap0Match [inlm][mcindex]->Fill(en, l0);
1702 fhMCEMassOverlap0Match[inlm][mcindex]->Fill(en, mass);
1703 fhMCEEpriOverlap0Match[inlm][mcindex]->Fill(en, enprim);
1704 fhMCEAsymOverlap0Match[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1705 fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
1706 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
1708 else if(noverlaps == 1)
1710 fhMCEM02Overlap1Match [inlm][mcindex]->Fill(en, l0);
1711 fhMCEMassOverlap1Match[inlm][mcindex]->Fill(en, mass);
1712 fhMCEEpriOverlap1Match[inlm][mcindex]->Fill(en, enprim);
1713 fhMCEAsymOverlap1Match[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1714 fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
1715 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
1717 else if(noverlaps > 1)
1719 fhMCEM02OverlapNMatch [inlm][mcindex]->Fill(en, l0);
1720 fhMCEMassOverlapNMatch[inlm][mcindex]->Fill(en, mass);
1721 fhMCEEpriOverlapNMatch[inlm][mcindex]->Fill(en, enprim);
1722 fhMCEAsymOverlapNMatch[inlm][mcindex]->Fill(en, TMath::Abs(asym));
1723 fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
1724 if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
1727 printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms() - n overlaps in matched = %d!!", noverlaps);
1732 //__________________________________________________________________________________________________
1733 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(const Int_t ncells, const Float_t energy, const Int_t nMax,
1734 const Bool_t matched, const Int_t mcindex,
1735 const Float_t mass , const Float_t l0)
1738 // Fill optional histograms with more SS parameters
1742 fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
1743 if(mcindex > 0 ) fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
1745 if (mcindex==kmcPi0 && !matched)
1747 if( energy > fHistoECut)
1749 fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
1750 fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
1754 fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
1755 fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
1759 else if( nMax == 2 )
1761 fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
1762 if(mcindex > 0 ) fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
1765 if (mcindex==kmcPi0 && !matched)
1767 if( energy > fHistoECut)
1769 fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
1770 fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
1774 fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
1775 fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
1779 else if( nMax >= 3 )
1781 fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
1782 if(mcindex > 0 ) fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
1784 if (mcindex==kmcPi0 && !matched)
1786 if( energy > fHistoECut)
1788 fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
1789 fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
1793 fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
1794 fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
1800 //______________________________________________________________________________________________________
1801 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
1802 const Bool_t matched, const Int_t mcindex,
1803 const Float_t mass , const Int_t ebin)
1805 // Fill optional histograms with more SS parameters
1807 Float_t en = cluster->E();
1809 // Get more Shower Shape parameters
1810 Float_t ll0 = 0., ll1 = 0.;
1811 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
1812 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1814 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
1815 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
1817 Float_t dispAsy = -1;
1818 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
1822 if( en > fHistoECut )
1824 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
1825 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
1826 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
1830 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
1831 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
1832 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
1836 if(!matched && ebin >= 0 && fFillEbinHisto)
1838 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
1839 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
1840 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
1843 else if( nMax == 2 )
1845 if( en > fHistoECut )
1847 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
1848 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
1849 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
1853 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
1854 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
1855 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
1859 if(!matched && ebin >= 0 && fFillEbinHisto)
1861 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
1862 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
1863 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
1867 else if( nMax >= 3 )
1869 if( en > fHistoECut )
1871 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
1872 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
1873 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
1877 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
1878 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
1879 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
1883 if(!matched && ebin >= 0 && fFillEbinHisto)
1885 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
1886 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
1887 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
1894 //__________________________________________________________________________________________________
1895 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
1896 const Int_t absId1, const Int_t absId2)
1898 // Calculate weights and fill histograms
1900 AliVCaloCells* cells = 0;
1901 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
1902 else cells = GetPHOSCells();
1904 // First recalculate energy in case non linearity was applied
1906 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1909 Int_t id = clus->GetCellsAbsId()[ipos];
1911 //Recalibrate cell energy if needed
1912 Float_t amp = cells->GetCellAmplitude(id);
1913 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1921 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
1925 //Get amplitude of main local maxima, recalibrate if needed
1926 Float_t amp1 = cells->GetCellAmplitude(absId1);
1927 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
1928 Float_t amp2 = cells->GetCellAmplitude(absId2);
1929 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
1931 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
1932 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
1934 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
1935 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
1936 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
1938 //Get the ratio and log ratio to all cells in cluster
1939 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
1941 Int_t id = clus->GetCellsAbsId()[ipos];
1943 //Recalibrate cell energy if needed
1944 Float_t amp = cells->GetCellAmplitude(id);
1945 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
1947 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
1948 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
1949 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
1951 if (id!=absId1 && id!=absId2)
1953 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
1954 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
1959 //Recalculate shower shape for different W0
1960 if(fCalorimeter=="EMCAL")
1962 Float_t l0org = clus->GetM02();
1963 Float_t l1org = clus->GetM20();
1964 Float_t dorg = clus->GetDispersion();
1965 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
1967 for(Int_t iw = 0; iw < fSSWeightN; iw++)
1969 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
1970 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
1972 Float_t l0 = 0., l1 = 0.;
1973 Float_t disp = 0., dEta = 0., dPhi = 0.;
1974 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1976 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
1977 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
1980 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
1984 // Set the original values back
1985 clus->SetM02(l0org);
1986 clus->SetM20(l1org);
1987 clus->SetDispersion(dorg);
1988 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
1990 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
1992 Float_t l0 = 0., l1 = 0.;
1993 Float_t disp = 0., dEta = 0., dPhi = 0.;
1994 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1996 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
1997 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
1999 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
2000 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2007 //________________________________________________________________________________________
2008 void AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2010 const Int_t mcindex)
2012 // Fill histograms related to track matching
2014 Float_t dZ = cluster->GetTrackDz();
2015 Float_t dR = cluster->GetTrackDx();
2016 Float_t en = cluster->E();
2018 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2020 dR = 2000., dZ = 2000.;
2021 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2024 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2026 if(TMath::Abs(dR) < 999)
2028 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2029 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2030 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2034 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2035 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2036 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2039 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2041 Bool_t positive = kFALSE;
2042 if(track) positive = (track->Charge()>0);
2048 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2049 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2050 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2054 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2055 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2056 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2061 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2062 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2063 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2067 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2068 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2069 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2078 //_______________________________________________________________
2079 TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2081 //Save parameters used for analysis
2082 TString parList ; //this will be list of parameters used for this analysis.
2083 const Int_t buffersize = 255;
2084 char onePar[buffersize] ;
2086 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2089 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
2091 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
2093 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2095 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2097 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
2099 if(fFillSSWeightHisto)
2101 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2105 return new TObjString(parList) ;
2109 //________________________________________________________________
2110 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2112 // Create histograms to be saved in output file and
2113 // store them in outputContainer
2114 TList * outputContainer = new TList() ;
2115 outputContainer->SetName("InsideClusterHistos") ;
2117 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
2118 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
2119 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
2120 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
2121 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
2122 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
2124 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
2125 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
2126 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
2127 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
2128 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
2129 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
2131 Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
2132 Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
2133 Bool_t splitOn = kFALSE;
2134 if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
2135 GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
2136 GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
2138 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron","#pi^{0} (#gamma->e^{#pm})"};
2139 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron","Pi0Conv"};
2143 if(IsDataMC()) n = 8;
2145 Int_t nMaxBins = 10;
2147 TString sMatched[] = {"","Matched"};
2150 if(!fFillTMHisto) nMatched = 1;
2152 for(Int_t i = 0; i < n; i++)
2154 for(Int_t j = 0; j < nMatched; j++)
2157 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2158 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2159 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2160 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2161 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
2162 outputContainer->Add(fhMassNLocMax1[i][j]) ;
2164 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2165 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2166 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2167 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2168 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
2169 outputContainer->Add(fhMassNLocMax2[i][j]) ;
2171 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2172 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
2173 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2174 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2175 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
2176 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
2178 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2179 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2180 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2181 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2182 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
2183 outputContainer->Add(fhM02NLocMax1[i][j]) ;
2185 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2186 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2187 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2188 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2189 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
2190 outputContainer->Add(fhM02NLocMax2[i][j]) ;
2192 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2193 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2194 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2195 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2196 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2197 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
2199 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2200 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2201 nptbins,ptmin,ptmax,200,-1,1);
2202 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2203 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
2204 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
2206 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2207 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2208 nptbins,ptmin,ptmax,200,-1,1);
2209 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2210 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
2211 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
2213 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2214 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
2215 nptbins,ptmin,ptmax,200,-1,1);
2216 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2217 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
2218 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
2220 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2221 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2222 nptbins,ptmin,ptmax,120,0,1.2);
2223 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2224 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2225 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
2227 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2228 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2229 nptbins,ptmin,ptmax,120,0,1.2);
2230 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2231 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2232 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
2234 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2235 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2236 nptbins,ptmin,ptmax,120,0,1.2);
2237 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2238 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2239 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
2242 if(i==0 && j==0 && m02On)
2246 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, M02 cut, no TM",
2247 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2248 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
2249 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
2250 outputContainer->Add(fhMassSplitECutNLocMax1) ;
2252 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2253 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2254 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
2255 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
2256 outputContainer->Add(fhMassSplitECutNLocMax2) ;
2258 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, M02 cut, no TM",
2259 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2260 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2261 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
2262 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
2265 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
2266 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2267 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
2268 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
2269 outputContainer->Add(fhMassM02CutNLocMax1) ;
2271 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
2272 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2273 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
2274 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
2275 outputContainer->Add(fhMassM02CutNLocMax2) ;
2277 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
2278 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2279 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
2280 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
2281 outputContainer->Add(fhMassM02CutNLocMaxN) ;
2283 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2284 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2285 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
2286 outputContainer->Add(fhAsymM02CutNLocMax1) ;
2288 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2289 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2290 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
2291 outputContainer->Add(fhAsymM02CutNLocMax2) ;
2293 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
2294 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
2295 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
2296 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
2301 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2302 Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2303 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2304 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2305 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
2306 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
2308 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2309 Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2310 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2311 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2312 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
2313 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
2316 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2317 Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
2318 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2319 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2320 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2321 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
2323 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2324 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()),
2325 nptbins,ptmin,ptmax,120,0,1.2);
2326 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
2327 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2328 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
2330 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2331 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()),
2332 nptbins,ptmin,ptmax,120,0,1.2);
2333 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
2334 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2335 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
2337 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2338 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()),
2339 nptbins,ptmin,ptmax,120,0,1.2);
2340 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
2341 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
2342 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
2345 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2346 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2347 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2348 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2349 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
2350 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
2352 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2353 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2354 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2355 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2356 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
2357 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
2359 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2360 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2361 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2362 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2363 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
2364 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
2366 if(fFillSSExtraHisto)
2368 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2369 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2370 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2371 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2372 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2373 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
2375 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2376 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2377 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2378 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2379 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2380 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
2382 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2383 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2384 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2385 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2386 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
2387 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
2389 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2390 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
2391 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2392 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2393 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2394 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
2396 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2397 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
2398 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2399 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2400 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2401 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
2403 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2404 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
2405 ssbins,ssmin,ssmax,mbins,mmin,mmax);
2406 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2407 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
2408 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
2410 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2411 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()),
2412 200,-1,1,mbins,mmin,mmax);
2413 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
2414 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2415 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
2417 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2418 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()),
2419 200,-1,1,mbins,mmin,mmax);
2420 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
2421 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2422 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
2424 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2425 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()),
2426 200,-1,1,mbins,mmin,mmax);
2427 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
2428 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
2429 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
2432 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
2433 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
2434 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2435 fhNLocMax[i][j] ->SetYTitle("N maxima");
2436 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
2437 outputContainer->Add(fhNLocMax[i][j]) ;
2441 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
2442 Form("Number of local maxima in cluster %s, M02 cut",ptype[i].Data()),
2443 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
2444 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
2445 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
2446 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
2449 if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
2451 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2452 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2453 nptbins,ptmin,ptmax,200,0,2);
2454 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2455 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2456 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
2458 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2459 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2460 nptbins,ptmin,ptmax,200,0,2);
2461 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2462 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2463 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
2465 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2466 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2467 nptbins,ptmin,ptmax,200,0,2);
2468 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2469 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2470 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
2472 fhMCGenFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2473 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2474 nptbins,ptmin,ptmax,200,0,2);
2475 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2476 fhMCGenFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2477 outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
2479 fhMCGenFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2480 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2481 nptbins,ptmin,ptmax,200,0,2);
2482 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2483 fhMCGenFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2484 outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
2486 fhMCGenFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2487 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2488 nptbins,ptmin,ptmax,200,0,2);
2489 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / E_{reco}");
2490 fhMCGenFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2491 outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
2494 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2495 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2496 nptbins,ptmin,ptmax,200,0,2);
2497 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2498 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
2499 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
2501 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2502 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2503 nptbins,ptmin,ptmax,200,0,2);
2504 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2505 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
2506 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
2508 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2509 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2510 nptbins,ptmin,ptmax,200,0,2);
2511 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2512 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2513 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
2515 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2516 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2517 nptbins,ptmin,ptmax,200,0,2);
2518 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2519 fhMCGenSplitEFracNLocMax1NoOverlap[i][j] ->SetXTitle("E (GeV)");
2520 outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
2522 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2523 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2524 nptbins,ptmin,ptmax,200,0,2);
2525 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2526 fhMCGenSplitEFracNLocMax2NoOverlap[i][j] ->SetXTitle("E (GeV)");
2527 outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
2529 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2530 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2531 nptbins,ptmin,ptmax,200,0,2);
2532 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
2533 fhMCGenSplitEFracNLocMaxNNoOverlap[i][j] ->SetXTitle("E (GeV)");
2534 outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
2536 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2537 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()),
2539 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2540 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2541 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
2543 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2544 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()),
2546 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2547 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2548 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
2551 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2552 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()),
2554 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
2555 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2556 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
2559 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2560 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2561 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2562 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2563 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
2564 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
2566 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2567 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2568 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2569 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2570 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
2571 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
2574 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2575 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2576 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2577 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
2578 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
2579 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
2585 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2586 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
2587 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2588 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
2589 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
2590 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
2592 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2593 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2594 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2595 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
2596 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
2597 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
2600 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2601 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
2602 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2603 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
2604 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2605 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
2608 // Histograms after cluster identification
2613 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2614 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2615 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2616 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2617 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2618 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
2620 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2621 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2622 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2623 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2624 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2625 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
2627 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2628 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2629 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2630 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2631 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2632 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
2634 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2635 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2636 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2637 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2638 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2639 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
2641 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2642 Form("Mass vs E , %s, for NLM = 2",ptype[i].Data()),
2643 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2644 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2645 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2646 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
2648 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2649 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2650 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2651 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2652 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2653 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
2655 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2656 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2657 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2658 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
2659 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2660 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
2662 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2663 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2664 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2665 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
2666 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2667 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
2669 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2670 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2671 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2672 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
2673 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2674 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
2678 fhNCellPi0NLocMax1[i][j] = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2679 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2680 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2681 fhNCellPi0NLocMax1[i][j] ->SetYTitle("n cells");
2682 fhNCellPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
2683 outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
2685 fhNCellPi0NLocMax2[i][j] = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2686 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2687 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2688 fhNCellPi0NLocMax2[i][j] ->SetYTitle("n cells");
2689 fhNCellPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
2690 outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
2692 fhNCellPi0NLocMaxN[i][j] = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2693 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2694 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2695 fhNCellPi0NLocMaxN[i][j] ->SetYTitle("n cells");
2696 fhNCellPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
2697 outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
2704 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2705 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2706 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2707 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2708 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2709 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
2712 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2713 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2714 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2715 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2716 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2717 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
2719 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2720 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2721 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2722 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2723 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2724 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
2726 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2727 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2728 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2729 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2730 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2731 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
2733 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2734 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2735 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2736 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2737 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2738 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
2740 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2741 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2742 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2743 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2744 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2745 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
2747 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2748 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2749 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2750 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
2751 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2752 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
2754 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2755 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2756 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2757 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
2758 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2759 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
2761 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2762 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2763 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2764 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2765 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2766 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
2770 fhNCellEtaNLocMax1[i][j] = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2771 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
2772 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2773 fhNCellEtaNLocMax1[i][j] ->SetYTitle("n cells");
2774 fhNCellEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
2775 outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
2777 fhNCellEtaNLocMax2[i][j] = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2778 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
2779 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2780 fhNCellEtaNLocMax2[i][j] ->SetYTitle("n cells");
2781 fhNCellEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
2782 outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
2784 fhNCellEtaNLocMaxN[i][j] = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2785 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
2786 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
2787 fhNCellEtaNLocMaxN[i][j] ->SetYTitle("n cells");
2788 fhNCellEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2789 outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
2794 if(fFillIdConvHisto)
2796 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2797 Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
2798 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2799 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
2800 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2801 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
2803 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2804 Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
2805 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2806 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
2807 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2808 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
2810 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2811 Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
2812 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2813 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
2814 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2815 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
2818 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2819 Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
2820 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2821 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2822 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2823 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
2825 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2826 Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
2827 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2828 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2829 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2830 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
2832 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2833 Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
2834 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2835 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
2836 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2837 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
2839 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2840 Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
2841 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2842 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
2843 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
2844 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
2846 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2847 Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
2848 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2849 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
2850 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
2851 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
2853 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2854 Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
2855 nptbins,ptmin,ptmax,mbins,mmin,mmax);
2856 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
2857 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
2858 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
2862 } // matched, not matched
2866 for(Int_t j = 0; j < 4; j++)
2869 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
2870 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2871 120,0,1.2,mbins,mmin,mmax);
2872 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2873 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2874 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
2876 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
2877 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2878 120,0,1.2,mbins,mmin,mmax);
2879 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2880 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2881 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
2883 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
2884 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
2885 120,0,1.2,mbins,mmin,mmax);
2886 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2887 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
2888 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
2890 if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
2892 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
2893 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
2894 200,0,2,nMaxBins,0,nMaxBins);
2895 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
2896 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2897 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
2899 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
2900 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
2901 200,0,2,nMaxBins,0,nMaxBins);
2902 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
2903 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
2904 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
2906 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2907 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
2908 200,0,2,mbins,mmin,mmax);
2909 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2910 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2911 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
2913 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2914 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2915 200,0,2,mbins,mmin,mmax);
2916 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
2917 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2918 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
2920 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2921 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
2922 200,0,2,mbins,mmin,mmax);
2923 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
2924 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
2925 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
2927 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
2928 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
2929 200,0,2,ssbins,ssmin,ssmax);
2930 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2931 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2932 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
2934 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
2935 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
2936 200,0,2,ssbins,ssmin,ssmax);
2937 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2938 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2939 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
2941 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
2942 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
2943 200,0,2,ssbins,ssmin,ssmax);
2944 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
2945 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
2946 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
2950 } // MC particle list
2952 if(fFillHighMultHisto)
2956 fhCentralityPi0NLocMax1 = new TH2F("hCentralityPi0NLocMax1",
2957 "E vs Centrality, selected pi0 cluster with NLM=1",
2958 nptbins,ptmin,ptmax,100,0,100);
2959 fhCentralityPi0NLocMax1->SetYTitle("Centrality");
2960 fhCentralityPi0NLocMax1->SetXTitle("E (GeV)");
2961 outputContainer->Add(fhCentralityPi0NLocMax1) ;
2963 fhCentralityPi0NLocMax2 = new TH2F("hCentralityPi0NLocMax2",
2964 "E vs Centrality, selected pi0 cluster with NLM=2",
2965 nptbins,ptmin,ptmax,100,0,100);
2966 fhCentralityPi0NLocMax2->SetYTitle("Centrality");
2967 fhCentralityPi0NLocMax2->SetXTitle("E (GeV)");
2968 outputContainer->Add(fhCentralityPi0NLocMax2) ;
2970 fhCentralityPi0NLocMaxN = new TH2F("hCentralityPi0NLocMaxN",
2971 "E vs Centrality, selected pi0 cluster with NLM>1",
2972 nptbins,ptmin,ptmax,100,0,100);
2973 fhCentralityPi0NLocMaxN->SetYTitle("Centrality");
2974 fhCentralityPi0NLocMaxN->SetXTitle("E (GeV)");
2975 outputContainer->Add(fhCentralityPi0NLocMaxN) ;
2979 fhCentralityEtaNLocMax1 = new TH2F("hCentralityEtaNLocMax1",
2980 "E vs Centrality, selected pi0 cluster with NLM=1",
2981 nptbins,ptmin,ptmax,100,0,100);
2982 fhCentralityEtaNLocMax1->SetYTitle("Centrality");
2983 fhCentralityEtaNLocMax1->SetXTitle("E (GeV)");
2984 outputContainer->Add(fhCentralityEtaNLocMax1) ;
2986 fhCentralityEtaNLocMax2 = new TH2F("hCentralityEtaNLocMax2",
2987 "E vs Centrality, selected pi0 cluster with NLM=2",
2988 nptbins,ptmin,ptmax,100,0,100);
2989 fhCentralityEtaNLocMax2->SetYTitle("Centrality");
2990 fhCentralityEtaNLocMax2->SetXTitle("E (GeV)");
2991 outputContainer->Add(fhCentralityEtaNLocMax2) ;
2993 fhCentralityEtaNLocMaxN = new TH2F("hCentralityEtaNLocMaxN",
2994 "E vs Centrality, selected pi0 cluster with NLM>1",
2995 nptbins,ptmin,ptmax,100,0,100);
2996 fhCentralityEtaNLocMaxN->SetYTitle("Centrality");
2997 fhCentralityEtaNLocMaxN->SetXTitle("E (GeV)");
2998 outputContainer->Add(fhCentralityEtaNLocMaxN) ;
3001 // E vs Event plane angle
3003 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3004 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3005 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
3006 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
3007 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
3009 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3010 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3011 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
3012 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
3013 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
3015 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3016 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3017 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
3018 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
3019 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
3023 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
3024 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3025 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
3026 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
3027 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
3029 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
3030 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3031 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
3032 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
3033 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
3035 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
3036 nptbins,ptmin,ptmax,100,0,TMath::Pi());
3037 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
3038 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
3039 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
3045 for(Int_t i = 0; i < 4; i++)
3047 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
3048 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3049 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3050 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3051 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3052 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
3054 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
3055 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3056 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3057 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3058 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3059 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
3061 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
3062 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3063 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3064 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3065 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
3066 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
3069 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
3070 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
3071 200,-1,1,mbins,mmin,mmax);
3072 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3073 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
3074 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
3076 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
3077 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
3078 200,-1,1,mbins,mmin,mmax);
3079 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3080 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
3081 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
3083 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
3084 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
3085 200,-1,1,mbins,mmin,mmax);
3086 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3087 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
3088 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
3091 if(IsDataMC() && fFillMCHisto)
3093 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
3094 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
3095 ssbins,ssmin,ssmax,100,0,1);
3096 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3097 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3098 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
3100 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
3101 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
3102 ssbins,ssmin,ssmax,100,0,1);
3103 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3104 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3105 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
3107 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
3108 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
3109 ssbins,ssmin,ssmax,100,0,1);
3110 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
3111 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
3112 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
3115 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
3116 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
3118 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3119 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
3120 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
3122 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
3123 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
3125 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3126 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
3127 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
3129 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
3130 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
3132 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
3133 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
3134 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
3137 if(fFillSSExtraHisto)
3139 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
3140 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3141 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3142 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3143 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3144 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
3146 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
3147 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
3148 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3149 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3150 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3151 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
3153 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
3154 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
3155 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3156 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3157 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
3158 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
3160 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
3161 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3162 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3163 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3164 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3165 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
3167 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
3168 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
3169 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3170 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3171 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3172 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
3174 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
3175 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
3176 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3177 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3178 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
3179 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
3181 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
3182 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),
3183 200,-1,1,mbins,mmin,mmax);
3184 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
3185 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3186 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
3188 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
3189 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),
3190 200,-1,1,mbins,mmin,mmax);
3191 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
3192 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3193 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
3195 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
3196 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),
3197 200,-1,1,mbins,mmin,mmax);
3198 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
3199 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3200 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
3205 if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
3207 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
3208 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
3209 nptbins,ptmin,ptmax,200,0,2);
3210 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3211 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3212 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
3214 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
3215 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
3216 nptbins,ptmin,ptmax,200,0,2);
3217 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3218 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3219 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
3222 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
3223 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
3224 nptbins,ptmin,ptmax,200,0,2);
3225 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
3226 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3227 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
3229 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
3230 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
3231 nptbins,ptmin,ptmax,200,0,2);
3232 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3233 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
3234 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
3236 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
3237 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
3238 nptbins,ptmin,ptmax,200,0,2);
3239 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3240 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
3241 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
3244 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
3245 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
3246 nptbins,ptmin,ptmax,200,0,2);
3247 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
3248 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
3249 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
3253 if(fFillTMResidualHisto && fFillTMHisto)
3255 for(Int_t i = 0; i < n; i++)
3258 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
3259 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
3260 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3261 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3262 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
3263 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3265 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
3266 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
3267 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3268 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3269 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
3270 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
3272 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
3273 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
3275 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
3276 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
3277 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3278 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3279 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
3280 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3282 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
3283 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
3284 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3285 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3286 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
3287 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
3289 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
3290 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
3292 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
3293 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
3294 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3295 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3296 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
3297 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3299 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
3300 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
3301 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3302 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3303 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
3304 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
3306 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
3307 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
3309 fhTrackMatchedDEtaNLocMax1Pos[i] = new TH2F
3310 (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
3311 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3312 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3313 fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
3314 fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3316 fhTrackMatchedDPhiNLocMax1Pos[i] = new TH2F
3317 (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
3318 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3319 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3320 fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
3321 fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("E_{cluster} (GeV)");
3323 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
3324 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
3326 fhTrackMatchedDEtaNLocMax2Pos[i] = new TH2F
3327 (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
3328 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3329 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3330 fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
3331 fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3333 fhTrackMatchedDPhiNLocMax2Pos[i] = new TH2F
3334 (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
3335 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3336 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3337 fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
3338 fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("E_{cluster} (GeV)");
3340 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
3341 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
3343 fhTrackMatchedDEtaNLocMaxNPos[i] = new TH2F
3344 (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
3345 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3346 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3347 fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
3348 fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3350 fhTrackMatchedDPhiNLocMaxNPos[i] = new TH2F
3351 (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
3352 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3353 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3354 fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
3355 fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("E_{cluster} (GeV)");
3357 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
3358 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
3360 fhTrackMatchedDEtaNLocMax1Neg[i] = new TH2F
3361 (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
3362 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3363 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3364 fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
3365 fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3367 fhTrackMatchedDPhiNLocMax1Neg[i] = new TH2F
3368 (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
3369 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
3370 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3371 fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
3372 fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("E_{cluster} (GeV)");
3374 outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
3375 outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
3377 fhTrackMatchedDEtaNLocMax2Neg[i] = new TH2F
3378 (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
3379 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3380 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3381 fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
3382 fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3384 fhTrackMatchedDPhiNLocMax2Neg[i] = new TH2F
3385 (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
3386 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
3387 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3388 fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
3389 fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("E_{cluster} (GeV)");
3391 outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
3392 outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
3394 fhTrackMatchedDEtaNLocMaxNNeg[i] = new TH2F
3395 (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
3396 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3397 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
3398 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
3399 fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3401 fhTrackMatchedDPhiNLocMaxNNeg[i] = new TH2F
3402 (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
3403 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
3404 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
3405 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
3406 fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("E_{cluster} (GeV)");
3408 outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
3409 outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
3416 for(Int_t j = 0; j < nMatched; j++)
3419 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
3420 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
3421 nptbins,ptmin,ptmax,200,0,0.2);
3422 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
3423 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
3424 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
3426 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
3427 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3428 nptbins,ptmin,ptmax,200,0,0.2);
3429 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
3430 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
3431 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
3433 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
3434 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
3435 nptbins,ptmin,ptmax,200,0,0.2);
3436 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
3437 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
3438 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
3440 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
3441 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3442 mbins,mmin,mmax,200,0,0.2);
3443 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
3444 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
3445 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
3447 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
3448 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3449 mbins,mmin,mmax,200,0,0.2);
3450 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
3451 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
3452 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
3454 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
3455 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
3456 mbins,mmin,mmax,200,0,0.2);
3457 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
3458 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
3459 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
3464 for(Int_t j = 0; j < nMatched; j++)
3466 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
3467 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
3468 100,-1,1,120,0,1.2);
3469 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3470 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3471 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
3473 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
3474 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
3475 100,-1,1,120,0,1.2);
3476 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3477 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3478 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
3480 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
3481 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
3482 100,-1,1,120,0,1.2);
3483 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
3484 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3485 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
3489 fhClusterEtaPhiNLocMax1 = new TH2F
3490 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3491 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3492 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
3493 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
3495 fhClusterEtaPhiNLocMax2 = new TH2F
3496 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3497 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3498 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
3499 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
3501 fhClusterEtaPhiNLocMaxN = new TH2F
3502 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3503 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3504 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
3505 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
3507 fhPi0EtaPhiNLocMax1 = new TH2F
3508 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3509 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
3510 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
3511 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
3513 fhPi0EtaPhiNLocMax2 = new TH2F
3514 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3515 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
3516 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
3517 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
3519 fhPi0EtaPhiNLocMaxN = new TH2F
3520 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3521 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3522 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
3523 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
3527 fhEtaEtaPhiNLocMax1 = new TH2F
3528 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3529 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
3530 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
3531 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
3533 fhEtaEtaPhiNLocMax2 = new TH2F
3534 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3535 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
3536 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
3537 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
3539 fhEtaEtaPhiNLocMaxN = new TH2F
3540 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
3541 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
3542 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
3543 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
3546 TString snlm[] = {"1","2","N"};
3548 if(fFillSSWeightHisto)
3550 for(Int_t nlm = 0; nlm < 3; nlm++)
3552 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
3553 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
3554 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
3555 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
3556 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
3557 outputContainer->Add(fhPi0CellE[nlm]) ;
3559 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
3560 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
3561 nptbins,ptmin,ptmax, 100,0,1);
3562 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
3563 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
3564 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
3566 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
3567 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
3568 nptbins,ptmin,ptmax, 100,-10,0);
3569 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
3570 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
3571 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
3574 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
3575 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
3576 nptbins,ptmin,ptmax, 100,0,1);
3577 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
3578 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3579 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
3581 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
3582 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
3583 nptbins,ptmin,ptmax, 100,0,1);
3584 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
3585 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
3586 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
3588 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
3589 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
3590 nptbins,ptmin,ptmax, 100,0,1);
3591 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
3592 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
3593 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
3595 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
3596 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
3597 nptbins,ptmin,ptmax, 100,0,1);
3598 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
3599 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
3600 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
3602 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
3603 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
3604 nptbins,ptmin,ptmax, 200,0,2);
3605 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
3606 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
3607 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
3610 for(Int_t i = 0; i < fSSWeightN; i++)
3612 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
3613 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
3614 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3615 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3616 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
3617 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
3620 for(Int_t i = 0; i < fSSECellCutN; i++)
3622 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
3623 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
3624 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3625 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
3626 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
3627 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
3633 Int_t tdbins = GetHistogramRanges()->GetHistoDiffTimeBins() ; Float_t tdmax = GetHistogramRanges()->GetHistoDiffTimeMax(); Float_t tdmin = GetHistogramRanges()->GetHistoDiffTimeMin();
3635 fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3636 fhPi0EPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3637 fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3638 outputContainer->Add(fhPi0EPairDiffTimeNLM1);
3640 fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3641 fhPi0EPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3642 fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3643 outputContainer->Add(fhPi0EPairDiffTimeNLM2);
3645 fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3646 fhPi0EPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3647 fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3648 outputContainer->Add(fhPi0EPairDiffTimeNLMN);
3652 fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, NLM=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3653 fhEtaEPairDiffTimeNLM1->SetXTitle("E_{pair} (GeV)");
3654 fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta t (ns)");
3655 outputContainer->Add(fhEtaEPairDiffTimeNLM1);
3657 fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, NLM=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3658 fhEtaEPairDiffTimeNLM2->SetXTitle("E_{pair} (GeV)");
3659 fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta t (ns)");
3660 outputContainer->Add(fhEtaEPairDiffTimeNLM2);
3662 fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
3663 fhEtaEPairDiffTimeNLMN->SetXTitle("E_{pair} (GeV)");
3664 fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta t (ns)");
3665 outputContainer->Add(fhEtaEPairDiffTimeNLMN);
3668 if(fFillNCellHisto && IsDataMC())
3671 fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3672 fhNCellMassEHighNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3673 fhNCellMassEHighNLocMax1MCPi0->SetXTitle("n cells");
3674 outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
3676 fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3677 fhNCellMassELowNLocMax1MCPi0->SetYTitle("M (GeV/c^{2})");
3678 fhNCellMassELowNLocMax1MCPi0->SetXTitle("n cells");
3679 outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
3681 fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3682 fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3683 fhNCellM02EHighNLocMax1MCPi0->SetXTitle("n cells");
3684 outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
3686 fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3687 fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
3688 fhNCellM02ELowNLocMax1MCPi0->SetXTitle("n cells");
3689 outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
3691 fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3692 fhNCellMassEHighNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3693 fhNCellMassEHighNLocMax2MCPi0->SetXTitle("n cells");
3694 outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
3696 fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3697 fhNCellMassELowNLocMax2MCPi0->SetYTitle("M (GeV/c^{2})");
3698 fhNCellMassELowNLocMax2MCPi0->SetXTitle("n cells");
3699 outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
3701 fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3702 fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3703 fhNCellM02EHighNLocMax2MCPi0->SetXTitle("n cells");
3704 outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
3706 fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3707 fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
3708 fhNCellM02ELowNLocMax2MCPi0->SetXTitle("n cells");
3709 outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
3711 fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3712 fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3713 fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("n cells");
3714 outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
3716 fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
3717 fhNCellMassELowNLocMaxNMCPi0->SetYTitle("M (GeV/c^{2})");
3718 fhNCellMassELowNLocMaxNMCPi0->SetXTitle("n cells");
3719 outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
3721 fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3722 fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3723 fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("n cells");
3724 outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
3726 fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
3727 fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
3728 fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("n cells");
3729 outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
3733 if(IsDataMC() && fFillMCOverlapHisto)
3735 for(Int_t i = 1; i < n; i++)
3737 for(Int_t j = 0; j < 3; j++)
3739 fhMCENOverlaps[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3740 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3741 nptbins,ptmin,ptmax,10,0,10);
3742 fhMCENOverlaps[j][i] ->SetYTitle("# overlaps");
3743 fhMCENOverlaps[j][i] ->SetXTitle("E (GeV)");
3744 outputContainer->Add(fhMCENOverlaps[j][i]) ;
3746 fhMCEM02Overlap0[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3747 Form("Overlap 0, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3748 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3749 fhMCEM02Overlap0[j][i] ->SetYTitle("#lambda_{0}^{2}");
3750 fhMCEM02Overlap0[j][i] ->SetXTitle("E (GeV)");
3751 outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
3753 fhMCEM02Overlap1[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3754 Form("Overlap 1, #lambda_{0}^{2} vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3755 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3756 fhMCEM02Overlap1[j][i] ->SetYTitle("#lambda_{0}^{2}");
3757 fhMCEM02Overlap1[j][i] ->SetXTitle("E (GeV)");
3758 outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
3760 fhMCEM02OverlapN[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3761 Form("Overlap N, #lambda_{0}^{2} vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3762 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3763 fhMCEM02OverlapN[j][i] ->SetYTitle("#lambda_{0}^{2}");
3764 fhMCEM02OverlapN[j][i] ->SetXTitle("E (GeV)");
3765 outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
3767 fhMCEMassOverlap0[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3768 Form("Overlap 0, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3769 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3770 fhMCEMassOverlap0[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3771 fhMCEMassOverlap0[j][i] ->SetXTitle("E (GeV)");
3772 outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
3774 fhMCEMassOverlap1[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3775 Form("Overalap 1, Mass vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3776 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3777 fhMCEMassOverlap1[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3778 fhMCEMassOverlap1[j][i] ->SetXTitle("E (GeV)");
3779 outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
3781 fhMCEMassOverlapN[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3782 Form("Overlap N, Mass vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3783 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3784 fhMCEMassOverlapN[j][i] ->SetYTitle("Mass (GeV/c^{2})");
3785 fhMCEMassOverlapN[j][i] ->SetXTitle("E (GeV)");
3786 outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
3788 fhMCEAsymOverlap0[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3789 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3790 nptbins,ptmin,ptmax,100,0,1);
3791 fhMCEAsymOverlap0[j][i] ->SetYTitle("|A|");
3792 fhMCEAsymOverlap0[j][i] ->SetXTitle("E (GeV)");
3793 outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
3795 fhMCEAsymOverlap1[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3796 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3797 nptbins,ptmin,ptmax,100,0,1);
3798 fhMCEAsymOverlap1[j][i] ->SetYTitle("|A|");
3799 fhMCEAsymOverlap1[j][i] ->SetXTitle("E (GeV)");
3800 outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
3802 fhMCEAsymOverlapN[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3803 Form("Overlap N, Asymmetry vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3804 nptbins,ptmin,ptmax,100,0,1);
3805 fhMCEAsymOverlapN[j][i] ->SetYTitle("|A|");
3806 fhMCEAsymOverlapN[j][i] ->SetXTitle("E (GeV)");
3807 outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
3810 fhMCEEpriOverlap0[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3811 Form("Overlap 0, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3812 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3813 fhMCEEpriOverlap0[j][i] ->SetYTitle("E_{gen} (GeV)");
3814 fhMCEEpriOverlap0[j][i] ->SetXTitle("E_{reco} (GeV)");
3815 outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
3817 fhMCEEpriOverlap1[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3818 Form("Overalap 1, E reco vs E prim for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3819 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3820 fhMCEEpriOverlap1[j][i] ->SetYTitle("E_{gen} (GeV)");
3821 fhMCEEpriOverlap1[j][i] ->SetXTitle("E_{reco} (GeV)");
3822 outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
3824 fhMCEEpriOverlapN[j][i] = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3825 Form("Overlap N, E reco vs E prim for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3826 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3827 fhMCEEpriOverlapN[j][i] ->SetYTitle("E_{gen} (GeV)");
3828 fhMCEEpriOverlapN[j][i] ->SetXTitle("E_{reco} (GeV)");
3829 outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
3832 fhMCESplitEFracOverlap0[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
3833 Form("Overlap 0, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3834 nptbins,ptmin,ptmax,120,0,1.2);
3835 fhMCESplitEFracOverlap0[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3836 fhMCESplitEFracOverlap0[j][i] ->SetXTitle("E (GeV)");
3837 outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
3839 fhMCESplitEFracOverlap1[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3840 Form("Overalap 1, SplitEFrac vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3841 nptbins,ptmin,ptmax,120,0,1.2);
3842 fhMCESplitEFracOverlap1[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3843 fhMCESplitEFracOverlap1[j][i] ->SetXTitle("E (GeV)");
3844 outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
3846 fhMCESplitEFracOverlapN[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
3847 Form("Overlap N, SplitEFrac vs E for NLM=%s %s",snlm[j].Data(),ptype[i].Data()),
3848 nptbins,ptmin,ptmax,120,0,1.2);
3849 fhMCESplitEFracOverlapN[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3850 fhMCESplitEFracOverlapN[j][i] ->SetXTitle("E (GeV)");
3851 outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
3855 fhMCPi0MassM02Overlap0[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
3856 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3857 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3858 fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("M (GeV/c^{2})");
3859 fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3860 outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
3862 fhMCPi0MassM02Overlap1[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
3863 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3864 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3865 fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("M (GeV/c^{2})");
3866 fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3867 outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
3869 fhMCPi0MassM02OverlapN[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
3870 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d",snlm[j].Data(),i-1),
3871 ssbins,ssmin,ssmax,mbins,mmin,mmax);
3872 fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("M (GeV/c^{2})");
3873 fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
3874 outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
3879 fhMCENOverlapsMatch[j][i] = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3880 Form("# overlaps vs E for NLM=%s, %s",snlm[j].Data(),ptype[i].Data()),
3881 nptbins,ptmin,ptmax,10,0,10);
3882 fhMCENOverlapsMatch[j][i] ->SetYTitle("# overlaps");
3883 fhMCENOverlapsMatch[j][i] ->SetXTitle("E (GeV)");
3884 outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
3886 fhMCEM02Overlap0Match[j][i] = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3887 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3888 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3889 fhMCEM02Overlap0Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3890 fhMCEM02Overlap0Match[j][i] ->SetXTitle("E (GeV)");
3891 outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
3893 fhMCEM02Overlap1Match[j][i] = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3894 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3895 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3896 fhMCEM02Overlap1Match[j][i] ->SetYTitle("#lambda_{0}^{2}");
3897 fhMCEM02Overlap1Match[j][i] ->SetXTitle("E (GeV)");
3898 outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
3900 fhMCEM02OverlapNMatch[j][i] = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3901 Form("#lambda_{0}^{2} vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3902 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3903 fhMCEM02OverlapNMatch[j][i] ->SetYTitle("#lambda_{0}^{2}");
3904 fhMCEM02OverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3905 outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
3907 fhMCEMassOverlap0Match[j][i] = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3908 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3909 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3910 fhMCEMassOverlap0Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3911 fhMCEMassOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3912 outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
3914 fhMCEMassOverlap1Match[j][i] = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3915 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3916 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3917 fhMCEMassOverlap1Match[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3918 fhMCEMassOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3919 outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
3921 fhMCEMassOverlapNMatch[j][i] = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3922 Form("Mass vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3923 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3924 fhMCEMassOverlapNMatch[j][i] ->SetYTitle("Mass (GeV/c^{2}");
3925 fhMCEMassOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3926 outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
3929 fhMCEAsymOverlap0Match[j][i] = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3930 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3931 nptbins,ptmin,ptmax,100,0,1);
3932 fhMCEAsymOverlap0Match[j][i] ->SetYTitle("|A|");
3933 fhMCEAsymOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3934 outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
3936 fhMCEAsymOverlap1Match[j][i] = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3937 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3938 nptbins,ptmin,ptmax,100,0,1);
3939 fhMCEAsymOverlap1Match[j][i] ->SetYTitle("|A|");
3940 fhMCEAsymOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3941 outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
3943 fhMCEAsymOverlapNMatch[j][i] = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3944 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3945 nptbins,ptmin,ptmax,100,0,1);
3946 fhMCEAsymOverlapNMatch[j][i] ->SetYTitle("|A|");
3947 fhMCEAsymOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3948 outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
3951 fhMCEEpriOverlap0Match[j][i] = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3952 Form("Overlap 0, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3953 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3954 fhMCEEpriOverlap0Match[j][i] ->SetYTitle("E_{gen} (GeV)");
3955 fhMCEEpriOverlap0Match[j][i] ->SetXTitle("E_{reco} (GeV)");
3956 outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
3958 fhMCEEpriOverlap1Match[j][i] = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3959 Form("Overalap 1, Asymmetry vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3960 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3961 fhMCEEpriOverlap1Match[j][i] ->SetYTitle("E_{gen} (GeV)");
3962 fhMCEEpriOverlap1Match[j][i] ->SetXTitle("E_{reco} (GeV)");
3963 outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
3965 fhMCEEpriOverlapNMatch[j][i] = new TH2F(Form("hMCEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3966 Form("Overlap N, Asymmetry vs E for NLM=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3967 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
3968 fhMCEEpriOverlapNMatch[j][i] ->SetYTitle("E_{gen} (GeV)");
3969 fhMCEEpriOverlapNMatch[j][i] ->SetXTitle("E_{reco} (GeV)");
3970 outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
3973 fhMCESplitEFracOverlap0Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
3974 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3975 nptbins,ptmin,ptmax,120,0,1.2);
3976 fhMCESplitEFracOverlap0Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3977 fhMCESplitEFracOverlap0Match[j][i] ->SetXTitle("E (GeV)");
3978 outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
3980 fhMCESplitEFracOverlap1Match[j][i] = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3981 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3982 nptbins,ptmin,ptmax,120,0,1.2);
3983 fhMCESplitEFracOverlap1Match[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3984 fhMCESplitEFracOverlap1Match[j][i] ->SetXTitle("E (GeV)");
3985 outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
3987 fhMCESplitEFracOverlapNMatch[j][i] = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
3988 Form("SplitEFrac vs E for NLM=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
3989 nptbins,ptmin,ptmax,120,0,1.2);
3990 fhMCESplitEFracOverlapNMatch[j][i] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
3991 fhMCESplitEFracOverlapNMatch[j][i] ->SetXTitle("E (GeV)");
3992 outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
3997 fhMCPi0MassM02Overlap0Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
3998 Form("Overlap 0, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
3999 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4000 fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4001 fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4002 outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
4004 fhMCPi0MassM02Overlap1Match[j][i-1] = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4005 Form("Overlap 1, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4006 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4007 fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("M (GeV/c^{2})");
4008 fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4009 outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
4011 fhMCPi0MassM02OverlapNMatch[j][i-1] = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
4012 Form("Overlap N, Mass vs #lambda_{0}^{2}, NLM=%s, E bin %d, Track Matched",snlm[j].Data(),i-1),
4013 ssbins,ssmin,ssmax,mbins,mmin,mmax);
4014 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("M (GeV/c^{2})");
4015 fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
4016 outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
4024 fhMCPi0HighNLMPair = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4025 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4026 fhMCPi0HighNLMPair ->SetYTitle("N maxima");
4027 fhMCPi0HighNLMPair ->SetXTitle("E (GeV)");
4028 outputContainer->Add(fhMCPi0HighNLMPair) ;
4030 fhMCPi0LowNLMPair = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4031 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4032 fhMCPi0LowNLMPair ->SetYTitle("N maxima");
4033 fhMCPi0LowNLMPair ->SetXTitle("E (GeV)");
4034 outputContainer->Add(fhMCPi0LowNLMPair) ;
4036 fhMCPi0AnyNLMPair = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4037 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4038 fhMCPi0AnyNLMPair ->SetYTitle("N maxima");
4039 fhMCPi0AnyNLMPair ->SetXTitle("E (GeV)");
4040 outputContainer->Add(fhMCPi0AnyNLMPair) ;
4042 fhMCPi0NoneNLMPair = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4043 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4044 fhMCPi0NoneNLMPair ->SetYTitle("N maxima");
4045 fhMCPi0NoneNLMPair ->SetXTitle("E (GeV)");
4046 outputContainer->Add(fhMCPi0NoneNLMPair) ;
4049 fhMCPi0HighNLMPairNoMCMatch = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4050 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4051 fhMCPi0HighNLMPairNoMCMatch ->SetYTitle("N maxima");
4052 fhMCPi0HighNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4053 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
4055 fhMCPi0LowNLMPairNoMCMatch = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4056 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4057 fhMCPi0LowNLMPairNoMCMatch ->SetYTitle("N maxima");
4058 fhMCPi0LowNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4059 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
4061 fhMCPi0AnyNLMPairNoMCMatch = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4062 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4063 fhMCPi0AnyNLMPairNoMCMatch ->SetYTitle("N maxima");
4064 fhMCPi0AnyNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4065 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
4067 fhMCPi0NoneNLMPairNoMCMatch = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4068 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4069 fhMCPi0NoneNLMPairNoMCMatch ->SetYTitle("N maxima");
4070 fhMCPi0NoneNLMPairNoMCMatch ->SetXTitle("E (GeV)");
4071 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
4077 fhMCPi0HighNLMPairOverlap = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4078 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4079 fhMCPi0HighNLMPairOverlap ->SetYTitle("N maxima");
4080 fhMCPi0HighNLMPairOverlap ->SetXTitle("E (GeV)");
4081 outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
4083 fhMCPi0LowNLMPairOverlap = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4084 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4085 fhMCPi0LowNLMPairOverlap ->SetYTitle("N maxima");
4086 fhMCPi0LowNLMPairOverlap ->SetXTitle("E (GeV)");
4087 outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
4089 fhMCPi0AnyNLMPairOverlap = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4090 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4091 fhMCPi0AnyNLMPairOverlap ->SetYTitle("N maxima");
4092 fhMCPi0AnyNLMPairOverlap ->SetXTitle("E (GeV)");
4093 outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
4095 fhMCPi0NoneNLMPairOverlap = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4096 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4097 fhMCPi0NoneNLMPairOverlap ->SetYTitle("N maxima");
4098 fhMCPi0NoneNLMPairOverlap ->SetXTitle("E (GeV)");
4099 outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
4101 fhMCPi0HighNLMPairNoMCMatchOverlap = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
4102 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4103 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4104 fhMCPi0HighNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4105 outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
4107 fhMCPi0LowNLMPairNoMCMatchOverlap = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
4108 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4109 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4110 fhMCPi0LowNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4111 outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
4113 fhMCPi0AnyNLMPairNoMCMatchOverlap = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
4114 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4115 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4116 fhMCPi0AnyNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4117 outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
4119 fhMCPi0NoneNLMPairNoMCMatchOverlap = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
4120 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4121 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetYTitle("N maxima");
4122 fhMCPi0NoneNLMPairNoMCMatchOverlap ->SetXTitle("E (GeV)");
4123 outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
4125 fhMCPi0DecayPhotonHitHighLM = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
4126 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4127 fhMCPi0DecayPhotonHitHighLM ->SetYTitle("N maxima");
4128 fhMCPi0DecayPhotonHitHighLM ->SetXTitle("E (GeV)");
4129 outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
4131 fhMCPi0DecayPhotonAdjHighLM = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
4132 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4133 fhMCPi0DecayPhotonAdjHighLM ->SetYTitle("N maxima");
4134 fhMCPi0DecayPhotonAdjHighLM ->SetXTitle("E (GeV)");
4135 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
4137 fhMCPi0DecayPhotonHitOtherLM = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
4138 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4139 fhMCPi0DecayPhotonHitOtherLM ->SetYTitle("N maxima");
4140 fhMCPi0DecayPhotonHitOtherLM ->SetXTitle("E (GeV)");
4141 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
4143 fhMCPi0DecayPhotonAdjOtherLM = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
4144 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4145 fhMCPi0DecayPhotonAdjOtherLM ->SetYTitle("N maxima");
4146 fhMCPi0DecayPhotonAdjOtherLM ->SetXTitle("E (GeV)");
4147 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
4149 fhMCPi0DecayPhotonAdjacent = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
4150 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4151 fhMCPi0DecayPhotonAdjacent ->SetYTitle("N maxima");
4152 fhMCPi0DecayPhotonAdjacent ->SetXTitle("E (GeV)");
4153 outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
4155 fhMCPi0DecayPhotonHitNoLM = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
4156 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4157 fhMCPi0DecayPhotonHitNoLM ->SetYTitle("N maxima");
4158 fhMCPi0DecayPhotonHitNoLM ->SetXTitle("E (GeV)");
4159 outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
4162 fhMCPi0DecayPhotonHitHighLMOverlap = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
4163 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4164 fhMCPi0DecayPhotonHitHighLMOverlap ->SetYTitle("N maxima");
4165 fhMCPi0DecayPhotonHitHighLMOverlap ->SetXTitle("E (GeV)");
4166 outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
4168 fhMCPi0DecayPhotonAdjHighLMOverlap = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
4169 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4170 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetYTitle("N maxima");
4171 fhMCPi0DecayPhotonAdjHighLMOverlap ->SetXTitle("E (GeV)");
4172 outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
4174 fhMCPi0DecayPhotonHitOtherLMOverlap = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
4175 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4176 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetYTitle("N maxima");
4177 fhMCPi0DecayPhotonHitOtherLMOverlap ->SetXTitle("E (GeV)");
4178 outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
4180 fhMCPi0DecayPhotonAdjOtherLMOverlap = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
4181 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4182 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetYTitle("N maxima");
4183 fhMCPi0DecayPhotonAdjOtherLMOverlap ->SetXTitle("E (GeV)");
4184 outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
4186 fhMCPi0DecayPhotonAdjacentOverlap = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
4187 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4188 fhMCPi0DecayPhotonAdjacentOverlap ->SetYTitle("N maxima");
4189 fhMCPi0DecayPhotonAdjacentOverlap ->SetXTitle("E (GeV)");
4190 outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
4192 fhMCPi0DecayPhotonHitNoLMOverlap = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
4193 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
4194 fhMCPi0DecayPhotonHitNoLMOverlap ->SetYTitle("N maxima");
4195 fhMCPi0DecayPhotonHitNoLMOverlap ->SetXTitle("E (GeV)");
4196 outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
4199 fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
4200 nptbins,ptmin,ptmax,5,0,5);
4201 //fhMCEOverlapType ->SetYTitle("Overlap Type");
4202 fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
4203 fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4204 fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4205 fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4206 fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
4207 fhMCEOverlapType->SetXTitle("Cluster E (GeV)");
4208 outputContainer->Add(fhMCEOverlapType) ;
4210 fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
4211 nptbins,ptmin,ptmax,5,0,5);
4212 //fhMCEOverlapTypeMatch ->SetYTitle("Overlap Type");
4213 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
4214 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
4215 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
4216 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
4217 fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
4218 fhMCEOverlapTypeMatch->SetXTitle("Cluster E (GeV)");
4219 outputContainer->Add(fhMCEOverlapTypeMatch) ;
4221 }// MC analysis, check overlaps
4223 return outputContainer ;
4227 //_____________________________________________________________________________
4228 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
4229 Int_t & mcindex, Int_t & tag)
4232 // Assign mc index depending on MC bit set, to be used in histograms arrays
4234 tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
4236 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
4237 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
4238 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
4239 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
4240 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4241 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
4242 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
4243 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
4244 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
4245 else mcindex = kmcHadron;
4250 //______________________________________________________________________________________________________________
4251 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex,
4252 const Int_t mctag, const Bool_t matched,
4253 Float_t & eprim, Float_t & asymGen, Int_t & noverlaps )
4255 // Check origin of the candidates, get primary kinematics if overlapped meson decay
4258 Int_t mcLabel = cluster->GetLabel();
4260 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
4261 eprim = primary.E();
4263 Int_t mesonLabel = -1;
4265 if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
4267 if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
4269 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
4270 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
4271 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4275 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
4276 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
4277 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
4281 if(!fFillMCOverlapHisto) return;
4283 const UInt_t nlabels = cluster->GetNLabels();
4284 Int_t overpdg[nlabels];
4285 noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
4287 for(Int_t iover = 0; iover < noverlaps; iover++)
4289 Float_t histobin = -1;
4290 Int_t mpdg = overpdg[iover];
4292 if (mpdg==22) histobin = 0.5;
4293 else if(TMath::Abs(mpdg)==11) histobin = 1.5;
4294 else if(mpdg==-999999) histobin = 4.5;
4297 Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
4298 if(TMath::Abs(charge) > 0 ) histobin = 2.5;
4299 else histobin = 3.5;
4300 //printf("charge %f\n",charge);
4303 //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
4306 if(matched)fhMCEOverlapType ->Fill(cluster->E(),histobin);
4307 else fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
4312 //___________________________________________
4313 void AliAnaInsideClusterInvariantMass::Init()
4317 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
4319 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
4322 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
4324 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
4328 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
4330 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
4337 //_____________________________________________________
4338 void AliAnaInsideClusterInvariantMass::InitParameters()
4340 //Initialize the parameters of the analysis.
4341 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
4343 fCalorimeter = "EMCAL" ;
4351 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
4352 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
4355 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
4356 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
4361 //__________________________________________________________________
4362 void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
4364 //Search for pi0 in fCalorimeter with shower shape analysis
4366 TObjArray * pl = 0x0;
4367 AliVCaloCells* cells = 0x0;
4369 //Select the Calorimeter of the photon
4370 if(fCalorimeter == "PHOS")
4372 pl = GetPHOSClusters();
4373 cells = GetPHOSCells();
4375 else if (fCalorimeter == "EMCAL")
4377 pl = GetEMCALClusters();
4378 cells = GetEMCALCells();
4383 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
4387 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
4389 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
4391 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
4393 //-------------------------------------------
4394 // Get cluster parameters, do some rejection
4395 //-------------------------------------------
4397 Float_t en = cluster->E();
4398 Float_t l0 = cluster->GetM02();
4399 Int_t nc = cluster->GetNCells();
4400 Float_t bd = cluster->GetDistanceToBadChannel() ;
4402 //If too small or big E or low number of cells, or close to a bad channel skip it
4404 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
4406 //printf("en %2.3f GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
4408 // Track-cluster matching
4410 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
4411 if(!fFillTMHisto && matched) continue ;
4413 // Get cluster angles
4416 cluster->GetMomentum(lv, GetVertex(0));
4417 Float_t eta = lv.Eta();
4418 Float_t phi = lv.Phi();
4419 if(phi<0) phi=+TMath::TwoPi();
4421 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
4422 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
4424 // Get PID, N local maximum, *** split cluster ***
4427 Double_t mass = 0., angle = 0.;
4428 TLorentzVector l1, l2;
4429 Int_t absId1 =-1; Int_t absId2 =-1;
4430 Float_t distbad1 =-1; Float_t distbad2 =-1;
4431 Bool_t fidcut1 = 0; Bool_t fidcut2 = 0;
4433 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
4434 GetVertex(0), nMax, mass, angle,
4435 l1,l2,absId1,absId2,
4436 distbad1,distbad2,fidcut1,fidcut2);
4440 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
4445 // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
4446 if( (fCheckSplitDistToBad) &&
4447 (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
4450 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
4451 distbad1,distbad2, fidcut1,fidcut2);
4456 // Set some index for array histograms
4459 if (nMax == 1) inlm = 0;
4460 else if(nMax == 2) inlm = 1;
4461 else if(nMax > 2) inlm = 2;
4462 else printf("Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
4464 // Get sub-cluster parameters
4466 Float_t e1 = l1.Energy();
4467 Float_t e2 = l2.Energy();
4469 Double_t tof1 = cells->GetCellTime(absId1);
4470 GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4473 Double_t tof2 = cells->GetCellTime(absId2);
4474 GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
4477 Double_t t12diff = tof1-tof2;
4479 Float_t splitFrac = (e1+e2)/en;
4482 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
4487 if(en > 8 && en <= 12) ebin = 0;
4488 if(en > 12 && en <= 16) ebin = 1;
4489 if(en > 16 && en <= 20) ebin = 2;
4490 if(en > 20) ebin = 3;
4492 // MC data histograms and some related calculations
4493 // mc tag, n overlaps, asym of generated mesons
4498 Float_t asymGen = -2;
4499 Int_t noverlaps = 0;
4505 GetMCIndex(cluster,mcindex,mctag);
4507 // MC primary kine, generation fractions
4509 GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,noverlaps);
4511 // For cluster with MC pi0 and more than 1 maxima
4513 if(fFillMCOverlapHisto)
4514 CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps);
4515 //mass, l0, l1, l2);
4520 FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
4521 nMax,matched,splitFrac, asym, eprim,asymGen);
4525 if(fFillMCOverlapHisto)
4526 FillMCOverlapHistograms(en,eprim,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
4531 FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
4536 FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
4540 if(fFillTMHisto && fFillTMResidualHisto)
4541 FillTrackMatchingHistograms(cluster,nMax,mcindex);
4545 if(fFillSSExtraHisto)
4546 FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin) ;
4550 if(!matched && ebin > 0 && fFillEbinHisto)
4551 FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
4556 FillAngleHistograms(matched,nMax,en,angle,mass);
4558 //---------------------------------------------------------------------
4559 // From here start applying some cuts
4560 //---------------------------------------------------------------------
4562 FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
4564 if(pidTag==AliCaloPID::kPi0)
4566 FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4568 if(fFillSSWeightHisto)
4569 FillSSWeightHistograms(cluster, inlm, absId1, absId2);
4571 else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
4573 FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
4575 else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
4577 FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
4582 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
4586 //______________________________________________________________________
4587 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
4589 //Print some relevant parameters set for the analysis
4593 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4594 AliAnaCaloTrackCorrBaseClass::Print("");
4595 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
4596 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
4597 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
4598 printf("Min. N Cells =%d \n", fMinNCells) ;
4599 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
4600 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
4606 //___________________________________________________________________________________________________________________
4607 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
4608 AliVCaloCells* cells,
4609 AliVCluster * cluster,
4610 Float_t & l0, Float_t & l1,
4611 Float_t & disp, Float_t & dEta, Float_t & dPhi,
4612 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
4615 // Calculates new center of gravity in the local EMCAL-module coordinates
4616 // and tranfers into global ALICE coordinates
4617 // Calculates Dispersion and main axis
4621 AliInfo("Cluster pointer null!");
4625 Double_t eCell = 0.;
4626 Float_t fraction = 1.;
4627 Float_t recalFactor = 1.;
4635 Double_t etai = -1.;
4636 Double_t phii = -1.;
4641 Double_t etaMean = 0.;
4642 Double_t phiMean = 0.;
4644 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
4645 // and to check if the cluster is between 2 SM in eta
4647 Bool_t shared = kFALSE;
4650 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4652 //Get from the absid the supermodule, tower and eta/phi numbers
4653 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4654 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4656 //Check if there are cells of different SM
4657 if (iDigit == 0 ) iSM0 = iSupMod;
4658 else if(iSupMod!= iSM0) shared = kTRUE;
4660 //Get the cell energy, if recalibration is on, apply factors
4661 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4662 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4664 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4666 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4669 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4671 if(eCell > eCellMin) energy += eCell;
4675 //Loop on cells, get weighted parameters
4676 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4678 //Get from the absid the supermodule, tower and eta/phi numbers
4679 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4680 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4682 //Get the cell energy, if recalibration is on, apply factors
4683 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4684 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4686 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4688 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4691 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4693 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4694 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4695 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4697 if(energy > 0 && eCell > eCellMin)
4699 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4701 //correct weight, ONLY in simulation
4702 w *= (1 - fWSimu * w );
4704 etai=(Double_t)ieta;
4705 phii=(Double_t)iphi;
4712 sEta += w * etai * etai ;
4713 etaMean += w * etai ;
4714 sPhi += w * phii * phii ;
4715 phiMean += w * phii ;
4716 sEtaPhi += w * etai * phii ;
4719 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4723 //Normalize to the weight
4730 AliError(Form("Wrong weight %f\n", wtot));
4732 //Calculate dispersion
4733 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
4735 //Get from the absid the supermodule, tower and eta/phi numbers
4736 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
4737 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
4739 //Get the cell energy, if recalibration is on, apply factors
4740 fraction = cluster->GetCellAmplitudeFraction(iDigit);
4741 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
4742 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
4744 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
4747 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
4749 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
4750 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
4751 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
4753 if(energy > 0 && eCell > eCellMin)
4755 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
4757 //correct weight, ONLY in simulation
4758 w *= (1 - fWSimu * w );
4760 etai=(Double_t)ieta;
4761 phii=(Double_t)iphi;
4764 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
4765 dEta += w * (etai-etaMean)*(etai-etaMean) ;
4766 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
4769 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
4772 //Normalize to the weigth and set shower shape parameters
4773 if (wtot > 0 && nstat > 1)
4782 sEta -= etaMean * etaMean ;
4783 sPhi -= phiMean * phiMean ;
4784 sEtaPhi -= etaMean * phiMean ;
4786 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4787 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
4793 dEta = 0. ; dPhi = 0. ; disp = 0. ;
4794 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;