]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
Dalitz: New histogram for photon effiVsRadius
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaInsideClusterInvariantMass.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //_________________________________________________________________________
17 //
18 // Split clusters with some criteria and calculate invariant mass
19 // to identify them as pi0 or conversion
20 //
21 //
22 //-- Author: Gustavo Conesa (LPSC-Grenoble)  
23 //_________________________________________________________________________
24
25 //////////////////////////////////////////////////////////////////////////////
26   
27   
28 // --- ROOT system --- 
29 #include <TList.h>
30 #include <TClonesArray.h>
31 #include <TObjString.h>
32 #include <TH2F.h>
33 #include <TDatabasePDG.h>
34
35 // --- Analysis system --- 
36 #include "AliAnaInsideClusterInvariantMass.h" 
37 #include "AliCaloTrackReader.h"
38 #include "AliMCAnalysisUtils.h"
39 #include "AliStack.h"
40 #include "AliFiducialCut.h"
41 #include "TParticle.h"
42 #include "AliVCluster.h"
43 #include "AliAODEvent.h"
44 #include "AliAODMCParticle.h"
45 #include "AliEMCALGeoParams.h"
46
47 // --- Detectors ---
48 //#include "AliPHOSGeoUtils.h"
49 #include "AliEMCALGeometry.h"
50
51 ClassImp(AliAnaInsideClusterInvariantMass)
52   
53 //__________________________________________________________________
54 AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() : 
55   AliAnaCaloTrackCorrBaseClass(),
56   fMinNCells(0),                             fMinBadDist(0),
57   fHistoECut(0),                             fCheckSplitDistToBad(0),                   fFillAngleHisto(kFALSE),
58   fFillTMHisto(kFALSE),                      fFillTMResidualHisto(kFALSE),              fFillSSExtraHisto(kFALSE),
59   fFillMCHisto(kFALSE),                      fFillSSWeightHisto(kFALSE),
60   fFillNLMDiffCutHisto(kFALSE),              fFillEbinHisto(0),
61   fFillMCOverlapHisto(0),                    fFillNCellHisto(0),                        fFillIdConvHisto(0),
62   fFillIdEtaHisto(0),                        fFillHighMultHisto(0),
63   fFillArmenterosHisto(0),                   fFillThetaStarHisto(0),
64   fSSWeightN(0),                             fSSECellCutN(0),
65   fNLMSettingN(0),                           fWSimu(),
66   fClusterMomentum(),                        fSubClusterMom1(),                         fSubClusterMom2(),
67   fSubClusterMomSum(),                       fSubClusterMomBoost(),
68   fPrimaryMom(),                             fGrandMotherMom(),
69   fMCDaughMom1(),                            fMCDaughMom2(),
70   fProdVertex(),
71 // Histograms
72   fhMassAsyCutNLocMax1(0),                   fhMassAsyCutNLocMax2(0),                   fhMassAsyCutNLocMaxN(0),
73   fhM02AsyCutNLocMax1(0),                    fhM02AsyCutNLocMax2(0),                    fhM02AsyCutNLocMaxN(0),
74   fhMassM02CutNLocMax1(0),                   fhMassM02CutNLocMax2(0),                   fhMassM02CutNLocMaxN(0),
75   fhAsymM02CutNLocMax1(0),                   fhAsymM02CutNLocMax2(0),                   fhAsymM02CutNLocMaxN(0),
76   fhMassEnCutNLocMax1(0),                    fhMassEnCutNLocMax2(0),                    fhMassEnCutNLocMaxN(0),
77   fhM02EnCutNLocMax1(0),                     fhM02EnCutNLocMax2(0),                     fhM02EnCutNLocMaxN(0),
78   fhAsymEnCutNLocMax1(0),                    fhAsymEnCutNLocMax2(0),                    fhAsymEnCutNLocMaxN(0),
79   fhSplitEFracEnCutNLocMax1(0),              fhSplitEFracEnCutNLocMax2(0),              fhSplitEFracEnCutNLocMaxN(0),
80   fhMassSplitECutNLocMax1(0),                fhMassSplitECutNLocMax2(0),                fhMassSplitECutNLocMaxN(0),
81   fhMCGenFracAfterCutsNLocMax1MCPi0(0),      fhMCGenFracAfterCutsNLocMax2MCPi0(0),      fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
82   fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
83   fhNCellMassEHighNLocMax1MCPi0(0),          fhNCellM02EHighNLocMax1MCPi0(0),
84   fhNCellMassELowNLocMax1MCPi0(0),           fhNCellM02ELowNLocMax1MCPi0(0),
85   fhNCellMassEHighNLocMax2MCPi0(0),          fhNCellM02EHighNLocMax2MCPi0(0),
86   fhNCellMassELowNLocMax2MCPi0(0),           fhNCellM02ELowNLocMax2MCPi0(0),
87   fhNCellMassEHighNLocMaxNMCPi0(0),          fhNCellM02EHighNLocMaxNMCPi0(0),
88   fhNCellMassELowNLocMaxNMCPi0(0),           fhNCellM02ELowNLocMaxNMCPi0(0),
89   fhAnglePairPrimPi0RecoNLocMax1(0),         fhAnglePairPrimPi0RecoNLocMax2(0),         fhAnglePairPrimPi0RecoNLocMaxN(0),
90   fhAnglePairPrimPi0vsRecoNLocMax1(0),       fhAnglePairPrimPi0vsRecoNLocMax2(0),       fhAnglePairPrimPi0vsRecoNLocMaxN(0),
91   fhAnglePairPrimPi0OverM02NLocMax1(0),      fhAnglePairPrimPi0OverM02NLocMax2(0),      fhAnglePairPrimPi0OverM02NLocMaxN(0),
92   fhCentralityPi0NLocMax1(0),                fhCentralityEtaNLocMax1(0),
93   fhCentralityPi0NLocMax2(0),                fhCentralityEtaNLocMax2(0),
94   fhCentralityPi0NLocMaxN(0),                fhCentralityEtaNLocMaxN(0),
95   fhEventPlanePi0NLocMax1(0),                fhEventPlaneEtaNLocMax1(0),
96   fhEventPlanePi0NLocMax2(0),                fhEventPlaneEtaNLocMax2(0),
97   fhEventPlanePi0NLocMaxN(0),                fhEventPlaneEtaNLocMaxN(0),
98   fhClusterEtaPhiNLocMax1(0),                fhClusterEtaPhiNLocMax2(0),                fhClusterEtaPhiNLocMaxN(0),
99   fhPi0EtaPhiNLocMax1(0),                    fhPi0EtaPhiNLocMax2(0),                    fhPi0EtaPhiNLocMaxN(0),
100   fhEtaEtaPhiNLocMax1(0),                    fhEtaEtaPhiNLocMax2(0),                    fhEtaEtaPhiNLocMaxN(0),
101   fhPi0EPairDiffTimeNLM1(0),                 fhPi0EPairDiffTimeNLM2(0),                 fhPi0EPairDiffTimeNLMN(0),
102   fhEtaEPairDiffTimeNLM1(0),                 fhEtaEPairDiffTimeNLM2(0),                 fhEtaEPairDiffTimeNLMN(0),
103   fhMCPi0HighNLMPair(0),                     fhMCPi0LowNLMPair(0),
104   fhMCPi0AnyNLMPair(0),                      fhMCPi0NoneNLMPair(0),
105   fhMCPi0HighNLMPairNoMCMatch(0),            fhMCPi0LowNLMPairNoMCMatch(0),
106   fhMCPi0AnyNLMPairNoMCMatch(0),             fhMCPi0NoneNLMPairNoMCMatch(0),
107   fhMCPi0HighNLMPairOverlap(0),              fhMCPi0LowNLMPairOverlap(0),
108   fhMCPi0AnyNLMPairOverlap(0),               fhMCPi0NoneNLMPairOverlap(0),
109   fhMCPi0HighNLMPairNoMCMatchOverlap(0),     fhMCPi0LowNLMPairNoMCMatchOverlap(0),
110   fhMCPi0AnyNLMPairNoMCMatchOverlap(0),      fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
111   fhMCPi0DecayPhotonHitHighLM(0),            fhMCPi0DecayPhotonAdjHighLM(0),
112   fhMCPi0DecayPhotonHitOtherLM(0),           fhMCPi0DecayPhotonAdjOtherLM(0),
113   fhMCPi0DecayPhotonAdjacent(0),             fhMCPi0DecayPhotonHitNoLM(0),
114   fhMCPi0DecayPhotonHitHighLMOverlap(0),     fhMCPi0DecayPhotonAdjHighLMOverlap(0),
115   fhMCPi0DecayPhotonHitOtherLMOverlap(0),    fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
116   fhMCPi0DecayPhotonAdjacentOverlap(0),      fhMCPi0DecayPhotonHitNoLMOverlap(0),
117   fhMCEOverlapType(0),                       fhMCEOverlapTypeMatch(0)
118 {
119   //default ctor
120   
121   // Init array of histograms
122   for(Int_t i = 0; i < 7; i++)
123   {
124     for(Int_t j = 0; j < 2; j++)
125     {
126       fhMassNLocMax1[i][j]  = 0;
127       fhMassNLocMax2[i][j]  = 0;
128       fhMassNLocMaxN[i][j]  = 0;
129       fhMassSplitENLocMax1[i][j]  = 0;
130       fhMassSplitENLocMax2[i][j]  = 0;
131       fhMassSplitENLocMaxN[i][j]  = 0;
132       fhNLocMax[i][j]       = 0;
133       fhNLocMaxM02Cut[i][j] = 0;
134       fhSplitClusterENLocMax   [i][j] = 0;
135       fhSplitClusterEPi0NLocMax[i][j] = 0;
136       fhM02NLocMax1[i][j]   = 0;
137       fhM02NLocMax2[i][j]   = 0;
138       fhM02NLocMaxN[i][j]   = 0;
139       fhNCellNLocMax1[i][j] = 0;
140       fhNCellNLocMax2[i][j] = 0;
141       fhNCellNLocMaxN[i][j] = 0;
142       fhM02Pi0NLocMax1[i][j] = 0;
143       fhM02EtaNLocMax1[i][j] = 0;
144       fhM02ConNLocMax1[i][j] = 0;
145       fhM02Pi0NLocMax2[i][j] = 0;
146       fhM02EtaNLocMax2[i][j] = 0;
147       fhM02ConNLocMax2[i][j] = 0;
148       fhM02Pi0NLocMaxN[i][j] = 0;
149       fhM02EtaNLocMaxN[i][j] = 0;
150       fhM02ConNLocMaxN[i][j] = 0;
151       
152       fhMassPi0NLocMax1[i][j] = 0;
153       fhMassEtaNLocMax1[i][j] = 0;
154       fhMassConNLocMax1[i][j] = 0;
155       fhMassPi0NLocMax2[i][j] = 0;
156       fhMassEtaNLocMax2[i][j] = 0;
157       fhMassConNLocMax2[i][j] = 0;
158       fhMassPi0NLocMaxN[i][j] = 0;
159       fhMassEtaNLocMaxN[i][j] = 0;
160       fhMassConNLocMaxN[i][j] = 0;
161       
162       fhNCellPi0NLocMax1[i][j] = 0;
163       fhNCellEtaNLocMax1[i][j] = 0;
164       fhNCellPi0NLocMax2[i][j] = 0;
165       fhNCellEtaNLocMax2[i][j] = 0;
166       fhNCellPi0NLocMaxN[i][j] = 0;
167       fhNCellEtaNLocMaxN[i][j] = 0;
168       
169       fhAsyPi0NLocMax1[i][j] = 0;
170       fhAsyEtaNLocMax1[i][j] = 0;
171       fhAsyConNLocMax1[i][j] = 0;
172       fhAsyPi0NLocMax2[i][j] = 0;
173       fhAsyEtaNLocMax2[i][j] = 0;
174       fhAsyConNLocMax2[i][j] = 0;
175       fhAsyPi0NLocMaxN[i][j] = 0;
176       fhAsyEtaNLocMaxN[i][j] = 0;
177       fhAsyConNLocMaxN[i][j] = 0;      
178       
179       fhMassM02NLocMax1[i][j]= 0;
180       fhMassM02NLocMax2[i][j]= 0;
181       fhMassM02NLocMaxN[i][j]= 0;
182       
183       fhMassSplitEPi0NLocMax1[i][j]  = 0;
184       fhMassSplitEPi0NLocMax2[i][j]  = 0;
185       fhMassSplitEPi0NLocMaxN[i][j]  = 0;
186
187       fhMassSplitEAfterCutsNLocMax1[i][j]  = 0;
188       fhMassSplitEAfterCutsNLocMax2[i][j]  = 0;
189       fhMassSplitEAfterCutsNLocMaxN[i][j]  = 0;
190
191       
192       fhMassDispEtaNLocMax1[i][j]= 0;
193       fhMassDispEtaNLocMax2[i][j]= 0;
194       fhMassDispEtaNLocMaxN[i][j]= 0;      
195       fhMassDispPhiNLocMax1[i][j]= 0;
196       fhMassDispPhiNLocMax2[i][j]= 0;
197       fhMassDispPhiNLocMaxN[i][j]= 0;      
198       fhMassDispAsyNLocMax1[i][j]= 0;
199       fhMassDispAsyNLocMax2[i][j]= 0;
200       fhMassDispAsyNLocMaxN[i][j]= 0;      
201       
202       fhSplitEFractionNLocMax1[i][j]=0;
203       fhSplitEFractionNLocMax2[i][j]=0;
204       fhSplitEFractionNLocMaxN[i][j]=0;
205       
206       fhAnglePairNLocMax1         [i][j] = 0;
207       fhAnglePairNLocMax2         [i][j] = 0;
208       fhAnglePairNLocMaxN         [i][j] = 0;
209
210       fhAnglePairAfterCutsNLocMax1[i][j] = 0;
211       fhAnglePairAfterCutsNLocMax2[i][j] = 0;
212       fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
213
214       fhAnglePairPi0NLocMax1      [i][j] = 0;
215       fhAnglePairPi0NLocMax2      [i][j] = 0;
216       fhAnglePairPi0NLocMaxN      [i][j] = 0;
217       
218       fhAnglePairMassNLocMax1     [i][j] = 0;
219       fhAnglePairMassNLocMax2     [i][j] = 0;
220       fhAnglePairMassNLocMaxN     [i][j] = 0;
221
222       fhAnglePairM02NLocMax1      [i][j] = 0;
223       fhAnglePairM02NLocMax2      [i][j] = 0;
224       fhAnglePairM02NLocMaxN      [i][j] = 0;
225       
226       fhAnglePairOverM02NLocMax1  [i][j] = 0;
227       fhAnglePairOverM02NLocMax2  [i][j] = 0;
228       fhAnglePairOverM02NLocMaxN  [i][j] = 0;
229       
230       fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
231       fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
232       fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
233       
234       fhCosThStarNLocMax1         [i][j] = 0;
235       fhCosThStarNLocMax2         [i][j] = 0;
236       fhCosThStarNLocMaxN         [i][j] = 0;
237       
238       fhCosThStarAfterCutsNLocMax1[i][j] = 0;
239       fhCosThStarAfterCutsNLocMax2[i][j] = 0;
240       fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
241       
242       fhCosThStarPi0NLocMax1      [i][j] = 0;
243       fhCosThStarPi0NLocMax2      [i][j] = 0;
244       fhCosThStarPi0NLocMaxN      [i][j] = 0;
245       
246       fhMCGenFracNLocMax1[i][j]= 0;
247       fhMCGenFracNLocMax2[i][j]= 0;
248       fhMCGenFracNLocMaxN[i][j]= 0;
249
250       fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
251       fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
252       fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
253       
254       fhMCGenSplitEFracNLocMax1[i][j]= 0;
255       fhMCGenSplitEFracNLocMax2[i][j]= 0;
256       fhMCGenSplitEFracNLocMaxN[i][j]= 0;    
257
258       fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
259       fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
260       fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
261       
262       fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
263       fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
264       fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;    
265       
266       fhMCGenEvsSplitENLocMax1[i][j]= 0;
267       fhMCGenEvsSplitENLocMax2[i][j]= 0;
268       fhMCGenEvsSplitENLocMaxN[i][j]= 0;     
269       
270       fhAsymNLocMax1 [i][j] = 0;
271       fhAsymNLocMax2 [i][j] = 0;
272       fhAsymNLocMaxN [i][j] = 0;
273       
274       fhMassAfterCutsNLocMax1[i][j] = 0;
275       fhMassAfterCutsNLocMax2[i][j] = 0;
276       fhMassAfterCutsNLocMaxN[i][j] = 0;
277
278       
279       fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
280       fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
281       fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
282     }
283    
284     for(Int_t jj = 0; jj < 4; jj++)
285     {
286       fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
287       fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
288       fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
289       
290       fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
291       fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
292       fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
293       
294       fhMCGenFracNLocMaxEbin[i][jj]       = 0;
295       fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
296       
297       fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
298       fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
299       fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
300     }
301     
302     fhTrackMatchedDEtaNLocMax1[i] = 0;
303     fhTrackMatchedDPhiNLocMax1[i] = 0;
304     fhTrackMatchedDEtaNLocMax2[i] = 0;
305     fhTrackMatchedDPhiNLocMax2[i] = 0; 
306     fhTrackMatchedDEtaNLocMaxN[i] = 0; 
307     fhTrackMatchedDPhiNLocMaxN[i] = 0; 
308
309     fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
310     fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
311     fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
312     fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
313     fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
314     fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
315
316     fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
317     fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
318     fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
319     fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
320     fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
321     fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
322     
323     for(Int_t nlm = 0; nlm < 3; nlm++)
324     {
325       fhMCEM02Overlap0     [nlm][i] = 0;
326       fhMCEM02Overlap1     [nlm][i] = 0;
327       fhMCEM02OverlapN     [nlm][i] = 0;
328       fhMCEM02Overlap0Match[nlm][i] = 0;
329       fhMCEM02Overlap1Match[nlm][i] = 0;
330       fhMCEM02OverlapNMatch[nlm][i] = 0;
331       
332       fhMCEMassOverlap0     [nlm][i] = 0;
333       fhMCEMassOverlap1     [nlm][i] = 0;
334       fhMCEMassOverlapN     [nlm][i] = 0;
335       fhMCEMassOverlap0Match[nlm][i] = 0;
336       fhMCEMassOverlap1Match[nlm][i] = 0;
337       fhMCEMassOverlapNMatch[nlm][i] = 0;
338
339       fhMCEAsymOverlap0     [nlm][i] = 0;
340       fhMCEAsymOverlap1     [nlm][i] = 0;
341       fhMCEAsymOverlapN     [nlm][i] = 0;
342       fhMCEAsymOverlap0Match[nlm][i] = 0;
343       fhMCEAsymOverlap1Match[nlm][i] = 0;
344       fhMCEAsymOverlapNMatch[nlm][i] = 0;
345
346       fhMCENCellOverlap0     [nlm][i] = 0;
347       fhMCENCellOverlap1     [nlm][i] = 0;
348       fhMCENCellOverlapN     [nlm][i] = 0;
349       fhMCENCellOverlap0Match[nlm][i] = 0;
350       fhMCENCellOverlap1Match[nlm][i] = 0;
351       fhMCENCellOverlapNMatch[nlm][i] = 0;
352       
353       fhMCEEpriOverlap0     [nlm][i] = 0;
354       fhMCEEpriOverlap1     [nlm][i] = 0;
355       fhMCEEpriOverlapN     [nlm][i] = 0;
356       fhMCEEpriOverlap0Match[nlm][i] = 0;
357       fhMCEEpriOverlap1Match[nlm][i] = 0;
358       fhMCEEpriOverlapNMatch[nlm][i] = 0;
359
360       fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
361       fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
362       fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
363       
364       fhMCESplitEFracOverlap0     [nlm][i] = 0;
365       fhMCESplitEFracOverlap1     [nlm][i] = 0;
366       fhMCESplitEFracOverlapN     [nlm][i] = 0;
367       fhMCESplitEFracOverlap0Match[nlm][i] = 0;
368       fhMCESplitEFracOverlap1Match[nlm][i] = 0;
369       fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
370       
371       fhMCENOverlaps       [nlm][i] = 0;
372       fhMCENOverlapsMatch  [nlm][i] = 0;
373             
374       if(i > 3) continue ;
375       
376       fhMCPi0MassM02Overlap0     [nlm][i] = 0;
377       fhMCPi0MassM02Overlap1     [nlm][i] = 0;
378       fhMCPi0MassM02OverlapN     [nlm][i] = 0;
379       fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
380       fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
381       fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
382     }
383   }
384    
385   for(Int_t i = 0; i < 2; i++)
386   {
387     fhSplitEFractionvsAsyNLocMax1[i] = 0;
388     fhSplitEFractionvsAsyNLocMax2[i] = 0; 
389     fhSplitEFractionvsAsyNLocMaxN[i] = 0;    
390   }
391   
392   for(Int_t i = 0; i < 4; i++)
393   {
394     fhMassM02NLocMax1Ebin[i] = 0 ;
395     fhMassM02NLocMax2Ebin[i] = 0 ;
396     fhMassM02NLocMaxNEbin[i] = 0 ;
397
398     fhMassAsyNLocMax1Ebin[i] = 0 ;
399     fhMassAsyNLocMax2Ebin[i] = 0 ;
400     fhMassAsyNLocMaxNEbin[i] = 0 ;
401
402     fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
403     fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
404     fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
405     
406     fhMassDispEtaNLocMax1Ebin[i] = 0 ;
407     fhMassDispEtaNLocMax2Ebin[i] = 0 ;
408     fhMassDispEtaNLocMaxNEbin[i] = 0 ;
409     
410     fhMassDispPhiNLocMax1Ebin[i] = 0 ;
411     fhMassDispPhiNLocMax2Ebin[i] = 0 ;
412     fhMassDispPhiNLocMaxNEbin[i] = 0 ;    
413     
414     fhMassDispAsyNLocMax1Ebin[i] = 0 ;
415     fhMassDispAsyNLocMax2Ebin[i] = 0 ;
416     fhMassDispAsyNLocMaxNEbin[i] = 0 ;    
417
418     fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
419     fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
420     fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
421   }
422   
423   for(Int_t nlm = 0; nlm < 3; nlm++)
424   {
425     
426     fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
427     fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;           
428     fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;           
429     fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;            
430     
431     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;     
432     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;      
433     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;     
434     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;     
435     
436     fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;           
437     fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;            
438     fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;            
439     fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;         
440     
441     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;    
442     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;      
443     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;     
444     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
445     
446     fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
447     fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
448     fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
449     fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
450     
451     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
452     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
453     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
454     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
455     
456     fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
457     fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
458     fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
459     fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
460     
461     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
462     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
463     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
464     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
465     
466     fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
467     fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;                 
468     fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;              
469     fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;               
470     fhMCPi0DecayPhotonAdjacentMass  [nlm] = 0 ;                  
471     fhMCPi0DecayPhotonHitNoLMMass   [nlm] = 0 ;                  
472     
473     fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
474     fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;          
475     fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;        
476     fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;        
477     fhMCPi0DecayPhotonAdjacentOverlapMass  [nlm] = 0 ;
478     fhMCPi0DecayPhotonHitNoLMOverlapMass   [nlm] = 0 ;          
479     
480     fhPi0CellE       [nlm] = 0 ;
481     fhPi0CellEFrac   [nlm] = 0 ;
482     fhPi0CellLogEFrac[nlm] = 0 ;
483     
484     fhPi0CellEMaxEMax2Frac   [nlm] = 0 ;
485     fhPi0CellEMaxClusterFrac [nlm] = 0 ;
486     fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
487
488     fhPi0CellEMaxFrac [nlm] = 0 ;
489     fhPi0CellEMax2Frac[nlm] = 0 ;
490     
491     for(Int_t i = 0; i < 20; i++)
492     {
493       fhM02WeightPi0  [nlm][i] = 0;
494       fhM02ECellCutPi0[nlm][i] = 0;
495     }
496     
497     fhMassBadDistClose[nlm] = 0;
498     fhM02BadDistClose [nlm] = 0;
499     fhMassOnBorder    [nlm] = 0;
500     fhM02OnBorder     [nlm] = 0;
501     
502     fhAsyMCGenRecoDiffMCPi0    [nlm] = 0;
503     fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
504
505   }
506   
507   for(Int_t i = 0; i < 7; i++)
508   {
509     for(Int_t j = 0; j < 4; j++)
510     {
511       
512       fhArmNLocMax1[i][j]  = 0;
513       fhArmNLocMax2[i][j]  = 0;
514       fhArmNLocMaxN[i][j]  = 0;
515       
516       fhArmPi0NLocMax1[i][j] = 0;
517       fhArmPi0NLocMax2[i][j] = 0;
518       fhArmPi0NLocMaxN[i][j] = 0;
519       
520       fhArmAfterCutsNLocMax1[i][j] = 0;
521       fhArmAfterCutsNLocMax2[i][j] = 0;
522       fhArmAfterCutsNLocMaxN[i][j] = 0;
523       
524     }
525   }
526   
527   for(Int_t i = 0; i < 5; i++)
528   {
529     for(Int_t j = 0; j < 5; j++)
530     {
531       fhNLocMaxDiffCut   [i][j][0] = 0;
532       fhNLocMaxDiffCut   [i][j][1] = 0;
533       fhNLocMaxDiffCutPi0[i][j][0] = 0;
534       fhNLocMaxDiffCutPi0[i][j][1] = 0;
535       for(Int_t k = 0; k < 3; k++)
536       {
537         fhM02NLocMaxDiffCut    [i][j][k][0] = 0;
538         fhM02NLocMaxDiffCut    [i][j][k][1] = 0;
539         fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
540         fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
541         fhMassNLocMaxDiffCut   [i][j][k][0] = 0;
542         fhMassNLocMaxDiffCut   [i][j][k][1] = 0;
543         fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
544         fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
545       }
546     }
547   }
548   
549   InitParameters();
550
551 }
552
553 //___________________________________________________________________________________________________________________
554 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
555                                                                 Float_t e1,    Float_t e2,    Float_t mass)
556                                                                 //Float_t m02,
557                                                                 //TLorentzVector l1, TLorentzVector l2)
558 {
559   // Check origin NLM tower of the cluster, when MC gives merged pi0
560   
561   if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
562
563   const UInt_t nc = cluster->GetNCells();
564   Int_t   list[nc];
565   Float_t elist[nc];
566   Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
567   
568   
569   //// PRINTS /////
570   
571   //if(mcindex==kmcPi0)     printf("** Normal Pi0 **\n");
572   //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
573
574 //  if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
575 //  {
576 //     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",
577 //            nMax, noverlaps,mass,m02,
578 //            l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
579 //            l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
580 //    
581 //    // Study the mothers of cluster
582 //    printf("Cluster MC labels %d \n", cluster->GetNLabels());
583 //    for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
584 //    {
585 //      Int_t mclabel = cluster->GetLabels()[ilab];
586 //      
587 //      Bool_t  mOK = 0;
588 //      Int_t   mpdg = -999999;
589 //      Int_t   mstatus = -1;
590 //      Int_t   grandLabel = -1;
591 //      fPrimaryMom = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
592 //      
593 //      printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
594 //             ilab, mclabel, mpdg, mstatus,fPrimaryMom.E(), fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(),mOK,grandLabel);
595 //      
596 //      if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
597 //      {
598 //        while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
599 //        {
600 //          Int_t newLabel = -1;
601 //          TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
602 //          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",
603 //                 ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
604 //          grandLabel = newLabel;
605 //          
606 //        }
607 //      }
608 //    }
609 //    
610 //    printf("Cells in cluster %d\n",cluster->GetNCells() );
611 //    for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
612 //    {
613 //      Int_t absIdCell = cluster->GetCellAbsId(icell);
614 //      Int_t mcLabel   = GetEMCALCells()->GetCellMCLabel(absIdCell);
615 //      GetReader()->RemapMCLabelForAODs(mcLabel);
616 //      Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
617 //      Int_t smc = GetModuleNumberCellIndexes(absIdCell,GetCalorimeter(), ietac, iphic, rcuc);
618 //
619 //      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);
620 //    }
621 //  }
622   //// PRINTS /////
623   
624   
625   //If only one maxima, consider all the towers in the cluster
626   if(nMax==1)
627   {
628     for (UInt_t icell = 0; icell < nc; icell++ )
629     {
630       list [icell] = cluster->GetCellAbsId(icell);
631       elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
632     }
633   }
634   
635   Int_t nmaxima = nMax;
636   if(nMax==1) nmaxima = nc ;
637   
638   //Find highest energy Local Maxima Towers
639   Int_t   imax  = 999;
640   Int_t   imax2 = 999;
641   Float_t emax  = -1;
642   Float_t emax2 = -1;
643   for(Int_t i = 0; i < nmaxima; i++)
644   {
645     //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
646     if(elist[i] > emax)
647     {
648       imax = i;
649       emax = elist[i];
650     }
651   }
652   
653   //Find second highest
654   for(Int_t i = 0; i < nmaxima; i++)
655   {
656     if(i==imax) continue;
657     
658     //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
659     
660     if(elist[i] > emax2)
661     {
662       imax2 = i;
663       emax2 = elist[i];
664     }
665   }
666   
667 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
668 //    printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
669   
670   //---------------------------------------------------------
671   //---------------------------------------------------------
672   // Compare ancestors of all local maxima at cell MC level
673   //---------------------------------------------------------
674   //---------------------------------------------------------
675   
676   // Check that the highest mc label and the max cluster label are the same
677   Int_t mcLabelMax = -1 ;
678   if(imax >=0 && imax < 999)
679   {
680     mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
681     GetReader()->RemapMCLabelForAODs(mcLabelMax);
682   }
683   
684   Int_t mcLabelMax2 = -1 ;
685   if(imax2 >=0 && imax2 < 999)
686   {
687     mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
688     GetReader()->RemapMCLabelForAODs(mcLabelMax2);
689   }
690   
691   Int_t mcLabelclusterMax = cluster->GetLabels()[0];
692   Bool_t matchHighLMAndHighMC = kFALSE;
693   
694   //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
695   
696   if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
697   {
698     matchHighLMAndHighMC = kTRUE;
699     //printf("\t *** MATCH cluster and LM maximum ***\n");
700   }
701   else
702   {
703      //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
704     if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
705     {
706       //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
707       matchHighLMAndHighMC = kTRUE;
708     }
709     else
710     {
711       //printf("\t \t *** NO MATCH***\n");
712       matchHighLMAndHighMC = kFALSE;
713     }
714   }
715   
716   // Compare the common ancestors of the 2 highest energy local maxima
717   Int_t ancPDG = 0, ancStatus = -1;
718   Int_t ancLabel = 0;
719   Bool_t high = kFALSE;
720   Bool_t low  = kFALSE;
721
722 //  // print maxima origin
723 //  for(Int_t i = 0; i < nMax; i++)
724 //  {
725 //    Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
726 //    GetReader()->RemapMCLabelForAODs(mcLabel1);
727 //    
728 //    Bool_t ok  =kFALSE,gok = kFALSE;
729 //    Int_t pdg    = -22222, status   = -1;
730 //    Int_t gpdg   = -22222, gstatus  = -1;
731 //    Int_t ggpdg  = -22222, ggstatus = -1;
732 //    Int_t gLabel = -1, ggLabel = -1;
733 //    TLorentzVector primary   =GetMCAnalysisUtils()->GetMother     (mcLabel1,GetReader(),  pdg,  status, ok);
734 //    TLorentzVector gprimary  =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
735 //    TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel  ,GetReader(),ggpdg,ggstatus,gok);
736 //    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",
737 //           i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
738 //  }
739
740   for(Int_t i = 0; i < nmaxima-1; i++)
741   {
742     Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
743     GetReader()->RemapMCLabelForAODs(mcLabel1);
744  
745     for(Int_t j = i+1; j < nmaxima; j++)
746     {
747       Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
748       GetReader()->RemapMCLabelForAODs(mcLabel2);
749       
750       if(mcLabel1 < 0 || mcLabel2 < 0 )
751       {
752         //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
753         continue;
754       }
755       
756       ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
757                                                            GetReader(),ancPDG,ancStatus,fPrimaryMom,fProdVertex);
758       if(ancPDG==111)
759       {
760         if((i==imax && j==imax2) ||  (j==imax && i==imax2))
761           high = kTRUE;
762         else
763           low = kTRUE;
764       }
765       else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
766       {
767         // If both bits are set, it could be that one of the maxima had a conversion
768         // reset the bit in this case
769         if(high && low)
770         {
771           //printf("\t Reset low bit\n");
772           low = kFALSE;
773         }
774       }
775      
776       Bool_t ok  =kFALSE;
777       Int_t pdg = -22222, status = -1;
778       fPrimaryMom = GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
779       //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);
780
781     }
782   }
783   
784   Float_t en = cluster->E();
785   
786 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
787 //    printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
788   
789   if(!noverlaps)
790   {
791     if(matchHighLMAndHighMC)
792     {
793       if     (high && !low)  fhMCPi0HighNLMPair->Fill(en,nMax);
794       else if(low  && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
795       else if(low  &&  high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
796       else                   fhMCPi0NoneNLMPair->Fill(en,nMax);
797     }
798     else
799     {
800       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
801       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
802       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
803       else                   fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
804     }
805   }
806   else
807   {
808     if(matchHighLMAndHighMC)
809     {
810       if     (high && !low)  fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
811       else if(low  && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
812       else if(low  &&  high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
813       else                   fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
814     }
815     else
816     {
817       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
818       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
819       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
820       else                   fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
821     }  
822   }
823   
824   //----------------------------------------------------------------------
825   //----------------------------------------------------------------------
826   // Compare MC decay photon projection to cell location and Local Maxima
827   //----------------------------------------------------------------------
828   //----------------------------------------------------------------------
829   
830   // Get the mother pi0
831   
832   Bool_t ok     = kFALSE;
833   Int_t pdg    = -22222, status   = -1;
834   Int_t gLabel = -1;
835   
836   Int_t label = cluster->GetLabel();
837   
838   while( pdg!=111 && label>=0 )
839   {
840     fPrimaryMom = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
841   }
842   
843   if(pdg!=111 || label < 0)
844   {
845     Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
846     return;
847   }
848   
849   Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
850   
851   if(nDaugthers != 2)
852   {
853     Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
854     return;
855   }
856   
857   // Get daughter photon kinematics
858   Int_t pdg0 = -22222, status0   = -1; Int_t label0 = -1;
859   fMCDaughMom1 = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
860   Int_t pdg1 = -22222, status1   = -1; Int_t label1 = -1;
861   fMCDaughMom2 = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
862
863   if(pdg1!=22 || pdg0 != 22)
864   {
865     Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
866     return;
867   }
868   
869   // In what cells did the photons hit
870   Float_t eta0 = fMCDaughMom1.Eta();
871   Float_t eta1 = fMCDaughMom2.Eta();
872   
873   Float_t phi0 = fMCDaughMom1.Phi();
874   Float_t phi1 = fMCDaughMom2.Phi();
875
876 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
877 //  {
878 //    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",
879 //           label , fPrimaryMom.E()    , fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(), (fMCDaughMom1+fMCDaughMom2).M(),
880 //           label0, fMCDaughMom1.E(),          eta0,         phi0*TMath::RadToDeg(),
881 //           label1, fMCDaughMom2.E(),          eta1,         phi1*TMath::RadToDeg());
882 //    
883 //    TLorentzVector momclus;
884 //    cluster->GetMomentum(momclus,GetVertex(0));
885 //    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());
886 //  }
887   
888   if(phi0 < 0 ) phi0+=TMath::TwoPi();
889   if(phi1 < 0 ) phi1+=TMath::TwoPi();
890   
891   Int_t absId0=-1, absId1=-1;
892   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
893   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
894   
895   if(absId0 < 0 || absId1 < 0)
896   {
897     //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() -  Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
898     return;
899   }
900   
901   //-----------------------------------------------
902   // Check that the 2 photons hit the Local Maxima
903   //-----------------------------------------------
904   
905   
906 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
907 //  {
908 //    printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
909 //    printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
910 //
911 //    Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
912 //    Int_t sm0 = GetModuleNumberCellIndexes(absId0,GetCalorimeter(), ieta0, iphi0, rcu0);
913 //    Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
914 //    Int_t sm1 = GetModuleNumberCellIndexes(absId1,GetCalorimeter(), ieta1, iphi1, rcu1);
915 //    
916 //    printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
917 //           absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
918 //    
919 //    Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
920 //    if(imax  >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,GetCalorimeter(), ietam0, iphim0, rcum0);
921 //    Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
922 //    if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],GetCalorimeter(), ietam1, iphim1, rcum1);
923 //    
924 //    printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
925 //           list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
926 //  }
927
928   Int_t inlm = nMax-1;
929   if(inlm > 2) inlm = 2;
930   
931   Bool_t match0  = kFALSE;
932   Bool_t match1  = kFALSE;
933   Int_t imatch0  = -1;
934   Int_t imatch1  = -1;
935   if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
936   {
937     if     (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
938     else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
939     
940     if     (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
941     else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
942   }
943   
944   //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
945
946   // If one or the 2 not matched, check with the other MC labels
947   // only in case there was a conversion
948   
949   Int_t   absId0second  = -1;
950   Int_t   absId1second  = -1;
951   Int_t   secLabel0     = -1;
952   Int_t   secLabel1     = -1;
953   Int_t   mcLabel0      = -1;
954   Int_t   mcLabel1      = -1;
955   Bool_t  secOK         = 0;
956   Int_t   secpdg        = -999999;
957   Int_t   secstatus     = -1;
958   Int_t   secgrandLabel = -1;
959
960   if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
961   if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
962   
963   if((!match0 || !match1) && mcindex == kmcPi0Conv)
964   {
965     for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
966     {
967       Int_t mclabel = cluster->GetLabels()[ilab];
968       
969       //printf("Check label %d - %d\n",ilab,mclabel);
970       
971       if(mclabel == label0 || mclabel == label1)
972       {
973         //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
974         if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
975         if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
976         continue ;
977       }
978       
979       //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
980       
981       // match mc label and parent photon
982       Int_t tmplabel   = mclabel;
983       while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
984       {
985         fPrimaryMom = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
986         
987         //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
988         
989         if((secgrandLabel == label0) || (secgrandLabel == label1 ))
990         {
991           //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
992           if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
993           if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
994         }
995         
996         //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
997
998         tmplabel = secgrandLabel;
999       }
1000     }
1001     
1002     // Get the position of the found secondaries mother
1003     if(!match0 && secLabel0 > 0)
1004     {
1005       fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1006       
1007       //Float_t eta = fPrimaryMom.Eta();
1008       //Float_t phi = fPrimaryMom.Phi();
1009       //if(phi < 0 ) phi+=TMath::TwoPi();
1010       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1011       
1012       //printf("Secondary MC0 label %d, absId %d E %2.2F eta %2.2f, phi %f\n", secLabel0,absId0second, fPrimaryMom.E(),fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg());
1013       
1014       if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
1015       if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1016     }
1017
1018     if(!match1 && secLabel1 > 0)
1019     {
1020       fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1021       
1022       //Float_t eta = fPrimaryMom.Eta();
1023       //Float_t phi = fPrimaryMom.Phi();
1024       //if(phi < 0 ) phi+=TMath::TwoPi();
1025       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1026       
1027       //printf("Secondary MC1 label %d absId %d E %2.2F eta %2.2f, phi %f\n",secLabel1, absId1second, fPrimaryMom.E(),fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg());
1028       
1029       if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
1030       if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1031     }
1032
1033     //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1034     
1035   }
1036     
1037   //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1038   if( match0 && match1 )
1039   {
1040 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1041 //      printf("a) Both Photons hit local maxima \n");
1042     
1043     if(!noverlaps)
1044     {
1045       fhMCPi0DecayPhotonHitHighLM          ->Fill(en,nMax);
1046       fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1047       if(match0 && imatch0 == imax)
1048       {
1049         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1050         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1051         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1052         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1053       }
1054       else
1055       {
1056         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1057         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1058         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1059         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1060       }
1061     }
1062     else
1063     {
1064       fhMCPi0DecayPhotonHitHighLMOverlap          ->Fill(en,nMax);
1065       fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1066       if(match0 && imatch0 == imax )
1067       {
1068         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1069         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1070         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1071         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1072       }
1073       else
1074       {
1075         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1076         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1077         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1078         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1079       }
1080
1081     }
1082     
1083     return ;
1084   }
1085   
1086   //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1087   //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1088   
1089   //---------------------------------------------
1090   // Check the adjacent cells to the local maxima
1091   //---------------------------------------------
1092   
1093   if(!match0)
1094   {
1095     if(imatch1!=imax  && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax]))   { match0 = kTRUE; imatch0 = imax  ; }
1096     //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1097     if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1098     //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1099   }
1100   
1101   if(!match1)
1102   {
1103     if(imatch0!=imax  && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax  ; }
1104     //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1105   
1106     if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1107     //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1108   }
1109     
1110   //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1111   
1112   if(match0 && match1)
1113   {
1114 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1115 //      printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1116     
1117     if(!noverlaps)
1118     {
1119       fhMCPi0DecayPhotonAdjHighLM          ->Fill(en,nMax);
1120       fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1121
1122       if(match0 && imatch0 == imax)
1123       {
1124         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1125         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1126         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1127         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1128       }
1129       else
1130       {
1131         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1132         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1133         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1134         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1135       }
1136     }
1137     else
1138     {
1139       fhMCPi0DecayPhotonAdjHighLMOverlap          ->Fill(en,nMax);
1140       fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1141       if(match0 && imatch0 == imax)
1142       {
1143         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1144         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1145         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1146         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1147       }
1148       else
1149       {
1150         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1151         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1152         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1153         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1154       }
1155     }
1156     
1157     return;
1158   }
1159   
1160   // Decay photon cells are adjacent?
1161   
1162   if( (match0 || match1) && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,absId1) )
1163   {
1164 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1165 //      printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1166     if(!noverlaps)
1167     {
1168       fhMCPi0DecayPhotonAdjacent          ->Fill(en,nMax);
1169       fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1170     }
1171     else
1172     {
1173       fhMCPi0DecayPhotonAdjacentOverlap          ->Fill(en,nMax);
1174       fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1175     }
1176     
1177     return;
1178   }
1179   
1180   //--------------------
1181   // Other Local maxima
1182   //--------------------
1183   
1184   Bool_t matchMCHitOtherLM = kFALSE;
1185   if(!match1)
1186   {
1187     for(Int_t i = 0; i < nmaxima; i++)
1188     {
1189       if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1190     }
1191   }
1192   
1193   if(!match0)
1194   {
1195     for(Int_t i = 0; i < nmaxima; i++)
1196     {
1197       if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1198     }
1199   }
1200   
1201   if(matchMCHitOtherLM)
1202   {
1203 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1204 //      printf("d) One Photon hits a local maxima, the other another not high \n");
1205     
1206     if(!noverlaps)
1207     {
1208       fhMCPi0DecayPhotonHitOtherLM          ->Fill(en,nMax);
1209       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1210       if(match0 && imatch0 == imax)
1211       {
1212         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1213         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1214       }
1215       else
1216       {
1217         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1218         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1219       }
1220     }
1221     else
1222     {
1223       fhMCPi0DecayPhotonHitOtherLMOverlap   ->Fill(en,nMax);
1224       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1225       if(match0 && imatch0 == imax)
1226       {
1227         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1228         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1229       }
1230       else
1231       {
1232         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1233         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1234       }
1235     }
1236     
1237     return ;
1238   }
1239   
1240   // Adjacent to other maxima
1241   
1242   Bool_t adjacentOther1 = kFALSE;
1243   if(match0)
1244   {
1245     for(Int_t i = 0; i < nmaxima; i++)
1246     {
1247       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1248       GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1249       
1250       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1251       
1252       if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[i]) ) adjacentOther1 = kTRUE;
1253       
1254       //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1255     }
1256   }
1257   
1258   Bool_t adjacentOther0 = kFALSE;
1259   if(match1)
1260   {
1261     for(Int_t i = 0; i < nmaxima; i++)
1262     {
1263       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1264       GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1265       
1266       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1267       
1268       if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[i]) ) adjacentOther0 = kTRUE;
1269       
1270       //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1271     }
1272   }
1273   
1274   if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1275   {
1276     
1277 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1278 //      printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1279     
1280     if(!noverlaps)
1281     {
1282       fhMCPi0DecayPhotonAdjOtherLM       ->Fill(en,nMax);
1283       fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1284       if(match0 && imatch0 == imax)
1285       {
1286         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1287         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1288       }
1289       else
1290       {
1291         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1292         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1293       }
1294     }
1295     else
1296     {
1297       fhMCPi0DecayPhotonAdjOtherLMOverlap          ->Fill(en,nMax);
1298       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1299       if(match0 && imatch0 == imax)
1300       {
1301         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1302         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1303       }
1304       else
1305       {
1306         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1307         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1308       }
1309     }
1310     
1311     return;
1312   }
1313   
1314 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1315 //    printf("f) No hit found \n");
1316   if(!noverlaps)
1317   {
1318     fhMCPi0DecayPhotonHitNoLM          ->Fill(en,nMax);
1319     fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1320   }
1321   else
1322   {
1323     fhMCPi0DecayPhotonHitNoLMOverlap          ->Fill(en,nMax);
1324     fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1325   }
1326   
1327 }
1328
1329 //___________________________________________________________________________________________________________
1330 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t   nMax,      Bool_t  matched, Int_t mcIndex,
1331                                                            Float_t en,        Float_t e1,      Float_t e2,
1332                                                            Float_t angle,     Float_t mass,
1333                                                            Float_t anglePrim, Float_t m02,
1334                                                            Float_t asym,      Int_t   pid,     Int_t noverlaps)
1335 {
1336   // Fill histograms related to opening angle
1337   
1338   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1339   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1340   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1341   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1342
1343   Bool_t eCutOK= kFALSE;
1344   Int_t inlm = nMax-1;
1345   if(inlm > 2 ) inlm = 2;
1346   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1347   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1348   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1349
1350   if     (nMax==1)
1351   {
1352     fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1353     
1354     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1355       fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1356     if(pid==AliCaloPID::kPi0)
1357       fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1358     
1359     if(m02 > 0)
1360     {
1361       fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1362       if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1363     }
1364     
1365     if( en > 15 )
1366     {
1367       fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1368       fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1369     }
1370   }
1371   else if(nMax==2)
1372   {
1373     fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1374     
1375     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1376       fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1377     if(pid==AliCaloPID::kPi0)
1378       fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1379     
1380     if(m02 > 0)
1381     {
1382       fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1383       if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1384     }
1385     
1386     if( en > fHistoECut )
1387     {
1388       fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1389       fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1390     }
1391   }
1392   else if(nMax >2)
1393   {
1394     fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1395     
1396     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1397       fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1398     if(pid==AliCaloPID::kPi0)
1399       fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1400     
1401     if(m02 > 0)
1402     {
1403       fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1404       if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1405     }
1406     
1407     if( en > fHistoECut )
1408     {
1409       fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1410       fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1411     }
1412   }
1413   
1414   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1415   {
1416     if     (nMax==1)
1417     {
1418       fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1419       if( en > 15 )
1420       {
1421         fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1422         fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1423       }
1424       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1425         fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1426       if(pid==AliCaloPID::kPi0)
1427          fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1428       
1429       if(m02 > 0)
1430       {
1431         fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1432         if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1433       }
1434       
1435       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1436       {
1437         fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1438         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1439         if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1440
1441       }
1442     }
1443     else if(nMax==2)
1444     {
1445       fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1446       if( en > fHistoECut )
1447       {
1448         fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1449         fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1450       }
1451       
1452       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1453         fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1454       if(pid==AliCaloPID::kPi0)
1455         fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1456       
1457       if(m02 > 0)
1458       {
1459         fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1460         if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1461       }
1462       
1463       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1464       {
1465         fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1466         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1467         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1468       }
1469     }
1470     else if(nMax >2)
1471     {
1472       fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1473       if( en > fHistoECut )
1474       {
1475         fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1476         fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1477       }
1478       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1479         fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1480       if(pid==AliCaloPID::kPi0)
1481         fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1482       
1483       if(m02 > 0)
1484       {
1485         fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1486         if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1487       }
1488       
1489       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1490       {
1491         fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1492         if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1493         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1494       }
1495     }
1496     
1497   }
1498   
1499 }
1500
1501 //______________________________________________________________________________________________________________________
1502 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1503                                                                 Float_t en, Float_t m02, Int_t pid)
1504 {
1505   // Fill Armeteros type histograms
1506   
1507   // Get pTArm and AlphaArm
1508   fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1509   Float_t momentumSquaredMother = fSubClusterMomSum.P()*fSubClusterMomSum.P();
1510   Float_t momentumDaughter1AlongMother = 0.;
1511   Float_t momentumDaughter2AlongMother = 0.;
1512
1513   if (momentumSquaredMother > 0.)
1514   {
1515     momentumDaughter1AlongMother = (fSubClusterMom1.Px()*fSubClusterMomSum.Px() + fSubClusterMom1.Py()*fSubClusterMomSum.Py()+ fSubClusterMom1.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1516     momentumDaughter2AlongMother = (fSubClusterMom2.Px()*fSubClusterMomSum.Px() + fSubClusterMom2.Py()*fSubClusterMomSum.Py()+ fSubClusterMom2.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1517   }
1518
1519   Float_t momentumSquaredDaughter1 = fSubClusterMom1.P()*fSubClusterMom1.P();
1520   Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1521   
1522   Float_t pTArm = 0.;
1523   if (ptArmSquared > 0.)
1524     pTArm = sqrt(ptArmSquared);
1525   
1526   Float_t alphaArm = 0.;
1527   if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1528     alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1529   
1530   Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1531   
1532    if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1533   
1534   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1535   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1536   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1537   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1538   
1539   Bool_t eCutOK= kFALSE;
1540   Int_t inlm = nMax-1;
1541   if(inlm > 2 ) inlm = 2;
1542   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1543   if     (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1544   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1545
1546   
1547   if     (nMax==1)
1548   {
1549     fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1550     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1551       fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1552     if(pid==AliCaloPID::kPi0)
1553       fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1554   }
1555   else if(nMax==2)
1556   {
1557     fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1558     if((m02OK && asyOK) && (asyOn || m02On))
1559       fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1560     if(pid==AliCaloPID::kPi0)
1561       fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1562   }
1563   else if(nMax >2)
1564   {
1565     fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1566     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1567       fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1568     if(pid==AliCaloPID::kPi0)
1569       fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1570   }
1571
1572   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1573   {
1574     if     (nMax==1)
1575     {
1576       fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1577       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1578         fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1579       if(pid==AliCaloPID::kPi0)
1580         fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1581     }
1582     else if(nMax==2)
1583     {
1584       fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1585       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1586         fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1587       if(pid==AliCaloPID::kPi0)
1588         fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1589     }
1590     else if(nMax >2)
1591     {
1592       fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1593       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1594         fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1595       if(pid==AliCaloPID::kPi0)
1596         fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1597     }  
1598   
1599   }
1600   
1601 }
1602
1603 //______________________________________________________________________________________________________________
1604 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1605                                                                Float_t en, Float_t m02, Int_t pid)
1606 {
1607   // Fill cos Theta^star histograms
1608
1609   
1610   // Get cos Theta^star
1611   fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1612   fSubClusterMomBoost = fSubClusterMom1;
1613   fSubClusterMomBoost.Boost(-fSubClusterMomSum.BoostVector());
1614   Float_t  cosThStar=TMath::Cos(fSubClusterMomBoost.Vect().Angle(fSubClusterMomSum.Vect()));
1615   
1616   Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1617
1618   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1619   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1620   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1621   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1622   
1623   Bool_t eCutOK= kFALSE;
1624   Int_t inlm = nMax-1;
1625   if(inlm > 2 ) inlm = 2;
1626   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1627   if     (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1628   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1629
1630   //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1631   
1632   if     (nMax==1)
1633   {
1634     fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1635     
1636     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1637       fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1638     if(pid==AliCaloPID::kPi0)
1639       fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1640   }
1641   else if(nMax==2)
1642   {
1643     fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1644     
1645     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1646       fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1647     if(pid==AliCaloPID::kPi0)
1648       fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1649   }
1650   else if(nMax >2)
1651   {
1652     fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1653     
1654     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1655       fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1656     if(pid==AliCaloPID::kPi0)
1657       fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1658   }
1659   
1660   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1661   {
1662     if     (nMax==1)
1663     {
1664       fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1665       
1666       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1667         fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1668       if(pid==AliCaloPID::kPi0)
1669         fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1670     }
1671     else if(nMax==2)
1672     {
1673       fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1674       
1675       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1676         fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1677       if(pid==AliCaloPID::kPi0)
1678         fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1679     }
1680     else if(nMax >2)
1681     {
1682       fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1683       
1684       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1685         fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1686       if(pid==AliCaloPID::kPi0)
1687         fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1688     }
1689     
1690   }
1691
1692 }
1693
1694 //__________________________________________________________________________________________________________________
1695 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t   ebin     , Int_t   nMax, Int_t mcindex,
1696                                                           Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1697 {
1698   // Fill some histograms integrating in few energy bins
1699     
1700   if     (nMax==1)
1701   {
1702     fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac,  mass);
1703     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1704     
1705     fhMassM02NLocMax1Ebin    [ebin]->Fill(l0  ,  mass );
1706     fhMassAsyNLocMax1Ebin    [ebin]->Fill(asym,  mass );
1707   }
1708   else if(nMax==2)
1709   {
1710     fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac,  mass);
1711     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1712     
1713     fhMassM02NLocMax2Ebin    [ebin]->Fill(l0  ,  mass );
1714     fhMassAsyNLocMax2Ebin    [ebin]->Fill(asym,  mass );
1715   }
1716   else if(nMax > 2 )
1717   {
1718     fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac,  mass);
1719     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac,  mass);
1720     
1721     fhMassM02NLocMaxNEbin    [ebin]->Fill(l0  ,  mass );
1722     fhMassAsyNLocMaxNEbin    [ebin]->Fill(asym,  mass );
1723   }
1724   
1725 }
1726
1727 //________________________________________________________________________________________________
1728 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en,     Float_t e1,     Float_t e2,
1729                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1730                                                        Float_t eta,    Float_t phi,
1731                                                        Bool_t matched, Int_t mcindex)
1732 {
1733   // Fill histograms for clusters before any selection after spliting
1734   
1735   Float_t splitFrac = (e1+e2)/en;
1736   
1737   Float_t asym = -10;
1738   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1739   
1740   fhNLocMax   [0][matched]->Fill(en,nMax);
1741   fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1742   fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1743   fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1744   fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1745   
1746   if(IsDataMC() && mcindex > 0 && mcindex < 7)
1747   {
1748     fhNLocMax   [mcindex][matched]->Fill(en,nMax);
1749     fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1750     fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1751     fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1752     fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1753   }
1754   
1755   if     ( nMax == 1  )
1756   {
1757     fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1758     fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1759     
1760     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1761     {
1762       fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1763       fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1764     }
1765     
1766     if(en > fHistoECut)
1767     {
1768       fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1769       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1770       
1771       fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1772       if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1773     }
1774   }
1775   else if( nMax == 2  )
1776   {
1777     fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1778     fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1779     
1780     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1781     {
1782       fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1783       fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1784     }
1785     
1786     if(en > fHistoECut)
1787     {
1788       fhMassM02NLocMax2[0][matched]->Fill(l0,  mass );
1789       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1790       
1791       fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1792       if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1793     }
1794   }
1795   else if( nMax >= 3  )
1796   {
1797     fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1798     fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1799     
1800     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1801     {
1802       fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1803       fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1804     }
1805     
1806     if(en > fHistoECut)
1807     {
1808       
1809       fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1810       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1811       
1812       fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1813       if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1814     }
1815   }
1816   
1817   
1818 }
1819
1820 //________________________________________________________________________________________________
1821 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en,     Float_t eprim,
1822                                                        Float_t e1,     Float_t e2,
1823                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1824                                                        Bool_t matched, Int_t mcindex)
1825 {
1826   // Fill histograms for clusters passing the first M02 selection
1827   
1828   Float_t efrac      = eprim/en;
1829   Float_t efracSplit = 0;
1830   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1831   
1832   Float_t splitFrac = (e1+e2)/en;
1833   
1834   Float_t asym = -10;
1835   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1836   
1837   Int_t inlm = nMax-1;
1838   if(inlm > 2) inlm = 2;
1839   Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1840   
1841   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1842   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1843   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1844   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1845   
1846   Bool_t eCutOK = kFALSE;
1847   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1848   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1849   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1850
1851   //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1852   
1853   if(m02On && m02OK)
1854   {
1855     fhNLocMaxM02Cut   [0][matched]->Fill(en,nMax);
1856     fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1857     fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1858     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1859     {
1860       fhNLocMaxM02Cut   [mcindex][matched]->Fill(en,nMax);
1861       fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1862       fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1863     }
1864   }
1865   
1866   if     (nMax==1)
1867   {
1868     fhMassNLocMax1[0][matched]->Fill(en,mass );
1869     fhAsymNLocMax1[0][matched]->Fill(en,asym );
1870     fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1871     
1872     // Effect of cuts in mass histograms
1873
1874     if(!matched && asyOK && asyOn )
1875     {
1876       fhMassAsyCutNLocMax1->Fill(en,mass);
1877       fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1878     }
1879     
1880     if(!matched && m02OK && m02On )
1881     {
1882       fhMassM02CutNLocMax1->Fill(en,mass);
1883       fhAsymM02CutNLocMax1->Fill(en,asym );
1884       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1885     } 
1886     
1887     if(!matched && eCutOK && ensubcut > 0.1)
1888     {
1889       fhMassEnCutNLocMax1->Fill(en,mass );
1890       fhM02EnCutNLocMax1 ->Fill(en,l0   );
1891       fhAsymEnCutNLocMax1->Fill(en,asym );
1892       fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1893     }
1894     
1895     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1896     {
1897       fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1898       if(splitFrac > splitFracMin)
1899       {
1900         fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1901         fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1902       }
1903       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1904       {
1905         fhMCGenFracAfterCutsNLocMax1MCPi0      ->Fill(en   ,  efrac     );
1906         fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en   ,  efracSplit);
1907       }
1908     }
1909   }
1910   else if( nMax == 2 )
1911   {
1912     fhMassNLocMax2[0][matched]->Fill(en,mass );
1913     fhAsymNLocMax2[0][matched]->Fill(en,asym );
1914     fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1915
1916     // Effect of cuts in mass histograms
1917     
1918     if(!matched && asyOK && asyOn )
1919     {
1920       fhMassAsyCutNLocMax2->Fill(en,mass);
1921       fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1922     }
1923     
1924     if(!matched && m02OK && m02On )
1925     {
1926       fhMassM02CutNLocMax2->Fill(en,mass);
1927       fhAsymM02CutNLocMax2->Fill(en,asym );
1928       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1929     } 
1930     
1931     if(!matched && eCutOK && ensubcut > 0.1)
1932     {
1933       fhMassEnCutNLocMax2->Fill(en,mass );
1934       fhM02EnCutNLocMax2 ->Fill(en,l0   );
1935       fhAsymEnCutNLocMax2->Fill(en,asym );
1936       fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1937     }
1938     
1939     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1940     {
1941       fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1942       if(splitFrac > splitFracMin)
1943       {
1944         fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1945         fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1946       }
1947       
1948       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1949       {
1950         fhMCGenFracAfterCutsNLocMax2MCPi0      ->Fill(en   ,  efrac     );
1951         fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en   ,  efracSplit);
1952       }
1953     }
1954   }
1955   else if( nMax > 2 )
1956   {
1957     fhMassNLocMaxN[0][matched]->Fill(en,mass);
1958     fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1959     fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1960
1961     // Effect of cuts in mass histograms
1962     
1963     if(!matched && asyOK && asyOn )
1964     {
1965       fhMassAsyCutNLocMaxN->Fill(en,mass);
1966       fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1967     }
1968     
1969     if(!matched && m02OK && m02On )
1970     {
1971       fhMassM02CutNLocMaxN->Fill(en,mass);
1972       fhAsymM02CutNLocMaxN->Fill(en,asym );
1973       if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1974     } 
1975     
1976     if(!matched && eCutOK && ensubcut > 0.1 )
1977     {
1978       fhMassEnCutNLocMaxN->Fill(en,mass );
1979       fhM02EnCutNLocMaxN ->Fill(en,l0   );
1980       fhAsymEnCutNLocMaxN->Fill(en,asym );
1981       fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1982     }
1983     
1984     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1985     {
1986       fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1987       if(splitFrac > splitFracMin)
1988       {
1989         fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1990         fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1991       }
1992       
1993       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1994       {
1995         fhMCGenFracAfterCutsNLocMaxNMCPi0      ->Fill(en   ,  efrac     );
1996         fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en   ,  efracSplit);
1997       }
1998     }
1999   }
2000   
2001   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2002   {
2003     if     (nMax==1)
2004     {
2005       fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2006       fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2007       fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2008
2009       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2010       {
2011         fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2012         if(splitFrac > splitFracMin)
2013         {
2014           fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2015           fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2016         }
2017       }
2018     }
2019     else if(nMax==2)
2020     {
2021       fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2022       fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2023       fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2024
2025       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2026       {
2027         fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2028         if(splitFrac > splitFracMin)
2029         {
2030           fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2031           fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2032         }
2033
2034       }
2035     }
2036     else if(nMax >2)
2037     {
2038       fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2039       fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2040       fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2041
2042       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2043       {
2044         fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2045         if(splitFrac > splitFracMin)
2046         {
2047           fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2048           fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2049         }
2050       }
2051     }
2052   }//Work with MC truth
2053 }
2054
2055
2056 //_________________________________________________________________________________________________________
2057 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en,     Float_t e1,     Float_t e2,
2058                                                            Int_t nc,       Int_t nMax,     Float_t t12diff,
2059                                                            Float_t mass,   Float_t l0,
2060                                                            Float_t eta,    Float_t phi,
2061                                                            Bool_t matched, Int_t mcindex)
2062 {
2063   // Fill histograms for clusters passing the pi0 selection
2064   
2065   Float_t asym = -10;
2066   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2067   
2068   fhNLocMaxIdPi0   [0][matched]->Fill(en,nMax);
2069   fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2070   fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2071   
2072   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2073   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2074   
2075   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2076   {
2077     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2078     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2079   }
2080   
2081   if     (nMax==1)
2082   {
2083     fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2084     fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2085     fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2086     fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2087     if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2088     
2089     if(!matched)
2090     {
2091       if(fFillHighMultHisto)
2092       {
2093         fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2094         fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2095       }
2096       if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2097       fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2098     }
2099   }
2100   else if(nMax==2)
2101   {
2102     fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2103     fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2104     fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2105     fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2106     if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2107     
2108     if(!matched)
2109     {
2110       if(fFillHighMultHisto)
2111       {
2112         fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2113         fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2114       }
2115       if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2116       fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2117     }
2118   }
2119   else if(nMax >2)
2120   {
2121     fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2122     fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2123     fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2124     fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2125     if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2126     
2127     if(!matched)
2128     {
2129       if(fFillHighMultHisto)
2130       {
2131         fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2132         fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2133       }
2134       if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2135       fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2136     }
2137   }
2138   
2139   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2140   {
2141     fhNLocMaxIdPi0   [mcindex][matched]->Fill(en,nMax);
2142     fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2143     fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2144     
2145     if     (nMax==1)
2146     {
2147       fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2148       fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2149       fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2150       fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2151       if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2152       
2153     }
2154     else if(nMax==2)
2155     {
2156       fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2157       fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2158       fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2159       fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2160       if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2161     }
2162     else if(nMax >2)
2163     {
2164       fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2165       fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2166       fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2167       fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2168       if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2169     }
2170   }//Work with MC truth
2171 }
2172
2173 //______________________________________________________________________________________________________
2174 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en,     Float_t e1,  Float_t e2,
2175                                                            Int_t nc,       Int_t nMax,  Float_t t12diff,
2176                                                            Float_t mass,   Float_t l0,
2177                                                            Float_t eta,    Float_t phi,
2178                                                            Bool_t matched, Int_t mcindex)
2179 {
2180   // Fill histograms for clusters passing the eta selection
2181   
2182   Float_t asym = -10;
2183   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2184   
2185   if     (nMax==1)
2186   {
2187     fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2188     fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2189     fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2190     if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2191     
2192     if(!matched)
2193     {
2194       if(fFillHighMultHisto)
2195       {
2196         fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2197         fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2198       }
2199       if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2200       fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2201     }
2202   }
2203   else if(nMax==2)
2204   {
2205     fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2206     fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2207     fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2208     if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2209     
2210     if(!matched)
2211     {
2212       if(fFillHighMultHisto)
2213       {
2214         fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2215         fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2216       }
2217       if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2218       fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2219     }
2220   }
2221   else if(nMax >2)
2222   {
2223     fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2224     fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2225     fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2226     if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2227     
2228     if(!matched)
2229     {
2230       if(fFillHighMultHisto)
2231       {
2232         fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2233         fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2234       }
2235       if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2236       fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2237     }
2238   }
2239   
2240   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2241   {
2242     if     (nMax==1)
2243     {
2244       fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2245       fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2246       fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2247       if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2248     }
2249     else if(nMax==2)
2250     {
2251       fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2252       fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2253       fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2254       if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2255       
2256     }
2257     else if(nMax >2)
2258     {
2259       fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2260       fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2261       fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2262       if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2263     }
2264   }//Work with MC truth
2265 }
2266
2267
2268 //__________________________________________________________________________________________________
2269 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en,    Int_t nMax, Float_t asym,
2270                                                             Float_t mass,   Float_t l0,
2271                                                             Bool_t matched, Int_t mcindex)
2272 {
2273   // Fill histograms for clusters passing the photon selection
2274   
2275   if     (nMax==1)
2276   {
2277     fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2278     fhMassConNLocMax1[0][matched]->Fill(en,mass);
2279     fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2280   }
2281   else if(nMax==2)
2282   {
2283     fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2284     fhMassConNLocMax2[0][matched]->Fill(en,mass);
2285     fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2286   }
2287   else if(nMax >2)
2288   {
2289     fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2290     fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2291     fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2292   }
2293   
2294   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2295   {
2296     if     (nMax==1)
2297     {
2298       fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2299       fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2300       fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2301     }
2302     else if(nMax==2)
2303     {
2304       fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2305       fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2306       fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2307     }
2308     else if(nMax >2)
2309     {
2310       fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2311       fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2312       fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2313     }
2314     
2315   }//Work with MC truth
2316 }
2317
2318 //_______________________________________________________________________________________________________
2319 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en,        Float_t e1  , Float_t e2,
2320                                                         Int_t ebin,        Int_t mcindex,Int_t noverlaps,
2321                                                         Float_t l0,        Float_t mass,
2322                                                         Int_t nMax,        Bool_t  matched,
2323                                                         Float_t splitFrac, Float_t asym,
2324                                                         Float_t eprim,     Float_t asymGen)
2325 {
2326   // Fill histograms needing some MC input
2327     
2328   Float_t efrac      = eprim/en;
2329   Float_t efracSplit = 0;
2330   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2331   Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2332   
2333   //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",
2334   //       e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2335   
2336   if(ebin >= 0 && fFillEbinHisto)
2337   {
2338     if( !matched ) fhMCGenFracNLocMaxEbin       [mcindex][ebin]->Fill(efrac,nMax);
2339     else           fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2340   }
2341
2342   if     (nMax==1)
2343   {
2344     fhMCGenFracNLocMax1      [mcindex][matched]->Fill(en     ,  efrac );
2345     fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en     ,  efracSplit );
2346     fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2347     if(asym > 0 && !matched)
2348     {
2349       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[0]    ->Fill(en, asymDiff );
2350       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2351     }
2352
2353     if(noverlaps==0)
2354     {
2355       fhMCGenFracNLocMax1NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2356       fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2357     }
2358     
2359     if( en > fHistoECut )
2360     {
2361       fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2362       
2363       if(!matched && ebin >= 0 && fFillEbinHisto)
2364       {
2365         fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2366         fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2367         
2368         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2369         {
2370           fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2371           fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym,  asymGen );
2372         }
2373       }
2374     }
2375   }
2376   else if(nMax==2)
2377   {
2378     fhMCGenFracNLocMax2      [mcindex][matched]->Fill(en     ,  efrac );
2379     fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en     ,  efracSplit );
2380     fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2381
2382     if(asym > 0 && !matched)
2383     {
2384      if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[1]    ->Fill(en, asymDiff );
2385      else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2386     }
2387     
2388     if(noverlaps==0)
2389     {
2390       fhMCGenFracNLocMax2NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2391       fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2392     }
2393     
2394     if( en > fHistoECut )
2395     {
2396       fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2397       
2398       if(!matched && ebin >= 0 && fFillEbinHisto)
2399       {
2400         fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2401         fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2402         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2403         {
2404           fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2405           fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym,  asymGen );
2406         }
2407       }
2408     }
2409
2410   }
2411   else if(nMax > 2 )
2412   {
2413     fhMCGenFracNLocMaxN      [mcindex][matched]->Fill(en     ,  efrac );
2414     fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en     ,  efracSplit );
2415     fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim  ,  e1+e2);
2416     if(asym > 0 && !matched)
2417     {
2418       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[2]    ->Fill(en, asymDiff );
2419       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2420     }
2421
2422     if(noverlaps==0)
2423     {
2424       fhMCGenFracNLocMaxNNoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2425       fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2426     }
2427     
2428     if( en > fHistoECut )
2429     {
2430       fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2431       
2432       if(!matched && ebin >= 0 && fFillEbinHisto)
2433       {
2434         fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac  ,  l0    );
2435         fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac  ,  mass  );
2436         
2437         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2438         {
2439           fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2440           fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym,  asymGen );
2441         }
2442       }
2443     }
2444   }
2445 }
2446
2447 //__________________________________________________________________________________________________________
2448 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en,      Float_t enprim,
2449                                                                Int_t   nc,      Float_t mass,    Float_t l0,
2450                                                                Float_t asym,    Float_t splitFrac,
2451                                                                Int_t   inlm,    Int_t ebin, Bool_t matched,
2452                                                                Int_t   mcindex, Int_t noverlaps)
2453 {
2454   // Fill histograms for MC Overlaps
2455   
2456   //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);
2457     
2458   //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2459   
2460   if(!matched)
2461   {
2462     fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2463     
2464     if     (noverlaps == 0)
2465     {
2466       fhMCEM02Overlap0  [inlm][mcindex]->Fill(en, l0);
2467       fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2468       fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2469       fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2470       if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2471       fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2472       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2473     }
2474     else if(noverlaps == 1)
2475     {
2476       fhMCEM02Overlap1  [inlm][mcindex]->Fill(en, l0);
2477       fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2478       fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2479       fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2480       if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2481       fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2482       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2483     }
2484     else if(noverlaps  > 1)
2485     {
2486       fhMCEM02OverlapN  [inlm][mcindex]->Fill(en, l0);
2487       fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2488       fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2489       fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2490       if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2491       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2492       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2493     }
2494     else
2495       Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2496   }
2497   else if(fFillTMHisto)
2498   {
2499     fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2500     
2501     if     (noverlaps == 0)
2502     {
2503       fhMCEM02Overlap0Match  [inlm][mcindex]->Fill(en, l0);
2504       fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2505       fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2506       fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2507       if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2508       fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2509       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2510     }
2511     else if(noverlaps == 1)
2512     {
2513       fhMCEM02Overlap1Match  [inlm][mcindex]->Fill(en, l0);
2514       fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2515       fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2516       fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2517       if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2518       fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2519       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2520     }
2521     else if(noverlaps  > 1)
2522     {
2523       fhMCEM02OverlapNMatch  [inlm][mcindex]->Fill(en, l0);
2524       fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2525       fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2526       fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2527       if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2528       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2529       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2530     }
2531     else
2532         Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2533   }
2534 }
2535
2536
2537 //_____________________________________________________________________________________________________
2538 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t   ncells,  Float_t energy, Int_t nMax,
2539                                                            Bool_t  matched, Int_t mcindex,
2540                                                            Float_t mass   , Float_t l0)
2541
2542 {
2543   // Fill optional histograms with more SS parameters
2544     
2545   if     (nMax==1)
2546   {
2547     fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2548     if(mcindex > 0 )  fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2549     
2550     if (mcindex==kmcPi0 && !matched)
2551     {
2552       if( energy > fHistoECut)
2553       {
2554         fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2555         fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2556       }
2557       else
2558       {
2559         fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2560         fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2561       }
2562     }
2563   }
2564   else if( nMax == 2  )
2565   {
2566     fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2567     if(mcindex > 0 )  fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2568     
2569     
2570     if (mcindex==kmcPi0 && !matched)
2571     {
2572       if( energy > fHistoECut)
2573       {
2574         fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2575         fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2576       }
2577       else
2578       {
2579         fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2580         fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2581       }
2582     }
2583   }
2584   else if( nMax >= 3  )
2585   {
2586     fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2587     if(mcindex > 0 )  fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2588     
2589     if (mcindex==kmcPi0 && !matched)
2590     {
2591       if( energy > fHistoECut)
2592       {
2593         fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2594         fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2595       }
2596       else
2597       {
2598         fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2599         fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2600       }
2601     }
2602   }
2603 }
2604
2605 //______________________________________________________________________________________________________
2606 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2607 {
2608   // Calculate NLM for different settings
2609
2610   Float_t energy = clus->E();
2611   Float_t m02    = clus->GetM02();
2612   
2613   Float_t minEOrg     = GetCaloUtils()->GetLocalMaximaCutE() ;
2614   Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2615   
2616   Int_t    nlm  = 0;
2617   Double_t mass = 0., angle = 0.;
2618   Int_t    absId1   =-1; Int_t   absId2   =-1;
2619   Float_t  distbad1 =-1; Float_t distbad2 =-1;
2620   Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
2621   Int_t pidTag = -1;
2622   
2623   //printf("E %f, m02 %f; Org: minE %f, minDiffE %f\n",energy, m02, minEOrg,minEDiffOrg);
2624   for(Int_t iE = 0; iE < fNLMSettingN; iE++)
2625   {
2626     for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
2627     {
2628       GetCaloUtils()->SetLocalMaximaCutE    (fNLMMinE   [iE]   );
2629       GetCaloUtils()->SetLocalMaximaCutEDiff(fNLMMinDiff[iDiff]);
2630       
2631       //nlm = GetCaloUtils()->GetNumberOfLocalMaxima(clus, cells)  ;
2632       
2633       //printf("\t Change: i %d minE %f, j %d minDiffE %f - NLM = %d\n",iE, fNLMMinE[iE], iDiff, fNLMMinDiff[iDiff],nlm);
2634
2635       pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(clus,cells,GetCaloUtils(),
2636                                                                                  GetVertex(0), nlm, mass, angle,
2637                                                                                  fSubClusterMom1,fSubClusterMom2,absId1,absId2,
2638                                                                                  distbad1,distbad2,fidcut1,fidcut2);
2639       if (nlm <= 0)
2640       {
2641         if(GetDebug() > 0 )
2642         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
2643         
2644         continue;
2645       }
2646
2647       Int_t inlm = nlm-1;
2648       if(inlm>2) inlm = 2;
2649       
2650       fhNLocMaxDiffCut    [iE][iDiff]      [matched]->Fill(energy,nlm);
2651       fhM02NLocMaxDiffCut [iE][iDiff][inlm][matched]->Fill(energy,m02);
2652       fhMassNLocMaxDiffCut[iE][iDiff][inlm][matched]->Fill(energy,mass);
2653
2654       if(pidTag==AliCaloPID::kPi0)
2655       {
2656         fhNLocMaxDiffCutPi0    [iE][iDiff]      [matched]->Fill(energy,nlm);
2657         fhM02NLocMaxDiffCutPi0 [iE][iDiff][inlm][matched]->Fill(energy,m02);
2658         fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][matched]->Fill(energy,mass);
2659       }
2660       
2661     }
2662   }
2663   
2664   GetCaloUtils()->SetLocalMaximaCutE    (minEOrg    );
2665   GetCaloUtils()->SetLocalMaximaCutEDiff(minEDiffOrg);
2666
2667 }
2668
2669
2670 //_____________________________________________________________________________________________
2671 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster  *cluster, Int_t nMax,
2672                                                              Bool_t  matched, Int_t mcindex,
2673                                                              Float_t mass   , Int_t ebin)
2674 {
2675   // Fill optional histograms with more SS parameters
2676     
2677   Float_t en = cluster->E();
2678   
2679   // Get more Shower Shape parameters
2680   Float_t ll0  = 0., ll1  = 0.;
2681   Float_t disp= 0., dispEta = 0., dispPhi    = 0.;
2682   Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2683   
2684   GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2685                                                                                ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2686   
2687   Float_t dispAsy = -1;
2688   if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2689   
2690   if     (nMax==1)
2691   {
2692     if( en > fHistoECut )
2693     {
2694       fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta,  mass );
2695       fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi,  mass );
2696       fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy,  mass );
2697       
2698       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2699       {
2700         fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta,  mass );
2701         fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi,  mass );
2702         fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy,  mass );
2703       }
2704     }
2705     
2706     if(!matched && ebin >= 0 && fFillEbinHisto)
2707     {
2708       fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta,  mass );
2709       fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi,  mass );
2710       fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy,  mass );
2711     }
2712   }
2713   else if( nMax == 2  )
2714   {
2715     if( en > fHistoECut )
2716     {
2717       fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta,  mass );
2718       fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi,  mass );
2719       fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy,  mass );
2720       
2721       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2722       {
2723         fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta,  mass );
2724         fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi,  mass );
2725         fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy,  mass );
2726       }
2727     }
2728     
2729     if(!matched && ebin >= 0 && fFillEbinHisto)
2730     {
2731       fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta,  mass );
2732       fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi,  mass );
2733       fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy,  mass );
2734     }
2735     
2736   }
2737   else if( nMax >= 3  )
2738   {
2739     if( en > fHistoECut )
2740     {
2741       fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta,  mass );
2742       fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi,  mass );
2743       fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy,  mass );
2744       
2745       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2746       {
2747         fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta,  mass );
2748         fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi,  mass );
2749         fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy,  mass );
2750       }
2751     }
2752     
2753     if(!matched && ebin >= 0 && fFillEbinHisto)
2754     {
2755       fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta,  mass );
2756       fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi,  mass );
2757       fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy,  mass );
2758     }
2759
2760   }
2761   
2762 }
2763
2764 //__________________________________________________________________________________________
2765 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,  Int_t nlm,
2766                                                               Int_t absId1, Int_t absId2)
2767 {
2768   // Calculate weights and fill histograms
2769     
2770   AliVCaloCells* cells = 0;
2771   if(GetCalorimeter() == kEMCAL) cells = GetEMCALCells();
2772   else                        cells = GetPHOSCells();
2773   
2774   // First recalculate energy in case non linearity was applied
2775   Float_t energy =  GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
2776   
2777   Float_t simuTotWeight = 0;
2778   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2779   {
2780     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
2781     simuTotWeight/= energy;
2782   }
2783   
2784   if(energy <=0 )
2785   {
2786     Info("WeightHistograms()","Wrong calculated energy %f\n",energy);
2787     return;
2788   }
2789   
2790   //Get amplitude of  main local maxima, recalibrate if needed
2791   Float_t amp1 = cells->GetCellAmplitude(absId1);
2792   GetCaloUtils()->RecalibrateCellAmplitude(amp1,GetCalorimeter(), absId1);
2793   Float_t amp2 = cells->GetCellAmplitude(absId2);
2794   GetCaloUtils()->RecalibrateCellAmplitude(amp2,GetCalorimeter(), absId2);
2795
2796   if(amp1 < amp2)        Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2797   if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n "        ,amp1,amp2);
2798   
2799   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2800   {
2801     amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
2802     amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
2803   }
2804   
2805   if(amp1>0)fhPi0CellEMaxEMax2Frac   [nlm]->Fill(energy,amp2/amp1);
2806   fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2807   fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2808   
2809   //Get the ratio and log ratio to all cells in cluster
2810   for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2811   {
2812     Int_t id       = clus->GetCellsAbsId()[ipos];
2813     
2814     //Recalibrate cell energy if needed
2815     Float_t amp = cells->GetCellAmplitude(id);
2816     GetCaloUtils()->RecalibrateCellAmplitude(amp,GetCalorimeter(), id);
2817     if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2818     {
2819       //printf("eCell a) %f",amp);
2820       amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
2821       //printf(", b)%f\n",amp);
2822     }
2823     
2824     if(amp > 0)fhPi0CellE       [nlm]->Fill(energy,amp);
2825     fhPi0CellEFrac   [nlm]->Fill(energy,amp/energy);
2826     fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2827     
2828     if     (id!=absId1 && id!=absId2)
2829     {
2830       if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2831       if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2832     }
2833
2834   }
2835
2836   //Recalculate shower shape for different W0
2837   if(GetCalorimeter()==kEMCAL)
2838   {
2839     Float_t l0org = clus->GetM02();
2840     Float_t l1org = clus->GetM20();
2841     Float_t dorg  = clus->GetDispersion();
2842     Float_t w0org =  GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2843     
2844     //printf("E cl %2.3f, E recal %2.3f, nlm %d, Org w0 %2.3f, org l0 %2.3f\n",clus->E(), energy,nlm, w0org,l0org);
2845     
2846     for(Int_t iw = 0; iw < fSSWeightN; iw++)
2847     {
2848       GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2849       //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2850       //fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2851
2852       Float_t l0   = 0., l1   = 0.;
2853       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2854       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2855       
2856       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2857                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[0]);
2858       //Make sure that for pp fSSECellCut[0]=0.05 and for PbPb fSSECellCut[0]=0.15
2859
2860       
2861       fhM02WeightPi0[nlm][iw]->Fill(energy,l0);
2862       
2863       //printf("\t w0 %2.3f, l0 %2.3f\n",GetCaloUtils()->GetEMCALRecoUtils()->GetW0(),l0);
2864       
2865     } // w0 loop
2866     
2867     // Set the original values back
2868     clus->SetM02(l0org);
2869     clus->SetM20(l1org);
2870     clus->SetDispersion(dorg);
2871     GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2872
2873     for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2874     {
2875       Float_t l0   = 0., l1   = 0.;
2876       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2877       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2878       
2879       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2880                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2881       
2882       fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2883       
2884       //printf("\t min E cell %2.3f, l0 %2.3f\n",fSSECellCut[iec], l0);
2885       
2886     } // w0 loop
2887   
2888   }// EMCAL
2889 }
2890
2891 //____________________________________________________________________________________________
2892 void  AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2893                                                                     Int_t nMax, Int_t mcindex)
2894 {
2895   // Fill histograms related to track matching
2896     
2897   Float_t dZ  = cluster->GetTrackDz();
2898   Float_t dR  = cluster->GetTrackDx();
2899   Float_t en  = cluster->E();
2900   
2901   if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2902   {
2903     dR = 2000., dZ = 2000.;
2904     GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2905   }
2906   
2907   //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2908   
2909   if(TMath::Abs(dR) < 999)
2910   {
2911     if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2912     else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2913     else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2914     
2915     if(IsDataMC() && mcindex > 0 && mcindex < 7)
2916     {
2917       if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2918       else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2919       else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2920     }
2921     
2922     AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2923     
2924     Bool_t positive = kFALSE;
2925     if(track) positive = (track->Charge()>0);
2926
2927     if(track)
2928     {
2929       if(positive)
2930       {
2931         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2932         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2933         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2934         
2935         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2936         {
2937           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2938           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2939           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2940         }
2941       }
2942       else
2943       {
2944         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2945         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2946         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2947         
2948         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2949         {
2950           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2951           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2952           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2953         }
2954       }
2955       
2956     }// track exists
2957     
2958   }
2959 }
2960
2961 //_______________________________________________________________
2962 TObjString *  AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2963 {       
2964         //Save parameters used for analysis
2965   TString parList ; //this will be list of parameters used for this analysis.
2966   Int_t buffersize = 255;
2967   char onePar[buffersize] ;
2968   
2969   snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2970   parList+=onePar ;     
2971   
2972   snprintf(onePar,buffersize,"Calorimeter: %s\n",         GetCalorimeterString().Data()) ;
2973   parList+=onePar ;
2974   snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n",    GetCaloUtils()->GetLocalMaximaCutE()) ;
2975   parList+=onePar ;
2976   snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2977   parList+=onePar ;
2978   snprintf(onePar,buffersize,"fMinNCells =%d \n",        fMinNCells) ;
2979   parList+=onePar ;    
2980   snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n",    fMinBadDist) ;
2981   parList+=onePar ;  
2982   if(fFillSSWeightHisto)
2983   {
2984     snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2985     parList+=onePar ;
2986   }
2987   
2988   return new TObjString(parList) ;
2989   
2990 }
2991
2992 //________________________________________________________________
2993 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2994 {
2995   // Create histograms to be saved in output file and 
2996   // store them in outputContainer
2997   TList * outputContainer = new TList() ; 
2998   outputContainer->SetName("InsideClusterHistos") ;
2999   
3000   Int_t nptbins  = GetHistogramRanges()->GetHistoPtBins();           Float_t ptmax  = GetHistogramRanges()->GetHistoPtMax();           Float_t ptmin  = GetHistogramRanges()->GetHistoPtMin();
3001   Int_t ssbins   = GetHistogramRanges()->GetHistoShowerShapeBins();  Float_t ssmax  = GetHistogramRanges()->GetHistoShowerShapeMax();  Float_t ssmin  = GetHistogramRanges()->GetHistoShowerShapeMin();
3002   Int_t mbins    = GetHistogramRanges()->GetHistoMassBins();         Float_t mmax   = GetHistogramRanges()->GetHistoMassMax();         Float_t mmin   = GetHistogramRanges()->GetHistoMassMin();
3003   Int_t ncbins   = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t   ncmax  = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t   ncmin  = GetHistogramRanges()->GetHistoNClusterCellMin(); 
3004   Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();          Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();          Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
3005   Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();          Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();          Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
3006   
3007   Int_t   nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();          
3008   Float_t resetamax   = GetHistogramRanges()->GetHistoTrackResidualEtaMax();          
3009   Float_t resetamin   = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
3010   Int_t   nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();          
3011   Float_t resphimax   = GetHistogramRanges()->GetHistoTrackResidualPhiMax();          
3012   Float_t resphimin   = GetHistogramRanges()->GetHistoTrackResidualPhiMin();  
3013   
3014   Bool_t m02On   = GetCaloPID()->IsSplitShowerShapeCutOn();
3015   Bool_t asyOn   = GetCaloPID()->IsSplitAsymmetryCutOn();
3016   Bool_t splitOn = kFALSE;
3017   if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
3018      GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
3019      GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
3020   
3021   TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
3022   TString pname[] ={"","Photon","Conversion",     "Pi0",    "Pi0Conv",                  "Eta","Hadron"};
3023   TString snlm [] = {"1","2","N"};
3024
3025   TString sEBin[] = {"8 < #it{E} < 12 GeV","12 < #it{E} < 16 GeV", "16 < #it{E} < 20 GeV", "#it{E} > 20 GeV" };
3026
3027   Int_t n = 1;
3028   
3029   if(IsDataMC()) n = 7;
3030   
3031   Int_t nMaxBins = 10;
3032   
3033   TString sMatched[] = {"","Matched"};
3034   
3035   Int_t nMatched = 2;
3036   if(!fFillTMHisto) nMatched = 1;
3037   
3038   
3039   if(fFillNLMDiffCutHisto)
3040   {
3041     for(Int_t imatch = 0; imatch < nMatched; imatch++)
3042     {
3043       for(Int_t iE = 0; iE < fNLMSettingN; iE++)
3044       {
3045         for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
3046         {
3047           fhNLocMaxDiffCut[iE][iDiff][imatch]  = new TH2F(Form("hNLocMax_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3048                                                           Form("NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s", fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3049                                                           nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3050           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3051           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetXTitle("#it{E}_{cluster}");
3052           outputContainer->Add(fhNLocMaxDiffCut[iE][iDiff][imatch]) ;
3053           
3054           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]  = new TH2F(Form("hNLocMaxPi0_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3055                                                              Form("#pi^{0} NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s",
3056                                                                   fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3057                                                              nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3058           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3059           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetXTitle("#it{E}_{#pi^{0}}");
3060           outputContainer->Add(fhNLocMaxDiffCutPi0[iE][iDiff][imatch]) ;
3061           
3062           for(Int_t inlm = 0; inlm < 3; inlm++)
3063           {
3064             
3065             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxM02_MinE%d_MinDiffE%d_NLM%s%s",
3066                                                                           iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3067                                                                      Form("#lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3068                                                                           fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3069                                                                      nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3070             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3071             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3072             outputContainer->Add(fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3073             
3074             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxMass_MinE%d_MinDiffE%d_NLM%s%s",
3075                                                                            iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3076                                                                       Form("#it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3077                                                                            fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3078                                                                       nptbins,ptmin,ptmax, mbins,mmin,mmax);
3079             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3080             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3081             outputContainer->Add(fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3082             
3083             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0M02_MinE%d_MinDiffE%d_NLM%s%s",
3084                                                                              iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3085                                                                         Form("#pi^{0} #lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3086                                                                              fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3087                                                                         nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3088             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3089             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3090             outputContainer->Add(fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3091             
3092             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0Mass_MinE%d_MinDiffE%d_NLM%s%s",
3093                                                                               iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3094                                                                          Form("#pi^{0} #it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3095                                                                               fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3096                                                                          nptbins,ptmin,ptmax, mbins,mmin,mmax);
3097             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3098             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3099             outputContainer->Add(fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3100             
3101           }
3102           
3103         }
3104       }
3105     }
3106     return outputContainer;
3107   }
3108
3109   if(fCheckSplitDistToBad)
3110   {
3111     for(Int_t inlm = 0; inlm < 3; inlm++)
3112     {
3113       fhMassBadDistClose[inlm]  = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
3114                                            Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3115                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3116       fhMassBadDistClose[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3117       fhMassBadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3118       outputContainer->Add(fhMassBadDistClose[inlm]) ;
3119       
3120       fhM02BadDistClose[inlm]  = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
3121                                           Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3122                                           nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3123       fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
3124       fhM02BadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3125       outputContainer->Add(fhM02BadDistClose[inlm]) ;
3126       
3127       fhMassOnBorder[inlm]  = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
3128                                        Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3129                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3130       fhMassOnBorder[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3131       fhMassOnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3132       outputContainer->Add(fhMassOnBorder[inlm]) ;
3133       
3134       fhM02OnBorder[inlm]  = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
3135                                       Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3136                                       nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3137       fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
3138       fhM02OnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3139       outputContainer->Add(fhM02OnBorder[inlm]) ;
3140       
3141     }
3142   }
3143   
3144   for(Int_t i = 0; i < n; i++)
3145   {
3146     for(Int_t j = 0; j < nMatched; j++)
3147     {
3148       
3149       fhNLocMax[i][j]     = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3150                                      Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3151                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3152       fhNLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3153       fhNLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3154       outputContainer->Add(fhNLocMax[i][j]) ;
3155
3156       fhLM1NLocMax[i][j]     = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3157                                      Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3158                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3159       fhLM1NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3160       fhLM1NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3161       outputContainer->Add(fhLM1NLocMax[i][j]) ;
3162
3163       fhLM2NLocMax[i][j]     = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3164                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3165                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3166       fhLM2NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3167       fhLM2NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3168       outputContainer->Add(fhLM2NLocMax[i][j]) ;
3169       
3170       if(m02On)
3171       {
3172         fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3173                                          Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3174                                          nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3175         fhNLocMaxM02Cut[i][j]->SetYTitle("#it{N} maxima");
3176         fhNLocMaxM02Cut[i][j]->SetXTitle("#it{E} (GeV)");
3177         outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3178         
3179         fhLM1NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3180                                           Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3181                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3182         fhLM1NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3183         fhLM1NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3184         outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3185         
3186         fhLM2NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3187                                           Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3188                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3189         fhLM2NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3190         fhLM2NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3191         outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3192
3193       }
3194       
3195
3196       fhNLocMaxIdPi0[i][j]     = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3197                                      Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3198                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3199       fhNLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3200       fhNLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3201       outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3202
3203       
3204       fhLM1NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3205                                         Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3206                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3207       fhLM1NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3208       fhLM1NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3209       outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3210       
3211       fhLM2NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3212                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3213                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3214       fhLM2NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3215       fhLM2NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3216       outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3217       
3218
3219       
3220       
3221       fhSplitClusterENLocMax[i][j]     = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3222                                                   Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3223                                                   nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3224       fhSplitClusterENLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3225       fhSplitClusterENLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3226       outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3227       
3228       
3229       fhSplitClusterEPi0NLocMax[i][j]     = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3230                                                      Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3231                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3232       fhSplitClusterEPi0NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3233       fhSplitClusterEPi0NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3234       outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3235
3236       if(fFillNCellHisto)
3237       {
3238         fhNCellNLocMax1[i][j]  = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3239                                           Form("n cells vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3240                                           nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3241         fhNCellNLocMax1[i][j] ->SetYTitle("#it{N} cells");
3242         fhNCellNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3243         outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3244         
3245         fhNCellNLocMax2[i][j]     = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3246                                              Form("n cells vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3247                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3248         fhNCellNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3249         fhNCellNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3250         outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3251         
3252         
3253         fhNCellNLocMaxN[i][j]     = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3254                                              Form("n cells vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3255                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3256         fhNCellNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3257         fhNCellNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3258         outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3259       }
3260
3261       fhMassNLocMax1[i][j]  = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3262                                        Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3263                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3264       fhMassNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3265       fhMassNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3266       outputContainer->Add(fhMassNLocMax1[i][j]) ;   
3267       
3268       fhMassNLocMax2[i][j]  = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3269                                        Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3270                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3271       fhMassNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3272       fhMassNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3273       outputContainer->Add(fhMassNLocMax2[i][j]) ;   
3274       
3275       fhMassNLocMaxN[i][j]  = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3276                                        Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3277                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3278       fhMassNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3279       fhMassNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3280       outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3281
3282       fhMassSplitENLocMax1[i][j]  = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3283                                        Form("Invariant mass of splitted cluster with #it{NLM}=1 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3284                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3285       fhMassSplitENLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3286       fhMassSplitENLocMax1[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3287       outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3288       
3289       fhMassSplitENLocMax2[i][j]  = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3290                                        Form("Invariant mass of splitted cluster with #it{NLM}=2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3291                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3292       fhMassSplitENLocMax2[i][j]->SetYTitle("#it{E} _{M} (GeV/#it{c}^{2})");
3293       fhMassSplitENLocMax2[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3294       outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3295       
3296       fhMassSplitENLocMaxN[i][j]  = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3297                                        Form("Invariant mass of splitted cluster with NLM>2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3298                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3299       fhMassSplitENLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3300       fhMassSplitENLocMaxN[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3301       outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3302       
3303       fhM02NLocMax1[i][j]     = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3304                                          Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3305                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3306       fhM02NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3307       fhM02NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3308       outputContainer->Add(fhM02NLocMax1[i][j]) ;
3309       
3310       fhM02NLocMax2[i][j]     = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3311                                          Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3312                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3313       fhM02NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3314       fhM02NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3315       outputContainer->Add(fhM02NLocMax2[i][j]) ;
3316       
3317       fhM02NLocMaxN[i][j]    = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3318                                         Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3319                                         nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3320       fhM02NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3321       fhM02NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3322       outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3323       
3324       fhAsymNLocMax1[i][j]  = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3325                                        Form("Asymmetry of #it{NLM}=1  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3326                                        nptbins,ptmin,ptmax,200,-1,1);
3327       fhAsymNLocMax1[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3328       fhAsymNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3329       outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3330       
3331       fhAsymNLocMax2[i][j]  = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3332                                        Form("Asymmetry of #it{NLM}=2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3333                                        nptbins,ptmin,ptmax,200,-1,1);
3334       fhAsymNLocMax2[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3335       fhAsymNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3336       outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3337       
3338       fhAsymNLocMaxN[i][j]  = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3339                                        Form("Asymmetry of NLM>2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3340                                        nptbins,ptmin,ptmax,200,-1,1);
3341       fhAsymNLocMaxN[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3342       fhAsymNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3343       outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3344       
3345       fhSplitEFractionNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3346                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3347                                                     nptbins,ptmin,ptmax,120,0,1.2);
3348       fhSplitEFractionNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3349       fhSplitEFractionNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3350       outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3351       
3352       fhSplitEFractionNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3353                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3354                                                     nptbins,ptmin,ptmax,120,0,1.2);
3355       fhSplitEFractionNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3356       fhSplitEFractionNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3357       outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3358       
3359       fhSplitEFractionNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3360                                                    Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3361                                                    nptbins,ptmin,ptmax,120,0,1.2);
3362       fhSplitEFractionNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3363       fhSplitEFractionNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3364       outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3365       
3366       if(i==0 && j==0 )
3367       {
3368         if(m02On)
3369         {
3370           fhMassM02CutNLocMax1  = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, M02 cut, no TM",
3371                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3372           fhMassM02CutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3373           fhMassM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3374           outputContainer->Add(fhMassM02CutNLocMax1) ;
3375           
3376           fhMassM02CutNLocMax2  = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, M02 cut, no TM",
3377                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3378           fhMassM02CutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3379           fhMassM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3380           outputContainer->Add(fhMassM02CutNLocMax2) ;
3381           
3382           fhMassM02CutNLocMaxN  = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3383                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3384           fhMassM02CutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3385           fhMassM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3386           outputContainer->Add(fhMassM02CutNLocMaxN) ;
3387           
3388           fhAsymM02CutNLocMax1  = new TH2F("hAsymM02CutNLocMax1","Asymmetry of #it{NLM}=1  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3389           fhAsymM02CutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3390           fhAsymM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3391           outputContainer->Add(fhAsymM02CutNLocMax1) ;
3392           
3393           fhAsymM02CutNLocMax2  = new TH2F("hAsymM02CutNLocMax2","Asymmetry of #it{NLM}=2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3394           fhAsymM02CutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3395           fhAsymM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3396           outputContainer->Add(fhAsymM02CutNLocMax2) ;
3397           
3398           fhAsymM02CutNLocMaxN  = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3399           fhAsymM02CutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3400           fhAsymM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3401           outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3402           
3403           if(splitOn)
3404           {
3405             fhMassSplitECutNLocMax1  = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3406                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3407             fhMassSplitECutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3408             fhMassSplitECutNLocMax1->SetXTitle("#it{E} (GeV)");
3409             outputContainer->Add(fhMassSplitECutNLocMax1) ;
3410             
3411             fhMassSplitECutNLocMax2  = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3412                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3413             fhMassSplitECutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3414             fhMassSplitECutNLocMax2->SetXTitle("#it{E} (GeV)");
3415             outputContainer->Add(fhMassSplitECutNLocMax2) ;
3416             
3417             fhMassSplitECutNLocMaxN  = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3418                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3419             fhMassSplitECutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3420             fhMassSplitECutNLocMaxN->SetXTitle("#it{E} (GeV)");
3421             outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3422           }
3423         }//m02on
3424         
3425         if(asyOn)
3426         {
3427           fhMassAsyCutNLocMax1  = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, Asy cut, no TM",
3428                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3429           fhMassAsyCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3430           fhMassAsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3431           outputContainer->Add(fhMassAsyCutNLocMax1) ;
3432           
3433           fhMassAsyCutNLocMax2  = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, Asy cut, no TM",
3434                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3435           fhMassAsyCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3436           fhMassAsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3437           outputContainer->Add(fhMassAsyCutNLocMax2) ;
3438           
3439           fhMassAsyCutNLocMaxN  = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3440                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3441           fhMassAsyCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3442           fhMassAsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3443           outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3444           
3445           fhM02AsyCutNLocMax1  = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, AsyCut, no TM",
3446                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3447           fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3448           fhM02AsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3449           outputContainer->Add(fhM02AsyCutNLocMax1) ;
3450           
3451           fhM02AsyCutNLocMax2  = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, AsyCut, no TM",
3452                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3453           fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3454           fhM02AsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3455           outputContainer->Add(fhM02AsyCutNLocMax2) ;
3456           
3457           fhM02AsyCutNLocMaxN  = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2  vs cluster Energy, AsyCut, no TM",
3458                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3459           fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3460           fhM02AsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3461           outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3462         }
3463         
3464         if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3465         {
3466           fhMassEnCutNLocMax1  = new TH2F("hMassEnCutNLocMax1",Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3467                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3468           fhMassEnCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3469           fhMassEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3470           outputContainer->Add(fhMassEnCutNLocMax1) ;
3471           
3472           fhMassEnCutNLocMax2  = new TH2F("hMassEnCutNLocMax2",Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3473                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3474           fhMassEnCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3475           fhMassEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3476           outputContainer->Add(fhMassEnCutNLocMax2) ;
3477           
3478           fhMassEnCutNLocMaxN  = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3479                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3480           fhMassEnCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3481           fhMassEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3482           outputContainer->Add(fhMassEnCutNLocMaxN) ;
3483           
3484           fhM02EnCutNLocMax1  = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3485                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3486           fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3487           fhM02EnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3488           outputContainer->Add(fhM02EnCutNLocMax1) ;
3489           
3490           fhM02EnCutNLocMax2  = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3491                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3492           fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3493           fhM02EnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3494           outputContainer->Add(fhM02EnCutNLocMax2) ;
3495           
3496           fhM02EnCutNLocMaxN  = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3497                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3498           fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3499           fhM02EnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3500           outputContainer->Add(fhM02EnCutNLocMaxN) ;
3501           
3502           fhAsymEnCutNLocMax1  = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3503                                           , nptbins,ptmin,ptmax,200,-1,1);
3504           fhAsymEnCutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3505           fhAsymEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3506           outputContainer->Add(fhAsymEnCutNLocMax1) ;
3507           
3508           fhAsymEnCutNLocMax2  = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3509                                           , nptbins,ptmin,ptmax,200,-1,1);
3510           fhAsymEnCutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3511           fhAsymEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3512           outputContainer->Add(fhAsymEnCutNLocMax2) ;
3513           
3514           fhAsymEnCutNLocMaxN  = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3515                                           , nptbins,ptmin,ptmax,200,-1,1);
3516           fhAsymEnCutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3517           fhAsymEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3518           outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3519
3520           fhSplitEFracEnCutNLocMax1  = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3521                                           , nptbins,ptmin,ptmax,120,0,1.2);
3522           fhSplitEFracEnCutNLocMax1->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3523           fhSplitEFracEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3524           outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3525           
3526           fhSplitEFracEnCutNLocMax2  = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3527                                           , nptbins,ptmin,ptmax,120,0,1.2);
3528           fhSplitEFracEnCutNLocMax2->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3529           fhSplitEFracEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3530           outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3531           
3532           fhSplitEFracEnCutNLocMaxN  = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3533                                           , nptbins,ptmin,ptmax,120,0,1.2);
3534           fhSplitEFracEnCutNLocMaxN->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3535           fhSplitEFracEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3536           outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3537         }
3538         
3539       } // no MC
3540       
3541       if(asyOn || m02On )
3542       {
3543         fhMassAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3544                                                      Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3545                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3546         fhMassAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3547         fhMassAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3548         outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3549         
3550         fhMassAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3551                                                      Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3552                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3553         fhMassAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3554         fhMassAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3555         outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3556         
3557         fhMassAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3558                                                      Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3559                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3560         fhMassAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3561         fhMassAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3562         outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3563
3564         fhMassSplitEAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3565                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3566                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3567         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3568         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3569         outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3570         
3571         fhMassSplitEAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3572                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3573                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3574         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3575         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3576         outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3577         
3578         fhMassSplitEAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3579                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3580                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3581         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3582         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3583         outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3584
3585         
3586         fhSplitEFractionAfterCutsNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3587                                                                Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 1, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3588                                                                nptbins,ptmin,ptmax,120,0,1.2);
3589         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3590         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3591         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3592         
3593         fhSplitEFractionAfterCutsNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3594                                                                Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3595                                                                nptbins,ptmin,ptmax,120,0,1.2);
3596         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3597         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3598         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3599         
3600         fhSplitEFractionAfterCutsNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3601                                                               Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  > 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3602                                                               nptbins,ptmin,ptmax,120,0,1.2);
3603         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3604         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3605         outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3606       }
3607       
3608       fhMassM02NLocMax1[i][j]  = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3609                                           Form("Invariant mass of splitted cluster with #it{NLM}=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3610                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3611       fhMassM02NLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3612       fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3613       outputContainer->Add(fhMassM02NLocMax1[i][j]) ;   
3614       
3615       fhMassM02NLocMax2[i][j]  = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3616                                           Form("Invariant mass of splitted cluster with #it{NLM}=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3617                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3618       fhMassM02NLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3619       fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3620       outputContainer->Add(fhMassM02NLocMax2[i][j]) ;   
3621       
3622       fhMassM02NLocMaxN[i][j]  = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3623                                           Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3624                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3625       fhMassM02NLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3626       fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3627       outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;   
3628       
3629       if(fFillSSExtraHisto)
3630       {
3631         fhMassDispEtaNLocMax1[i][j]  = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3632                                                 Form("Invariant mass of splitted cluster with #it{NLM}=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3633                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3634         fhMassDispEtaNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3635         fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3636         outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;   
3637         
3638         fhMassDispEtaNLocMax2[i][j]  = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3639                                                 Form("Invariant mass of splitted cluster with #it{NLM}=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3640                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3641         fhMassDispEtaNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3642         fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3643         outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;   
3644         
3645         fhMassDispEtaNLocMaxN[i][j]  = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3646                                                 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3647                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3648         fhMassDispEtaNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3649         fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3650         outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;   
3651         
3652         fhMassDispPhiNLocMax1[i][j]  = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3653                                                 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3654                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3655         fhMassDispPhiNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3656         fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3657         outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;   
3658         
3659         fhMassDispPhiNLocMax2[i][j]  = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3660                                                 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3661                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3662         fhMassDispPhiNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3663         fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3664         outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;   
3665         
3666         fhMassDispPhiNLocMaxN[i][j]  = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3667                                                 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3668                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3669         fhMassDispPhiNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3670         fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3671         outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;   
3672         
3673         fhMassDispAsyNLocMax1[i][j]  = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3674                                                 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()),
3675                                                 200,-1,1,mbins,mmin,mmax); 
3676         fhMassDispAsyNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3677         fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3678         outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;   
3679         
3680         fhMassDispAsyNLocMax2[i][j]  = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3681                                                 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()),
3682                                                 200,-1,1,mbins,mmin,mmax); 
3683         fhMassDispAsyNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3684         fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3685         outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;   
3686         
3687         fhMassDispAsyNLocMaxN[i][j]  = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3688                                                 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()),
3689                                                 200,-1,1,mbins,mmin,mmax); 
3690         fhMassDispAsyNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3691         fhMassDispAsyNLocMaxN[i][j]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3692         outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;   
3693       }
3694       
3695       
3696       if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3697       {
3698         fhMCGenFracNLocMax1[i][j]     = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3699                                                  Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3700                                                  nptbins,ptmin,ptmax,200,0,2); 
3701         fhMCGenFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3702         fhMCGenFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3703         outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ; 
3704         
3705         fhMCGenFracNLocMax2[i][j]     = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3706                                                  Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3707                                                  nptbins,ptmin,ptmax,200,0,2); 
3708         fhMCGenFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3709         fhMCGenFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3710         outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ; 
3711         
3712         fhMCGenFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3713                                                 Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3714                                                 nptbins,ptmin,ptmax,200,0,2); 
3715         fhMCGenFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3716         fhMCGenFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3717         outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ; 
3718         
3719         fhMCGenFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3720                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3721                                                           nptbins,ptmin,ptmax,200,0,2);
3722         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3723         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3724         outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3725         
3726         fhMCGenFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3727                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3728                                                           nptbins,ptmin,ptmax,200,0,2);
3729         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3730         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3731         outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3732         
3733         fhMCGenFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3734                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3735                                                          nptbins,ptmin,ptmax,200,0,2);
3736         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3737         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3738         outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3739         
3740         
3741         fhMCGenSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3742                                                        Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3743                                                        nptbins,ptmin,ptmax,200,0,2); 
3744         fhMCGenSplitEFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3745         fhMCGenSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3746         outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ; 
3747         
3748         fhMCGenSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3749                                                        Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3750                                                        nptbins,ptmin,ptmax,200,0,2); 
3751         fhMCGenSplitEFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3752         fhMCGenSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3753         outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ; 
3754         
3755         fhMCGenSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3756                                                       Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3757                                                       nptbins,ptmin,ptmax,200,0,2); 
3758         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3759         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3760         outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ; 
3761         
3762         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3763                                                                 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3764                                                                 nptbins,ptmin,ptmax,200,0,2);
3765         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3766         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3767         outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3768         
3769         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3770                                                                 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3771                                                                 nptbins,ptmin,ptmax,200,0,2);
3772         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3773         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3774         outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3775         
3776         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3777                                                                Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3778                                                                nptbins,ptmin,ptmax,200,0,2);
3779         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3780         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3781         outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3782         
3783         fhMCGenEFracvsSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3784                                                               Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3785                                                               200,0,2,200,0,2); 
3786         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3787         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3788         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ; 
3789         
3790         fhMCGenEFracvsSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3791                                                               Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3792                                                               200,0,2,200,0,2); 
3793         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3794         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3795         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ; 
3796         
3797         
3798         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3799                                                              Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3800                                                              200,0,2,200,0,2); 
3801         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3802         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3803         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ; 
3804         
3805         
3806         fhMCGenEvsSplitENLocMax1[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3807                                                       Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3808                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3809         fhMCGenEvsSplitENLocMax1[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3810         fhMCGenEvsSplitENLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3811         outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ; 
3812         
3813         fhMCGenEvsSplitENLocMax2[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3814                                                       Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3815                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3816         fhMCGenEvsSplitENLocMax2[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3817         fhMCGenEvsSplitENLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3818         outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ; 
3819         
3820         
3821         fhMCGenEvsSplitENLocMaxN[i][j]    = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3822                                                      Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3823                                                      nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3824         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3825         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3826         outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ; 
3827       }
3828           
3829       // Histograms after cluster identification
3830       
3831       
3832       // Pi0 //
3833       
3834       fhM02Pi0NLocMax1[i][j]     = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3835                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3836                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3837       fhM02Pi0NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3838       fhM02Pi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3839       outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3840       
3841       fhM02Pi0NLocMax2[i][j]     = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3842                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 2",ptype[i].Data()),
3843                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3844       fhM02Pi0NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3845       fhM02Pi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3846       outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ; 
3847       
3848       fhM02Pi0NLocMaxN[i][j]     = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3849                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3850                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3851       fhM02Pi0NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3852       fhM02Pi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3853       outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ; 
3854       
3855       fhMassPi0NLocMax1[i][j]     = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3856                                              Form("Mass vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3857                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3858       fhMassPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3859       fhMassPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3860       outputContainer->Add(fhMassPi0NLocMax1[i][j]) ; 
3861       
3862       fhMassPi0NLocMax2[i][j]     = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3863                                              Form("Mass vs #it{E} , %s, for NLM = 2",ptype[i].Data()),
3864                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3865       fhMassPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3866       fhMassPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3867       outputContainer->Add(fhMassPi0NLocMax2[i][j]) ; 
3868       
3869       fhMassPi0NLocMaxN[i][j]     = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3870                                              Form("Mass vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3871                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3872       fhMassPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3873       fhMassPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3874       outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ; 
3875
3876       fhMassSplitEPi0NLocMax1[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3877                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM = 1",ptype[i].Data()),
3878                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3879       fhMassSplitEPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3880       fhMassSplitEPi0NLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3881       outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3882       
3883       fhMassSplitEPi0NLocMax2[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3884                                              Form("Mass vs #it{E}_{1}+#it{E}_{2} , %s, for NLM = 2",ptype[i].Data()),
3885                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3886       fhMassSplitEPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3887       fhMassSplitEPi0NLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3888       outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3889       
3890       fhMassSplitEPi0NLocMaxN[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3891                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM > 2",ptype[i].Data()),
3892                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3893       fhMassSplitEPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3894       fhMassSplitEPi0NLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3895       outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3896       
3897       fhAsyPi0NLocMax1[i][j]     = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3898                                             Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3899                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3900       fhAsyPi0NLocMax1[i][j]   ->SetYTitle("#it{A}");
3901       fhAsyPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3902       outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ; 
3903       
3904       fhAsyPi0NLocMax2[i][j]     = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3905                                             Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3906                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3907       fhAsyPi0NLocMax2[i][j]   ->SetYTitle("#it{A}");
3908       fhAsyPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3909       outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ; 
3910       
3911       fhAsyPi0NLocMaxN[i][j]     = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3912                                             Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3913                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3914       fhAsyPi0NLocMaxN[i][j]   ->SetYTitle("#it{A}");
3915       fhAsyPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3916       outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ; 
3917       
3918       if(fFillNCellHisto)
3919       {
3920         fhNCellPi0NLocMax1[i][j]     = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3921                                                 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3922                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3923         fhNCellPi0NLocMax1[i][j]   ->SetYTitle("#it{N} cells");
3924         fhNCellPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3925         outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3926         
3927         fhNCellPi0NLocMax2[i][j]     = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3928                                                 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3929                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3930         fhNCellPi0NLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3931         fhNCellPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3932         outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3933         
3934         fhNCellPi0NLocMaxN[i][j]     = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3935                                                 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3936                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3937         fhNCellPi0NLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3938         fhNCellPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3939         outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3940       }
3941       
3942       // Eta
3943     
3944       if(fFillIdEtaHisto)
3945       {
3946         fhM02EtaNLocMax1[i][j]     = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3947                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3948                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3949         fhM02EtaNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3950         fhM02EtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3951         outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3952         
3953         
3954         fhM02EtaNLocMax2[i][j]     = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3955                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3956                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3957         fhM02EtaNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3958         fhM02EtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3959         outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3960         
3961         fhM02EtaNLocMaxN[i][j]     = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3962                                               Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3963                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3964         fhM02EtaNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3965         fhM02EtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3966         outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3967         
3968         fhMassEtaNLocMax1[i][j]     = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3969                                                Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3970                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3971         fhMassEtaNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3972         fhMassEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3973         outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3974         
3975         fhMassEtaNLocMax2[i][j]     = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3976                                                Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3977                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3978         fhMassEtaNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3979         fhMassEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3980         outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3981         
3982         fhMassEtaNLocMaxN[i][j]     = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3983                                                Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3984                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3985         fhMassEtaNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3986         fhMassEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3987         outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3988         
3989         fhAsyEtaNLocMax1[i][j]     = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3990                                               Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3991                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3992         fhAsyEtaNLocMax1[i][j]   ->SetYTitle("#it{A}");
3993         fhAsyEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3994         outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3995         
3996         fhAsyEtaNLocMax2[i][j]     = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3997                                               Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3998                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3999         fhAsyEtaNLocMax2[i][j]   ->SetYTitle("#it{A}");
4000         fhAsyEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4001         outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
4002         
4003         fhAsyEtaNLocMaxN[i][j]     = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4004                                               Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4005                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4006         fhAsyEtaNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4007         fhAsyEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4008         outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
4009         
4010         if(fFillNCellHisto)
4011         {
4012           fhNCellEtaNLocMax1[i][j]     = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4013                                                   Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
4014                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4015           fhNCellEtaNLocMax1[i][j]   ->SetYTitle("#it{N} cells");
4016           fhNCellEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4017           outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
4018           
4019           fhNCellEtaNLocMax2[i][j]     = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4020                                                   Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
4021                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4022           fhNCellEtaNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
4023           fhNCellEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4024           outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
4025           
4026           fhNCellEtaNLocMaxN[i][j]     = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4027                                                   Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
4028                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4029           fhNCellEtaNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
4030           fhNCellEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4031           outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
4032           
4033         }
4034       }
4035       
4036       if(fFillIdConvHisto)
4037       {
4038         fhM02ConNLocMax1[i][j]    = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4039                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
4040                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4041         fhM02ConNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4042         fhM02ConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4043         outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
4044         
4045         fhM02ConNLocMax2[i][j]    = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4046                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
4047                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4048         fhM02ConNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4049         fhM02ConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4050         outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
4051         
4052         fhM02ConNLocMaxN[i][j]    = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4053                                              Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
4054                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4055         fhM02ConNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4056         fhM02ConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4057         outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
4058         
4059         
4060         fhMassConNLocMax1[i][j]    = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4061                                               Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
4062                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4063         fhMassConNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4064         fhMassConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4065         outputContainer->Add(fhMassConNLocMax1[i][j]) ;
4066         
4067         fhMassConNLocMax2[i][j]    = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4068                                               Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
4069                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4070         fhMassConNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4071         fhMassConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4072         outputContainer->Add(fhMassConNLocMax2[i][j]) ;
4073         
4074         fhMassConNLocMaxN[i][j]    = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4075                                               Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
4076                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4077         fhMassConNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4078         fhMassConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4079         outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
4080         
4081         fhAsyConNLocMax1[i][j]    = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4082                                              Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
4083                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4084         fhAsyConNLocMax1[i][j]   ->SetYTitle("#it{A}");
4085         fhAsyConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4086         outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
4087         
4088         fhAsyConNLocMax2[i][j]    = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4089                                              Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
4090                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4091         fhAsyConNLocMax2[i][j]   ->SetYTitle("#it{A}");
4092         fhAsyConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4093         outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
4094         
4095         fhAsyConNLocMaxN[i][j]    = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4096                                              Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4097                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4098         fhAsyConNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4099         fhAsyConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4100         outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
4101         
4102       }
4103       
4104     } // matched, not matched
4105     
4106     if(fFillEbinHisto)
4107     {
4108       for(Int_t j = 0; j < 4; j++)
4109       {
4110         
4111         fhMassSplitEFractionNLocMax1Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
4112                                                            Form("Invariant mass of 2 highest energy cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4113                                                            120,0,1.2,mbins,mmin,mmax);
4114         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4115         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4116         outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
4117         
4118         fhMassSplitEFractionNLocMax2Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
4119                                                            Form("Invariant mass of 2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4120                                                            120,0,1.2,mbins,mmin,mmax);
4121         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4122         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4123         outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
4124         
4125         fhMassSplitEFractionNLocMaxNEbin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
4126                                                            Form("Invariant mass of N>2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4127                                                            120,0,1.2,mbins,mmin,mmax);
4128         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4129         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4130         outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
4131         
4132         if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
4133         {
4134           fhMCGenFracNLocMaxEbin[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
4135                                                    Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4136                                                    200,0,2,nMaxBins,0,nMaxBins);
4137           fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("#it{NLM}");
4138           fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4139           outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
4140           
4141           fhMCGenFracNLocMaxEbinMatched[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
4142                                                           Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
4143                                                           200,0,2,nMaxBins,0,nMaxBins);
4144           fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("#it{NLM}");
4145           fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4146           outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
4147           
4148           fhMassMCGenFracNLocMax1Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4149                                                         Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4150                                                         200,0,2,mbins,mmin,mmax);
4151           fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4152           fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4153           outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
4154           
4155           fhMassMCGenFracNLocMax2Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4156                                                         Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4157                                                         200,0,2,mbins,mmin,mmax);
4158           fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4159           fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4160           outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
4161           
4162           fhMassMCGenFracNLocMaxNEbin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4163                                                         Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4164                                                         200,0,2,mbins,mmin,mmax);
4165           fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4166           fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4167           outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
4168           
4169           fhM02MCGenFracNLocMax1Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4170                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4171                                                           200,0,2,ssbins,ssmin,ssmax);
4172           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4173           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4174           outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4175           
4176           fhM02MCGenFracNLocMax2Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4177                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4178                                                           200,0,2,ssbins,ssmin,ssmax);
4179           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4180           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4181           outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4182           
4183           fhM02MCGenFracNLocMaxNEbin[i][j]    = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4184                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4185                                                          200,0,2,ssbins,ssmin,ssmax);
4186           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4187           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4188           outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4189         }
4190       }
4191     }
4192   } // MC particle list
4193   
4194   if(fFillHighMultHisto)
4195   {
4196     // E vs centrality
4197
4198     fhCentralityPi0NLocMax1  = new TH2F("hCentralityPi0NLocMax1",
4199                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4200                                         nptbins,ptmin,ptmax,100,0,100);
4201     fhCentralityPi0NLocMax1->SetYTitle("#it{Centrality}");
4202     fhCentralityPi0NLocMax1->SetXTitle("#it{E} (GeV)");
4203     outputContainer->Add(fhCentralityPi0NLocMax1) ;
4204     
4205     fhCentralityPi0NLocMax2  = new TH2F("hCentralityPi0NLocMax2",
4206                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4207                                         nptbins,ptmin,ptmax,100,0,100);
4208     fhCentralityPi0NLocMax2->SetYTitle("#it{Centrality}");
4209     fhCentralityPi0NLocMax2->SetXTitle("#it{E} (GeV)");
4210     outputContainer->Add(fhCentralityPi0NLocMax2) ;
4211     
4212     fhCentralityPi0NLocMaxN  = new TH2F("hCentralityPi0NLocMaxN",
4213                                         "E vs Centrality, selected pi0 cluster with NLM>1",
4214                                         nptbins,ptmin,ptmax,100,0,100);
4215     fhCentralityPi0NLocMaxN->SetYTitle("#it{Centrality}");
4216     fhCentralityPi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4217     outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4218     
4219     if(fFillIdEtaHisto)
4220     {
4221       fhCentralityEtaNLocMax1  = new TH2F("hCentralityEtaNLocMax1",
4222                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4223                                           nptbins,ptmin,ptmax,100,0,100);
4224       fhCentralityEtaNLocMax1->SetYTitle("#it{Centrality}");
4225       fhCentralityEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4226       outputContainer->Add(fhCentralityEtaNLocMax1) ;
4227       
4228       fhCentralityEtaNLocMax2  = new TH2F("hCentralityEtaNLocMax2",
4229                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4230                                           nptbins,ptmin,ptmax,100,0,100);
4231       fhCentralityEtaNLocMax2->SetYTitle("#it{Centrality}");
4232       fhCentralityEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4233       outputContainer->Add(fhCentralityEtaNLocMax2) ;
4234       
4235       fhCentralityEtaNLocMaxN  = new TH2F("hCentralityEtaNLocMaxN",
4236                                           "E vs Centrality, selected pi0 cluster with NLM>1",
4237                                           nptbins,ptmin,ptmax,100,0,100);
4238       fhCentralityEtaNLocMaxN->SetYTitle("#it{Centrality}");
4239       fhCentralityEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4240       outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4241     }
4242     
4243     // E vs Event plane angle
4244     
4245     fhEventPlanePi0NLocMax1  = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4246                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4247     fhEventPlanePi0NLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4248     fhEventPlanePi0NLocMax1->SetXTitle("#it{E} (GeV)");
4249     outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4250     
4251     fhEventPlanePi0NLocMax2  = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4252                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4253     fhEventPlanePi0NLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4254     fhEventPlanePi0NLocMax2->SetXTitle("#it{E} (GeV)");
4255     outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4256     
4257     fhEventPlanePi0NLocMaxN  = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4258                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4259     fhEventPlanePi0NLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4260     fhEventPlanePi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4261     outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4262     
4263     if(fFillIdEtaHisto)
4264     {
4265       fhEventPlaneEtaNLocMax1  = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4266                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4267       fhEventPlaneEtaNLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4268       fhEventPlaneEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4269       outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4270       
4271       fhEventPlaneEtaNLocMax2  = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4272                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4273       fhEventPlaneEtaNLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4274       fhEventPlaneEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4275       outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4276       
4277       fhEventPlaneEtaNLocMaxN  = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4278                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4279       fhEventPlaneEtaNLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4280       fhEventPlaneEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4281       outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4282     }
4283   }
4284   
4285   if(fFillEbinHisto)
4286   {
4287     for(Int_t i = 0; i < 4; i++)
4288     {
4289       fhMassM02NLocMax1Ebin[i]  = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4290                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4291                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4292       fhMassM02NLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4293       fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4294       outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;   
4295       
4296       fhMassM02NLocMax2Ebin[i]  = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4297                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4298                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4299       fhMassM02NLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4300       fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4301       outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;   
4302       
4303       fhMassM02NLocMaxNEbin[i]  = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4304                                            Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4305                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4306       fhMassM02NLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4307       fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4308       outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ; 
4309       
4310       
4311       fhMassAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4312                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=1, %s",sEBin[i].Data()),
4313                                            200,-1,1,mbins,mmin,mmax);
4314       fhMassAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4315       fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4316       outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4317       
4318       fhMassAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4319                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=2, %s",sEBin[i].Data()),
4320                                            200,-1,1,mbins,mmin,mmax);
4321       fhMassAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4322       fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4323       outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4324       
4325       fhMassAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4326                                            Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4327                                            200,-1,1,mbins,mmin,mmax);
4328       fhMassAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4329       fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4330       outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4331       
4332       
4333       if(IsDataMC() && fFillMCHisto)
4334       {
4335         fhMCAsymM02NLocMax1MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4336                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4337                                                     ssbins,ssmin,ssmax,100,0,1);
4338         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4339         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4340         outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4341         
4342         fhMCAsymM02NLocMax2MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4343                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4344                                                     ssbins,ssmin,ssmax,100,0,1);
4345         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4346         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4347         outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4348         
4349         fhMCAsymM02NLocMaxNMCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4350                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4351                                                     ssbins,ssmin,ssmax,100,0,1);
4352         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4353         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4354         outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;    
4355         
4356         
4357         fhAsyMCGenRecoNLocMax1EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4358                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=1, %s",sEBin[i].Data()),
4359                                                      200,-1,1,200,-1,1);
4360         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4361         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("#it{A}");
4362         outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4363         
4364         fhAsyMCGenRecoNLocMax2EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4365                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=2, %s",sEBin[i].Data()),
4366                                                      200,-1,1,200,-1,1);
4367         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4368         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("#it{A}");
4369         outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4370         
4371         fhAsyMCGenRecoNLocMaxNEbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4372                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4373                                                      200,-1,1,200,-1,1);
4374         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4375         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("#it{A}");
4376         outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4377       }
4378       
4379       if(fFillSSExtraHisto)
4380       {
4381         fhMassDispEtaNLocMax1Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4382                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4383                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4384         fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4385         fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4386         outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;   
4387         
4388         fhMassDispEtaNLocMax2Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4389                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4390                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4391         fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4392         fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4393         outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;   
4394         
4395         fhMassDispEtaNLocMaxNEbin[i]  = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4396                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4397                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4398         fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4399         fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4400         outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;   
4401         
4402         fhMassDispPhiNLocMax1Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4403                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4404                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4405         fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4406         fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4407         outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;   
4408         
4409         fhMassDispPhiNLocMax2Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4410                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4411                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4412         fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4413         fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4414         outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;   
4415         
4416         fhMassDispPhiNLocMaxNEbin[i]  = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4417                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4418                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4419         fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4420         fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4421         outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;   
4422         
4423         fhMassDispAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4424                                                  Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4425                                                  200,-1,1,mbins,mmin,mmax); 
4426         fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4427         fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4428         outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;   
4429         
4430         fhMassDispAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4431                                                  Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4432                                                  200,-1,1,mbins,mmin,mmax); 
4433         fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4434         fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4435         outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;   
4436         
4437         fhMassDispAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4438                                                  Form("Invariant mass of N>2 local maxima cells vs A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4439                                                  200,-1,1,mbins,mmin,mmax); 
4440         fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4441         fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4442         outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;   
4443       }
4444     }
4445   }
4446   
4447   if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4448   {
4449     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4450                                                            "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 MC Pi0, after M02 and Asym cut",
4451                                                            nptbins,ptmin,ptmax,200,0,2);
4452     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4453     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4454     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4455     
4456     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4457                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 MC Pi0, after M02 and Asym cut",
4458                                                           nptbins,ptmin,ptmax,200,0,2);
4459     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4460     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetXTitle("#it{E} (GeV)");
4461     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4462     
4463     
4464     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4465                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 MC Pi0, after M02 and Asym cut",
4466                                                           nptbins,ptmin,ptmax,200,0,2);
4467     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4468     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetXTitle("#it{E} (GeV)");
4469     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4470     
4471     fhMCGenFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4472                                                      "#it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 1 MC Pi0, after M02 and Asym cut",
4473                                                      nptbins,ptmin,ptmax,200,0,2);
4474     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4475     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4476     outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4477     
4478     fhMCGenFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4479                                                     " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 2 MC Pi0, after M02 and Asym cut",
4480                                                     nptbins,ptmin,ptmax,200,0,2);
4481     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4482     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetXTitle("#it{E} (GeV)");
4483     outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4484     
4485     
4486     fhMCGenFracAfterCutsNLocMaxNMCPi0   = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4487                                                    " #it{E}_{gen} / #it{E}_{reco}  vs #it{E}_{reco} for N max  > 2 MC Pi0, after M02 and Asym cut",
4488                                                    nptbins,ptmin,ptmax,200,0,2);
4489     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4490     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetXTitle("#it{E} (GeV)");
4491     outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4492     
4493   }
4494   
4495   if(fFillTMResidualHisto && fFillTMHisto)
4496   {
4497     for(Int_t i = 0; i < n; i++)
4498     {  
4499       
4500       fhTrackMatchedDEtaNLocMax1[i]  = new TH2F
4501       (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4502        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4503        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4504       fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4505       fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4506       
4507       fhTrackMatchedDPhiNLocMax1[i]  = new TH2F
4508       (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4509        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4510        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4511       fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4512       fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4513       
4514       outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ; 
4515       outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4516       
4517       fhTrackMatchedDEtaNLocMax2[i]  = new TH2F
4518       (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4519        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4520        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4521       fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4522       fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4523       
4524       fhTrackMatchedDPhiNLocMax2[i]  = new TH2F
4525       (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4526        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4527        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4528       fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4529       fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4530       
4531       outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ; 
4532       outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4533       
4534       fhTrackMatchedDEtaNLocMaxN[i]  = new TH2F
4535       (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4536        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4537        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4538       fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4539       fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4540       
4541       fhTrackMatchedDPhiNLocMaxN[i]  = new TH2F
4542       (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4543        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4544        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4545       fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4546       fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4547       
4548       outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ; 
4549       outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4550       
4551       fhTrackMatchedDEtaNLocMax1Pos[i]  = new TH2F
4552       (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4553        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4554        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4555       fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4556       fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4557       
4558       fhTrackMatchedDPhiNLocMax1Pos[i]  = new TH2F
4559       (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4560        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4561        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4562       fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4563       fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4564       
4565       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4566       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4567       
4568       fhTrackMatchedDEtaNLocMax2Pos[i]  = new TH2F
4569       (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4570        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4571        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4572       fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4573       fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4574       
4575       fhTrackMatchedDPhiNLocMax2Pos[i]  = new TH2F
4576       (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4577        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4578        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4579       fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4580       fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4581       
4582       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4583       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4584       
4585       fhTrackMatchedDEtaNLocMaxNPos[i]  = new TH2F
4586       (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4587        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4588        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4589       fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4590       fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4591       
4592       fhTrackMatchedDPhiNLocMaxNPos[i]  = new TH2F
4593       (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4594        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4595        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4596       fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4597       fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4598       
4599       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4600       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4601       
4602       fhTrackMatchedDEtaNLocMax1Neg[i]  = new TH2F
4603       (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4604        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4605        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4606       fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4607       fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4608       
4609       fhTrackMatchedDPhiNLocMax1Neg[i]  = new TH2F
4610       (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4611        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4612        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4613       fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4614       fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4615       
4616       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4617       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4618       
4619       fhTrackMatchedDEtaNLocMax2Neg[i]  = new TH2F
4620       (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4621        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4622        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4623       fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4624       fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4625       
4626       fhTrackMatchedDPhiNLocMax2Neg[i]  = new TH2F
4627       (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4628        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4629        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4630       fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4631       fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4632       
4633       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4634       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4635       
4636       fhTrackMatchedDEtaNLocMaxNNeg[i]  = new TH2F
4637       (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4638        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4639        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4640       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4641       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4642       
4643       fhTrackMatchedDPhiNLocMaxNNeg[i]  = new TH2F
4644       (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4645        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4646        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4647       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4648       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4649       
4650       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4651       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4652       
4653     }
4654   }
4655   
4656   if(fFillAngleHisto)
4657   {
4658     for(Int_t i = 0; i < n; i++)
4659     {
4660       for(Int_t j = 0; j < nMatched; j++)
4661       {
4662         
4663         fhAnglePairNLocMax1[i][j]  = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4664                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4665                                            nptbins,ptmin,ptmax,200,0,0.2);
4666         fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4667         fhAnglePairNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4668         outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4669         
4670         fhAnglePairNLocMax2[i][j]  = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4671                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4672                                            nptbins,ptmin,ptmax,200,0,0.2);
4673         fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4674         fhAnglePairNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4675         outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4676         
4677         fhAnglePairNLocMaxN[i][j]  = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4678                                            Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4679                                            nptbins,ptmin,ptmax,200,0,0.2);
4680         fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4681         fhAnglePairNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4682         outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4683         
4684         if(asyOn || m02On)
4685         {
4686           fhAnglePairAfterCutsNLocMax1[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4687                                                 Form("Opening angle split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4688                                                 nptbins,ptmin,ptmax,200,0,0.2);
4689           fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4690           fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4691           outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4692           
4693           fhAnglePairAfterCutsNLocMax2[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4694                                                 Form("Opening angle split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4695                                                 nptbins,ptmin,ptmax,200,0,0.2);
4696           fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4697           fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4698           outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4699           
4700           fhAnglePairAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4701                                                 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4702                                                 nptbins,ptmin,ptmax,200,0,0.2);
4703           fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4704           fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4705           outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4706
4707         }
4708         
4709         fhAnglePairPi0NLocMax1[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4710                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4711                                               nptbins,ptmin,ptmax,200,0,0.2);
4712         fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4713         fhAnglePairPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4714         outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4715         
4716         fhAnglePairPi0NLocMax2[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4717                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4718                                               nptbins,ptmin,ptmax,200,0,0.2);
4719         fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4720         fhAnglePairPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4721         outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4722         
4723         fhAnglePairPi0NLocMaxN[i][j]  = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4724                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4725                                               nptbins,ptmin,ptmax,200,0,0.2);
4726         fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4727         fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4728         outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4729         
4730         fhAnglePairMassNLocMax1[i][j]  = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4731                                                Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4732                                                mbins,mmin,mmax,200,0,0.2);
4733         fhAnglePairMassNLocMax1[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4734         fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4735         outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4736         
4737         
4738         fhAnglePairMassNLocMax2[i][j]  = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4739                                                Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4740                                                mbins,mmin,mmax,200,0,0.2);
4741         fhAnglePairMassNLocMax2[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4742         fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4743         outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4744         
4745         fhAnglePairMassNLocMaxN[i][j]  = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4746                                                Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4747                                                mbins,mmin,mmax,200,0,0.2);
4748         fhAnglePairMassNLocMaxN[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4749         fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4750         outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;  
4751
4752         
4753         fhAnglePairM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4754                                                   Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 15 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4755                                                   ssbins,ssmin,ssmax,200,0,0.2);
4756         fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4757         fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4758         outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4759         
4760         
4761         fhAnglePairM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4762                                                   Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4763                                                   ssbins,ssmin,ssmax,200,0,0.2);
4764         fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4765         fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4766         outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4767         
4768         fhAnglePairM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4769                                                   Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4770                                                   ssbins,ssmin,ssmax,200,0,0.2);
4771         fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4772         fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4773         outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4774
4775         fhAnglePairOverM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4776                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4777                                               nptbins,ptmin,ptmax,200,0,0.2);
4778         fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4779         fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4780         outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4781         
4782         fhAnglePairOverM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4783                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4784                                               nptbins,ptmin,ptmax,200,0,0.2);
4785         fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4786         fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4787         outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4788         
4789         fhAnglePairOverM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4790                                               Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4791                                               nptbins,ptmin,ptmax,200,0,0.2);
4792         fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4793         fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4794         outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4795
4796         
4797         fhAnglePairOverM02NLocMax1Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4798                                                      Form("Opening angle split sub-clusters  / M02  of cluster #it{NLM}=1 vs pair Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4799                                                      nptbins,ptmin,ptmax,200,0,0.2);
4800         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4801         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4802         outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4803         
4804         fhAnglePairOverM02NLocMax2Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4805                                                      Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=2 cells vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4806                                                      nptbins,ptmin,ptmax,200,0,0.2);
4807         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4808         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4809         outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4810         
4811         fhAnglePairOverM02NLocMaxNOverlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4812                                                      Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4813                                                      nptbins,ptmin,ptmax,200,0,0.2);
4814         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4815         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("#it{E} (GeV)");
4816         outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4817
4818         
4819       }
4820     }
4821     
4822     if(IsDataMC())
4823     {
4824       fhAnglePairPrimPi0RecoNLocMax1  = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4825                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=1",
4826                                                  nptbins,ptmin,ptmax,300,0,3);
4827       fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4828       fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("#it{E} (GeV)");
4829       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4830
4831       fhAnglePairPrimPi0RecoNLocMax2  = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4832                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=2",
4833                                                  nptbins,ptmin,ptmax,300,0,3);
4834       fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4835       fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("#it{E} (GeV)");
4836       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4837
4838       fhAnglePairPrimPi0RecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4839                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4840                                                  nptbins,ptmin,ptmax,300,0,3);
4841       fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4842       fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("#it{E} (GeV)");
4843       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4844
4845       
4846       fhAnglePairPrimPi0vsRecoNLocMax1  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4847                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, #it{NLM}=1",
4848                                                    200,0,0.2,200,0,0.2);
4849       fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4850       fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4851       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4852
4853       fhAnglePairPrimPi0vsRecoNLocMax2  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4854                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4855                                                    200,0,0.2,200,0,0.2);
4856       fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4857       fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4858       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4859
4860       fhAnglePairPrimPi0vsRecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4861                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4862                                                    200,0,0.2,200,0,0.2);
4863       fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4864       fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4865       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4866       
4867       
4868       fhAnglePairPrimPi0OverM02NLocMax1  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4869                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=1",
4870                                                  nptbins,ptmin,ptmax,200,0,0.2);
4871       fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4872       fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("#it{E} (GeV)");
4873       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4874       
4875       fhAnglePairPrimPi0OverM02NLocMax2  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4876                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=2",
4877                                                  nptbins,ptmin,ptmax,200,0,0.2);
4878       fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4879       fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("#it{E} (GeV)");
4880       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4881       
4882       fhAnglePairPrimPi0OverM02NLocMaxN  = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4883                                                  "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4884                                                  nptbins,ptmin,ptmax,200,0,0.2);
4885       fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4886       fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("#it{E} (GeV)");
4887       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4888
4889     }
4890   }
4891  
4892   // Same as asymmetry ...
4893   if(fFillThetaStarHisto)
4894   {
4895     for(Int_t i = 0; i < n; i++)
4896     {
4897       for(Int_t j = 0; j < nMatched; j++)
4898       {
4899         
4900         fhCosThStarNLocMax1[i][j]  = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4901                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4902                                               nptbins,ptmin,ptmax,200,-1,1);
4903         fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4904         fhCosThStarNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4905         outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4906         
4907         fhCosThStarNLocMax2[i][j]  = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4908                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4909                                               nptbins,ptmin,ptmax,200,-1,1);
4910         fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4911         fhCosThStarNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4912         outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4913         
4914         fhCosThStarNLocMaxN[i][j]  = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4915                                               Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4916                                               nptbins,ptmin,ptmax,200,-1,1);
4917         fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4918         fhCosThStarNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4919         outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4920         
4921         if(asyOn || m02On)
4922         {
4923           fhCosThStarAfterCutsNLocMax1[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4924                                                          Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4925                                                          nptbins,ptmin,ptmax,200,-1,1);
4926           fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4927           fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4928           outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4929           
4930           fhCosThStarAfterCutsNLocMax2[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4931                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4932                                                          nptbins,ptmin,ptmax,200,-1,1);
4933           fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4934           fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4935           outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4936           
4937           fhCosThStarAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4938                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4939                                                          nptbins,ptmin,ptmax,200,-1,1);
4940           fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4941           fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4942           outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4943           
4944         }
4945         
4946         fhCosThStarPi0NLocMax1[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4947                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4948                                                  nptbins,ptmin,ptmax,200,-1,1);
4949         fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4950         fhCosThStarPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4951         outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4952         
4953         fhCosThStarPi0NLocMax2[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4954                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4955                                                  nptbins,ptmin,ptmax,200,-1,1);
4956         fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4957         fhCosThStarPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4958         outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4959         
4960         fhCosThStarPi0NLocMaxN[i][j]  = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4961                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4962                                                  nptbins,ptmin,ptmax,200,-1,1);
4963         fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4964         fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4965         outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4966         
4967       }
4968     }
4969   }
4970
4971   
4972   for(Int_t j = 0; j < nMatched; j++)
4973   {
4974     fhSplitEFractionvsAsyNLocMax1[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4975                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  = 1, E>12, %s",sMatched[j].Data()),
4976                                                     100,-1,1,120,0,1.2); 
4977     fhSplitEFractionvsAsyNLocMax1[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4978     fhSplitEFractionvsAsyNLocMax1[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4979     outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ; 
4980     
4981     fhSplitEFractionvsAsyNLocMax2[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4982                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  = 2,E>12, %s",sMatched[j].Data()),
4983                                                     100,-1,1,120,0,1.2); 
4984     fhSplitEFractionvsAsyNLocMax2[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4985     fhSplitEFractionvsAsyNLocMax2[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4986     outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ; 
4987     
4988     fhSplitEFractionvsAsyNLocMaxN[j]    = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4989                                                    Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  > 2, E>12, %s",sMatched[j].Data()),
4990                                                    100,-1,1,120,0,1.2); 
4991     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4992     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4993     outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ; 
4994   }
4995   
4996   
4997   fhClusterEtaPhiNLocMax1  = new TH2F
4998   ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4999   fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5000   fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
5001   outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
5002   
5003   fhClusterEtaPhiNLocMax2  = new TH2F
5004   ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5005   fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5006   fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
5007   outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
5008   
5009   fhClusterEtaPhiNLocMaxN  = new TH2F
5010   ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5011   fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5012   fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
5013   outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
5014   
5015   fhPi0EtaPhiNLocMax1  = new TH2F
5016   ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5017   fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
5018   fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
5019   outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
5020   
5021   fhPi0EtaPhiNLocMax2  = new TH2F
5022   ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5023   fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
5024   fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
5025   outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
5026   
5027   fhPi0EtaPhiNLocMaxN  = new TH2F
5028   ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5029   fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5030   fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
5031   outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
5032   
5033   if(fFillIdEtaHisto)
5034   {
5035     fhEtaEtaPhiNLocMax1  = new TH2F
5036     ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5037     fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5038     fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
5039     outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
5040     
5041     fhEtaEtaPhiNLocMax2  = new TH2F
5042     ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5043     fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5044     fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
5045     outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
5046     
5047     fhEtaEtaPhiNLocMaxN  = new TH2F
5048     ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5049     fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5050     fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
5051     outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
5052   }
5053   
5054   
5055   if(fFillSSWeightHisto)
5056   {
5057     for(Int_t nlm = 0; nlm < 3; nlm++)
5058     {
5059       fhPi0CellE[nlm]  = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
5060                                   Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
5061                                   nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
5062       fhPi0CellE[nlm]->SetYTitle("#it{E}_{cell}");
5063       fhPi0CellE[nlm]->SetXTitle("#it{E}_{cluster}");
5064       outputContainer->Add(fhPi0CellE[nlm]) ;
5065       
5066       fhPi0CellEFrac[nlm]  = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
5067                                       Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
5068                                       nptbins,ptmin,ptmax, 100,0,1);
5069       fhPi0CellEFrac[nlm]->SetYTitle("#it{E}_{cell} / #it{E}_{cluster}");
5070       fhPi0CellEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5071       outputContainer->Add(fhPi0CellEFrac[nlm]) ;
5072       
5073       fhPi0CellLogEFrac[nlm]  = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
5074                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
5075                                          nptbins,ptmin,ptmax, 100,-10,0);
5076       fhPi0CellLogEFrac[nlm]->SetYTitle("Log(#it{E}_{cell} / #it{E}_{cluster})");
5077       fhPi0CellLogEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5078       outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
5079       
5080       
5081       fhPi0CellEMaxEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
5082                                               Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max.  E",snlm[nlm].Data()),
5083                                               nptbins,ptmin,ptmax, 100,0,1);
5084       fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{Loc Max 1}");
5085       fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5086       outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
5087       
5088       fhPi0CellEMaxClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
5089                                                 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
5090                                                 nptbins,ptmin,ptmax, 100,0,1);
5091       fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cluster}");
5092       fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5093       outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
5094       
5095       fhPi0CellEMax2ClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
5096                                                  Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
5097                                                  nptbins,ptmin,ptmax, 100,0,1);
5098       fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cluster}");
5099       fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5100       outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
5101       
5102       fhPi0CellEMaxFrac[nlm]  = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
5103                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
5104                                          nptbins,ptmin,ptmax, 100,0,1);
5105       fhPi0CellEMaxFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cell i}");
5106       fhPi0CellEMaxFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5107       outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
5108       
5109       fhPi0CellEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
5110                                           Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
5111                                           nptbins,ptmin,ptmax, 200,0,2);
5112       fhPi0CellEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cell i}");
5113       fhPi0CellEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5114       outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
5115       
5116       
5117       for(Int_t i = 0; i < fSSWeightN; i++)
5118       {
5119         fhM02WeightPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
5120                                               Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
5121                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5122         fhM02WeightPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5123         fhM02WeightPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5124         outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
5125       }
5126       
5127       for(Int_t i = 0; i < fSSECellCutN; i++)
5128       {
5129         fhM02ECellCutPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
5130                                                 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
5131                                                 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5132         fhM02ECellCutPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5133         fhM02ECellCutPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5134         outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
5135       }
5136       
5137     }
5138   }
5139   
5140   Int_t tdbins   = GetHistogramRanges()->GetHistoDiffTimeBins() ;    Float_t tdmax  = GetHistogramRanges()->GetHistoDiffTimeMax();     Float_t tdmin  = GetHistogramRanges()->GetHistoDiffTimeMin();
5141   
5142   fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5143   fhPi0EPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5144   fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5145   outputContainer->Add(fhPi0EPairDiffTimeNLM1);
5146   
5147   fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5148   fhPi0EPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5149   fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5150   outputContainer->Add(fhPi0EPairDiffTimeNLM2);
5151   
5152   fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5153   fhPi0EPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5154   fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5155   outputContainer->Add(fhPi0EPairDiffTimeNLMN);
5156   
5157   if(fFillIdEtaHisto)
5158   {
5159     fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5160     fhEtaEPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5161     fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5162     outputContainer->Add(fhEtaEPairDiffTimeNLM1);
5163     
5164     fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5165     fhEtaEPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5166     fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5167     outputContainer->Add(fhEtaEPairDiffTimeNLM2);
5168     
5169     fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5170     fhEtaEPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5171     fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5172     outputContainer->Add(fhEtaEPairDiffTimeNLMN);
5173   }
5174   
5175   if(fFillNCellHisto && IsDataMC())
5176   {
5177     
5178     fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5179     fhNCellMassEHighNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5180     fhNCellMassEHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5181     outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5182     
5183     fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5184     fhNCellMassELowNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5185     fhNCellMassELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5186     outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5187     
5188     fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5189     fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5190     fhNCellM02EHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5191     outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5192     
5193     fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5194     fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5195     fhNCellM02ELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5196     outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5197     
5198     fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5199     fhNCellMassEHighNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5200     fhNCellMassEHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5201     outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5202     
5203     fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5204     fhNCellMassELowNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5205     fhNCellMassELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5206     outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5207     
5208     fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5209     fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5210     fhNCellM02EHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5211     outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5212     
5213     fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5214     fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5215     fhNCellM02ELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5216     outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5217     
5218     fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5219     fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5220     fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5221     outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5222     
5223     fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5224     fhNCellMassELowNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5225     fhNCellMassELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5226     outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5227     
5228     fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5229     fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5230     fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5231     outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5232     
5233     fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5234     fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5235     fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5236     outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5237     
5238   }
5239   
5240   if(IsDataMC() && fFillMCOverlapHisto)
5241   {
5242     for(Int_t i = 1; i < n; i++)
5243     {
5244       for(Int_t j = 0; j < 3; j++)
5245       {
5246         fhMCENOverlaps[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5247                                             Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5248                                             nptbins,ptmin,ptmax,10,0,10);
5249         fhMCENOverlaps[j][i]   ->SetYTitle("# overlaps");
5250         fhMCENOverlaps[j][i]   ->SetXTitle("#it{E} (GeV)");
5251         outputContainer->Add(fhMCENOverlaps[j][i]) ;
5252         
5253         fhMCEM02Overlap0[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5254                                               Form("Overlap 0, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5255                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5256         fhMCEM02Overlap0[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5257         fhMCEM02Overlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5258         outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5259         
5260         fhMCEM02Overlap1[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5261                                               Form("Overlap 1, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5262                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5263         fhMCEM02Overlap1[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5264         fhMCEM02Overlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5265         outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5266         
5267         fhMCEM02OverlapN[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5268                                               Form("Overlap N, #lambda_{0}^{2} vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5269                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5270         fhMCEM02OverlapN[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5271         fhMCEM02OverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5272         outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5273         
5274         fhMCEMassOverlap0[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5275                                                Form("Overlap 0, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5276                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5277         fhMCEMassOverlap0[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5278         fhMCEMassOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5279         outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5280         
5281         fhMCEMassOverlap1[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5282                                                Form("Overalap 1, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5283                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5284         fhMCEMassOverlap1[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5285         fhMCEMassOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5286         outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5287         
5288         fhMCEMassOverlapN[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5289                                                Form("Overlap N, Mass vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5290                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5291         fhMCEMassOverlapN[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5292         fhMCEMassOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5293         outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5294         
5295         fhMCEAsymOverlap0[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5296                                                Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5297                                                nptbins,ptmin,ptmax,100,0,1);
5298         fhMCEAsymOverlap0[j][i]   ->SetYTitle("|A|");
5299         fhMCEAsymOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5300         outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5301         
5302         fhMCEAsymOverlap1[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5303                                                Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5304                                                nptbins,ptmin,ptmax,100,0,1);
5305         fhMCEAsymOverlap1[j][i]   ->SetYTitle("|A|");
5306         fhMCEAsymOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5307         outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5308         
5309         fhMCEAsymOverlapN[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5310                                                Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5311                                                nptbins,ptmin,ptmax,100,0,1);
5312         fhMCEAsymOverlapN[j][i]   ->SetYTitle("|A|");
5313         fhMCEAsymOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5314         outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5315
5316         
5317         if(fFillNCellHisto)
5318         {
5319           fhMCENCellOverlap0[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5320                                                   Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5321                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5322           fhMCENCellOverlap0[j][i]   ->SetYTitle("#it{N} cells");
5323           fhMCENCellOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5324           outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5325           
5326           fhMCENCellOverlap1[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5327                                                   Form("Overalap 1, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5328                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5329           fhMCENCellOverlap1[j][i]   ->SetYTitle("#it{N} cells");
5330           fhMCENCellOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5331           outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5332           
5333           fhMCENCellOverlapN[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5334                                                   Form("Overlap N, n cells vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5335                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5336           fhMCENCellOverlapN[j][i]   ->SetYTitle("#it{N} cells");
5337           fhMCENCellOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5338           outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5339         }
5340         
5341         fhMCEEpriOverlap0[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5342                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5343                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5344         fhMCEEpriOverlap0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5345         fhMCEEpriOverlap0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5346         outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5347         
5348         fhMCEEpriOverlap1[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5349                                                Form("Overalap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5350                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5351         fhMCEEpriOverlap1[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5352         fhMCEEpriOverlap1[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5353         outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5354         
5355         fhMCEEpriOverlapN[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5356                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5357                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5358         fhMCEEpriOverlapN[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5359         fhMCEEpriOverlapN[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5360         outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5361         
5362         
5363         fhMCEEpriOverlap0IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5364                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5365                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5366         fhMCEEpriOverlap0IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5367         fhMCEEpriOverlap0IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5368         outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5369         
5370         fhMCEEpriOverlap1IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5371                                                Form("Overlap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5372                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5373         fhMCEEpriOverlap1IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5374         fhMCEEpriOverlap1IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5375         outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5376         
5377         fhMCEEpriOverlapNIdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5378                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5379                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5380         fhMCEEpriOverlapNIdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5381         fhMCEEpriOverlapNIdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5382         outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5383
5384         
5385         fhMCESplitEFracOverlap0[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5386                                                      Form("Overlap 0, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5387                                                      nptbins,ptmin,ptmax,120,0,1.2);
5388         fhMCESplitEFracOverlap0[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5389         fhMCESplitEFracOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5390         outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5391         
5392         fhMCESplitEFracOverlap1[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5393                                                      Form("Overalap 1, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5394                                                      nptbins,ptmin,ptmax,120,0,1.2);
5395         fhMCESplitEFracOverlap1[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5396         fhMCESplitEFracOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5397         outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5398         
5399         fhMCESplitEFracOverlapN[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5400                                                      Form("Overlap N, SplitEFrac vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5401                                                      nptbins,ptmin,ptmax,120,0,1.2);
5402         fhMCESplitEFracOverlapN[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5403         fhMCESplitEFracOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5404         outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5405         
5406         if(i < 5)
5407         {
5408           fhMCPi0MassM02Overlap0[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5409                                                      Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5410                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5411           fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5412           fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5413           outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5414           
5415           fhMCPi0MassM02Overlap1[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5416                                                      Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5417                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5418           fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5419           fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5420           outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5421           
5422           fhMCPi0MassM02OverlapN[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5423                                                      Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5424                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5425           fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5426           fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5427           outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5428         }
5429         
5430         if(fFillTMHisto)
5431         {
5432           fhMCENOverlapsMatch[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5433                                                    Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5434                                                    nptbins,ptmin,ptmax,10,0,10);
5435           fhMCENOverlapsMatch[j][i]   ->SetYTitle("# overlaps");
5436           fhMCENOverlapsMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5437           outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5438           
5439           fhMCEM02Overlap0Match[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5440                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5441                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5442           fhMCEM02Overlap0Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5443           fhMCEM02Overlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5444           outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5445           
5446           fhMCEM02Overlap1Match[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5447                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5448                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5449           fhMCEM02Overlap1Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5450           fhMCEM02Overlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5451           outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5452           
5453           fhMCEM02OverlapNMatch[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5454                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5455                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5456           fhMCEM02OverlapNMatch[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5457           fhMCEM02OverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5458           outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5459           
5460           fhMCEMassOverlap0Match[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5461                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5462                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5463           fhMCEMassOverlap0Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5464           fhMCEMassOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5465           outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5466           
5467           fhMCEMassOverlap1Match[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5468                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5469                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5470           fhMCEMassOverlap1Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5471           fhMCEMassOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5472           outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5473           
5474           fhMCEMassOverlapNMatch[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5475                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5476                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5477           fhMCEMassOverlapNMatch[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5478           fhMCEMassOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5479           outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5480           
5481           
5482           fhMCEAsymOverlap0Match[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5483                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5484                                                       nptbins,ptmin,ptmax,100,0,1);
5485           fhMCEAsymOverlap0Match[j][i]   ->SetYTitle("|#it{A}|");
5486           fhMCEAsymOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5487           outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5488           
5489           fhMCEAsymOverlap1Match[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5490                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5491                                                       nptbins,ptmin,ptmax,100,0,1);
5492           fhMCEAsymOverlap1Match[j][i]   ->SetYTitle("|#it{A}|");
5493           fhMCEAsymOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5494           outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5495           
5496           fhMCEAsymOverlapNMatch[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5497                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5498                                                       nptbins,ptmin,ptmax,100,0,1);
5499           fhMCEAsymOverlapNMatch[j][i]   ->SetYTitle("|#it{A}|");
5500           fhMCEAsymOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5501           outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5502
5503           
5504           fhMCENCellOverlap0Match[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5505                                                       Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5506                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5507           fhMCENCellOverlap0Match[j][i]   ->SetYTitle("#it{N} cells");
5508           fhMCENCellOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5509           outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5510           
5511           fhMCENCellOverlap1Match[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5512                                                       Form("Overalap 1, n cell vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5513                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5514           fhMCENCellOverlap1Match[j][i]   ->SetYTitle("#it{N} cells");
5515           fhMCENCellOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5516           outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5517           
5518           fhMCENCellOverlapNMatch[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5519                                                       Form("Overlap N, n cell vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5520                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5521           fhMCENCellOverlapNMatch[j][i]   ->SetYTitle("#it{N} cells");
5522           fhMCENCellOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5523           outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5524
5525           fhMCEEpriOverlap0Match[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5526                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5527                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5528           fhMCEEpriOverlap0Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5529           fhMCEEpriOverlap0Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5530           outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5531           
5532           fhMCEEpriOverlap1Match[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5533                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5534                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5535           fhMCEEpriOverlap1Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5536           fhMCEEpriOverlap1Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5537           outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5538           
5539           fhMCEEpriOverlapNMatch[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5540                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5541                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5542           fhMCEEpriOverlapNMatch[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5543           fhMCEEpriOverlapNMatch[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5544           outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5545           
5546           
5547           fhMCESplitEFracOverlap0Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5548                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5549                                                             nptbins,ptmin,ptmax,120,0,1.2);
5550           fhMCESplitEFracOverlap0Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5551           fhMCESplitEFracOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5552           outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5553           
5554           fhMCESplitEFracOverlap1Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5555                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5556                                                             nptbins,ptmin,ptmax,120,0,1.2);
5557           fhMCESplitEFracOverlap1Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5558           fhMCESplitEFracOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5559           outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5560           
5561           fhMCESplitEFracOverlapNMatch[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5562                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5563                                                             nptbins,ptmin,ptmax,120,0,1.2);
5564           fhMCESplitEFracOverlapNMatch[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5565           fhMCESplitEFracOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5566           outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5567           
5568           
5569           if(i < 5)
5570           {
5571             fhMCPi0MassM02Overlap0Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5572                                                             Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5573                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5574             fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5575             fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5576             outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5577             
5578             fhMCPi0MassM02Overlap1Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5579                                                             Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5580                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5581             fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5582             fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5583             outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5584             
5585             fhMCPi0MassM02OverlapNMatch[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5586                                                             Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5587                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5588             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5589             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5590             outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5591             
5592           }
5593           
5594         }
5595       }
5596     }
5597     
5598     fhMCPi0HighNLMPair    = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5599                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5600     fhMCPi0HighNLMPair   ->SetYTitle("#it{N} maxima");
5601     fhMCPi0HighNLMPair   ->SetXTitle("#it{E} (GeV)");
5602     outputContainer->Add(fhMCPi0HighNLMPair) ;
5603     
5604     fhMCPi0LowNLMPair     = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5605                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5606     fhMCPi0LowNLMPair   ->SetYTitle("#it{N} maxima");
5607     fhMCPi0LowNLMPair   ->SetXTitle("#it{E} (GeV)");
5608     outputContainer->Add(fhMCPi0LowNLMPair) ;
5609     
5610     fhMCPi0AnyNLMPair     = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5611                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5612     fhMCPi0AnyNLMPair   ->SetYTitle("#it{N} maxima");
5613     fhMCPi0AnyNLMPair   ->SetXTitle("#it{E} (GeV)");
5614     outputContainer->Add(fhMCPi0AnyNLMPair) ;
5615     
5616     fhMCPi0NoneNLMPair     = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5617                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5618     fhMCPi0NoneNLMPair   ->SetYTitle("#it{N} maxima");
5619     fhMCPi0NoneNLMPair   ->SetXTitle("#it{E} (GeV)");
5620     outputContainer->Add(fhMCPi0NoneNLMPair) ;
5621     
5622     
5623     fhMCPi0HighNLMPairNoMCMatch    = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5624                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5625     fhMCPi0HighNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5626     fhMCPi0HighNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5627     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5628     
5629     fhMCPi0LowNLMPairNoMCMatch     = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5630                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5631     fhMCPi0LowNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5632     fhMCPi0LowNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5633     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5634     
5635     fhMCPi0AnyNLMPairNoMCMatch     = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5636                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5637     fhMCPi0AnyNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5638     fhMCPi0AnyNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5639     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5640     
5641     fhMCPi0NoneNLMPairNoMCMatch     = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5642                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5643     fhMCPi0NoneNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5644     fhMCPi0NoneNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5645     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5646     
5647     
5648     fhMCPi0HighNLMPairOverlap    = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5649                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5650     fhMCPi0HighNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5651     fhMCPi0HighNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5652     outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5653     
5654     fhMCPi0LowNLMPairOverlap     = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5655                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5656     fhMCPi0LowNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5657     fhMCPi0LowNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5658     outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5659     
5660     fhMCPi0AnyNLMPairOverlap     = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5661                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5662     fhMCPi0AnyNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5663     fhMCPi0AnyNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5664     outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5665     
5666     fhMCPi0NoneNLMPairOverlap     = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5667                                              nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5668     fhMCPi0NoneNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5669     fhMCPi0NoneNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5670     outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5671     
5672     fhMCPi0HighNLMPairNoMCMatchOverlap    = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5673                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5674     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5675     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5676     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5677     
5678     fhMCPi0LowNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5679                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5680     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5681     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5682     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5683     
5684     fhMCPi0AnyNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5685                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5686     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5687     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5688     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5689     
5690     fhMCPi0NoneNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5691                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5692     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5693     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5694     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5695   
5696     
5697     fhMCPi0DecayPhotonHitHighLM    = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5698                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5699     fhMCPi0DecayPhotonHitHighLM    ->SetYTitle("#it{N} maxima");
5700     fhMCPi0DecayPhotonHitHighLM    ->SetXTitle("#it{E} (GeV)");
5701     outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5702     
5703     fhMCPi0DecayPhotonAdjHighLM    = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5704                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5705     fhMCPi0DecayPhotonAdjHighLM    ->SetYTitle("#it{N} maxima");
5706     fhMCPi0DecayPhotonAdjHighLM    ->SetXTitle("#it{E} (GeV)");
5707     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5708     
5709     fhMCPi0DecayPhotonHitOtherLM    = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5710                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5711     fhMCPi0DecayPhotonHitOtherLM    ->SetYTitle("#it{N} maxima");
5712     fhMCPi0DecayPhotonHitOtherLM    ->SetXTitle("#it{E} (GeV)");
5713     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5714     
5715     fhMCPi0DecayPhotonAdjOtherLM    = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5716                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5717     fhMCPi0DecayPhotonAdjOtherLM    ->SetYTitle("#it{N} maxima");
5718     fhMCPi0DecayPhotonAdjOtherLM    ->SetXTitle("#it{E} (GeV)");
5719     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5720     
5721     fhMCPi0DecayPhotonAdjacent   = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5722                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5723     fhMCPi0DecayPhotonAdjacent    ->SetYTitle("#it{N} maxima");
5724     fhMCPi0DecayPhotonAdjacent    ->SetXTitle("#it{E} (GeV)");
5725     outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5726     
5727     fhMCPi0DecayPhotonHitNoLM    = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5728                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5729     fhMCPi0DecayPhotonHitNoLM    ->SetYTitle("#it{N} maxima");
5730     fhMCPi0DecayPhotonHitNoLM    ->SetXTitle("#it{E} (GeV)");
5731     outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5732     
5733     
5734     fhMCPi0DecayPhotonHitHighLMOverlap    = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5735                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5736     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetYTitle("#it{N} maxima");
5737     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5738     outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5739     
5740     fhMCPi0DecayPhotonAdjHighLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5741                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5742     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetYTitle("#it{N} maxima");
5743     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5744     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5745     
5746     fhMCPi0DecayPhotonHitOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5747                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5748     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5749     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5750     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5751     
5752     fhMCPi0DecayPhotonAdjOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5753                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5754     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5755     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5756     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5757     
5758     fhMCPi0DecayPhotonAdjacentOverlap   = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5759                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5760     fhMCPi0DecayPhotonAdjacentOverlap    ->SetYTitle("#it{N} maxima");
5761     fhMCPi0DecayPhotonAdjacentOverlap    ->SetXTitle("#it{E} (GeV)");
5762     outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5763     
5764     fhMCPi0DecayPhotonHitNoLMOverlap    = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5765                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5766     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetYTitle("#it{N} maxima");
5767     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetXTitle("#it{E} (GeV)");
5768     outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5769     
5770     
5771     for(Int_t nlm = 0; nlm < 3; nlm++)
5772     {
5773       fhMCPi0DecayPhotonHitHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5774                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5775                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5776       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5777       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5778       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5779       
5780       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5781                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5782                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5783       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5784       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5785       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5786       
5787       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5788                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5789                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5790       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5791       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5792       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5793       
5794       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5795                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5796                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5797       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5798       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5799       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5800       
5801       fhMCPi0DecayPhotonAdjacentMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5802                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5803                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5804       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5805       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5806       outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5807       
5808       fhMCPi0DecayPhotonHitNoLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5809                                                      Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5810                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
5811       fhMCPi0DecayPhotonHitNoLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5812       fhMCPi0DecayPhotonHitNoLMMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5813       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5814       
5815       
5816       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5817                                                                Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5818                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5819       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5820       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5821       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5822       
5823       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5824                                                                Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5825                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5826       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5827       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5828       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5829       
5830       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5831                                                                 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5832                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5833       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5834       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5835       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5836       
5837       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5838                                                                 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5839                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5840       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5841       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5842       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5843       
5844       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5845                                                              Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5846                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5847       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5848       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5849       outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5850       
5851       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5852                                                              Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
5853                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5854       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5855       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5856       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5857       
5858       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5859                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E pi0 for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5860                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5861       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5862       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5863       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5864       
5865       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5866                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5867                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5868       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5869       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetXTitle("E pi0 (GeV)");
5870       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5871       
5872       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5873                                                             Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5874                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5875       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5876       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5877       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5878       
5879       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5880                                                             Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5881                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5882       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5883       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5884       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5885       
5886       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5887                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5888                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5889       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5890       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5891       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5892       
5893       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5894                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5895                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5896       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5897       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5898       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5899       
5900       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5901                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5902                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5903       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5904       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5905       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5906       
5907       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5908                                                                     Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5909                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5910       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5911       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5912       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5913       
5914       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5915                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5916                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5917       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5918       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5919       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5920       
5921       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5922                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5923                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5924       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5925       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5926       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5927       
5928       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5929                                                             Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5930                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5931       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5932       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5933       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5934       
5935       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5936                                                             Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5937                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5938       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5939       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5940       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5941       
5942       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5943                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5944                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5945       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5946       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5947       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5948       
5949       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5950                                                                    Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5951                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5952       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5953       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5954       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5955       
5956       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5957                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5958                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5959       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5960       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5961       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5962       
5963       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5964                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5965                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5966       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5967       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5968       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5969       
5970       
5971       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5972                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5973                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5974       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5975       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5976       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5977       
5978       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5979                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5980                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5981       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5982       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E} (GeV)");
5983       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5984       
5985       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5986                                                                   Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5987                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5988       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5989       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5990       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5991       
5992       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5993                                                                   Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5994                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5995       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5996       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5997       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5998       
5999       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6000                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6001                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6002       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6003       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6004       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
6005       
6006       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6007                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6008                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6009       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6010       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6011       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
6012       
6013       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6014                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6015                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6016       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6017       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6018       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6019       
6020       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6021                                                                           Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6022                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6023       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6024       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6025       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6026       
6027       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6028                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
6029                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6030       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6031       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6032       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
6033       
6034       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6035                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
6036                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6037       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6038       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6039       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
6040       
6041       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6042                                                                   Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
6043                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6044       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6045       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6046       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
6047       
6048       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6049                                                                   Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
6050                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6051       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6052       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6053       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
6054       
6055       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6056                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6057                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6058       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6059       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6060       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
6061       
6062       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6063                                                                          Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6064                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6065       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6066       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6067       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
6068       
6069       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6070                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6071                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6072       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6073       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6074       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6075       
6076       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6077                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6078                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6079       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6080       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6081       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6082       
6083     }
6084     
6085     fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
6086                                 nptbins,ptmin,ptmax,5,0,5);
6087     //fhMCEOverlapType   ->SetYTitle("Overlap Type");
6088     fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
6089     fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6090     fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6091     fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6092     fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
6093     fhMCEOverlapType->SetXTitle("Cluster #it{E} (GeV)");
6094     outputContainer->Add(fhMCEOverlapType) ;
6095     
6096     fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
6097                                      nptbins,ptmin,ptmax,5,0,5);
6098     //fhMCEOverlapTypeMatch   ->SetYTitle("Overlap Type");
6099     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
6100     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6101     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6102     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6103     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
6104     fhMCEOverlapTypeMatch->SetXTitle("Cluster #it{E} (GeV)");
6105     outputContainer->Add(fhMCEOverlapTypeMatch) ;
6106     
6107   }// MC analysis, check overlaps
6108   
6109   
6110   if(IsDataMC())
6111   {
6112     for(Int_t inlm = 0; inlm < 3; inlm++)
6113     {
6114       fhAsyMCGenRecoDiffMCPi0[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
6115                                                 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0",inlm),
6116                                                 nptbins,ptmin,ptmax,200,-1,1);
6117       fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6118       fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("#it{E} (GeV)");
6119       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
6120       
6121       fhAsyMCGenRecoDiffMCPi0Conv[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
6122                                                 Form("Reconstructed - Generated asymmetry  with #it{NLM}=%d vs E, MC Pi0Conv",inlm),
6123                                                 nptbins,ptmin,ptmax,200,-1,1);
6124       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6125       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("#it{E} (GeV)");
6126       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
6127     }
6128   }
6129   
6130   if(fFillArmenterosHisto)
6131   {
6132     Int_t narmbins = 400;
6133     Float_t armmin = 0;
6134     Float_t armmax = 0.4;
6135     
6136     for(Int_t i = 0; i < 7; i++) // MC bin
6137     {
6138       for(Int_t j = 0; j < 4; j++) // E bin
6139       {
6140         fhArmNLocMax1[i][j]  = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
6141                                          Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6142                                          200, -1, 1, narmbins,armmin,armmax);
6143         fhArmNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6144         fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6145         outputContainer->Add(fhArmNLocMax1[i][j]) ;
6146         
6147         fhArmNLocMax2[i][j]  = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
6148                                          Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6149                                          200, -1, 1, narmbins,armmin,armmax);
6150         fhArmNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6151         fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6152         outputContainer->Add(fhArmNLocMax2[i][j]) ;
6153         
6154         fhArmNLocMaxN[i][j]  = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
6155                                          Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6156                                          200, -1, 1, narmbins,armmin,armmax);
6157         fhArmNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6158         fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6159         outputContainer->Add(fhArmNLocMaxN[i][j]) ;
6160         
6161         if(asyOn || m02On)
6162         {
6163           fhArmAfterCutsNLocMax1[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
6164                                           Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6165                                           200, -1, 1, narmbins,armmin,armmax);
6166           fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6167           fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6168           outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
6169           
6170           fhArmAfterCutsNLocMax2[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
6171                                           Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6172                                           200, -1, 1, narmbins,armmin,armmax);
6173           fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6174           fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6175           outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6176           
6177           fhArmAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6178                                           Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6179                                           200, -1, 1, narmbins,armmin,armmax);
6180           fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6181           fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6182           outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6183         }
6184
6185         fhArmPi0NLocMax1[i][j]  = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6186                                                  Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6187                                                  200, -1, 1, narmbins,armmin,armmax);
6188         fhArmPi0NLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6189         fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6190         outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6191         
6192         fhArmPi0NLocMax2[i][j]  = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6193                                                  Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6194                                                  200, -1, 1, narmbins,armmin,armmax);
6195         fhArmPi0NLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6196         fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6197         outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6198         
6199         fhArmPi0NLocMaxN[i][j]  = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6200                                                  Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6201                                                  200, -1, 1, narmbins,armmin,armmax);
6202         fhArmPi0NLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6203         fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6204         outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6205  
6206       }
6207     }
6208   }
6209   
6210   return outputContainer ;
6211   
6212 }
6213
6214 //_____________________________________________________________________________
6215 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6216                                                   Int_t & mcindex, Int_t & tag)
6217 {
6218   
6219   // Assign mc index depending on MC bit set, to be used in histograms arrays
6220     
6221   tag   = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(),GetCalorimeter());
6222   
6223   if      ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6224            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6225   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)  )      mcindex = kmcPi0Conv;
6226   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)  )      mcindex = kmcEta;
6227   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6228            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6229   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6230             GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6231   else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) mcindex = kmcHadron;
6232  
6233   //printf("MC index %d\n",mcindex);
6234   
6235 }
6236
6237 //____________________________________________________________________________________________
6238 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6239                                                         Int_t mctag, Bool_t matched,
6240                                                         Float_t & eprim, Float_t & asymGen,
6241                                                         Float_t & angleGen, Int_t & noverlaps )
6242 {
6243   // Check origin of the candidates, get primary kinematics if overlapped meson decay
6244   
6245   Bool_t ok      = kFALSE;
6246   Int_t  mcLabel = cluster->GetLabel();
6247   
6248   fPrimaryMom = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6249   eprim = fPrimaryMom.E();
6250   
6251   Int_t mesonLabel = -1;
6252   
6253   if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6254   {
6255     if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6256     {
6257       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6258       asymGen = TMath::Abs(asymGen);
6259       fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6260       if(fGrandMotherMom.E() > 0 && ok) eprim =  fGrandMotherMom.E();
6261     }
6262     else
6263     {
6264       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6265       asymGen = TMath::Abs(asymGen);
6266       fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6267       if(fGrandMotherMom.E() > 0 && ok) eprim =  fGrandMotherMom.E();
6268     }
6269   }
6270   
6271   if(!fFillMCOverlapHisto) return;
6272     
6273   const UInt_t nlabels = cluster->GetNLabels();
6274   Int_t overpdg[nlabels];
6275   noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6276
6277   for(Int_t iover = 0; iover < noverlaps; iover++)
6278   {
6279     Float_t histobin = -1;
6280     Int_t   mpdg     = overpdg[iover];
6281     
6282     if     (mpdg==22)      histobin = 0.5;
6283     else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6284     else if(mpdg==-999999) histobin = 4.5;
6285     else
6286     {
6287       Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6288       if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6289       else                        histobin = 3.5;
6290       //printf("charge %f\n",charge);
6291     }
6292     
6293     //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6294     if(histobin > 0)
6295     {
6296       if(matched)fhMCEOverlapType     ->Fill(cluster->E(),histobin);
6297       else       fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6298     }
6299   }
6300 }
6301
6302 //___________________________________________
6303 void AliAnaInsideClusterInvariantMass::Init()
6304 {
6305   //Init
6306   //Do some checks
6307   
6308   if(GetCalorimeter() == kPHOS && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6309   {
6310     AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
6311   }
6312   else  if(GetCalorimeter() == kEMCAL && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6313   {
6314     AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
6315   }
6316   
6317   if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6318   {
6319     AliFatal("!!STOP: You want to use pure MC data!!\n");
6320   }
6321   
6322 }
6323
6324 //_____________________________________________________
6325 void AliAnaInsideClusterInvariantMass::InitParameters()
6326 {
6327   //Initialize the parameters of the analysis.  
6328   AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6329   
6330   fMinNCells   = 4 ;
6331   fMinBadDist  = 2 ;
6332   
6333   fHistoECut   = 8 ;
6334   
6335   fSSWeightN    = 10;
6336   fSSWeight [0] = 4.00;  fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6337   fSSWeight [5] = 4.40;  fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6338   fSSWeight[10] = 4.70;  fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6339   fSSWeight[15] = 5.20;  fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6340   
6341   fSSECellCutN    = 10;
6342   fSSECellCut [0] = 0.05;  fSSECellCut [1] = 0.06;  fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6343   fSSECellCut [5] = 0.10;  fSSECellCut [6] = 0.11;  fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6344   fSSECellCut[10] = 0.15;  fSSECellCut[11] = 0.16;  fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6345   fSSECellCut[15] = 0.20;  fSSECellCut[16] = 0.21;  fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6346
6347   fNLMSettingN = 5;
6348   fNLMMinE   [0] = 0.10; fNLMMinE   [1] = 0.20; fNLMMinE   [2] = 0.35; fNLMMinE   [3] = 0.50; fNLMMinE   [4] = 1.00;
6349   fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6350   
6351   fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6352   fWSimu[1] = 0; // Default, do not correct, change to 0.07
6353
6354 }
6355
6356
6357 //__________________________________________________________________
6358 void  AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() 
6359 {
6360   //Search for pi0 in GetCalorimeter() with shower shape analysis 
6361   
6362   TObjArray * pl       = 0x0; 
6363   AliVCaloCells* cells = 0x0;
6364
6365   //Select the Calorimeter of the photon
6366   if(GetCalorimeter() == kPHOS)
6367   {
6368     pl    = GetPHOSClusters();
6369     cells = GetPHOSCells();
6370   }
6371   else if (GetCalorimeter() == kEMCAL)
6372   {
6373     pl    = GetEMCALClusters();
6374     cells = GetEMCALCells();
6375   }
6376   
6377   if(!pl || !cells) 
6378   {
6379     Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",GetCalorimeterString().Data());
6380     return;
6381   }  
6382   
6383         if(GetCalorimeter() == kPHOS) return; // Not implemented for PHOS yet
6384
6385   for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6386   {
6387     AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));  
6388
6389     //-------------------------------------------
6390     // Get cluster parameters, do some rejection
6391     //-------------------------------------------
6392     
6393     Float_t en = cluster->E();
6394     Float_t l0 = cluster->GetM02();
6395     Int_t   nc = cluster->GetNCells();
6396     Float_t bd = cluster->GetDistanceToBadChannel() ; 
6397     
6398     //If too small or big E or low number of cells, or close to a bad channel skip it
6399     
6400     if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6401     
6402     //printf("en %2.3f  GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6403     
6404     // Track-cluster matching
6405     
6406     Bool_t  matched   = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6407     if(!fFillTMHisto && matched) continue ;
6408
6409     // Get cluster angles
6410     
6411     cluster->GetMomentum(fClusterMomentum, GetVertex(0));
6412     Float_t eta = fClusterMomentum.Eta();
6413     Float_t phi = fClusterMomentum.Phi();
6414     if(phi<0) phi=+TMath::TwoPi();
6415     
6416     //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d,  bd %2.2f, fMinBadDist %2.2f\n",
6417     //       en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6418     
6419     if(fFillNLMDiffCutHisto)
6420     {
6421       FillNLMDiffCutHistograms(cluster,cells,matched);
6422       return;
6423     }
6424     
6425     // Get PID, N local maximum, *** split cluster ***
6426     
6427     Int_t    nMax = 0;
6428     Double_t mass = 0., angle = 0.;
6429     Int_t    absId1   =-1; Int_t   absId2   =-1;
6430     Float_t  distbad1 =-1; Float_t distbad2 =-1;
6431     Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
6432     
6433     Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6434                                                                                GetVertex(0), nMax, mass, angle,
6435                                                                                fSubClusterMom1,fSubClusterMom2,
6436                                                                                absId1,absId2,
6437                                                                                distbad1,distbad2,
6438                                                                                fidcut1,fidcut2);
6439     if (nMax <= 0) 
6440     {
6441       if(GetDebug() > 0 )
6442         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6443       
6444       continue;
6445     }
6446     
6447     // Set some index for array histograms
6448     
6449     Int_t inlm = -1;
6450     if     (nMax == 1) inlm = 0;
6451     else if(nMax == 2) inlm = 1;
6452     else if(nMax >  2) inlm = 2;
6453     else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6454
6455     // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6456     if( (fCheckSplitDistToBad) &&
6457         (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6458     {
6459       if(GetDebug() > 1)
6460         Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6461                                  distbad1,distbad2, fidcut1,fidcut2);
6462       
6463       if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6464       {
6465         fhMassBadDistClose[inlm]->Fill(en,mass);
6466         fhM02BadDistClose [inlm]->Fill(en,l0  );
6467       }
6468       
6469       if(!fidcut1 || !fidcut2)
6470       {
6471         fhMassOnBorder[inlm]->Fill(en,mass);
6472         fhM02OnBorder [inlm]->Fill(en,l0  );
6473       }
6474       
6475       continue ;
6476     }
6477
6478     // Get sub-cluster parameters
6479     
6480     Float_t e1 = fSubClusterMom1.Energy();
6481     Float_t e2 = fSubClusterMom2.Energy();
6482     
6483     Double_t tof1  = cells->GetCellTime(absId1);
6484     GetCaloUtils()->RecalibrateCellTime(tof1, GetCalorimeter(), absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6485     tof1*=1.e9;
6486     
6487     Double_t tof2  = cells->GetCellTime(absId2);
6488     GetCaloUtils()->RecalibrateCellTime(tof2, GetCalorimeter(), absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6489     tof2*=1.e9;
6490     
6491     Double_t t12diff = tof1-tof2;
6492     
6493     Float_t splitFrac = (e1+e2)/en;
6494
6495     Float_t asym = -10;
6496     if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6497     
6498     //
6499     
6500     Int_t ebin = -1;
6501     if(en > 8  && en <= 12) ebin = 0;
6502     if(en > 12 && en <= 16) ebin = 1;
6503     if(en > 16 && en <= 20) ebin = 2;
6504     if(en > 20)             ebin = 3;
6505     
6506     // MC data histograms and some related calculations
6507     // mc tag, n overlaps, asym of generated mesons
6508     
6509     Int_t   mcindex   = -1;
6510     Int_t   mctag     = -1;
6511     Float_t eprim     = -1;
6512     Float_t asymGen   = -2;
6513     Float_t angleGen  =  2000;
6514     Int_t   noverlaps =  0;
6515     
6516     if(IsDataMC())
6517     {
6518       // MC indexes
6519
6520       GetMCIndex(cluster,mcindex,mctag);
6521       
6522       // MC primary kine, generation fractions
6523
6524       GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6525         
6526       // For cluster with MC pi0 and more than 1 maxima
6527       
6528      }
6529     
6530     //
6531     
6532     FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6533
6534     //
6535     
6536     if(fFillNCellHisto)
6537       FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6538     
6539     //
6540     
6541     if(fFillSSExtraHisto)
6542       FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin)  ;
6543     
6544     //
6545
6546     if(!matched && ebin >= 0 && fFillEbinHisto)
6547       FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6548
6549     //
6550     
6551     if(fFillAngleHisto)
6552       FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6553
6554     if(fFillArmenterosHisto && ebin >= 0)
6555       FillArmenterosHistograms(nMax, ebin, mcindex, en, l0, pidTag);
6556
6557     if(fFillThetaStarHisto)
6558       FillThetaStarHistograms(nMax,matched,mcindex, en, l0, pidTag);
6559
6560     
6561     //---------------------------------------------------------------------
6562     // From here start applying some cuts
6563     //---------------------------------------------------------------------
6564     
6565     // If set, check just on MC clusters when SS cut is applied
6566     if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6567     {
6568       // For cluster with MC pi0 and more than 1 maxima
6569       
6570       if(fFillMCOverlapHisto)
6571         CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6572       //l0, l1, l2);
6573       
6574       //
6575       
6576       if(fFillMCHisto)
6577         FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6578                          nMax,matched,splitFrac, asym, eprim,asymGen);
6579       
6580       //
6581       
6582       if(fFillMCOverlapHisto)
6583         FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6584       
6585     }
6586     
6587     // Fill few histograms, some still without cuts
6588     FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6589     
6590     if(pidTag==AliCaloPID::kPi0)
6591     {
6592       FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6593       
6594       if(fFillSSWeightHisto && !matched)
6595         FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6596       
6597       if(fFillTMHisto && fFillTMResidualHisto)
6598         FillTrackMatchingHistograms(cluster,nMax,mcindex);
6599       
6600       if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6601       {
6602         if     (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6603         else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6604         else if(noverlaps  > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6605       }
6606     }
6607     else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6608     {
6609       FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6610     }
6611     else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6612     {
6613       FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6614     }
6615     
6616   }//loop
6617   
6618   if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6619
6620 }
6621
6622 //______________________________________________________________________
6623 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6624 {
6625   //Print some relevant parameters set for the analysis
6626   if(! opt)
6627     return;
6628   
6629   printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6630   AliAnaCaloTrackCorrBaseClass::Print("");
6631   printf("Calorimeter     =     %s\n",  GetCalorimeterString().Data()) ;
6632   if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n",       GetCaloUtils()->GetLocalMaximaCutE());
6633   if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n",  GetCaloUtils()->GetLocalMaximaCutEDiff());
6634   printf("Min. N Cells =%d \n",         fMinNCells) ;
6635   printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6636   if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6637
6638   printf("    \n") ;
6639   
6640
6641
6642 //___________________________________________________________________________________________________________________
6643 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6644                                                                                           AliVCaloCells* cells,
6645                                                                                           AliVCluster * cluster,
6646                                                                                           Float_t & l0,   Float_t & l1,
6647                                                                                           Float_t & disp, Float_t & dEta, Float_t & dPhi,
6648                                                                                           Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6649                                                                                           Float_t eCellMin)
6650 {
6651   // Calculates new center of gravity in the local EMCAL-module coordinates
6652   // and tranfers into global ALICE coordinates
6653   // Calculates Dispersion and main axis
6654   
6655   if(!cluster)
6656   {
6657     AliInfo("Cluster pointer null!");
6658     return;
6659   }
6660   
6661   Double_t eCell       = 0.;
6662   Float_t  fraction    = 1.;
6663   Float_t  recalFactor = 1.;
6664   
6665   Int_t    iSupMod = -1;
6666   Int_t    iTower  = -1;
6667   Int_t    iIphi   = -1;
6668   Int_t    iIeta   = -1;
6669   Int_t    iphi    = -1;
6670   Int_t    ieta    = -1;
6671   Double_t etai    = -1.;
6672   Double_t phii    = -1.;
6673   
6674   Int_t    nstat   = 0 ;
6675   Float_t  wtot    = 0.;
6676   Double_t w       = 0.;
6677   Double_t etaMean = 0.;
6678   Double_t phiMean = 0.;
6679     
6680   Bool_t  shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6681
6682   Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6683   
6684   Float_t simuTotWeight = 0;
6685   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6686   {
6687     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6688     simuTotWeight/= energy;
6689   }
6690   
6691   //Loop on cells, get weighted parameters
6692   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6693   {
6694     //Get from the absid the supermodule, tower and eta/phi numbers
6695     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6696     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6697     
6698     //Get the cell energy, if recalibration is on, apply factors
6699     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6700     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6701     
6702     if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6703     {
6704       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6705     }
6706     
6707     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6708     
6709     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6710     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6711     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6712     
6713     if(energy > 0 && eCell > eCellMin)
6714     {
6715       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6716         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6717       
6718       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6719
6720       //correct weight, ONLY in simulation
6721       w *= (fWSimu[0] - fWSimu[1] * w );
6722
6723       etai=(Double_t)ieta;
6724       phii=(Double_t)iphi;
6725       
6726       if(w > 0.0)
6727       {
6728         wtot += w ;
6729         nstat++;
6730         //Shower shape
6731         sEta     += w * etai * etai ;
6732         etaMean  += w * etai ;
6733         sPhi     += w * phii * phii ;
6734         phiMean  += w * phii ;
6735         sEtaPhi  += w * etai * phii ;
6736       }
6737     }
6738     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6739     
6740   }//cell loop
6741   
6742   //Normalize to the weight
6743   if (wtot > 0)
6744   {
6745     etaMean /= wtot ;
6746     phiMean /= wtot ;
6747   }
6748   else
6749     AliError(Form("Wrong weight %f\n", wtot));
6750   
6751   //Calculate dispersion
6752   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6753   {
6754     //Get from the absid the supermodule, tower and eta/phi numbers
6755     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6756     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6757     
6758     //Get the cell energy, if recalibration is on, apply factors
6759     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6760     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6761     if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6762     {
6763       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6764     }
6765     
6766     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6767     
6768     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6769     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6770     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6771     
6772     if(energy > 0 && eCell > eCellMin)
6773     {
6774       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6775         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6776       
6777       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6778       
6779       //correct weight, ONLY in simulation
6780       w *= (fWSimu[0] - fWSimu[1] * w );
6781
6782       etai=(Double_t)ieta;
6783       phii=(Double_t)iphi;
6784       if(w > 0.0)
6785       {
6786         disp +=  w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6787         dEta +=  w * (etai-etaMean)*(etai-etaMean) ;
6788         dPhi +=  w * (phii-phiMean)*(phii-phiMean) ;
6789       }
6790     }
6791     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6792   }// cell loop
6793   
6794   //Normalize to the weigth and set shower shape parameters
6795   if (wtot > 0 && nstat > 1)
6796   {
6797     disp    /= wtot ;
6798     dEta    /= wtot ;
6799     dPhi    /= wtot ;
6800     sEta    /= wtot ;
6801     sPhi    /= wtot ;
6802     sEtaPhi /= wtot ;
6803     
6804     sEta    -= etaMean * etaMean ;
6805     sPhi    -= phiMean * phiMean ;
6806     sEtaPhi -= etaMean * phiMean ;
6807     
6808     l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6809     l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6810   }
6811   else
6812   {
6813     l0   = 0. ;
6814     l1   = 0. ;
6815     dEta = 0. ; dPhi = 0. ; disp    = 0. ;
6816     sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;
6817   }
6818   
6819 }
6820
6821