]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
change name of variable, conflicts with enum with detector types
[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(),                             fMCDaughMom1(),                            fMCDaughMom2(),
69   fProdVertex(),
70 // Histograms
71   fhMassAsyCutNLocMax1(0),                   fhMassAsyCutNLocMax2(0),                   fhMassAsyCutNLocMaxN(0),
72   fhM02AsyCutNLocMax1(0),                    fhM02AsyCutNLocMax2(0),                    fhM02AsyCutNLocMaxN(0),
73   fhMassM02CutNLocMax1(0),                   fhMassM02CutNLocMax2(0),                   fhMassM02CutNLocMaxN(0),
74   fhAsymM02CutNLocMax1(0),                   fhAsymM02CutNLocMax2(0),                   fhAsymM02CutNLocMaxN(0),
75   fhMassEnCutNLocMax1(0),                    fhMassEnCutNLocMax2(0),                    fhMassEnCutNLocMaxN(0),
76   fhM02EnCutNLocMax1(0),                     fhM02EnCutNLocMax2(0),                     fhM02EnCutNLocMaxN(0),
77   fhAsymEnCutNLocMax1(0),                    fhAsymEnCutNLocMax2(0),                    fhAsymEnCutNLocMaxN(0),
78   fhSplitEFracEnCutNLocMax1(0),              fhSplitEFracEnCutNLocMax2(0),              fhSplitEFracEnCutNLocMaxN(0),
79   fhMassSplitECutNLocMax1(0),                fhMassSplitECutNLocMax2(0),                fhMassSplitECutNLocMaxN(0),
80   fhMCGenFracAfterCutsNLocMax1MCPi0(0),      fhMCGenFracAfterCutsNLocMax2MCPi0(0),      fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
81   fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
82   fhNCellMassEHighNLocMax1MCPi0(0),          fhNCellM02EHighNLocMax1MCPi0(0),
83   fhNCellMassELowNLocMax1MCPi0(0),           fhNCellM02ELowNLocMax1MCPi0(0),
84   fhNCellMassEHighNLocMax2MCPi0(0),          fhNCellM02EHighNLocMax2MCPi0(0),
85   fhNCellMassELowNLocMax2MCPi0(0),           fhNCellM02ELowNLocMax2MCPi0(0),
86   fhNCellMassEHighNLocMaxNMCPi0(0),          fhNCellM02EHighNLocMaxNMCPi0(0),
87   fhNCellMassELowNLocMaxNMCPi0(0),           fhNCellM02ELowNLocMaxNMCPi0(0),
88   fhAnglePairPrimPi0RecoNLocMax1(0),         fhAnglePairPrimPi0RecoNLocMax2(0),         fhAnglePairPrimPi0RecoNLocMaxN(0),
89   fhAnglePairPrimPi0vsRecoNLocMax1(0),       fhAnglePairPrimPi0vsRecoNLocMax2(0),       fhAnglePairPrimPi0vsRecoNLocMaxN(0),
90   fhAnglePairPrimPi0OverM02NLocMax1(0),      fhAnglePairPrimPi0OverM02NLocMax2(0),      fhAnglePairPrimPi0OverM02NLocMaxN(0),
91   fhCentralityPi0NLocMax1(0),                fhCentralityEtaNLocMax1(0),
92   fhCentralityPi0NLocMax2(0),                fhCentralityEtaNLocMax2(0),
93   fhCentralityPi0NLocMaxN(0),                fhCentralityEtaNLocMaxN(0),
94   fhEventPlanePi0NLocMax1(0),                fhEventPlaneEtaNLocMax1(0),
95   fhEventPlanePi0NLocMax2(0),                fhEventPlaneEtaNLocMax2(0),
96   fhEventPlanePi0NLocMaxN(0),                fhEventPlaneEtaNLocMaxN(0),
97   fhClusterEtaPhiNLocMax1(0),                fhClusterEtaPhiNLocMax2(0),                fhClusterEtaPhiNLocMaxN(0),
98   fhPi0EtaPhiNLocMax1(0),                    fhPi0EtaPhiNLocMax2(0),                    fhPi0EtaPhiNLocMaxN(0),
99   fhEtaEtaPhiNLocMax1(0),                    fhEtaEtaPhiNLocMax2(0),                    fhEtaEtaPhiNLocMaxN(0),
100   fhPi0EPairDiffTimeNLM1(0),                 fhPi0EPairDiffTimeNLM2(0),                 fhPi0EPairDiffTimeNLMN(0),
101   fhEtaEPairDiffTimeNLM1(0),                 fhEtaEPairDiffTimeNLM2(0),                 fhEtaEPairDiffTimeNLMN(0),
102   fhMCPi0HighNLMPair(0),                     fhMCPi0LowNLMPair(0),
103   fhMCPi0AnyNLMPair(0),                      fhMCPi0NoneNLMPair(0),
104   fhMCPi0HighNLMPairNoMCMatch(0),            fhMCPi0LowNLMPairNoMCMatch(0),
105   fhMCPi0AnyNLMPairNoMCMatch(0),             fhMCPi0NoneNLMPairNoMCMatch(0),
106   fhMCPi0HighNLMPairOverlap(0),              fhMCPi0LowNLMPairOverlap(0),
107   fhMCPi0AnyNLMPairOverlap(0),               fhMCPi0NoneNLMPairOverlap(0),
108   fhMCPi0HighNLMPairNoMCMatchOverlap(0),     fhMCPi0LowNLMPairNoMCMatchOverlap(0),
109   fhMCPi0AnyNLMPairNoMCMatchOverlap(0),      fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
110   fhMCPi0DecayPhotonHitHighLM(0),            fhMCPi0DecayPhotonAdjHighLM(0),
111   fhMCPi0DecayPhotonHitOtherLM(0),           fhMCPi0DecayPhotonAdjOtherLM(0),
112   fhMCPi0DecayPhotonAdjacent(0),             fhMCPi0DecayPhotonHitNoLM(0),
113   fhMCPi0DecayPhotonHitHighLMOverlap(0),     fhMCPi0DecayPhotonAdjHighLMOverlap(0),
114   fhMCPi0DecayPhotonHitOtherLMOverlap(0),    fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
115   fhMCPi0DecayPhotonAdjacentOverlap(0),      fhMCPi0DecayPhotonHitNoLMOverlap(0),
116   fhMCEOverlapType(0),                       fhMCEOverlapTypeMatch(0)
117 {
118   //default ctor
119   
120   // Init array of histograms
121   for(Int_t i = 0; i < 7; i++)
122   {
123     for(Int_t j = 0; j < 2; j++)
124     {
125       fhMassNLocMax1[i][j]  = 0;
126       fhMassNLocMax2[i][j]  = 0;
127       fhMassNLocMaxN[i][j]  = 0;
128       fhMassSplitENLocMax1[i][j]  = 0;
129       fhMassSplitENLocMax2[i][j]  = 0;
130       fhMassSplitENLocMaxN[i][j]  = 0;
131       fhNLocMax[i][j]       = 0;
132       fhNLocMaxM02Cut[i][j] = 0;
133       fhSplitClusterENLocMax   [i][j] = 0;
134       fhSplitClusterEPi0NLocMax[i][j] = 0;
135       fhM02NLocMax1[i][j]   = 0;
136       fhM02NLocMax2[i][j]   = 0;
137       fhM02NLocMaxN[i][j]   = 0;
138       fhNCellNLocMax1[i][j] = 0;
139       fhNCellNLocMax2[i][j] = 0;
140       fhNCellNLocMaxN[i][j] = 0;
141       fhM02Pi0NLocMax1[i][j] = 0;
142       fhM02EtaNLocMax1[i][j] = 0;
143       fhM02ConNLocMax1[i][j] = 0;
144       fhM02Pi0NLocMax2[i][j] = 0;
145       fhM02EtaNLocMax2[i][j] = 0;
146       fhM02ConNLocMax2[i][j] = 0;
147       fhM02Pi0NLocMaxN[i][j] = 0;
148       fhM02EtaNLocMaxN[i][j] = 0;
149       fhM02ConNLocMaxN[i][j] = 0;
150       
151       fhMassPi0NLocMax1[i][j] = 0;
152       fhMassEtaNLocMax1[i][j] = 0;
153       fhMassConNLocMax1[i][j] = 0;
154       fhMassPi0NLocMax2[i][j] = 0;
155       fhMassEtaNLocMax2[i][j] = 0;
156       fhMassConNLocMax2[i][j] = 0;
157       fhMassPi0NLocMaxN[i][j] = 0;
158       fhMassEtaNLocMaxN[i][j] = 0;
159       fhMassConNLocMaxN[i][j] = 0;
160       
161       fhNCellPi0NLocMax1[i][j] = 0;
162       fhNCellEtaNLocMax1[i][j] = 0;
163       fhNCellPi0NLocMax2[i][j] = 0;
164       fhNCellEtaNLocMax2[i][j] = 0;
165       fhNCellPi0NLocMaxN[i][j] = 0;
166       fhNCellEtaNLocMaxN[i][j] = 0;
167       
168       fhAsyPi0NLocMax1[i][j] = 0;
169       fhAsyEtaNLocMax1[i][j] = 0;
170       fhAsyConNLocMax1[i][j] = 0;
171       fhAsyPi0NLocMax2[i][j] = 0;
172       fhAsyEtaNLocMax2[i][j] = 0;
173       fhAsyConNLocMax2[i][j] = 0;
174       fhAsyPi0NLocMaxN[i][j] = 0;
175       fhAsyEtaNLocMaxN[i][j] = 0;
176       fhAsyConNLocMaxN[i][j] = 0;      
177       
178       fhMassM02NLocMax1[i][j]= 0;
179       fhMassM02NLocMax2[i][j]= 0;
180       fhMassM02NLocMaxN[i][j]= 0;
181       
182       fhMassSplitEPi0NLocMax1[i][j]  = 0;
183       fhMassSplitEPi0NLocMax2[i][j]  = 0;
184       fhMassSplitEPi0NLocMaxN[i][j]  = 0;
185
186       fhMassSplitEAfterCutsNLocMax1[i][j]  = 0;
187       fhMassSplitEAfterCutsNLocMax2[i][j]  = 0;
188       fhMassSplitEAfterCutsNLocMaxN[i][j]  = 0;
189
190       
191       fhMassDispEtaNLocMax1[i][j]= 0;
192       fhMassDispEtaNLocMax2[i][j]= 0;
193       fhMassDispEtaNLocMaxN[i][j]= 0;      
194       fhMassDispPhiNLocMax1[i][j]= 0;
195       fhMassDispPhiNLocMax2[i][j]= 0;
196       fhMassDispPhiNLocMaxN[i][j]= 0;      
197       fhMassDispAsyNLocMax1[i][j]= 0;
198       fhMassDispAsyNLocMax2[i][j]= 0;
199       fhMassDispAsyNLocMaxN[i][j]= 0;      
200       
201       fhSplitEFractionNLocMax1[i][j]=0;
202       fhSplitEFractionNLocMax2[i][j]=0;
203       fhSplitEFractionNLocMaxN[i][j]=0;
204       
205       fhAnglePairNLocMax1         [i][j] = 0;
206       fhAnglePairNLocMax2         [i][j] = 0;
207       fhAnglePairNLocMaxN         [i][j] = 0;
208
209       fhAnglePairAfterCutsNLocMax1[i][j] = 0;
210       fhAnglePairAfterCutsNLocMax2[i][j] = 0;
211       fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
212
213       fhAnglePairPi0NLocMax1      [i][j] = 0;
214       fhAnglePairPi0NLocMax2      [i][j] = 0;
215       fhAnglePairPi0NLocMaxN      [i][j] = 0;
216       
217       fhAnglePairMassNLocMax1     [i][j] = 0;
218       fhAnglePairMassNLocMax2     [i][j] = 0;
219       fhAnglePairMassNLocMaxN     [i][j] = 0;
220
221       fhAnglePairM02NLocMax1      [i][j] = 0;
222       fhAnglePairM02NLocMax2      [i][j] = 0;
223       fhAnglePairM02NLocMaxN      [i][j] = 0;
224       
225       fhAnglePairOverM02NLocMax1  [i][j] = 0;
226       fhAnglePairOverM02NLocMax2  [i][j] = 0;
227       fhAnglePairOverM02NLocMaxN  [i][j] = 0;
228       
229       fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
230       fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
231       fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
232       
233       fhCosThStarNLocMax1         [i][j] = 0;
234       fhCosThStarNLocMax2         [i][j] = 0;
235       fhCosThStarNLocMaxN         [i][j] = 0;
236       
237       fhCosThStarAfterCutsNLocMax1[i][j] = 0;
238       fhCosThStarAfterCutsNLocMax2[i][j] = 0;
239       fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
240       
241       fhCosThStarPi0NLocMax1      [i][j] = 0;
242       fhCosThStarPi0NLocMax2      [i][j] = 0;
243       fhCosThStarPi0NLocMaxN      [i][j] = 0;
244       
245       fhMCGenFracNLocMax1[i][j]= 0;
246       fhMCGenFracNLocMax2[i][j]= 0;
247       fhMCGenFracNLocMaxN[i][j]= 0;
248
249       fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
250       fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
251       fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
252       
253       fhMCGenSplitEFracNLocMax1[i][j]= 0;
254       fhMCGenSplitEFracNLocMax2[i][j]= 0;
255       fhMCGenSplitEFracNLocMaxN[i][j]= 0;    
256
257       fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
258       fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
259       fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
260       
261       fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
262       fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
263       fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;    
264       
265       fhMCGenEvsSplitENLocMax1[i][j]= 0;
266       fhMCGenEvsSplitENLocMax2[i][j]= 0;
267       fhMCGenEvsSplitENLocMaxN[i][j]= 0;     
268       
269       fhAsymNLocMax1 [i][j] = 0;
270       fhAsymNLocMax2 [i][j] = 0;
271       fhAsymNLocMaxN [i][j] = 0;
272       
273       fhMassAfterCutsNLocMax1[i][j] = 0;
274       fhMassAfterCutsNLocMax2[i][j] = 0;
275       fhMassAfterCutsNLocMaxN[i][j] = 0;
276
277       
278       fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
279       fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
280       fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
281     }
282    
283     for(Int_t jj = 0; jj < 4; jj++)
284     {
285       fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
286       fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
287       fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
288       
289       fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
290       fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
291       fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
292       
293       fhMCGenFracNLocMaxEbin[i][jj]       = 0;
294       fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
295       
296       fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
297       fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
298       fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
299     }
300     
301     fhTrackMatchedDEtaNLocMax1[i] = 0;
302     fhTrackMatchedDPhiNLocMax1[i] = 0;
303     fhTrackMatchedDEtaNLocMax2[i] = 0;
304     fhTrackMatchedDPhiNLocMax2[i] = 0; 
305     fhTrackMatchedDEtaNLocMaxN[i] = 0; 
306     fhTrackMatchedDPhiNLocMaxN[i] = 0; 
307
308     fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
309     fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
310     fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
311     fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
312     fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
313     fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
314
315     fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
316     fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
317     fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
318     fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
319     fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
320     fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
321     
322     for(Int_t nlm = 0; nlm < 3; nlm++)
323     {
324       fhMCEM02Overlap0     [nlm][i] = 0;
325       fhMCEM02Overlap1     [nlm][i] = 0;
326       fhMCEM02OverlapN     [nlm][i] = 0;
327       fhMCEM02Overlap0Match[nlm][i] = 0;
328       fhMCEM02Overlap1Match[nlm][i] = 0;
329       fhMCEM02OverlapNMatch[nlm][i] = 0;
330       
331       fhMCEMassOverlap0     [nlm][i] = 0;
332       fhMCEMassOverlap1     [nlm][i] = 0;
333       fhMCEMassOverlapN     [nlm][i] = 0;
334       fhMCEMassOverlap0Match[nlm][i] = 0;
335       fhMCEMassOverlap1Match[nlm][i] = 0;
336       fhMCEMassOverlapNMatch[nlm][i] = 0;
337
338       fhMCEAsymOverlap0     [nlm][i] = 0;
339       fhMCEAsymOverlap1     [nlm][i] = 0;
340       fhMCEAsymOverlapN     [nlm][i] = 0;
341       fhMCEAsymOverlap0Match[nlm][i] = 0;
342       fhMCEAsymOverlap1Match[nlm][i] = 0;
343       fhMCEAsymOverlapNMatch[nlm][i] = 0;
344
345       fhMCENCellOverlap0     [nlm][i] = 0;
346       fhMCENCellOverlap1     [nlm][i] = 0;
347       fhMCENCellOverlapN     [nlm][i] = 0;
348       fhMCENCellOverlap0Match[nlm][i] = 0;
349       fhMCENCellOverlap1Match[nlm][i] = 0;
350       fhMCENCellOverlapNMatch[nlm][i] = 0;
351       
352       fhMCEEpriOverlap0     [nlm][i] = 0;
353       fhMCEEpriOverlap1     [nlm][i] = 0;
354       fhMCEEpriOverlapN     [nlm][i] = 0;
355       fhMCEEpriOverlap0Match[nlm][i] = 0;
356       fhMCEEpriOverlap1Match[nlm][i] = 0;
357       fhMCEEpriOverlapNMatch[nlm][i] = 0;
358
359       fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
360       fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
361       fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
362       
363       fhMCESplitEFracOverlap0     [nlm][i] = 0;
364       fhMCESplitEFracOverlap1     [nlm][i] = 0;
365       fhMCESplitEFracOverlapN     [nlm][i] = 0;
366       fhMCESplitEFracOverlap0Match[nlm][i] = 0;
367       fhMCESplitEFracOverlap1Match[nlm][i] = 0;
368       fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
369       
370       fhMCENOverlaps       [nlm][i] = 0;
371       fhMCENOverlapsMatch  [nlm][i] = 0;
372             
373       if(i > 3) continue ;
374       
375       fhMCPi0MassM02Overlap0     [nlm][i] = 0;
376       fhMCPi0MassM02Overlap1     [nlm][i] = 0;
377       fhMCPi0MassM02OverlapN     [nlm][i] = 0;
378       fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
379       fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
380       fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
381     }
382   }
383    
384   for(Int_t i = 0; i < 2; i++)
385   {
386     fhSplitEFractionvsAsyNLocMax1[i] = 0;
387     fhSplitEFractionvsAsyNLocMax2[i] = 0; 
388     fhSplitEFractionvsAsyNLocMaxN[i] = 0;    
389   }
390   
391   for(Int_t i = 0; i < 4; i++)
392   {
393     fhMassM02NLocMax1Ebin[i] = 0 ;
394     fhMassM02NLocMax2Ebin[i] = 0 ;
395     fhMassM02NLocMaxNEbin[i] = 0 ;
396
397     fhMassAsyNLocMax1Ebin[i] = 0 ;
398     fhMassAsyNLocMax2Ebin[i] = 0 ;
399     fhMassAsyNLocMaxNEbin[i] = 0 ;
400
401     fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
402     fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
403     fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
404     
405     fhMassDispEtaNLocMax1Ebin[i] = 0 ;
406     fhMassDispEtaNLocMax2Ebin[i] = 0 ;
407     fhMassDispEtaNLocMaxNEbin[i] = 0 ;
408     
409     fhMassDispPhiNLocMax1Ebin[i] = 0 ;
410     fhMassDispPhiNLocMax2Ebin[i] = 0 ;
411     fhMassDispPhiNLocMaxNEbin[i] = 0 ;    
412     
413     fhMassDispAsyNLocMax1Ebin[i] = 0 ;
414     fhMassDispAsyNLocMax2Ebin[i] = 0 ;
415     fhMassDispAsyNLocMaxNEbin[i] = 0 ;    
416
417     fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
418     fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
419     fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
420   }
421   
422   for(Int_t nlm = 0; nlm < 3; nlm++)
423   {
424     
425     fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
426     fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;           
427     fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;           
428     fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;            
429     
430     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;     
431     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;      
432     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;     
433     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;     
434     
435     fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;           
436     fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;            
437     fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;            
438     fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;         
439     
440     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;    
441     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;      
442     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;     
443     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
444     
445     fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
446     fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
447     fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
448     fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
449     
450     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
451     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
452     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
453     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
454     
455     fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
456     fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
457     fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
458     fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
459     
460     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
461     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
462     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
463     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
464     
465     fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
466     fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;                 
467     fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;              
468     fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;               
469     fhMCPi0DecayPhotonAdjacentMass  [nlm] = 0 ;                  
470     fhMCPi0DecayPhotonHitNoLMMass   [nlm] = 0 ;                  
471     
472     fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
473     fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;          
474     fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;        
475     fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;        
476     fhMCPi0DecayPhotonAdjacentOverlapMass  [nlm] = 0 ;
477     fhMCPi0DecayPhotonHitNoLMOverlapMass   [nlm] = 0 ;          
478     
479     fhPi0CellE       [nlm] = 0 ;
480     fhPi0CellEFrac   [nlm] = 0 ;
481     fhPi0CellLogEFrac[nlm] = 0 ;
482     
483     fhPi0CellEMaxEMax2Frac   [nlm] = 0 ;
484     fhPi0CellEMaxClusterFrac [nlm] = 0 ;
485     fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
486
487     fhPi0CellEMaxFrac [nlm] = 0 ;
488     fhPi0CellEMax2Frac[nlm] = 0 ;
489     
490     for(Int_t i = 0; i < 20; i++)
491     {
492       fhM02WeightPi0  [nlm][i] = 0;
493       fhM02ECellCutPi0[nlm][i] = 0;
494     }
495     
496     fhMassBadDistClose[nlm] = 0;
497     fhM02BadDistClose [nlm] = 0;
498     fhMassOnBorder    [nlm] = 0;
499     fhM02OnBorder     [nlm] = 0;
500     
501     fhAsyMCGenRecoDiffMCPi0    [nlm] = 0;
502     fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
503
504   }
505   
506   for(Int_t i = 0; i < 7; i++)
507   {
508     for(Int_t j = 0; j < 4; j++)
509     {
510       
511       fhArmNLocMax1[i][j]  = 0;
512       fhArmNLocMax2[i][j]  = 0;
513       fhArmNLocMaxN[i][j]  = 0;
514       
515       fhArmPi0NLocMax1[i][j] = 0;
516       fhArmPi0NLocMax2[i][j] = 0;
517       fhArmPi0NLocMaxN[i][j] = 0;
518       
519       fhArmAfterCutsNLocMax1[i][j] = 0;
520       fhArmAfterCutsNLocMax2[i][j] = 0;
521       fhArmAfterCutsNLocMaxN[i][j] = 0;
522       
523     }
524   }
525   
526   for(Int_t i = 0; i < 5; i++)
527   {
528     for(Int_t j = 0; j < 5; j++)
529     {
530       fhNLocMaxDiffCut   [i][j][0] = 0;
531       fhNLocMaxDiffCut   [i][j][1] = 0;
532       fhNLocMaxDiffCutPi0[i][j][0] = 0;
533       fhNLocMaxDiffCutPi0[i][j][1] = 0;
534       for(Int_t k = 0; k < 3; k++)
535       {
536         fhM02NLocMaxDiffCut    [i][j][k][0] = 0;
537         fhM02NLocMaxDiffCut    [i][j][k][1] = 0;
538         fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
539         fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
540         fhMassNLocMaxDiffCut   [i][j][k][0] = 0;
541         fhMassNLocMaxDiffCut   [i][j][k][1] = 0;
542         fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
543         fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
544       }
545     }
546   }
547   
548   InitParameters();
549
550 }
551
552 //___________________________________________________________________________________________________________________
553 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
554                                                                 Float_t e1,    Float_t e2,    Float_t mass)
555                                                                 //Float_t m02,
556                                                                 //TLorentzVector l1, TLorentzVector l2)
557 {
558   // Check origin NLM tower of the cluster, when MC gives merged pi0
559   
560   if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
561
562   const UInt_t nc = cluster->GetNCells();
563   Int_t   list[nc];
564   Float_t elist[nc];
565   Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
566   
567   
568   //// PRINTS /////
569   
570   //if(mcindex==kmcPi0)     printf("** Normal Pi0 **\n");
571   //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
572
573 //  if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
574 //  {
575 //     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",
576 //            nMax, noverlaps,mass,m02,
577 //            l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
578 //            l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
579 //    
580 //    // Study the mothers of cluster
581 //    printf("Cluster MC labels %d \n", cluster->GetNLabels());
582 //    for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
583 //    {
584 //      Int_t mclabel = cluster->GetLabels()[ilab];
585 //      
586 //      Bool_t  mOK = 0;
587 //      Int_t   mpdg = -999999;
588 //      Int_t   mstatus = -1;
589 //      Int_t   grandLabel = -1;
590 //      fPrimaryMom = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
591 //      
592 //      printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
593 //             ilab, mclabel, mpdg, mstatus,fPrimaryMom.E(), fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(),mOK,grandLabel);
594 //      
595 //      if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
596 //      {
597 //        while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
598 //        {
599 //          Int_t newLabel = -1;
600 //          TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
601 //          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",
602 //                 ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
603 //          grandLabel = newLabel;
604 //          
605 //        }
606 //      }
607 //    }
608 //    
609 //    printf("Cells in cluster %d\n",cluster->GetNCells() );
610 //    for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
611 //    {
612 //      Int_t absIdCell = cluster->GetCellAbsId(icell);
613 //      Int_t mcLabel   = GetEMCALCells()->GetCellMCLabel(absIdCell);
614 //      GetReader()->RemapMCLabelForAODs(mcLabel);
615 //      Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
616 //      Int_t smc = GetModuleNumberCellIndexes(absIdCell,GetCalorimeter(), ietac, iphic, rcuc);
617 //
618 //      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);
619 //    }
620 //  }
621   //// PRINTS /////
622   
623   
624   //If only one maxima, consider all the towers in the cluster
625   if(nMax==1)
626   {
627     for (UInt_t icell = 0; icell < nc; icell++ )
628     {
629       list [icell] = cluster->GetCellAbsId(icell);
630       elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
631     }
632   }
633   
634   Int_t nmaxima = nMax;
635   if(nMax==1) nmaxima = nc ;
636   
637   //Find highest energy Local Maxima Towers
638   Int_t   imax  = 999;
639   Int_t   imax2 = 999;
640   Float_t emax  = -1;
641   Float_t emax2 = -1;
642   for(Int_t i = 0; i < nmaxima; i++)
643   {
644     //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
645     if(elist[i] > emax)
646     {
647       imax = i;
648       emax = elist[i];
649     }
650   }
651   
652   //Find second highest
653   for(Int_t i = 0; i < nmaxima; i++)
654   {
655     if(i==imax) continue;
656     
657     //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
658     
659     if(elist[i] > emax2)
660     {
661       imax2 = i;
662       emax2 = elist[i];
663     }
664   }
665   
666 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
667 //    printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
668   
669   //---------------------------------------------------------
670   //---------------------------------------------------------
671   // Compare ancestors of all local maxima at cell MC level
672   //---------------------------------------------------------
673   //---------------------------------------------------------
674   
675   // Check that the highest mc label and the max cluster label are the same
676   Int_t mcLabelMax = -1 ;
677   if(imax >=0 && imax < 999)
678   {
679     mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
680     GetReader()->RemapMCLabelForAODs(mcLabelMax);
681   }
682   
683   Int_t mcLabelMax2 = -1 ;
684   if(imax2 >=0 && imax2 < 999)
685   {
686     mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
687     GetReader()->RemapMCLabelForAODs(mcLabelMax2);
688   }
689   
690   Int_t mcLabelclusterMax = cluster->GetLabels()[0];
691   Bool_t matchHighLMAndHighMC = kFALSE;
692   
693   //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
694   
695   if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
696   {
697     matchHighLMAndHighMC = kTRUE;
698     //printf("\t *** MATCH cluster and LM maximum ***\n");
699   }
700   else
701   {
702      //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
703     if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
704     {
705       //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
706       matchHighLMAndHighMC = kTRUE;
707     }
708     else
709     {
710       //printf("\t \t *** NO MATCH***\n");
711       matchHighLMAndHighMC = kFALSE;
712     }
713   }
714   
715   // Compare the common ancestors of the 2 highest energy local maxima
716   Int_t ancPDG = 0, ancStatus = -1;
717   Int_t ancLabel = 0;
718   Bool_t high = kFALSE;
719   Bool_t low  = kFALSE;
720
721 //  // print maxima origin
722 //  for(Int_t i = 0; i < nMax; i++)
723 //  {
724 //    Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
725 //    GetReader()->RemapMCLabelForAODs(mcLabel1);
726 //    
727 //    Bool_t ok  =kFALSE,gok = kFALSE;
728 //    Int_t pdg    = -22222, status   = -1;
729 //    Int_t gpdg   = -22222, gstatus  = -1;
730 //    Int_t ggpdg  = -22222, ggstatus = -1;
731 //    Int_t gLabel = -1, ggLabel = -1;
732 //    TLorentzVector primary   =GetMCAnalysisUtils()->GetMother     (mcLabel1,GetReader(),  pdg,  status, ok);
733 //    TLorentzVector gprimary  =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
734 //    TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel  ,GetReader(),ggpdg,ggstatus,gok);
735 //    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",
736 //           i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
737 //  }
738
739   for(Int_t i = 0; i < nmaxima-1; i++)
740   {
741     Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
742     GetReader()->RemapMCLabelForAODs(mcLabel1);
743  
744     for(Int_t j = i+1; j < nmaxima; j++)
745     {
746       Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
747       GetReader()->RemapMCLabelForAODs(mcLabel2);
748       
749       if(mcLabel1 < 0 || mcLabel2 < 0 )
750       {
751         //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
752         continue;
753       }
754       
755       ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
756                                                            GetReader(),ancPDG,ancStatus,fPrimaryMom,fProdVertex);
757       if(ancPDG==111)
758       {
759         if((i==imax && j==imax2) ||  (j==imax && i==imax2))
760           high = kTRUE;
761         else
762           low = kTRUE;
763       }
764       else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
765       {
766         // If both bits are set, it could be that one of the maxima had a conversion
767         // reset the bit in this case
768         if(high && low)
769         {
770           //printf("\t Reset low bit\n");
771           low = kFALSE;
772         }
773       }
774      
775       Bool_t ok  =kFALSE;
776       Int_t pdg = -22222, status = -1;
777       fPrimaryMom = GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
778       //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);
779
780     }
781   }
782   
783   Float_t en = cluster->E();
784   
785 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
786 //    printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
787   
788   if(!noverlaps)
789   {
790     if(matchHighLMAndHighMC)
791     {
792       if     (high && !low)  fhMCPi0HighNLMPair->Fill(en,nMax);
793       else if(low  && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
794       else if(low  &&  high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
795       else                   fhMCPi0NoneNLMPair->Fill(en,nMax);
796     }
797     else
798     {
799       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
800       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
801       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
802       else                   fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
803     }
804   }
805   else
806   {
807     if(matchHighLMAndHighMC)
808     {
809       if     (high && !low)  fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
810       else if(low  && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
811       else if(low  &&  high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
812       else                   fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
813     }
814     else
815     {
816       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
817       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
818       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
819       else                   fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
820     }  
821   }
822   
823   //----------------------------------------------------------------------
824   //----------------------------------------------------------------------
825   // Compare MC decay photon projection to cell location and Local Maxima
826   //----------------------------------------------------------------------
827   //----------------------------------------------------------------------
828   
829   // Get the mother pi0
830   
831   Bool_t ok     = kFALSE;
832   Int_t pdg    = -22222, status   = -1;
833   Int_t gLabel = -1;
834   
835   Int_t label = cluster->GetLabel();
836   
837   while( pdg!=111 && label>=0 )
838   {
839     fPrimaryMom = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
840   }
841   
842   if(pdg!=111 || label < 0)
843   {
844     Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
845     return;
846   }
847   
848   Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
849   
850   if(nDaugthers != 2)
851   {
852     Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
853     return;
854   }
855   
856   // Get daughter photon kinematics
857   Int_t pdg0 = -22222, status0   = -1; Int_t label0 = -1;
858   fMCDaughMom1 = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
859   Int_t pdg1 = -22222, status1   = -1; Int_t label1 = -1;
860   fMCDaughMom2 = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
861
862   if(pdg1!=22 || pdg0 != 22)
863   {
864     Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
865     return;
866   }
867   
868   // In what cells did the photons hit
869   Float_t eta0 = fMCDaughMom1.Eta();
870   Float_t eta1 = fMCDaughMom2.Eta();
871   
872   Float_t phi0 = fMCDaughMom1.Phi();
873   Float_t phi1 = fMCDaughMom2.Phi();
874
875 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
876 //  {
877 //    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",
878 //           label , fPrimaryMom.E()    , fPrimaryMom.Eta(),fPrimaryMom.Phi()*TMath::RadToDeg(), (fMCDaughMom1+fMCDaughMom2).M(),
879 //           label0, fMCDaughMom1.E(),          eta0,         phi0*TMath::RadToDeg(),
880 //           label1, fMCDaughMom2.E(),          eta1,         phi1*TMath::RadToDeg());
881 //    
882 //    TLorentzVector momclus;
883 //    cluster->GetMomentum(momclus,GetVertex(0));
884 //    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());
885 //  }
886   
887   if(phi0 < 0 ) phi0+=TMath::TwoPi();
888   if(phi1 < 0 ) phi1+=TMath::TwoPi();
889   
890   Int_t absId0=-1, absId1=-1;
891   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
892   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
893   
894   if(absId0 < 0 || absId1 < 0)
895   {
896     //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() -  Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
897     return;
898   }
899   
900   //-----------------------------------------------
901   // Check that the 2 photons hit the Local Maxima
902   //-----------------------------------------------
903   
904   
905 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
906 //  {
907 //    printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
908 //    printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
909 //
910 //    Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
911 //    Int_t sm0 = GetModuleNumberCellIndexes(absId0,GetCalorimeter(), ieta0, iphi0, rcu0);
912 //    Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
913 //    Int_t sm1 = GetModuleNumberCellIndexes(absId1,GetCalorimeter(), ieta1, iphi1, rcu1);
914 //    
915 //    printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
916 //           absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
917 //    
918 //    Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
919 //    if(imax  >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,GetCalorimeter(), ietam0, iphim0, rcum0);
920 //    Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
921 //    if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],GetCalorimeter(), ietam1, iphim1, rcum1);
922 //    
923 //    printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
924 //           list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
925 //  }
926
927   Int_t inlm = nMax-1;
928   if(inlm > 2) inlm = 2;
929   
930   Bool_t match0  = kFALSE;
931   Bool_t match1  = kFALSE;
932   Int_t imatch0  = -1;
933   Int_t imatch1  = -1;
934   if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
935   {
936     if     (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
937     else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
938     
939     if     (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
940     else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
941   }
942   
943   //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
944
945   // If one or the 2 not matched, check with the other MC labels
946   // only in case there was a conversion
947   
948   Int_t   absId0second  = -1;
949   Int_t   absId1second  = -1;
950   Int_t   secLabel0     = -1;
951   Int_t   secLabel1     = -1;
952   Int_t   mcLabel0      = -1;
953   Int_t   mcLabel1      = -1;
954   Bool_t  secOK         = 0;
955   Int_t   secpdg        = -999999;
956   Int_t   secstatus     = -1;
957   Int_t   secgrandLabel = -1;
958
959   if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
960   if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
961   
962   if((!match0 || !match1) && mcindex == kmcPi0Conv)
963   {
964     for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
965     {
966       Int_t mclabel = cluster->GetLabels()[ilab];
967       
968       //printf("Check label %d - %d\n",ilab,mclabel);
969       
970       if(mclabel == label0 || mclabel == label1)
971       {
972         //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
973         if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
974         if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
975         continue ;
976       }
977       
978       //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
979       
980       // match mc label and parent photon
981       Int_t tmplabel   = mclabel;
982       while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
983       {
984         fPrimaryMom = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
985         
986         //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
987         
988         if((secgrandLabel == label0) || (secgrandLabel == label1 ))
989         {
990           //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
991           if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
992           if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
993         }
994         
995         //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
996
997         tmplabel = secgrandLabel;
998       }
999     }
1000     
1001     // Get the position of the found secondaries mother
1002     if(!match0 && secLabel0 > 0)
1003     {
1004       fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1005       
1006       //Float_t eta = fPrimaryMom.Eta();
1007       //Float_t phi = fPrimaryMom.Phi();
1008       //if(phi < 0 ) phi+=TMath::TwoPi();
1009       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1010       
1011       //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());
1012       
1013       if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
1014       if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1015     }
1016
1017     if(!match1 && secLabel1 > 0)
1018     {
1019       fPrimaryMom = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1020       
1021       //Float_t eta = fPrimaryMom.Eta();
1022       //Float_t phi = fPrimaryMom.Phi();
1023       //if(phi < 0 ) phi+=TMath::TwoPi();
1024       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1025       
1026       //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());
1027       
1028       if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
1029       if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1030     }
1031
1032     //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1033     
1034   }
1035     
1036   //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1037   if( match0 && match1 )
1038   {
1039 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1040 //      printf("a) Both Photons hit local maxima \n");
1041     
1042     if(!noverlaps)
1043     {
1044       fhMCPi0DecayPhotonHitHighLM          ->Fill(en,nMax);
1045       fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1046       if(match0 && imatch0 == imax)
1047       {
1048         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1049         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1050         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1051         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1052       }
1053       else
1054       {
1055         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1056         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1057         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1058         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1059       }
1060     }
1061     else
1062     {
1063       fhMCPi0DecayPhotonHitHighLMOverlap          ->Fill(en,nMax);
1064       fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1065       if(match0 && imatch0 == imax )
1066       {
1067         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1068         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1069         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1070         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1071       }
1072       else
1073       {
1074         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1075         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1076         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1077         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1078       }
1079
1080     }
1081     
1082     return ;
1083   }
1084   
1085   //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1086   //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1087   
1088   //---------------------------------------------
1089   // Check the adjacent cells to the local maxima
1090   //---------------------------------------------
1091   
1092   if(!match0)
1093   {
1094     if(imatch1!=imax  && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax]))   { match0 = kTRUE; imatch0 = imax  ; }
1095     //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1096     if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1097     //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1098   }
1099   
1100   if(!match1)
1101   {
1102     if(imatch0!=imax  && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax  ; }
1103     //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1104   
1105     if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1106     //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1107   }
1108     
1109   //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1110   
1111   if(match0 && match1)
1112   {
1113 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1114 //      printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1115     
1116     if(!noverlaps)
1117     {
1118       fhMCPi0DecayPhotonAdjHighLM          ->Fill(en,nMax);
1119       fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1120
1121       if(match0 && imatch0 == imax)
1122       {
1123         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1124         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1125         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1126         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1127       }
1128       else
1129       {
1130         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1131         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1132         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1133         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1134       }
1135     }
1136     else
1137     {
1138       fhMCPi0DecayPhotonAdjHighLMOverlap          ->Fill(en,nMax);
1139       fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1140       if(match0 && imatch0 == imax)
1141       {
1142         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1143         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1144         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1145         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1146       }
1147       else
1148       {
1149         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1150         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1151         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1152         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1153       }
1154     }
1155     
1156     return;
1157   }
1158   
1159   // Decay photon cells are adjacent?
1160   
1161   if( (match0 || match1) && GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,absId1) )
1162   {
1163 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1164 //      printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1165     if(!noverlaps)
1166     {
1167       fhMCPi0DecayPhotonAdjacent          ->Fill(en,nMax);
1168       fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1169     }
1170     else
1171     {
1172       fhMCPi0DecayPhotonAdjacentOverlap          ->Fill(en,nMax);
1173       fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1174     }
1175     
1176     return;
1177   }
1178   
1179   //--------------------
1180   // Other Local maxima
1181   //--------------------
1182   
1183   Bool_t matchMCHitOtherLM = kFALSE;
1184   if(!match1)
1185   {
1186     for(Int_t i = 0; i < nmaxima; i++)
1187     {
1188       if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1189     }
1190   }
1191   
1192   if(!match0)
1193   {
1194     for(Int_t i = 0; i < nmaxima; i++)
1195     {
1196       if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1197     }
1198   }
1199   
1200   if(matchMCHitOtherLM)
1201   {
1202 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1203 //      printf("d) One Photon hits a local maxima, the other another not high \n");
1204     
1205     if(!noverlaps)
1206     {
1207       fhMCPi0DecayPhotonHitOtherLM          ->Fill(en,nMax);
1208       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1209       if(match0 && imatch0 == imax)
1210       {
1211         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1212         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1213       }
1214       else
1215       {
1216         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1217         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1218       }
1219     }
1220     else
1221     {
1222       fhMCPi0DecayPhotonHitOtherLMOverlap   ->Fill(en,nMax);
1223       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1224       if(match0 && imatch0 == imax)
1225       {
1226         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1227         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1228       }
1229       else
1230       {
1231         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1232         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1233       }
1234     }
1235     
1236     return ;
1237   }
1238   
1239   // Adjacent to other maxima
1240   
1241   Bool_t adjacentOther1 = kFALSE;
1242   if(match0)
1243   {
1244     for(Int_t i = 0; i < nmaxima; i++)
1245     {
1246       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1247       GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1248       
1249       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1250       
1251       if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId1,list[i]) ) adjacentOther1 = kTRUE;
1252       
1253       //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1254     }
1255   }
1256   
1257   Bool_t adjacentOther0 = kFALSE;
1258   if(match1)
1259   {
1260     for(Int_t i = 0; i < nmaxima; i++)
1261     {
1262       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1263       GetModuleNumberCellIndexes(list[i] ,GetCalorimeter(), ieta, iphi, rcu);
1264       
1265       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1266       
1267       if(GetCaloUtils()->AreNeighbours(GetCalorimeter(),absId0,list[i]) ) adjacentOther0 = kTRUE;
1268       
1269       //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1270     }
1271   }
1272   
1273   if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1274   {
1275     
1276 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1277 //      printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1278     
1279     if(!noverlaps)
1280     {
1281       fhMCPi0DecayPhotonAdjOtherLM       ->Fill(en,nMax);
1282       fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1283       if(match0 && imatch0 == imax)
1284       {
1285         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1286         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1287       }
1288       else
1289       {
1290         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1291         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1292       }
1293     }
1294     else
1295     {
1296       fhMCPi0DecayPhotonAdjOtherLMOverlap          ->Fill(en,nMax);
1297       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1298       if(match0 && imatch0 == imax)
1299       {
1300         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom1.E())/fMCDaughMom1.E());
1301         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom2.E())/fMCDaughMom2.E());
1302       }
1303       else
1304       {
1305         if(fMCDaughMom2.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-fMCDaughMom2.E())/fMCDaughMom2.E());
1306         if(fMCDaughMom1.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-fMCDaughMom1.E())/fMCDaughMom1.E());
1307       }
1308     }
1309     
1310     return;
1311   }
1312   
1313 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1314 //    printf("f) No hit found \n");
1315   if(!noverlaps)
1316   {
1317     fhMCPi0DecayPhotonHitNoLM          ->Fill(en,nMax);
1318     fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1319   }
1320   else
1321   {
1322     fhMCPi0DecayPhotonHitNoLMOverlap          ->Fill(en,nMax);
1323     fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1324   }
1325   
1326 }
1327
1328 //___________________________________________________________________________________________________________
1329 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t   nMax,      Bool_t  matched, Int_t mcIndex,
1330                                                            Float_t en,        Float_t e1,      Float_t e2,
1331                                                            Float_t angle,     Float_t mass,
1332                                                            Float_t anglePrim, Float_t m02,
1333                                                            Float_t asym,      Int_t   pid,     Int_t noverlaps)
1334 {
1335   // Fill histograms related to opening angle
1336   
1337   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1338   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1339   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1340   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1341
1342   Bool_t eCutOK= kFALSE;
1343   Int_t inlm = nMax-1;
1344   if(inlm > 2 ) inlm = 2;
1345   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1346   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1347   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1348
1349   if     (nMax==1)
1350   {
1351     fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1352     
1353     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1354       fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1355     if(pid==AliCaloPID::kPi0)
1356       fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1357     
1358     if(m02 > 0)
1359     {
1360       fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1361       if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1362     }
1363     
1364     if( en > 15 )
1365     {
1366       fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1367       fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1368     }
1369   }
1370   else if(nMax==2)
1371   {
1372     fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1373     
1374     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1375       fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1376     if(pid==AliCaloPID::kPi0)
1377       fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1378     
1379     if(m02 > 0)
1380     {
1381       fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1382       if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1383     }
1384     
1385     if( en > fHistoECut )
1386     {
1387       fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1388       fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1389     }
1390   }
1391   else if(nMax >2)
1392   {
1393     fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1394     
1395     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1396       fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1397     if(pid==AliCaloPID::kPi0)
1398       fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1399     
1400     if(m02 > 0)
1401     {
1402       fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1403       if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1404     }
1405     
1406     if( en > fHistoECut )
1407     {
1408       fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1409       fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1410     }
1411   }
1412   
1413   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1414   {
1415     if     (nMax==1)
1416     {
1417       fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1418       if( en > 15 )
1419       {
1420         fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1421         fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1422       }
1423       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1424         fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1425       if(pid==AliCaloPID::kPi0)
1426          fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1427       
1428       if(m02 > 0)
1429       {
1430         fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1431         if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1432       }
1433       
1434       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1435       {
1436         fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1437         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1438         if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1439
1440       }
1441     }
1442     else if(nMax==2)
1443     {
1444       fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1445       if( en > fHistoECut )
1446       {
1447         fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1448         fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1449       }
1450       
1451       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1452         fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1453       if(pid==AliCaloPID::kPi0)
1454         fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1455       
1456       if(m02 > 0)
1457       {
1458         fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1459         if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1460       }
1461       
1462       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1463       {
1464         fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1465         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1466         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1467       }
1468     }
1469     else if(nMax >2)
1470     {
1471       fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1472       if( en > fHistoECut )
1473       {
1474         fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1475         fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1476       }
1477       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1478         fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1479       if(pid==AliCaloPID::kPi0)
1480         fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1481       
1482       if(m02 > 0)
1483       {
1484         fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1485         if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1486       }
1487       
1488       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1489       {
1490         fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1491         if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1492         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1493       }
1494     }
1495     
1496   }
1497   
1498 }
1499
1500 //______________________________________________________________________________________________________________________
1501 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1502                                                                 Float_t en, Float_t m02, Int_t pid)
1503 {
1504   // Fill Armeteros type histograms
1505   
1506   // Get pTArm and AlphaArm
1507   fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1508   Float_t momentumSquaredMother = fSubClusterMomSum.P()*fSubClusterMomSum.P();
1509   Float_t momentumDaughter1AlongMother = 0.;
1510   Float_t momentumDaughter2AlongMother = 0.;
1511
1512   if (momentumSquaredMother > 0.)
1513   {
1514     momentumDaughter1AlongMother = (fSubClusterMom1.Px()*fSubClusterMomSum.Px() + fSubClusterMom1.Py()*fSubClusterMomSum.Py()+ fSubClusterMom1.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1515     momentumDaughter2AlongMother = (fSubClusterMom2.Px()*fSubClusterMomSum.Px() + fSubClusterMom2.Py()*fSubClusterMomSum.Py()+ fSubClusterMom2.Pz()*fSubClusterMomSum.Pz()) / sqrt(momentumSquaredMother);
1516   }
1517
1518   Float_t momentumSquaredDaughter1 = fSubClusterMom1.P()*fSubClusterMom1.P();
1519   Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1520   
1521   Float_t pTArm = 0.;
1522   if (ptArmSquared > 0.)
1523     pTArm = sqrt(ptArmSquared);
1524   
1525   Float_t alphaArm = 0.;
1526   if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1527     alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1528   
1529   Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1530   
1531    if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1532   
1533   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1534   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1535   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1536   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1537   
1538   Bool_t eCutOK= kFALSE;
1539   Int_t inlm = nMax-1;
1540   if(inlm > 2 ) inlm = 2;
1541   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1542   if     (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1543   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1544
1545   
1546   if     (nMax==1)
1547   {
1548     fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1549     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1550       fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1551     if(pid==AliCaloPID::kPi0)
1552       fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1553   }
1554   else if(nMax==2)
1555   {
1556     fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1557     if((m02OK && asyOK) && (asyOn || m02On))
1558       fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1559     if(pid==AliCaloPID::kPi0)
1560       fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1561   }
1562   else if(nMax >2)
1563   {
1564     fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1565     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1566       fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1567     if(pid==AliCaloPID::kPi0)
1568       fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1569   }
1570
1571   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1572   {
1573     if     (nMax==1)
1574     {
1575       fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1576       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1577         fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1578       if(pid==AliCaloPID::kPi0)
1579         fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1580     }
1581     else if(nMax==2)
1582     {
1583       fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1584       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1585         fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1586       if(pid==AliCaloPID::kPi0)
1587         fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1588     }
1589     else if(nMax >2)
1590     {
1591       fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1592       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1593         fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1594       if(pid==AliCaloPID::kPi0)
1595         fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1596     }  
1597   
1598   }
1599   
1600 }
1601
1602 //______________________________________________________________________________________________________________
1603 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1604                                                                Float_t en, Float_t m02, Int_t pid)
1605 {
1606   // Fill cos Theta^star histograms
1607
1608   
1609   // Get cos Theta^star
1610   fSubClusterMomSum = fSubClusterMom1+fSubClusterMom2;
1611   fSubClusterMomBoost = fSubClusterMom1;
1612   fSubClusterMomBoost.Boost(-fSubClusterMomSum.BoostVector());
1613   Float_t  cosThStar=TMath::Cos(fSubClusterMomBoost.Vect().Angle(fSubClusterMomSum.Vect()));
1614   
1615   Float_t asym = TMath::Abs( fSubClusterMom1.Energy()-fSubClusterMom2.Energy() )/( fSubClusterMom1.Energy()+fSubClusterMom2.Energy() ) ;
1616
1617   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1618   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1619   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1620   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1621   
1622   Bool_t eCutOK= kFALSE;
1623   Int_t inlm = nMax-1;
1624   if(inlm > 2 ) inlm = 2;
1625   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1626   if     (ensubcut > 0.1 && ensubcut < fSubClusterMom1.E() && ensubcut < fSubClusterMom2.E() ) eCutOK = kTRUE;
1627   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1628
1629   //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1630   
1631   if     (nMax==1)
1632   {
1633     fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1634     
1635     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1636       fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1637     if(pid==AliCaloPID::kPi0)
1638       fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1639   }
1640   else if(nMax==2)
1641   {
1642     fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1643     
1644     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1645       fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1646     if(pid==AliCaloPID::kPi0)
1647       fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1648   }
1649   else if(nMax >2)
1650   {
1651     fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1652     
1653     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1654       fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1655     if(pid==AliCaloPID::kPi0)
1656       fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1657   }
1658   
1659   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1660   {
1661     if     (nMax==1)
1662     {
1663       fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1664       
1665       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1666         fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1667       if(pid==AliCaloPID::kPi0)
1668         fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1669     }
1670     else if(nMax==2)
1671     {
1672       fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1673       
1674       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1675         fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1676       if(pid==AliCaloPID::kPi0)
1677         fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1678     }
1679     else if(nMax >2)
1680     {
1681       fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1682       
1683       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1684         fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1685       if(pid==AliCaloPID::kPi0)
1686         fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1687     }
1688     
1689   }
1690
1691 }
1692
1693 //__________________________________________________________________________________________________________________
1694 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t   ebin     , Int_t   nMax, Int_t mcindex,
1695                                                           Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1696 {
1697   // Fill some histograms integrating in few energy bins
1698     
1699   if     (nMax==1)
1700   {
1701     fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac,  mass);
1702     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1703     
1704     fhMassM02NLocMax1Ebin    [ebin]->Fill(l0  ,  mass );
1705     fhMassAsyNLocMax1Ebin    [ebin]->Fill(asym,  mass );
1706   }
1707   else if(nMax==2)
1708   {
1709     fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac,  mass);
1710     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1711     
1712     fhMassM02NLocMax2Ebin    [ebin]->Fill(l0  ,  mass );
1713     fhMassAsyNLocMax2Ebin    [ebin]->Fill(asym,  mass );
1714   }
1715   else if(nMax > 2 )
1716   {
1717     fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac,  mass);
1718     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac,  mass);
1719     
1720     fhMassM02NLocMaxNEbin    [ebin]->Fill(l0  ,  mass );
1721     fhMassAsyNLocMaxNEbin    [ebin]->Fill(asym,  mass );
1722   }
1723   
1724 }
1725
1726 //________________________________________________________________________________________________
1727 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en,     Float_t e1,     Float_t e2,
1728                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1729                                                        Float_t eta,    Float_t phi,
1730                                                        Bool_t matched, Int_t mcindex)
1731 {
1732   // Fill histograms for clusters before any selection after spliting
1733   
1734   Float_t splitFrac = (e1+e2)/en;
1735   
1736   Float_t asym = -10;
1737   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1738   
1739   fhNLocMax   [0][matched]->Fill(en,nMax);
1740   fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1741   fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1742   fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1743   fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1744   
1745   if(IsDataMC() && mcindex > 0 && mcindex < 7)
1746   {
1747     fhNLocMax   [mcindex][matched]->Fill(en,nMax);
1748     fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1749     fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1750     fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1751     fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1752   }
1753   
1754   if     ( nMax == 1  )
1755   {
1756     fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1757     fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1758     
1759     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1760     {
1761       fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1762       fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1763     }
1764     
1765     if(en > fHistoECut)
1766     {
1767       fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1768       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1769       
1770       fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1771       if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1772     }
1773   }
1774   else if( nMax == 2  )
1775   {
1776     fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1777     fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1778     
1779     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1780     {
1781       fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1782       fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1783     }
1784     
1785     if(en > fHistoECut)
1786     {
1787       fhMassM02NLocMax2[0][matched]->Fill(l0,  mass );
1788       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1789       
1790       fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1791       if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1792     }
1793   }
1794   else if( nMax >= 3  )
1795   {
1796     fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1797     fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1798     
1799     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1800     {
1801       fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1802       fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1803     }
1804     
1805     if(en > fHistoECut)
1806     {
1807       
1808       fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1809       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1810       
1811       fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1812       if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1813     }
1814   }
1815   
1816   
1817 }
1818
1819 //________________________________________________________________________________________________
1820 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en,     Float_t eprim,
1821                                                        Float_t e1,     Float_t e2,
1822                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1823                                                        Bool_t matched, Int_t mcindex)
1824 {
1825   // Fill histograms for clusters passing the first M02 selection
1826   
1827   Float_t efrac      = eprim/en;
1828   Float_t efracSplit = 0;
1829   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1830   
1831   Float_t splitFrac = (e1+e2)/en;
1832   
1833   Float_t asym = -10;
1834   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1835   
1836   Int_t inlm = nMax-1;
1837   if(inlm > 2) inlm = 2;
1838   Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1839   
1840   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1841   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1842   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1843   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1844   
1845   Bool_t eCutOK = kFALSE;
1846   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1847   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1848   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1849
1850   //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1851   
1852   if(m02On && m02OK)
1853   {
1854     fhNLocMaxM02Cut   [0][matched]->Fill(en,nMax);
1855     fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1856     fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1857     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1858     {
1859       fhNLocMaxM02Cut   [mcindex][matched]->Fill(en,nMax);
1860       fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1861       fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1862     }
1863   }
1864   
1865   if     (nMax==1)
1866   {
1867     fhMassNLocMax1[0][matched]->Fill(en,mass );
1868     fhAsymNLocMax1[0][matched]->Fill(en,asym );
1869     fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1870     
1871     // Effect of cuts in mass histograms
1872
1873     if(!matched && asyOK && asyOn )
1874     {
1875       fhMassAsyCutNLocMax1->Fill(en,mass);
1876       fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1877     }
1878     
1879     if(!matched && m02OK && m02On )
1880     {
1881       fhMassM02CutNLocMax1->Fill(en,mass);
1882       fhAsymM02CutNLocMax1->Fill(en,asym );
1883       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1884     } 
1885     
1886     if(!matched && eCutOK && ensubcut > 0.1)
1887     {
1888       fhMassEnCutNLocMax1->Fill(en,mass );
1889       fhM02EnCutNLocMax1 ->Fill(en,l0   );
1890       fhAsymEnCutNLocMax1->Fill(en,asym );
1891       fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1892     }
1893     
1894     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1895     {
1896       fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1897       if(splitFrac > splitFracMin)
1898       {
1899         fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1900         fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1901       }
1902       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1903       {
1904         fhMCGenFracAfterCutsNLocMax1MCPi0      ->Fill(en   ,  efrac     );
1905         fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en   ,  efracSplit);
1906       }
1907     }
1908   }
1909   else if( nMax == 2 )
1910   {
1911     fhMassNLocMax2[0][matched]->Fill(en,mass );
1912     fhAsymNLocMax2[0][matched]->Fill(en,asym );
1913     fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1914
1915     // Effect of cuts in mass histograms
1916     
1917     if(!matched && asyOK && asyOn )
1918     {
1919       fhMassAsyCutNLocMax2->Fill(en,mass);
1920       fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1921     }
1922     
1923     if(!matched && m02OK && m02On )
1924     {
1925       fhMassM02CutNLocMax2->Fill(en,mass);
1926       fhAsymM02CutNLocMax2->Fill(en,asym );
1927       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1928     } 
1929     
1930     if(!matched && eCutOK && ensubcut > 0.1)
1931     {
1932       fhMassEnCutNLocMax2->Fill(en,mass );
1933       fhM02EnCutNLocMax2 ->Fill(en,l0   );
1934       fhAsymEnCutNLocMax2->Fill(en,asym );
1935       fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1936     }
1937     
1938     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1939     {
1940       fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1941       if(splitFrac > splitFracMin)
1942       {
1943         fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1944         fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1945       }
1946       
1947       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1948       {
1949         fhMCGenFracAfterCutsNLocMax2MCPi0      ->Fill(en   ,  efrac     );
1950         fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en   ,  efracSplit);
1951       }
1952     }
1953   }
1954   else if( nMax > 2 )
1955   {
1956     fhMassNLocMaxN[0][matched]->Fill(en,mass);
1957     fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1958     fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1959
1960     // Effect of cuts in mass histograms
1961     
1962     if(!matched && asyOK && asyOn )
1963     {
1964       fhMassAsyCutNLocMaxN->Fill(en,mass);
1965       fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1966     }
1967     
1968     if(!matched && m02OK && m02On )
1969     {
1970       fhMassM02CutNLocMaxN->Fill(en,mass);
1971       fhAsymM02CutNLocMaxN->Fill(en,asym );
1972       if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1973     } 
1974     
1975     if(!matched && eCutOK && ensubcut > 0.1 )
1976     {
1977       fhMassEnCutNLocMaxN->Fill(en,mass );
1978       fhM02EnCutNLocMaxN ->Fill(en,l0   );
1979       fhAsymEnCutNLocMaxN->Fill(en,asym );
1980       fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1981     }
1982     
1983     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1984     {
1985       fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1986       if(splitFrac > splitFracMin)
1987       {
1988         fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1989         fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1990       }
1991       
1992       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1993       {
1994         fhMCGenFracAfterCutsNLocMaxNMCPi0      ->Fill(en   ,  efrac     );
1995         fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en   ,  efracSplit);
1996       }
1997     }
1998   }
1999   
2000   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2001   {
2002     if     (nMax==1)
2003     {
2004       fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2005       fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2006       fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2007
2008       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2009       {
2010         fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2011         if(splitFrac > splitFracMin)
2012         {
2013           fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2014           fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2015         }
2016       }
2017     }
2018     else if(nMax==2)
2019     {
2020       fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2021       fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2022       fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2023
2024       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2025       {
2026         fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2027         if(splitFrac > splitFracMin)
2028         {
2029           fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2030           fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2031         }
2032
2033       }
2034     }
2035     else if(nMax >2)
2036     {
2037       fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2038       fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2039       fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2040
2041       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2042       {
2043         fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2044         if(splitFrac > splitFracMin)
2045         {
2046           fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2047           fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2048         }
2049       }
2050     }
2051   }//Work with MC truth
2052 }
2053
2054
2055 //_________________________________________________________________________________________________________
2056 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en,     Float_t e1,     Float_t e2,
2057                                                            Int_t nc,       Int_t nMax,     Float_t t12diff,
2058                                                            Float_t mass,   Float_t l0,
2059                                                            Float_t eta,    Float_t phi,
2060                                                            Bool_t matched, Int_t mcindex)
2061 {
2062   // Fill histograms for clusters passing the pi0 selection
2063   
2064   Float_t asym = -10;
2065   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2066   
2067   fhNLocMaxIdPi0   [0][matched]->Fill(en,nMax);
2068   fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2069   fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2070   
2071   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2072   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2073   
2074   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2075   {
2076     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2077     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2078   }
2079   
2080   if     (nMax==1)
2081   {
2082     fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2083     fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2084     fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2085     fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2086     if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2087     
2088     if(!matched)
2089     {
2090       if(fFillHighMultHisto)
2091       {
2092         fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2093         fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2094       }
2095       if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2096       fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2097     }
2098   }
2099   else if(nMax==2)
2100   {
2101     fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2102     fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2103     fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2104     fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2105     if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2106     
2107     if(!matched)
2108     {
2109       if(fFillHighMultHisto)
2110       {
2111         fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2112         fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2113       }
2114       if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2115       fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2116     }
2117   }
2118   else if(nMax >2)
2119   {
2120     fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2121     fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2122     fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2123     fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2124     if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2125     
2126     if(!matched)
2127     {
2128       if(fFillHighMultHisto)
2129       {
2130         fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2131         fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2132       }
2133       if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2134       fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2135     }
2136   }
2137   
2138   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2139   {
2140     fhNLocMaxIdPi0   [mcindex][matched]->Fill(en,nMax);
2141     fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2142     fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2143     
2144     if     (nMax==1)
2145     {
2146       fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2147       fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2148       fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2149       fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2150       if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2151       
2152     }
2153     else if(nMax==2)
2154     {
2155       fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2156       fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2157       fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2158       fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2159       if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2160     }
2161     else if(nMax >2)
2162     {
2163       fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2164       fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2165       fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2166       fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2167       if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2168     }
2169   }//Work with MC truth
2170 }
2171
2172 //______________________________________________________________________________________________________
2173 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en,     Float_t e1,  Float_t e2,
2174                                                            Int_t nc,       Int_t nMax,  Float_t t12diff,
2175                                                            Float_t mass,   Float_t l0,
2176                                                            Float_t eta,    Float_t phi,
2177                                                            Bool_t matched, Int_t mcindex)
2178 {
2179   // Fill histograms for clusters passing the eta selection
2180   
2181   Float_t asym = -10;
2182   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2183   
2184   if     (nMax==1)
2185   {
2186     fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2187     fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2188     fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2189     if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2190     
2191     if(!matched)
2192     {
2193       if(fFillHighMultHisto)
2194       {
2195         fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2196         fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2197       }
2198       if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2199       fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2200     }
2201   }
2202   else if(nMax==2)
2203   {
2204     fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2205     fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2206     fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2207     if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2208     
2209     if(!matched)
2210     {
2211       if(fFillHighMultHisto)
2212       {
2213         fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2214         fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2215       }
2216       if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2217       fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2218     }
2219   }
2220   else if(nMax >2)
2221   {
2222     fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2223     fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2224     fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2225     if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2226     
2227     if(!matched)
2228     {
2229       if(fFillHighMultHisto)
2230       {
2231         fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2232         fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2233       }
2234       if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2235       fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2236     }
2237   }
2238   
2239   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2240   {
2241     if     (nMax==1)
2242     {
2243       fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2244       fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2245       fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2246       if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2247     }
2248     else if(nMax==2)
2249     {
2250       fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2251       fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2252       fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2253       if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2254       
2255     }
2256     else if(nMax >2)
2257     {
2258       fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2259       fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2260       fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2261       if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2262     }
2263   }//Work with MC truth
2264 }
2265
2266
2267 //__________________________________________________________________________________________________
2268 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en,    Int_t nMax, Float_t asym,
2269                                                             Float_t mass,   Float_t l0,
2270                                                             Bool_t matched, Int_t mcindex)
2271 {
2272   // Fill histograms for clusters passing the photon selection
2273   
2274   if     (nMax==1)
2275   {
2276     fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2277     fhMassConNLocMax1[0][matched]->Fill(en,mass);
2278     fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2279   }
2280   else if(nMax==2)
2281   {
2282     fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2283     fhMassConNLocMax2[0][matched]->Fill(en,mass);
2284     fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2285   }
2286   else if(nMax >2)
2287   {
2288     fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2289     fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2290     fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2291   }
2292   
2293   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2294   {
2295     if     (nMax==1)
2296     {
2297       fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2298       fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2299       fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2300     }
2301     else if(nMax==2)
2302     {
2303       fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2304       fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2305       fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2306     }
2307     else if(nMax >2)
2308     {
2309       fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2310       fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2311       fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2312     }
2313     
2314   }//Work with MC truth
2315 }
2316
2317 //_______________________________________________________________________________________________________
2318 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en,        Float_t e1  , Float_t e2,
2319                                                         Int_t ebin,        Int_t mcindex,Int_t noverlaps,
2320                                                         Float_t l0,        Float_t mass,
2321                                                         Int_t nMax,        Bool_t  matched,
2322                                                         Float_t splitFrac, Float_t asym,
2323                                                         Float_t eprim,     Float_t asymGen)
2324 {
2325   // Fill histograms needing some MC input
2326     
2327   Float_t efrac      = eprim/en;
2328   Float_t efracSplit = 0;
2329   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2330   Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2331   
2332   //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",
2333   //       e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2334   
2335   if(ebin >= 0 && fFillEbinHisto)
2336   {
2337     if( !matched ) fhMCGenFracNLocMaxEbin       [mcindex][ebin]->Fill(efrac,nMax);
2338     else           fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2339   }
2340
2341   if     (nMax==1)
2342   {
2343     fhMCGenFracNLocMax1      [mcindex][matched]->Fill(en     ,  efrac );
2344     fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en     ,  efracSplit );
2345     fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2346     if(asym > 0 && !matched)
2347     {
2348       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[0]    ->Fill(en, asymDiff );
2349       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2350     }
2351
2352     if(noverlaps==0)
2353     {
2354       fhMCGenFracNLocMax1NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2355       fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2356     }
2357     
2358     if( en > fHistoECut )
2359     {
2360       fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2361       
2362       if(!matched && ebin >= 0 && fFillEbinHisto)
2363       {
2364         fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2365         fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2366         
2367         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2368         {
2369           fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2370           fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym,  asymGen );
2371         }
2372       }
2373     }
2374   }
2375   else if(nMax==2)
2376   {
2377     fhMCGenFracNLocMax2      [mcindex][matched]->Fill(en     ,  efrac );
2378     fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en     ,  efracSplit );
2379     fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2380
2381     if(asym > 0 && !matched)
2382     {
2383      if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[1]    ->Fill(en, asymDiff );
2384      else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2385     }
2386     
2387     if(noverlaps==0)
2388     {
2389       fhMCGenFracNLocMax2NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2390       fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2391     }
2392     
2393     if( en > fHistoECut )
2394     {
2395       fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2396       
2397       if(!matched && ebin >= 0 && fFillEbinHisto)
2398       {
2399         fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2400         fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2401         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2402         {
2403           fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2404           fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym,  asymGen );
2405         }
2406       }
2407     }
2408
2409   }
2410   else if(nMax > 2 )
2411   {
2412     fhMCGenFracNLocMaxN      [mcindex][matched]->Fill(en     ,  efrac );
2413     fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en     ,  efracSplit );
2414     fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim  ,  e1+e2);
2415     if(asym > 0 && !matched)
2416     {
2417       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[2]    ->Fill(en, asymDiff );
2418       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2419     }
2420
2421     if(noverlaps==0)
2422     {
2423       fhMCGenFracNLocMaxNNoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2424       fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2425     }
2426     
2427     if( en > fHistoECut )
2428     {
2429       fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2430       
2431       if(!matched && ebin >= 0 && fFillEbinHisto)
2432       {
2433         fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac  ,  l0    );
2434         fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac  ,  mass  );
2435         
2436         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2437         {
2438           fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2439           fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym,  asymGen );
2440         }
2441       }
2442     }
2443   }
2444 }
2445
2446 //__________________________________________________________________________________________________________
2447 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en,      Float_t enprim,
2448                                                                Int_t   nc,      Float_t mass,    Float_t l0,
2449                                                                Float_t asym,    Float_t splitFrac,
2450                                                                Int_t   inlm,    Int_t ebin, Bool_t matched,
2451                                                                Int_t   mcindex, Int_t noverlaps)
2452 {
2453   // Fill histograms for MC Overlaps
2454   
2455   //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);
2456     
2457   //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2458   
2459   if(!matched)
2460   {
2461     fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2462     
2463     if     (noverlaps == 0)
2464     {
2465       fhMCEM02Overlap0  [inlm][mcindex]->Fill(en, l0);
2466       fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2467       fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2468       fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2469       if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2470       fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2471       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2472     }
2473     else if(noverlaps == 1)
2474     {
2475       fhMCEM02Overlap1  [inlm][mcindex]->Fill(en, l0);
2476       fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2477       fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2478       fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2479       if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2480       fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2481       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2482     }
2483     else if(noverlaps  > 1)
2484     {
2485       fhMCEM02OverlapN  [inlm][mcindex]->Fill(en, l0);
2486       fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2487       fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2488       fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2489       if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2490       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2491       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2492     }
2493     else
2494       Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2495   }
2496   else if(fFillTMHisto)
2497   {
2498     fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2499     
2500     if     (noverlaps == 0)
2501     {
2502       fhMCEM02Overlap0Match  [inlm][mcindex]->Fill(en, l0);
2503       fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2504       fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2505       fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2506       if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2507       fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2508       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2509     }
2510     else if(noverlaps == 1)
2511     {
2512       fhMCEM02Overlap1Match  [inlm][mcindex]->Fill(en, l0);
2513       fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2514       fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2515       fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2516       if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2517       fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2518       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2519     }
2520     else if(noverlaps  > 1)
2521     {
2522       fhMCEM02OverlapNMatch  [inlm][mcindex]->Fill(en, l0);
2523       fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2524       fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2525       fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2526       if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2527       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2528       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2529     }
2530     else
2531         Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2532   }
2533 }
2534
2535
2536 //_____________________________________________________________________________________________________
2537 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t   ncells,  Float_t energy, Int_t nMax,
2538                                                            Bool_t  matched, Int_t mcindex,
2539                                                            Float_t mass   , Float_t l0)
2540
2541 {
2542   // Fill optional histograms with more SS parameters
2543     
2544   if     (nMax==1)
2545   {
2546     fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2547     if(mcindex > 0 )  fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2548     
2549     if (mcindex==kmcPi0 && !matched)
2550     {
2551       if( energy > fHistoECut)
2552       {
2553         fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2554         fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2555       }
2556       else
2557       {
2558         fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2559         fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2560       }
2561     }
2562   }
2563   else if( nMax == 2  )
2564   {
2565     fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2566     if(mcindex > 0 )  fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2567     
2568     
2569     if (mcindex==kmcPi0 && !matched)
2570     {
2571       if( energy > fHistoECut)
2572       {
2573         fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2574         fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2575       }
2576       else
2577       {
2578         fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2579         fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2580       }
2581     }
2582   }
2583   else if( nMax >= 3  )
2584   {
2585     fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2586     if(mcindex > 0 )  fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2587     
2588     if (mcindex==kmcPi0 && !matched)
2589     {
2590       if( energy > fHistoECut)
2591       {
2592         fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2593         fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2594       }
2595       else
2596       {
2597         fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2598         fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2599       }
2600     }
2601   }
2602 }
2603
2604 //______________________________________________________________________________________________________
2605 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2606 {
2607   // Calculate NLM for different settings
2608
2609   Float_t energy = clus->E();
2610   Float_t m02    = clus->GetM02();
2611   
2612   Float_t minEOrg     = GetCaloUtils()->GetLocalMaximaCutE() ;
2613   Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2614   
2615   Int_t    nlm  = 0;
2616   Double_t mass = 0., angle = 0.;
2617   Int_t    absId1   =-1; Int_t   absId2   =-1;
2618   Float_t  distbad1 =-1; Float_t distbad2 =-1;
2619   Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
2620   Int_t pidTag = -1;
2621   
2622   //printf("E %f, m02 %f; Org: minE %f, minDiffE %f\n",energy, m02, minEOrg,minEDiffOrg);
2623   for(Int_t iE = 0; iE < fNLMSettingN; iE++)
2624   {
2625     for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
2626     {
2627       GetCaloUtils()->SetLocalMaximaCutE    (fNLMMinE   [iE]   );
2628       GetCaloUtils()->SetLocalMaximaCutEDiff(fNLMMinDiff[iDiff]);
2629       
2630       //nlm = GetCaloUtils()->GetNumberOfLocalMaxima(clus, cells)  ;
2631       
2632       //printf("\t Change: i %d minE %f, j %d minDiffE %f - NLM = %d\n",iE, fNLMMinE[iE], iDiff, fNLMMinDiff[iDiff],nlm);
2633
2634       pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(clus,cells,GetCaloUtils(),
2635                                                                                  GetVertex(0), nlm, mass, angle,
2636                                                                                  fSubClusterMom1,fSubClusterMom2,absId1,absId2,
2637                                                                                  distbad1,distbad2,fidcut1,fidcut2);
2638       if (nlm <= 0)
2639       {
2640         if(GetDebug() > 0 )
2641         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
2642         
2643         continue;
2644       }
2645
2646       Int_t inlm = nlm-1;
2647       if(inlm>2) inlm = 2;
2648       
2649       fhNLocMaxDiffCut    [iE][iDiff]      [matched]->Fill(energy,nlm);
2650       fhM02NLocMaxDiffCut [iE][iDiff][inlm][matched]->Fill(energy,m02);
2651       fhMassNLocMaxDiffCut[iE][iDiff][inlm][matched]->Fill(energy,mass);
2652
2653       if(pidTag==AliCaloPID::kPi0)
2654       {
2655         fhNLocMaxDiffCutPi0    [iE][iDiff]      [matched]->Fill(energy,nlm);
2656         fhM02NLocMaxDiffCutPi0 [iE][iDiff][inlm][matched]->Fill(energy,m02);
2657         fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][matched]->Fill(energy,mass);
2658       }
2659       
2660     }
2661   }
2662   
2663   GetCaloUtils()->SetLocalMaximaCutE    (minEOrg    );
2664   GetCaloUtils()->SetLocalMaximaCutEDiff(minEDiffOrg);
2665
2666 }
2667
2668
2669 //_____________________________________________________________________________________________
2670 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster  *cluster, Int_t nMax,
2671                                                              Bool_t  matched, Int_t mcindex,
2672                                                              Float_t mass   , Int_t ebin)
2673 {
2674   // Fill optional histograms with more SS parameters
2675     
2676   Float_t en = cluster->E();
2677   
2678   // Get more Shower Shape parameters
2679   Float_t ll0  = 0., ll1  = 0.;
2680   Float_t disp= 0., dispEta = 0., dispPhi    = 0.;
2681   Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2682   
2683   GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2684                                                                                ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2685   
2686   Float_t dispAsy = -1;
2687   if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2688   
2689   if     (nMax==1)
2690   {
2691     if( en > fHistoECut )
2692     {
2693       fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta,  mass );
2694       fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi,  mass );
2695       fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy,  mass );
2696       
2697       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2698       {
2699         fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta,  mass );
2700         fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi,  mass );
2701         fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy,  mass );
2702       }
2703     }
2704     
2705     if(!matched && ebin >= 0 && fFillEbinHisto)
2706     {
2707       fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta,  mass );
2708       fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi,  mass );
2709       fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy,  mass );
2710     }
2711   }
2712   else if( nMax == 2  )
2713   {
2714     if( en > fHistoECut )
2715     {
2716       fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta,  mass );
2717       fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi,  mass );
2718       fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy,  mass );
2719       
2720       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2721       {
2722         fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta,  mass );
2723         fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi,  mass );
2724         fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy,  mass );
2725       }
2726     }
2727     
2728     if(!matched && ebin >= 0 && fFillEbinHisto)
2729     {
2730       fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta,  mass );
2731       fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi,  mass );
2732       fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy,  mass );
2733     }
2734     
2735   }
2736   else if( nMax >= 3  )
2737   {
2738     if( en > fHistoECut )
2739     {
2740       fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta,  mass );
2741       fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi,  mass );
2742       fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy,  mass );
2743       
2744       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2745       {
2746         fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta,  mass );
2747         fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi,  mass );
2748         fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy,  mass );
2749       }
2750     }
2751     
2752     if(!matched && ebin >= 0 && fFillEbinHisto)
2753     {
2754       fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta,  mass );
2755       fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi,  mass );
2756       fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy,  mass );
2757     }
2758
2759   }
2760   
2761 }
2762
2763 //__________________________________________________________________________________________
2764 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,  Int_t nlm,
2765                                                               Int_t absId1, Int_t absId2)
2766 {
2767   // Calculate weights and fill histograms
2768     
2769   AliVCaloCells* cells = 0;
2770   if(GetCalorimeter() == kEMCAL) cells = GetEMCALCells();
2771   else                        cells = GetPHOSCells();
2772   
2773   // First recalculate energy in case non linearity was applied
2774   Float_t energy =  GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
2775   
2776   Float_t simuTotWeight = 0;
2777   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2778   {
2779     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
2780     simuTotWeight/= energy;
2781   }
2782   
2783   if(energy <=0 )
2784   {
2785     Info("WeightHistograms()","Wrong calculated energy %f\n",energy);
2786     return;
2787   }
2788   
2789   //Get amplitude of  main local maxima, recalibrate if needed
2790   Float_t amp1 = cells->GetCellAmplitude(absId1);
2791   GetCaloUtils()->RecalibrateCellAmplitude(amp1,GetCalorimeter(), absId1);
2792   Float_t amp2 = cells->GetCellAmplitude(absId2);
2793   GetCaloUtils()->RecalibrateCellAmplitude(amp2,GetCalorimeter(), absId2);
2794
2795   if(amp1 < amp2)        Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2796   if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n "        ,amp1,amp2);
2797   
2798   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2799   {
2800     amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
2801     amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
2802   }
2803   
2804   if(amp1>0)fhPi0CellEMaxEMax2Frac   [nlm]->Fill(energy,amp2/amp1);
2805   fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2806   fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2807   
2808   //Get the ratio and log ratio to all cells in cluster
2809   for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2810   {
2811     Int_t id       = clus->GetCellsAbsId()[ipos];
2812     
2813     //Recalibrate cell energy if needed
2814     Float_t amp = cells->GetCellAmplitude(id);
2815     GetCaloUtils()->RecalibrateCellAmplitude(amp,GetCalorimeter(), id);
2816     if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2817     {
2818       //printf("eCell a) %f",amp);
2819       amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
2820       //printf(", b)%f\n",amp);
2821     }
2822     
2823     if(amp > 0)fhPi0CellE       [nlm]->Fill(energy,amp);
2824     fhPi0CellEFrac   [nlm]->Fill(energy,amp/energy);
2825     fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2826     
2827     if     (id!=absId1 && id!=absId2)
2828     {
2829       if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2830       if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2831     }
2832
2833   }
2834
2835   //Recalculate shower shape for different W0
2836   if(GetCalorimeter()==kEMCAL)
2837   {
2838     Float_t l0org = clus->GetM02();
2839     Float_t l1org = clus->GetM20();
2840     Float_t dorg  = clus->GetDispersion();
2841     Float_t w0org =  GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2842     
2843     //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);
2844     
2845     for(Int_t iw = 0; iw < fSSWeightN; iw++)
2846     {
2847       GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2848       //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2849       //fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2850
2851       Float_t l0   = 0., l1   = 0.;
2852       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2853       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2854       
2855       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2856                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[0]);
2857       //Make sure that for pp fSSECellCut[0]=0.05 and for PbPb fSSECellCut[0]=0.15
2858
2859       
2860       fhM02WeightPi0[nlm][iw]->Fill(energy,l0);
2861       
2862       //printf("\t w0 %2.3f, l0 %2.3f\n",GetCaloUtils()->GetEMCALRecoUtils()->GetW0(),l0);
2863       
2864     } // w0 loop
2865     
2866     // Set the original values back
2867     clus->SetM02(l0org);
2868     clus->SetM20(l1org);
2869     clus->SetDispersion(dorg);
2870     GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2871
2872     for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2873     {
2874       Float_t l0   = 0., l1   = 0.;
2875       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2876       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2877       
2878       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2879                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2880       
2881       fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2882       
2883       //printf("\t min E cell %2.3f, l0 %2.3f\n",fSSECellCut[iec], l0);
2884       
2885     } // w0 loop
2886   
2887   }// EMCAL
2888 }
2889
2890 //____________________________________________________________________________________________
2891 void  AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2892                                                                     Int_t nMax, Int_t mcindex)
2893 {
2894   // Fill histograms related to track matching
2895     
2896   Float_t dZ  = cluster->GetTrackDz();
2897   Float_t dR  = cluster->GetTrackDx();
2898   Float_t en  = cluster->E();
2899   
2900   if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2901   {
2902     dR = 2000., dZ = 2000.;
2903     GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2904   }
2905   
2906   //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2907   
2908   if(TMath::Abs(dR) < 999)
2909   {
2910     if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2911     else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2912     else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2913     
2914     if(IsDataMC() && mcindex > 0 && mcindex < 7)
2915     {
2916       if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2917       else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2918       else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2919     }
2920     
2921     AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2922     
2923     Bool_t positive = kFALSE;
2924     if(track) positive = (track->Charge()>0);
2925
2926     if(track)
2927     {
2928       if(positive)
2929       {
2930         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2931         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2932         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2933         
2934         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2935         {
2936           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2937           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2938           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2939         }
2940       }
2941       else
2942       {
2943         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2944         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2945         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2946         
2947         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2948         {
2949           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2950           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2951           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2952         }
2953       }
2954       
2955     }// track exists
2956     
2957   }
2958 }
2959
2960 //_______________________________________________________________
2961 TObjString *  AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2962 {       
2963         //Save parameters used for analysis
2964   TString parList ; //this will be list of parameters used for this analysis.
2965   Int_t buffersize = 255;
2966   char onePar[buffersize] ;
2967   
2968   snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2969   parList+=onePar ;     
2970   
2971   snprintf(onePar,buffersize,"Calorimeter: %s\n",         GetCalorimeterString().Data()) ;
2972   parList+=onePar ;
2973   snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n",    GetCaloUtils()->GetLocalMaximaCutE()) ;
2974   parList+=onePar ;
2975   snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2976   parList+=onePar ;
2977   snprintf(onePar,buffersize,"fMinNCells =%d \n",        fMinNCells) ;
2978   parList+=onePar ;    
2979   snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n",    fMinBadDist) ;
2980   parList+=onePar ;  
2981   if(fFillSSWeightHisto)
2982   {
2983     snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2984     parList+=onePar ;
2985   }
2986   
2987   return new TObjString(parList) ;
2988   
2989 }
2990
2991 //________________________________________________________________
2992 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2993 {
2994   // Create histograms to be saved in output file and 
2995   // store them in outputContainer
2996   TList * outputContainer = new TList() ; 
2997   outputContainer->SetName("InsideClusterHistos") ;
2998   
2999   Int_t nptbins  = GetHistogramRanges()->GetHistoPtBins();           Float_t ptmax  = GetHistogramRanges()->GetHistoPtMax();           Float_t ptmin  = GetHistogramRanges()->GetHistoPtMin();
3000   Int_t ssbins   = GetHistogramRanges()->GetHistoShowerShapeBins();  Float_t ssmax  = GetHistogramRanges()->GetHistoShowerShapeMax();  Float_t ssmin  = GetHistogramRanges()->GetHistoShowerShapeMin();
3001   Int_t mbins    = GetHistogramRanges()->GetHistoMassBins();         Float_t mmax   = GetHistogramRanges()->GetHistoMassMax();         Float_t mmin   = GetHistogramRanges()->GetHistoMassMin();
3002   Int_t ncbins   = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t   ncmax  = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t   ncmin  = GetHistogramRanges()->GetHistoNClusterCellMin(); 
3003   Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();          Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();          Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
3004   Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();          Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();          Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
3005   
3006   Int_t   nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();          
3007   Float_t resetamax   = GetHistogramRanges()->GetHistoTrackResidualEtaMax();          
3008   Float_t resetamin   = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
3009   Int_t   nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();          
3010   Float_t resphimax   = GetHistogramRanges()->GetHistoTrackResidualPhiMax();          
3011   Float_t resphimin   = GetHistogramRanges()->GetHistoTrackResidualPhiMin();  
3012   
3013   Bool_t m02On   = GetCaloPID()->IsSplitShowerShapeCutOn();
3014   Bool_t asyOn   = GetCaloPID()->IsSplitAsymmetryCutOn();
3015   Bool_t splitOn = kFALSE;
3016   if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
3017      GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
3018      GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
3019   
3020   TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
3021   TString pname[] ={"","Photon","Conversion",     "Pi0",    "Pi0Conv",                  "Eta","Hadron"};
3022   TString snlm [] = {"1","2","N"};
3023
3024   TString sEBin[] = {"8 < #it{E} < 12 GeV","12 < #it{E} < 16 GeV", "16 < #it{E} < 20 GeV", "#it{E} > 20 GeV" };
3025
3026   Int_t n = 1;
3027   
3028   if(IsDataMC()) n = 7;
3029   
3030   Int_t nMaxBins = 10;
3031   
3032   TString sMatched[] = {"","Matched"};
3033   
3034   Int_t nMatched = 2;
3035   if(!fFillTMHisto) nMatched = 1;
3036   
3037   
3038   if(fFillNLMDiffCutHisto)
3039   {
3040     for(Int_t imatch = 0; imatch < nMatched; imatch++)
3041     {
3042       for(Int_t iE = 0; iE < fNLMSettingN; iE++)
3043       {
3044         for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
3045         {
3046           fhNLocMaxDiffCut[iE][iDiff][imatch]  = new TH2F(Form("hNLocMax_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3047                                                           Form("NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s", fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3048                                                           nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3049           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3050           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetXTitle("#it{E}_{cluster}");
3051           outputContainer->Add(fhNLocMaxDiffCut[iE][iDiff][imatch]) ;
3052           
3053           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]  = new TH2F(Form("hNLocMaxPi0_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3054                                                              Form("#pi^{0} NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s",
3055                                                                   fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3056                                                              nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3057           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3058           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetXTitle("#it{E}_{#pi^{0}}");
3059           outputContainer->Add(fhNLocMaxDiffCutPi0[iE][iDiff][imatch]) ;
3060           
3061           for(Int_t inlm = 0; inlm < 3; inlm++)
3062           {
3063             
3064             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxM02_MinE%d_MinDiffE%d_NLM%s%s",
3065                                                                           iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3066                                                                      Form("#lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3067                                                                           fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3068                                                                      nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3069             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3070             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3071             outputContainer->Add(fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3072             
3073             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxMass_MinE%d_MinDiffE%d_NLM%s%s",
3074                                                                            iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3075                                                                       Form("#it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3076                                                                            fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3077                                                                       nptbins,ptmin,ptmax, mbins,mmin,mmax);
3078             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3079             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3080             outputContainer->Add(fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3081             
3082             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0M02_MinE%d_MinDiffE%d_NLM%s%s",
3083                                                                              iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3084                                                                         Form("#pi^{0} #lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3085                                                                              fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3086                                                                         nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3087             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3088             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3089             outputContainer->Add(fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3090             
3091             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0Mass_MinE%d_MinDiffE%d_NLM%s%s",
3092                                                                               iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3093                                                                          Form("#pi^{0} #it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3094                                                                               fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3095                                                                          nptbins,ptmin,ptmax, mbins,mmin,mmax);
3096             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3097             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3098             outputContainer->Add(fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3099             
3100           }
3101           
3102         }
3103       }
3104     }
3105     return outputContainer;
3106   }
3107
3108   if(fCheckSplitDistToBad)
3109   {
3110     for(Int_t inlm = 0; inlm < 3; inlm++)
3111     {
3112       fhMassBadDistClose[inlm]  = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
3113                                            Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3114                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3115       fhMassBadDistClose[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3116       fhMassBadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3117       outputContainer->Add(fhMassBadDistClose[inlm]) ;
3118       
3119       fhM02BadDistClose[inlm]  = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
3120                                           Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3121                                           nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3122       fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
3123       fhM02BadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3124       outputContainer->Add(fhM02BadDistClose[inlm]) ;
3125       
3126       fhMassOnBorder[inlm]  = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
3127                                        Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3128                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3129       fhMassOnBorder[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3130       fhMassOnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3131       outputContainer->Add(fhMassOnBorder[inlm]) ;
3132       
3133       fhM02OnBorder[inlm]  = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
3134                                       Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3135                                       nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3136       fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
3137       fhM02OnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3138       outputContainer->Add(fhM02OnBorder[inlm]) ;
3139       
3140     }
3141   }
3142   
3143   for(Int_t i = 0; i < n; i++)
3144   {
3145     for(Int_t j = 0; j < nMatched; j++)
3146     {
3147       
3148       fhNLocMax[i][j]     = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3149                                      Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3150                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3151       fhNLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3152       fhNLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3153       outputContainer->Add(fhNLocMax[i][j]) ;
3154
3155       fhLM1NLocMax[i][j]     = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3156                                      Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3157                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3158       fhLM1NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3159       fhLM1NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3160       outputContainer->Add(fhLM1NLocMax[i][j]) ;
3161
3162       fhLM2NLocMax[i][j]     = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3163                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3164                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3165       fhLM2NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3166       fhLM2NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3167       outputContainer->Add(fhLM2NLocMax[i][j]) ;
3168       
3169       if(m02On)
3170       {
3171         fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3172                                          Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3173                                          nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3174         fhNLocMaxM02Cut[i][j]->SetYTitle("#it{N} maxima");
3175         fhNLocMaxM02Cut[i][j]->SetXTitle("#it{E} (GeV)");
3176         outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3177         
3178         fhLM1NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3179                                           Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3180                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3181         fhLM1NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3182         fhLM1NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3183         outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3184         
3185         fhLM2NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3186                                           Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3187                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3188         fhLM2NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3189         fhLM2NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3190         outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3191
3192       }
3193       
3194
3195       fhNLocMaxIdPi0[i][j]     = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3196                                      Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3197                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3198       fhNLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3199       fhNLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3200       outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3201
3202       
3203       fhLM1NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3204                                         Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3205                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3206       fhLM1NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3207       fhLM1NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3208       outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3209       
3210       fhLM2NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3211                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3212                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3213       fhLM2NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3214       fhLM2NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3215       outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3216       
3217
3218       
3219       
3220       fhSplitClusterENLocMax[i][j]     = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3221                                                   Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3222                                                   nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3223       fhSplitClusterENLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3224       fhSplitClusterENLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3225       outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3226       
3227       
3228       fhSplitClusterEPi0NLocMax[i][j]     = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3229                                                      Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3230                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3231       fhSplitClusterEPi0NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3232       fhSplitClusterEPi0NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3233       outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3234
3235       if(fFillNCellHisto)
3236       {
3237         fhNCellNLocMax1[i][j]  = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3238                                           Form("n cells vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3239                                           nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3240         fhNCellNLocMax1[i][j] ->SetYTitle("#it{N} cells");
3241         fhNCellNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3242         outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3243         
3244         fhNCellNLocMax2[i][j]     = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3245                                              Form("n cells vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3246                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3247         fhNCellNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3248         fhNCellNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3249         outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3250         
3251         
3252         fhNCellNLocMaxN[i][j]     = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3253                                              Form("n cells vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3254                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3255         fhNCellNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3256         fhNCellNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3257         outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3258       }
3259
3260       fhMassNLocMax1[i][j]  = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3261                                        Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3262                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3263       fhMassNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3264       fhMassNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3265       outputContainer->Add(fhMassNLocMax1[i][j]) ;   
3266       
3267       fhMassNLocMax2[i][j]  = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3268                                        Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3269                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3270       fhMassNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3271       fhMassNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3272       outputContainer->Add(fhMassNLocMax2[i][j]) ;   
3273       
3274       fhMassNLocMaxN[i][j]  = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3275                                        Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3276                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3277       fhMassNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3278       fhMassNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3279       outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3280
3281       fhMassSplitENLocMax1[i][j]  = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3282                                        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()),
3283                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3284       fhMassSplitENLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3285       fhMassSplitENLocMax1[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3286       outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3287       
3288       fhMassSplitENLocMax2[i][j]  = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3289                                        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()),
3290                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3291       fhMassSplitENLocMax2[i][j]->SetYTitle("#it{E} _{M} (GeV/#it{c}^{2})");
3292       fhMassSplitENLocMax2[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3293       outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3294       
3295       fhMassSplitENLocMaxN[i][j]  = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3296                                        Form("Invariant mass of splitted cluster with NLM>2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3297                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3298       fhMassSplitENLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3299       fhMassSplitENLocMaxN[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3300       outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3301       
3302       fhM02NLocMax1[i][j]     = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3303                                          Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3304                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3305       fhM02NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3306       fhM02NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3307       outputContainer->Add(fhM02NLocMax1[i][j]) ;
3308       
3309       fhM02NLocMax2[i][j]     = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3310                                          Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3311                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3312       fhM02NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3313       fhM02NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3314       outputContainer->Add(fhM02NLocMax2[i][j]) ;
3315       
3316       fhM02NLocMaxN[i][j]    = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3317                                         Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3318                                         nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3319       fhM02NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3320       fhM02NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3321       outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3322       
3323       fhAsymNLocMax1[i][j]  = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3324                                        Form("Asymmetry of #it{NLM}=1  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3325                                        nptbins,ptmin,ptmax,200,-1,1);
3326       fhAsymNLocMax1[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3327       fhAsymNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3328       outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3329       
3330       fhAsymNLocMax2[i][j]  = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3331                                        Form("Asymmetry of #it{NLM}=2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3332                                        nptbins,ptmin,ptmax,200,-1,1);
3333       fhAsymNLocMax2[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3334       fhAsymNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3335       outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3336       
3337       fhAsymNLocMaxN[i][j]  = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3338                                        Form("Asymmetry of NLM>2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3339                                        nptbins,ptmin,ptmax,200,-1,1);
3340       fhAsymNLocMaxN[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3341       fhAsymNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3342       outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3343       
3344       fhSplitEFractionNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3345                                                     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()),
3346                                                     nptbins,ptmin,ptmax,120,0,1.2);
3347       fhSplitEFractionNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3348       fhSplitEFractionNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3349       outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3350       
3351       fhSplitEFractionNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3352                                                     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()),
3353                                                     nptbins,ptmin,ptmax,120,0,1.2);
3354       fhSplitEFractionNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3355       fhSplitEFractionNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3356       outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3357       
3358       fhSplitEFractionNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3359                                                    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()),
3360                                                    nptbins,ptmin,ptmax,120,0,1.2);
3361       fhSplitEFractionNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3362       fhSplitEFractionNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3363       outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3364       
3365       if(i==0 && j==0 )
3366       {
3367         if(m02On)
3368         {
3369           fhMassM02CutNLocMax1  = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, M02 cut, no TM",
3370                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3371           fhMassM02CutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3372           fhMassM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3373           outputContainer->Add(fhMassM02CutNLocMax1) ;
3374           
3375           fhMassM02CutNLocMax2  = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, M02 cut, no TM",
3376                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3377           fhMassM02CutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3378           fhMassM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3379           outputContainer->Add(fhMassM02CutNLocMax2) ;
3380           
3381           fhMassM02CutNLocMaxN  = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3382                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3383           fhMassM02CutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3384           fhMassM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3385           outputContainer->Add(fhMassM02CutNLocMaxN) ;
3386           
3387           fhAsymM02CutNLocMax1  = new TH2F("hAsymM02CutNLocMax1","Asymmetry of #it{NLM}=1  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3388           fhAsymM02CutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3389           fhAsymM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3390           outputContainer->Add(fhAsymM02CutNLocMax1) ;
3391           
3392           fhAsymM02CutNLocMax2  = new TH2F("hAsymM02CutNLocMax2","Asymmetry of #it{NLM}=2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3393           fhAsymM02CutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3394           fhAsymM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3395           outputContainer->Add(fhAsymM02CutNLocMax2) ;
3396           
3397           fhAsymM02CutNLocMaxN  = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3398           fhAsymM02CutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3399           fhAsymM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3400           outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3401           
3402           if(splitOn)
3403           {
3404             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",
3405                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3406             fhMassSplitECutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3407             fhMassSplitECutNLocMax1->SetXTitle("#it{E} (GeV)");
3408             outputContainer->Add(fhMassSplitECutNLocMax1) ;
3409             
3410             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",
3411                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3412             fhMassSplitECutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3413             fhMassSplitECutNLocMax2->SetXTitle("#it{E} (GeV)");
3414             outputContainer->Add(fhMassSplitECutNLocMax2) ;
3415             
3416             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",
3417                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3418             fhMassSplitECutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3419             fhMassSplitECutNLocMaxN->SetXTitle("#it{E} (GeV)");
3420             outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3421           }
3422         }//m02on
3423         
3424         if(asyOn)
3425         {
3426           fhMassAsyCutNLocMax1  = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, Asy cut, no TM",
3427                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3428           fhMassAsyCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3429           fhMassAsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3430           outputContainer->Add(fhMassAsyCutNLocMax1) ;
3431           
3432           fhMassAsyCutNLocMax2  = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, Asy cut, no TM",
3433                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3434           fhMassAsyCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3435           fhMassAsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3436           outputContainer->Add(fhMassAsyCutNLocMax2) ;
3437           
3438           fhMassAsyCutNLocMaxN  = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3439                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3440           fhMassAsyCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3441           fhMassAsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3442           outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3443           
3444           fhM02AsyCutNLocMax1  = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, AsyCut, no TM",
3445                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3446           fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3447           fhM02AsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3448           outputContainer->Add(fhM02AsyCutNLocMax1) ;
3449           
3450           fhM02AsyCutNLocMax2  = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, AsyCut, no TM",
3451                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3452           fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3453           fhM02AsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3454           outputContainer->Add(fhM02AsyCutNLocMax2) ;
3455           
3456           fhM02AsyCutNLocMaxN  = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2  vs cluster Energy, AsyCut, no TM",
3457                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3458           fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3459           fhM02AsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3460           outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3461         }
3462         
3463         if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3464         {
3465           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)),
3466                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3467           fhMassEnCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3468           fhMassEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3469           outputContainer->Add(fhMassEnCutNLocMax1) ;
3470           
3471           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)),
3472                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3473           fhMassEnCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3474           fhMassEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3475           outputContainer->Add(fhMassEnCutNLocMax2) ;
3476           
3477           fhMassEnCutNLocMaxN  = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3478                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3479           fhMassEnCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3480           fhMassEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3481           outputContainer->Add(fhMassEnCutNLocMaxN) ;
3482           
3483           fhM02EnCutNLocMax1  = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3484                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3485           fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3486           fhM02EnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3487           outputContainer->Add(fhM02EnCutNLocMax1) ;
3488           
3489           fhM02EnCutNLocMax2  = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3490                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3491           fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3492           fhM02EnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3493           outputContainer->Add(fhM02EnCutNLocMax2) ;
3494           
3495           fhM02EnCutNLocMaxN  = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3496                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3497           fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3498           fhM02EnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3499           outputContainer->Add(fhM02EnCutNLocMaxN) ;
3500           
3501           fhAsymEnCutNLocMax1  = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3502                                           , nptbins,ptmin,ptmax,200,-1,1);
3503           fhAsymEnCutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3504           fhAsymEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3505           outputContainer->Add(fhAsymEnCutNLocMax1) ;
3506           
3507           fhAsymEnCutNLocMax2  = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3508                                           , nptbins,ptmin,ptmax,200,-1,1);
3509           fhAsymEnCutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3510           fhAsymEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3511           outputContainer->Add(fhAsymEnCutNLocMax2) ;
3512           
3513           fhAsymEnCutNLocMaxN  = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3514                                           , nptbins,ptmin,ptmax,200,-1,1);
3515           fhAsymEnCutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3516           fhAsymEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3517           outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3518
3519           fhSplitEFracEnCutNLocMax1  = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3520                                           , nptbins,ptmin,ptmax,120,0,1.2);
3521           fhSplitEFracEnCutNLocMax1->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3522           fhSplitEFracEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3523           outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3524           
3525           fhSplitEFracEnCutNLocMax2  = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3526                                           , nptbins,ptmin,ptmax,120,0,1.2);
3527           fhSplitEFracEnCutNLocMax2->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3528           fhSplitEFracEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3529           outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3530           
3531           fhSplitEFracEnCutNLocMaxN  = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3532                                           , nptbins,ptmin,ptmax,120,0,1.2);
3533           fhSplitEFracEnCutNLocMaxN->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3534           fhSplitEFracEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3535           outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3536         }
3537         
3538       } // no MC
3539       
3540       if(asyOn || m02On )
3541       {
3542         fhMassAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3543                                                      Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3544                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3545         fhMassAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3546         fhMassAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3547         outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3548         
3549         fhMassAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3550                                                      Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3551                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3552         fhMassAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3553         fhMassAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3554         outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3555         
3556         fhMassAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3557                                                      Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3558                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3559         fhMassAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3560         fhMassAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3561         outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3562
3563         fhMassSplitEAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3564                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3565                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3566         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3567         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3568         outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3569         
3570         fhMassSplitEAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3571                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3572                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3573         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3574         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3575         outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3576         
3577         fhMassSplitEAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3578                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3579                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3580         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3581         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3582         outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3583
3584         
3585         fhSplitEFractionAfterCutsNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3586                                                                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()),
3587                                                                nptbins,ptmin,ptmax,120,0,1.2);
3588         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3589         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3590         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3591         
3592         fhSplitEFractionAfterCutsNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3593                                                                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()),
3594                                                                nptbins,ptmin,ptmax,120,0,1.2);
3595         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3596         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3597         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3598         
3599         fhSplitEFractionAfterCutsNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3600                                                               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()),
3601                                                               nptbins,ptmin,ptmax,120,0,1.2);
3602         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3603         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3604         outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3605       }
3606       
3607       fhMassM02NLocMax1[i][j]  = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3608                                           Form("Invariant mass of splitted cluster with #it{NLM}=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3609                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3610       fhMassM02NLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3611       fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3612       outputContainer->Add(fhMassM02NLocMax1[i][j]) ;   
3613       
3614       fhMassM02NLocMax2[i][j]  = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3615                                           Form("Invariant mass of splitted cluster with #it{NLM}=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3616                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3617       fhMassM02NLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3618       fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3619       outputContainer->Add(fhMassM02NLocMax2[i][j]) ;   
3620       
3621       fhMassM02NLocMaxN[i][j]  = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3622                                           Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3623                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3624       fhMassM02NLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3625       fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3626       outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;   
3627       
3628       if(fFillSSExtraHisto)
3629       {
3630         fhMassDispEtaNLocMax1[i][j]  = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3631                                                 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()),
3632                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3633         fhMassDispEtaNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3634         fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3635         outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;   
3636         
3637         fhMassDispEtaNLocMax2[i][j]  = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3638                                                 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()),
3639                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3640         fhMassDispEtaNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3641         fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3642         outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;   
3643         
3644         fhMassDispEtaNLocMaxN[i][j]  = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3645                                                 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3646                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3647         fhMassDispEtaNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3648         fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3649         outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;   
3650         
3651         fhMassDispPhiNLocMax1[i][j]  = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3652                                                 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3653                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3654         fhMassDispPhiNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3655         fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3656         outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;   
3657         
3658         fhMassDispPhiNLocMax2[i][j]  = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3659                                                 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3660                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3661         fhMassDispPhiNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3662         fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3663         outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;   
3664         
3665         fhMassDispPhiNLocMaxN[i][j]  = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3666                                                 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3667                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3668         fhMassDispPhiNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3669         fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3670         outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;   
3671         
3672         fhMassDispAsyNLocMax1[i][j]  = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3673                                                 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()),
3674                                                 200,-1,1,mbins,mmin,mmax); 
3675         fhMassDispAsyNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3676         fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3677         outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;   
3678         
3679         fhMassDispAsyNLocMax2[i][j]  = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3680                                                 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()),
3681                                                 200,-1,1,mbins,mmin,mmax); 
3682         fhMassDispAsyNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3683         fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3684         outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;   
3685         
3686         fhMassDispAsyNLocMaxN[i][j]  = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3687                                                 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()),
3688                                                 200,-1,1,mbins,mmin,mmax); 
3689         fhMassDispAsyNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3690         fhMassDispAsyNLocMaxN[i][j]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3691         outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;   
3692       }
3693       
3694       
3695       if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3696       {
3697         fhMCGenFracNLocMax1[i][j]     = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3698                                                  Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3699                                                  nptbins,ptmin,ptmax,200,0,2); 
3700         fhMCGenFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3701         fhMCGenFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3702         outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ; 
3703         
3704         fhMCGenFracNLocMax2[i][j]     = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3705                                                  Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3706                                                  nptbins,ptmin,ptmax,200,0,2); 
3707         fhMCGenFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3708         fhMCGenFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3709         outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ; 
3710         
3711         fhMCGenFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3712                                                 Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3713                                                 nptbins,ptmin,ptmax,200,0,2); 
3714         fhMCGenFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3715         fhMCGenFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3716         outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ; 
3717         
3718         fhMCGenFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3719                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3720                                                           nptbins,ptmin,ptmax,200,0,2);
3721         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3722         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3723         outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3724         
3725         fhMCGenFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3726                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3727                                                           nptbins,ptmin,ptmax,200,0,2);
3728         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3729         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3730         outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3731         
3732         fhMCGenFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3733                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3734                                                          nptbins,ptmin,ptmax,200,0,2);
3735         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3736         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3737         outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3738         
3739         
3740         fhMCGenSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3741                                                        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()),
3742                                                        nptbins,ptmin,ptmax,200,0,2); 
3743         fhMCGenSplitEFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3744         fhMCGenSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3745         outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ; 
3746         
3747         fhMCGenSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3748                                                        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()),
3749                                                        nptbins,ptmin,ptmax,200,0,2); 
3750         fhMCGenSplitEFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3751         fhMCGenSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3752         outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ; 
3753         
3754         fhMCGenSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3755                                                       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()),
3756                                                       nptbins,ptmin,ptmax,200,0,2); 
3757         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3758         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3759         outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ; 
3760         
3761         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3762                                                                 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()),
3763                                                                 nptbins,ptmin,ptmax,200,0,2);
3764         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3765         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3766         outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3767         
3768         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3769                                                                 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()),
3770                                                                 nptbins,ptmin,ptmax,200,0,2);
3771         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3772         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3773         outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3774         
3775         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3776                                                                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()),
3777                                                                nptbins,ptmin,ptmax,200,0,2);
3778         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3779         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3780         outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3781         
3782         fhMCGenEFracvsSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3783                                                               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()),
3784                                                               200,0,2,200,0,2); 
3785         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3786         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3787         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ; 
3788         
3789         fhMCGenEFracvsSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3790                                                               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()),
3791                                                               200,0,2,200,0,2); 
3792         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3793         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3794         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ; 
3795         
3796         
3797         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3798                                                              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()),
3799                                                              200,0,2,200,0,2); 
3800         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3801         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3802         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ; 
3803         
3804         
3805         fhMCGenEvsSplitENLocMax1[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3806                                                       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()),
3807                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3808         fhMCGenEvsSplitENLocMax1[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3809         fhMCGenEvsSplitENLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3810         outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ; 
3811         
3812         fhMCGenEvsSplitENLocMax2[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3813                                                       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()),
3814                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3815         fhMCGenEvsSplitENLocMax2[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3816         fhMCGenEvsSplitENLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3817         outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ; 
3818         
3819         
3820         fhMCGenEvsSplitENLocMaxN[i][j]    = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3821                                                      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()),
3822                                                      nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3823         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3824         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3825         outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ; 
3826       }
3827           
3828       // Histograms after cluster identification
3829       
3830       
3831       // Pi0 //
3832       
3833       fhM02Pi0NLocMax1[i][j]     = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3834                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3835                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3836       fhM02Pi0NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3837       fhM02Pi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3838       outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3839       
3840       fhM02Pi0NLocMax2[i][j]     = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3841                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 2",ptype[i].Data()),
3842                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3843       fhM02Pi0NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3844       fhM02Pi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3845       outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ; 
3846       
3847       fhM02Pi0NLocMaxN[i][j]     = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3848                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3849                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3850       fhM02Pi0NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3851       fhM02Pi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3852       outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ; 
3853       
3854       fhMassPi0NLocMax1[i][j]     = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3855                                              Form("Mass vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3856                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3857       fhMassPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3858       fhMassPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3859       outputContainer->Add(fhMassPi0NLocMax1[i][j]) ; 
3860       
3861       fhMassPi0NLocMax2[i][j]     = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3862                                              Form("Mass vs #it{E} , %s, for NLM = 2",ptype[i].Data()),
3863                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3864       fhMassPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3865       fhMassPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3866       outputContainer->Add(fhMassPi0NLocMax2[i][j]) ; 
3867       
3868       fhMassPi0NLocMaxN[i][j]     = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3869                                              Form("Mass vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3870                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3871       fhMassPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3872       fhMassPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3873       outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ; 
3874
3875       fhMassSplitEPi0NLocMax1[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3876                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM = 1",ptype[i].Data()),
3877                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3878       fhMassSplitEPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3879       fhMassSplitEPi0NLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3880       outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3881       
3882       fhMassSplitEPi0NLocMax2[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3883                                              Form("Mass vs #it{E}_{1}+#it{E}_{2} , %s, for NLM = 2",ptype[i].Data()),
3884                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3885       fhMassSplitEPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3886       fhMassSplitEPi0NLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3887       outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3888       
3889       fhMassSplitEPi0NLocMaxN[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3890                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM > 2",ptype[i].Data()),
3891                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3892       fhMassSplitEPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3893       fhMassSplitEPi0NLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3894       outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3895       
3896       fhAsyPi0NLocMax1[i][j]     = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3897                                             Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3898                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3899       fhAsyPi0NLocMax1[i][j]   ->SetYTitle("#it{A}");
3900       fhAsyPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3901       outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ; 
3902       
3903       fhAsyPi0NLocMax2[i][j]     = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3904                                             Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3905                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3906       fhAsyPi0NLocMax2[i][j]   ->SetYTitle("#it{A}");
3907       fhAsyPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3908       outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ; 
3909       
3910       fhAsyPi0NLocMaxN[i][j]     = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3911                                             Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3912                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3913       fhAsyPi0NLocMaxN[i][j]   ->SetYTitle("#it{A}");
3914       fhAsyPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3915       outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ; 
3916       
3917       if(fFillNCellHisto)
3918       {
3919         fhNCellPi0NLocMax1[i][j]     = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3920                                                 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3921                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3922         fhNCellPi0NLocMax1[i][j]   ->SetYTitle("#it{N} cells");
3923         fhNCellPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3924         outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3925         
3926         fhNCellPi0NLocMax2[i][j]     = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3927                                                 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3928                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3929         fhNCellPi0NLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3930         fhNCellPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3931         outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3932         
3933         fhNCellPi0NLocMaxN[i][j]     = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3934                                                 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3935                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3936         fhNCellPi0NLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3937         fhNCellPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3938         outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3939       }
3940       
3941       // Eta
3942     
3943       if(fFillIdEtaHisto)
3944       {
3945         fhM02EtaNLocMax1[i][j]     = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3946                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3947                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3948         fhM02EtaNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3949         fhM02EtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3950         outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3951         
3952         
3953         fhM02EtaNLocMax2[i][j]     = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3954                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3955                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3956         fhM02EtaNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3957         fhM02EtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3958         outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3959         
3960         fhM02EtaNLocMaxN[i][j]     = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3961                                               Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3962                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3963         fhM02EtaNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3964         fhM02EtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3965         outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3966         
3967         fhMassEtaNLocMax1[i][j]     = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3968                                                Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3969                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3970         fhMassEtaNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3971         fhMassEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3972         outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3973         
3974         fhMassEtaNLocMax2[i][j]     = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3975                                                Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3976                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3977         fhMassEtaNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3978         fhMassEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3979         outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3980         
3981         fhMassEtaNLocMaxN[i][j]     = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3982                                                Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3983                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3984         fhMassEtaNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3985         fhMassEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3986         outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3987         
3988         fhAsyEtaNLocMax1[i][j]     = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3989                                               Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3990                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3991         fhAsyEtaNLocMax1[i][j]   ->SetYTitle("#it{A}");
3992         fhAsyEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3993         outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3994         
3995         fhAsyEtaNLocMax2[i][j]     = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3996                                               Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3997                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3998         fhAsyEtaNLocMax2[i][j]   ->SetYTitle("#it{A}");
3999         fhAsyEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4000         outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
4001         
4002         fhAsyEtaNLocMaxN[i][j]     = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4003                                               Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4004                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4005         fhAsyEtaNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4006         fhAsyEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4007         outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
4008         
4009         if(fFillNCellHisto)
4010         {
4011           fhNCellEtaNLocMax1[i][j]     = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4012                                                   Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
4013                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4014           fhNCellEtaNLocMax1[i][j]   ->SetYTitle("#it{N} cells");
4015           fhNCellEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4016           outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
4017           
4018           fhNCellEtaNLocMax2[i][j]     = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4019                                                   Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
4020                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4021           fhNCellEtaNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
4022           fhNCellEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4023           outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
4024           
4025           fhNCellEtaNLocMaxN[i][j]     = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4026                                                   Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
4027                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4028           fhNCellEtaNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
4029           fhNCellEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4030           outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
4031           
4032         }
4033       }
4034       
4035       if(fFillIdConvHisto)
4036       {
4037         fhM02ConNLocMax1[i][j]    = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4038                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
4039                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4040         fhM02ConNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4041         fhM02ConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4042         outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
4043         
4044         fhM02ConNLocMax2[i][j]    = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4045                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
4046                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4047         fhM02ConNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4048         fhM02ConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4049         outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
4050         
4051         fhM02ConNLocMaxN[i][j]    = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4052                                              Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
4053                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4054         fhM02ConNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4055         fhM02ConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4056         outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
4057         
4058         
4059         fhMassConNLocMax1[i][j]    = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4060                                               Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
4061                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4062         fhMassConNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4063         fhMassConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4064         outputContainer->Add(fhMassConNLocMax1[i][j]) ;
4065         
4066         fhMassConNLocMax2[i][j]    = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4067                                               Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
4068                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4069         fhMassConNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4070         fhMassConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4071         outputContainer->Add(fhMassConNLocMax2[i][j]) ;
4072         
4073         fhMassConNLocMaxN[i][j]    = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4074                                               Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
4075                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4076         fhMassConNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4077         fhMassConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4078         outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
4079         
4080         fhAsyConNLocMax1[i][j]    = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4081                                              Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
4082                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4083         fhAsyConNLocMax1[i][j]   ->SetYTitle("#it{A}");
4084         fhAsyConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4085         outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
4086         
4087         fhAsyConNLocMax2[i][j]    = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4088                                              Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
4089                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4090         fhAsyConNLocMax2[i][j]   ->SetYTitle("#it{A}");
4091         fhAsyConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4092         outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
4093         
4094         fhAsyConNLocMaxN[i][j]    = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4095                                              Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4096                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4097         fhAsyConNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4098         fhAsyConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4099         outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
4100         
4101       }
4102       
4103     } // matched, not matched
4104     
4105     if(fFillEbinHisto)
4106     {
4107       for(Int_t j = 0; j < 4; j++)
4108       {
4109         
4110         fhMassSplitEFractionNLocMax1Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
4111                                                            Form("Invariant mass of 2 highest energy cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4112                                                            120,0,1.2,mbins,mmin,mmax);
4113         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4114         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4115         outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
4116         
4117         fhMassSplitEFractionNLocMax2Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
4118                                                            Form("Invariant mass of 2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4119                                                            120,0,1.2,mbins,mmin,mmax);
4120         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4121         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4122         outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
4123         
4124         fhMassSplitEFractionNLocMaxNEbin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
4125                                                            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()),
4126                                                            120,0,1.2,mbins,mmin,mmax);
4127         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4128         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4129         outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
4130         
4131         if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
4132         {
4133           fhMCGenFracNLocMaxEbin[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
4134                                                    Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4135                                                    200,0,2,nMaxBins,0,nMaxBins);
4136           fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("#it{NLM}");
4137           fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4138           outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
4139           
4140           fhMCGenFracNLocMaxEbinMatched[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
4141                                                           Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
4142                                                           200,0,2,nMaxBins,0,nMaxBins);
4143           fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("#it{NLM}");
4144           fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4145           outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
4146           
4147           fhMassMCGenFracNLocMax1Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4148                                                         Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4149                                                         200,0,2,mbins,mmin,mmax);
4150           fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4151           fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4152           outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
4153           
4154           fhMassMCGenFracNLocMax2Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4155                                                         Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4156                                                         200,0,2,mbins,mmin,mmax);
4157           fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4158           fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4159           outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
4160           
4161           fhMassMCGenFracNLocMaxNEbin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4162                                                         Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4163                                                         200,0,2,mbins,mmin,mmax);
4164           fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4165           fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4166           outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
4167           
4168           fhM02MCGenFracNLocMax1Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4169                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4170                                                           200,0,2,ssbins,ssmin,ssmax);
4171           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4172           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4173           outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4174           
4175           fhM02MCGenFracNLocMax2Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4176                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4177                                                           200,0,2,ssbins,ssmin,ssmax);
4178           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4179           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4180           outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4181           
4182           fhM02MCGenFracNLocMaxNEbin[i][j]    = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4183                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4184                                                          200,0,2,ssbins,ssmin,ssmax);
4185           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4186           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4187           outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4188         }
4189       }
4190     }
4191   } // MC particle list
4192   
4193   if(fFillHighMultHisto)
4194   {
4195     // E vs centrality
4196
4197     fhCentralityPi0NLocMax1  = new TH2F("hCentralityPi0NLocMax1",
4198                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4199                                         nptbins,ptmin,ptmax,100,0,100);
4200     fhCentralityPi0NLocMax1->SetYTitle("#it{Centrality}");
4201     fhCentralityPi0NLocMax1->SetXTitle("#it{E} (GeV)");
4202     outputContainer->Add(fhCentralityPi0NLocMax1) ;
4203     
4204     fhCentralityPi0NLocMax2  = new TH2F("hCentralityPi0NLocMax2",
4205                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4206                                         nptbins,ptmin,ptmax,100,0,100);
4207     fhCentralityPi0NLocMax2->SetYTitle("#it{Centrality}");
4208     fhCentralityPi0NLocMax2->SetXTitle("#it{E} (GeV)");
4209     outputContainer->Add(fhCentralityPi0NLocMax2) ;
4210     
4211     fhCentralityPi0NLocMaxN  = new TH2F("hCentralityPi0NLocMaxN",
4212                                         "E vs Centrality, selected pi0 cluster with NLM>1",
4213                                         nptbins,ptmin,ptmax,100,0,100);
4214     fhCentralityPi0NLocMaxN->SetYTitle("#it{Centrality}");
4215     fhCentralityPi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4216     outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4217     
4218     if(fFillIdEtaHisto)
4219     {
4220       fhCentralityEtaNLocMax1  = new TH2F("hCentralityEtaNLocMax1",
4221                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4222                                           nptbins,ptmin,ptmax,100,0,100);
4223       fhCentralityEtaNLocMax1->SetYTitle("#it{Centrality}");
4224       fhCentralityEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4225       outputContainer->Add(fhCentralityEtaNLocMax1) ;
4226       
4227       fhCentralityEtaNLocMax2  = new TH2F("hCentralityEtaNLocMax2",
4228                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4229                                           nptbins,ptmin,ptmax,100,0,100);
4230       fhCentralityEtaNLocMax2->SetYTitle("#it{Centrality}");
4231       fhCentralityEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4232       outputContainer->Add(fhCentralityEtaNLocMax2) ;
4233       
4234       fhCentralityEtaNLocMaxN  = new TH2F("hCentralityEtaNLocMaxN",
4235                                           "E vs Centrality, selected pi0 cluster with NLM>1",
4236                                           nptbins,ptmin,ptmax,100,0,100);
4237       fhCentralityEtaNLocMaxN->SetYTitle("#it{Centrality}");
4238       fhCentralityEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4239       outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4240     }
4241     
4242     // E vs Event plane angle
4243     
4244     fhEventPlanePi0NLocMax1  = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4245                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4246     fhEventPlanePi0NLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4247     fhEventPlanePi0NLocMax1->SetXTitle("#it{E} (GeV)");
4248     outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4249     
4250     fhEventPlanePi0NLocMax2  = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4251                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4252     fhEventPlanePi0NLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4253     fhEventPlanePi0NLocMax2->SetXTitle("#it{E} (GeV)");
4254     outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4255     
4256     fhEventPlanePi0NLocMaxN  = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4257                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4258     fhEventPlanePi0NLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4259     fhEventPlanePi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4260     outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4261     
4262     if(fFillIdEtaHisto)
4263     {
4264       fhEventPlaneEtaNLocMax1  = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4265                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4266       fhEventPlaneEtaNLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4267       fhEventPlaneEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4268       outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4269       
4270       fhEventPlaneEtaNLocMax2  = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4271                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4272       fhEventPlaneEtaNLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4273       fhEventPlaneEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4274       outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4275       
4276       fhEventPlaneEtaNLocMaxN  = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4277                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4278       fhEventPlaneEtaNLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4279       fhEventPlaneEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4280       outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4281     }
4282   }
4283   
4284   if(fFillEbinHisto)
4285   {
4286     for(Int_t i = 0; i < 4; i++)
4287     {
4288       fhMassM02NLocMax1Ebin[i]  = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4289                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4290                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4291       fhMassM02NLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4292       fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4293       outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;   
4294       
4295       fhMassM02NLocMax2Ebin[i]  = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4296                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4297                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4298       fhMassM02NLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4299       fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4300       outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;   
4301       
4302       fhMassM02NLocMaxNEbin[i]  = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4303                                            Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4304                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4305       fhMassM02NLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4306       fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4307       outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ; 
4308       
4309       
4310       fhMassAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4311                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=1, %s",sEBin[i].Data()),
4312                                            200,-1,1,mbins,mmin,mmax);
4313       fhMassAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4314       fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4315       outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4316       
4317       fhMassAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4318                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=2, %s",sEBin[i].Data()),
4319                                            200,-1,1,mbins,mmin,mmax);
4320       fhMassAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4321       fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4322       outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4323       
4324       fhMassAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4325                                            Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4326                                            200,-1,1,mbins,mmin,mmax);
4327       fhMassAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4328       fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4329       outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4330       
4331       
4332       if(IsDataMC() && fFillMCHisto)
4333       {
4334         fhMCAsymM02NLocMax1MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4335                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4336                                                     ssbins,ssmin,ssmax,100,0,1);
4337         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4338         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4339         outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4340         
4341         fhMCAsymM02NLocMax2MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4342                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4343                                                     ssbins,ssmin,ssmax,100,0,1);
4344         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4345         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4346         outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4347         
4348         fhMCAsymM02NLocMaxNMCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4349                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4350                                                     ssbins,ssmin,ssmax,100,0,1);
4351         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4352         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4353         outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;    
4354         
4355         
4356         fhAsyMCGenRecoNLocMax1EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4357                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=1, %s",sEBin[i].Data()),
4358                                                      200,-1,1,200,-1,1);
4359         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4360         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("#it{A}");
4361         outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4362         
4363         fhAsyMCGenRecoNLocMax2EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4364                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=2, %s",sEBin[i].Data()),
4365                                                      200,-1,1,200,-1,1);
4366         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4367         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("#it{A}");
4368         outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4369         
4370         fhAsyMCGenRecoNLocMaxNEbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4371                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4372                                                      200,-1,1,200,-1,1);
4373         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4374         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("#it{A}");
4375         outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4376       }
4377       
4378       if(fFillSSExtraHisto)
4379       {
4380         fhMassDispEtaNLocMax1Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4381                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4382                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4383         fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4384         fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4385         outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;   
4386         
4387         fhMassDispEtaNLocMax2Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4388                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4389                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4390         fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4391         fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4392         outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;   
4393         
4394         fhMassDispEtaNLocMaxNEbin[i]  = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4395                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4396                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4397         fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4398         fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4399         outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;   
4400         
4401         fhMassDispPhiNLocMax1Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4402                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4403                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4404         fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4405         fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4406         outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;   
4407         
4408         fhMassDispPhiNLocMax2Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4409                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4410                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4411         fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4412         fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4413         outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;   
4414         
4415         fhMassDispPhiNLocMaxNEbin[i]  = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4416                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4417                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4418         fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4419         fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4420         outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;   
4421         
4422         fhMassDispAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4423                                                  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()),
4424                                                  200,-1,1,mbins,mmin,mmax); 
4425         fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4426         fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4427         outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;   
4428         
4429         fhMassDispAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4430                                                  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()),
4431                                                  200,-1,1,mbins,mmin,mmax); 
4432         fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4433         fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4434         outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;   
4435         
4436         fhMassDispAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4437                                                  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()),
4438                                                  200,-1,1,mbins,mmin,mmax); 
4439         fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4440         fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4441         outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;   
4442       }
4443     }
4444   }
4445   
4446   if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4447   {
4448     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4449                                                            "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 MC Pi0, after M02 and Asym cut",
4450                                                            nptbins,ptmin,ptmax,200,0,2);
4451     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4452     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4453     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4454     
4455     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4456                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 MC Pi0, after M02 and Asym cut",
4457                                                           nptbins,ptmin,ptmax,200,0,2);
4458     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4459     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetXTitle("#it{E} (GeV)");
4460     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4461     
4462     
4463     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4464                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 MC Pi0, after M02 and Asym cut",
4465                                                           nptbins,ptmin,ptmax,200,0,2);
4466     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4467     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetXTitle("#it{E} (GeV)");
4468     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4469     
4470     fhMCGenFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4471                                                      "#it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 1 MC Pi0, after M02 and Asym cut",
4472                                                      nptbins,ptmin,ptmax,200,0,2);
4473     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4474     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4475     outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4476     
4477     fhMCGenFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4478                                                     " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 2 MC Pi0, after M02 and Asym cut",
4479                                                     nptbins,ptmin,ptmax,200,0,2);
4480     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4481     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetXTitle("#it{E} (GeV)");
4482     outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4483     
4484     
4485     fhMCGenFracAfterCutsNLocMaxNMCPi0   = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4486                                                    " #it{E}_{gen} / #it{E}_{reco}  vs #it{E}_{reco} for N max  > 2 MC Pi0, after M02 and Asym cut",
4487                                                    nptbins,ptmin,ptmax,200,0,2);
4488     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4489     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetXTitle("#it{E} (GeV)");
4490     outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4491     
4492   }
4493   
4494   if(fFillTMResidualHisto && fFillTMHisto)
4495   {
4496     for(Int_t i = 0; i < n; i++)
4497     {  
4498       
4499       fhTrackMatchedDEtaNLocMax1[i]  = new TH2F
4500       (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4501        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4502        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4503       fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4504       fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4505       
4506       fhTrackMatchedDPhiNLocMax1[i]  = new TH2F
4507       (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4508        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4509        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4510       fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4511       fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4512       
4513       outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ; 
4514       outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4515       
4516       fhTrackMatchedDEtaNLocMax2[i]  = new TH2F
4517       (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4518        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4519        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4520       fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4521       fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4522       
4523       fhTrackMatchedDPhiNLocMax2[i]  = new TH2F
4524       (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4525        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4526        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4527       fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4528       fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4529       
4530       outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ; 
4531       outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4532       
4533       fhTrackMatchedDEtaNLocMaxN[i]  = new TH2F
4534       (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4535        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4536        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4537       fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4538       fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4539       
4540       fhTrackMatchedDPhiNLocMaxN[i]  = new TH2F
4541       (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4542        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4543        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4544       fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4545       fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4546       
4547       outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ; 
4548       outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4549       
4550       fhTrackMatchedDEtaNLocMax1Pos[i]  = new TH2F
4551       (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4552        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4553        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4554       fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4555       fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4556       
4557       fhTrackMatchedDPhiNLocMax1Pos[i]  = new TH2F
4558       (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4559        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4560        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4561       fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4562       fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4563       
4564       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4565       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4566       
4567       fhTrackMatchedDEtaNLocMax2Pos[i]  = new TH2F
4568       (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4569        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4570        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4571       fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4572       fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4573       
4574       fhTrackMatchedDPhiNLocMax2Pos[i]  = new TH2F
4575       (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4576        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4577        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4578       fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4579       fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4580       
4581       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4582       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4583       
4584       fhTrackMatchedDEtaNLocMaxNPos[i]  = new TH2F
4585       (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4586        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4587        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4588       fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4589       fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4590       
4591       fhTrackMatchedDPhiNLocMaxNPos[i]  = new TH2F
4592       (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4593        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4594        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4595       fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4596       fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4597       
4598       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4599       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4600       
4601       fhTrackMatchedDEtaNLocMax1Neg[i]  = new TH2F
4602       (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4603        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4604        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4605       fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4606       fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4607       
4608       fhTrackMatchedDPhiNLocMax1Neg[i]  = new TH2F
4609       (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4610        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4611        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4612       fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4613       fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4614       
4615       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4616       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4617       
4618       fhTrackMatchedDEtaNLocMax2Neg[i]  = new TH2F
4619       (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4620        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4621        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4622       fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4623       fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4624       
4625       fhTrackMatchedDPhiNLocMax2Neg[i]  = new TH2F
4626       (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4627        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4628        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4629       fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4630       fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4631       
4632       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4633       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4634       
4635       fhTrackMatchedDEtaNLocMaxNNeg[i]  = new TH2F
4636       (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4637        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4638        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4639       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4640       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4641       
4642       fhTrackMatchedDPhiNLocMaxNNeg[i]  = new TH2F
4643       (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4644        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4645        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4646       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4647       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4648       
4649       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4650       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4651       
4652     }
4653   }
4654   
4655   if(fFillAngleHisto)
4656   {
4657     for(Int_t i = 0; i < n; i++)
4658     {
4659       for(Int_t j = 0; j < nMatched; j++)
4660       {
4661         
4662         fhAnglePairNLocMax1[i][j]  = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4663                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4664                                            nptbins,ptmin,ptmax,200,0,0.2);
4665         fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4666         fhAnglePairNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4667         outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4668         
4669         fhAnglePairNLocMax2[i][j]  = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4670                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4671                                            nptbins,ptmin,ptmax,200,0,0.2);
4672         fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4673         fhAnglePairNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4674         outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4675         
4676         fhAnglePairNLocMaxN[i][j]  = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4677                                            Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4678                                            nptbins,ptmin,ptmax,200,0,0.2);
4679         fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4680         fhAnglePairNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4681         outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4682         
4683         if(asyOn || m02On)
4684         {
4685           fhAnglePairAfterCutsNLocMax1[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4686                                                 Form("Opening angle split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4687                                                 nptbins,ptmin,ptmax,200,0,0.2);
4688           fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4689           fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4690           outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4691           
4692           fhAnglePairAfterCutsNLocMax2[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4693                                                 Form("Opening angle split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4694                                                 nptbins,ptmin,ptmax,200,0,0.2);
4695           fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4696           fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4697           outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4698           
4699           fhAnglePairAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4700                                                 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4701                                                 nptbins,ptmin,ptmax,200,0,0.2);
4702           fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4703           fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4704           outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4705
4706         }
4707         
4708         fhAnglePairPi0NLocMax1[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4709                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4710                                               nptbins,ptmin,ptmax,200,0,0.2);
4711         fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4712         fhAnglePairPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4713         outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4714         
4715         fhAnglePairPi0NLocMax2[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4716                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4717                                               nptbins,ptmin,ptmax,200,0,0.2);
4718         fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4719         fhAnglePairPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4720         outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4721         
4722         fhAnglePairPi0NLocMaxN[i][j]  = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4723                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4724                                               nptbins,ptmin,ptmax,200,0,0.2);
4725         fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4726         fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4727         outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4728         
4729         fhAnglePairMassNLocMax1[i][j]  = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4730                                                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()),
4731                                                mbins,mmin,mmax,200,0,0.2);
4732         fhAnglePairMassNLocMax1[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4733         fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4734         outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4735         
4736         
4737         fhAnglePairMassNLocMax2[i][j]  = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4738                                                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()),
4739                                                mbins,mmin,mmax,200,0,0.2);
4740         fhAnglePairMassNLocMax2[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4741         fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4742         outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4743         
4744         fhAnglePairMassNLocMaxN[i][j]  = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4745                                                Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4746                                                mbins,mmin,mmax,200,0,0.2);
4747         fhAnglePairMassNLocMaxN[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4748         fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4749         outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;  
4750
4751         
4752         fhAnglePairM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4753                                                   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()),
4754                                                   ssbins,ssmin,ssmax,200,0,0.2);
4755         fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4756         fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4757         outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4758         
4759         
4760         fhAnglePairM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4761                                                   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()),
4762                                                   ssbins,ssmin,ssmax,200,0,0.2);
4763         fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4764         fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4765         outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4766         
4767         fhAnglePairM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4768                                                   Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4769                                                   ssbins,ssmin,ssmax,200,0,0.2);
4770         fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4771         fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4772         outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4773
4774         fhAnglePairOverM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4775                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4776                                               nptbins,ptmin,ptmax,200,0,0.2);
4777         fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4778         fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4779         outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4780         
4781         fhAnglePairOverM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4782                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4783                                               nptbins,ptmin,ptmax,200,0,0.2);
4784         fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4785         fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4786         outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4787         
4788         fhAnglePairOverM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4789                                               Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4790                                               nptbins,ptmin,ptmax,200,0,0.2);
4791         fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4792         fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4793         outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4794
4795         
4796         fhAnglePairOverM02NLocMax1Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4797                                                      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()),
4798                                                      nptbins,ptmin,ptmax,200,0,0.2);
4799         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4800         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4801         outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4802         
4803         fhAnglePairOverM02NLocMax2Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4804                                                      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()),
4805                                                      nptbins,ptmin,ptmax,200,0,0.2);
4806         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4807         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4808         outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4809         
4810         fhAnglePairOverM02NLocMaxNOverlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4811                                                      Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4812                                                      nptbins,ptmin,ptmax,200,0,0.2);
4813         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4814         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("#it{E} (GeV)");
4815         outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4816
4817         
4818       }
4819     }
4820     
4821     if(IsDataMC())
4822     {
4823       fhAnglePairPrimPi0RecoNLocMax1  = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4824                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=1",
4825                                                  nptbins,ptmin,ptmax,300,0,3);
4826       fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4827       fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("#it{E} (GeV)");
4828       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4829
4830       fhAnglePairPrimPi0RecoNLocMax2  = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4831                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=2",
4832                                                  nptbins,ptmin,ptmax,300,0,3);
4833       fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4834       fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("#it{E} (GeV)");
4835       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4836
4837       fhAnglePairPrimPi0RecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4838                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4839                                                  nptbins,ptmin,ptmax,300,0,3);
4840       fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4841       fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("#it{E} (GeV)");
4842       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4843
4844       
4845       fhAnglePairPrimPi0vsRecoNLocMax1  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4846                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, #it{NLM}=1",
4847                                                    200,0,0.2,200,0,0.2);
4848       fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4849       fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4850       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4851
4852       fhAnglePairPrimPi0vsRecoNLocMax2  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4853                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4854                                                    200,0,0.2,200,0,0.2);
4855       fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4856       fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4857       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4858
4859       fhAnglePairPrimPi0vsRecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4860                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4861                                                    200,0,0.2,200,0,0.2);
4862       fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4863       fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4864       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4865       
4866       
4867       fhAnglePairPrimPi0OverM02NLocMax1  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4868                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=1",
4869                                                  nptbins,ptmin,ptmax,200,0,0.2);
4870       fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4871       fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("#it{E} (GeV)");
4872       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4873       
4874       fhAnglePairPrimPi0OverM02NLocMax2  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4875                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=2",
4876                                                  nptbins,ptmin,ptmax,200,0,0.2);
4877       fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4878       fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("#it{E} (GeV)");
4879       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4880       
4881       fhAnglePairPrimPi0OverM02NLocMaxN  = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4882                                                  "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4883                                                  nptbins,ptmin,ptmax,200,0,0.2);
4884       fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4885       fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("#it{E} (GeV)");
4886       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4887
4888     }
4889   }
4890  
4891   // Same as asymmetry ...
4892   if(fFillThetaStarHisto)
4893   {
4894     for(Int_t i = 0; i < n; i++)
4895     {
4896       for(Int_t j = 0; j < nMatched; j++)
4897       {
4898         
4899         fhCosThStarNLocMax1[i][j]  = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4900                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4901                                               nptbins,ptmin,ptmax,200,-1,1);
4902         fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4903         fhCosThStarNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4904         outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4905         
4906         fhCosThStarNLocMax2[i][j]  = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4907                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4908                                               nptbins,ptmin,ptmax,200,-1,1);
4909         fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4910         fhCosThStarNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4911         outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4912         
4913         fhCosThStarNLocMaxN[i][j]  = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4914                                               Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4915                                               nptbins,ptmin,ptmax,200,-1,1);
4916         fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4917         fhCosThStarNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4918         outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4919         
4920         if(asyOn || m02On)
4921         {
4922           fhCosThStarAfterCutsNLocMax1[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4923                                                          Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4924                                                          nptbins,ptmin,ptmax,200,-1,1);
4925           fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4926           fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4927           outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4928           
4929           fhCosThStarAfterCutsNLocMax2[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4930                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4931                                                          nptbins,ptmin,ptmax,200,-1,1);
4932           fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4933           fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4934           outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4935           
4936           fhCosThStarAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4937                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4938                                                          nptbins,ptmin,ptmax,200,-1,1);
4939           fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4940           fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4941           outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4942           
4943         }
4944         
4945         fhCosThStarPi0NLocMax1[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4946                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4947                                                  nptbins,ptmin,ptmax,200,-1,1);
4948         fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4949         fhCosThStarPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4950         outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4951         
4952         fhCosThStarPi0NLocMax2[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4953                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4954                                                  nptbins,ptmin,ptmax,200,-1,1);
4955         fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4956         fhCosThStarPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4957         outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4958         
4959         fhCosThStarPi0NLocMaxN[i][j]  = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4960                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4961                                                  nptbins,ptmin,ptmax,200,-1,1);
4962         fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4963         fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4964         outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4965         
4966       }
4967     }
4968   }
4969
4970   
4971   for(Int_t j = 0; j < nMatched; j++)
4972   {
4973     fhSplitEFractionvsAsyNLocMax1[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4974                                                     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()),
4975                                                     100,-1,1,120,0,1.2); 
4976     fhSplitEFractionvsAsyNLocMax1[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4977     fhSplitEFractionvsAsyNLocMax1[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4978     outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ; 
4979     
4980     fhSplitEFractionvsAsyNLocMax2[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4981                                                     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()),
4982                                                     100,-1,1,120,0,1.2); 
4983     fhSplitEFractionvsAsyNLocMax2[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4984     fhSplitEFractionvsAsyNLocMax2[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4985     outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ; 
4986     
4987     fhSplitEFractionvsAsyNLocMaxN[j]    = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4988                                                    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()),
4989                                                    100,-1,1,120,0,1.2); 
4990     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4991     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4992     outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ; 
4993   }
4994   
4995   
4996   fhClusterEtaPhiNLocMax1  = new TH2F
4997   ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4998   fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4999   fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
5000   outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
5001   
5002   fhClusterEtaPhiNLocMax2  = new TH2F
5003   ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5004   fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5005   fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
5006   outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
5007   
5008   fhClusterEtaPhiNLocMaxN  = new TH2F
5009   ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5010   fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5011   fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
5012   outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
5013   
5014   fhPi0EtaPhiNLocMax1  = new TH2F
5015   ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5016   fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
5017   fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
5018   outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
5019   
5020   fhPi0EtaPhiNLocMax2  = new TH2F
5021   ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5022   fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
5023   fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
5024   outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
5025   
5026   fhPi0EtaPhiNLocMaxN  = new TH2F
5027   ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5028   fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5029   fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
5030   outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
5031   
5032   if(fFillIdEtaHisto)
5033   {
5034     fhEtaEtaPhiNLocMax1  = new TH2F
5035     ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5036     fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5037     fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
5038     outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
5039     
5040     fhEtaEtaPhiNLocMax2  = new TH2F
5041     ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5042     fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5043     fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
5044     outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
5045     
5046     fhEtaEtaPhiNLocMaxN  = new TH2F
5047     ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5048     fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5049     fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
5050     outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
5051   }
5052   
5053   
5054   if(fFillSSWeightHisto)
5055   {
5056     for(Int_t nlm = 0; nlm < 3; nlm++)
5057     {
5058       fhPi0CellE[nlm]  = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
5059                                   Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
5060                                   nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
5061       fhPi0CellE[nlm]->SetYTitle("#it{E}_{cell}");
5062       fhPi0CellE[nlm]->SetXTitle("#it{E}_{cluster}");
5063       outputContainer->Add(fhPi0CellE[nlm]) ;
5064       
5065       fhPi0CellEFrac[nlm]  = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
5066                                       Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
5067                                       nptbins,ptmin,ptmax, 100,0,1);
5068       fhPi0CellEFrac[nlm]->SetYTitle("#it{E}_{cell} / #it{E}_{cluster}");
5069       fhPi0CellEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5070       outputContainer->Add(fhPi0CellEFrac[nlm]) ;
5071       
5072       fhPi0CellLogEFrac[nlm]  = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
5073                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
5074                                          nptbins,ptmin,ptmax, 100,-10,0);
5075       fhPi0CellLogEFrac[nlm]->SetYTitle("Log(#it{E}_{cell} / #it{E}_{cluster})");
5076       fhPi0CellLogEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5077       outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
5078       
5079       
5080       fhPi0CellEMaxEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
5081                                               Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max.  E",snlm[nlm].Data()),
5082                                               nptbins,ptmin,ptmax, 100,0,1);
5083       fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{Loc Max 1}");
5084       fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5085       outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
5086       
5087       fhPi0CellEMaxClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
5088                                                 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
5089                                                 nptbins,ptmin,ptmax, 100,0,1);
5090       fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cluster}");
5091       fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5092       outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
5093       
5094       fhPi0CellEMax2ClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
5095                                                  Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
5096                                                  nptbins,ptmin,ptmax, 100,0,1);
5097       fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cluster}");
5098       fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5099       outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
5100       
5101       fhPi0CellEMaxFrac[nlm]  = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
5102                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
5103                                          nptbins,ptmin,ptmax, 100,0,1);
5104       fhPi0CellEMaxFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cell i}");
5105       fhPi0CellEMaxFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5106       outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
5107       
5108       fhPi0CellEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
5109                                           Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
5110                                           nptbins,ptmin,ptmax, 200,0,2);
5111       fhPi0CellEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cell i}");
5112       fhPi0CellEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5113       outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
5114       
5115       
5116       for(Int_t i = 0; i < fSSWeightN; i++)
5117       {
5118         fhM02WeightPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
5119                                               Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
5120                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5121         fhM02WeightPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5122         fhM02WeightPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5123         outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
5124       }
5125       
5126       for(Int_t i = 0; i < fSSECellCutN; i++)
5127       {
5128         fhM02ECellCutPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
5129                                                 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
5130                                                 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5131         fhM02ECellCutPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5132         fhM02ECellCutPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5133         outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
5134       }
5135       
5136     }
5137   }
5138   
5139   Int_t tdbins   = GetHistogramRanges()->GetHistoDiffTimeBins() ;    Float_t tdmax  = GetHistogramRanges()->GetHistoDiffTimeMax();     Float_t tdmin  = GetHistogramRanges()->GetHistoDiffTimeMin();
5140   
5141   fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5142   fhPi0EPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5143   fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5144   outputContainer->Add(fhPi0EPairDiffTimeNLM1);
5145   
5146   fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5147   fhPi0EPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5148   fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5149   outputContainer->Add(fhPi0EPairDiffTimeNLM2);
5150   
5151   fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5152   fhPi0EPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5153   fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5154   outputContainer->Add(fhPi0EPairDiffTimeNLMN);
5155   
5156   if(fFillIdEtaHisto)
5157   {
5158     fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5159     fhEtaEPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5160     fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5161     outputContainer->Add(fhEtaEPairDiffTimeNLM1);
5162     
5163     fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5164     fhEtaEPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5165     fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5166     outputContainer->Add(fhEtaEPairDiffTimeNLM2);
5167     
5168     fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5169     fhEtaEPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5170     fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5171     outputContainer->Add(fhEtaEPairDiffTimeNLMN);
5172   }
5173   
5174   if(fFillNCellHisto && IsDataMC())
5175   {
5176     
5177     fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5178     fhNCellMassEHighNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5179     fhNCellMassEHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5180     outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5181     
5182     fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5183     fhNCellMassELowNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5184     fhNCellMassELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5185     outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5186     
5187     fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5188     fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5189     fhNCellM02EHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5190     outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5191     
5192     fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5193     fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5194     fhNCellM02ELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5195     outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5196     
5197     fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5198     fhNCellMassEHighNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5199     fhNCellMassEHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5200     outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5201     
5202     fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5203     fhNCellMassELowNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5204     fhNCellMassELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5205     outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5206     
5207     fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5208     fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5209     fhNCellM02EHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5210     outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5211     
5212     fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5213     fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5214     fhNCellM02ELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5215     outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5216     
5217     fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5218     fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5219     fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5220     outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5221     
5222     fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5223     fhNCellMassELowNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5224     fhNCellMassELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5225     outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5226     
5227     fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5228     fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5229     fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5230     outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5231     
5232     fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5233     fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5234     fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5235     outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5236     
5237   }
5238   
5239   if(IsDataMC() && fFillMCOverlapHisto)
5240   {
5241     for(Int_t i = 1; i < n; i++)
5242     {
5243       for(Int_t j = 0; j < 3; j++)
5244       {
5245         fhMCENOverlaps[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5246                                             Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5247                                             nptbins,ptmin,ptmax,10,0,10);
5248         fhMCENOverlaps[j][i]   ->SetYTitle("# overlaps");
5249         fhMCENOverlaps[j][i]   ->SetXTitle("#it{E} (GeV)");
5250         outputContainer->Add(fhMCENOverlaps[j][i]) ;
5251         
5252         fhMCEM02Overlap0[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5253                                               Form("Overlap 0, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5254                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5255         fhMCEM02Overlap0[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5256         fhMCEM02Overlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5257         outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5258         
5259         fhMCEM02Overlap1[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5260                                               Form("Overlap 1, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5261                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5262         fhMCEM02Overlap1[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5263         fhMCEM02Overlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5264         outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5265         
5266         fhMCEM02OverlapN[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5267                                               Form("Overlap N, #lambda_{0}^{2} vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5268                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5269         fhMCEM02OverlapN[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5270         fhMCEM02OverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5271         outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5272         
5273         fhMCEMassOverlap0[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5274                                                Form("Overlap 0, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5275                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5276         fhMCEMassOverlap0[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5277         fhMCEMassOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5278         outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5279         
5280         fhMCEMassOverlap1[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5281                                                Form("Overalap 1, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5282                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5283         fhMCEMassOverlap1[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5284         fhMCEMassOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5285         outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5286         
5287         fhMCEMassOverlapN[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5288                                                Form("Overlap N, Mass vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5289                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5290         fhMCEMassOverlapN[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5291         fhMCEMassOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5292         outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5293         
5294         fhMCEAsymOverlap0[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5295                                                Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5296                                                nptbins,ptmin,ptmax,100,0,1);
5297         fhMCEAsymOverlap0[j][i]   ->SetYTitle("|A|");
5298         fhMCEAsymOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5299         outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5300         
5301         fhMCEAsymOverlap1[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5302                                                Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5303                                                nptbins,ptmin,ptmax,100,0,1);
5304         fhMCEAsymOverlap1[j][i]   ->SetYTitle("|A|");
5305         fhMCEAsymOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5306         outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5307         
5308         fhMCEAsymOverlapN[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5309                                                Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5310                                                nptbins,ptmin,ptmax,100,0,1);
5311         fhMCEAsymOverlapN[j][i]   ->SetYTitle("|A|");
5312         fhMCEAsymOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5313         outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5314
5315         
5316         if(fFillNCellHisto)
5317         {
5318           fhMCENCellOverlap0[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5319                                                   Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5320                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5321           fhMCENCellOverlap0[j][i]   ->SetYTitle("#it{N} cells");
5322           fhMCENCellOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5323           outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5324           
5325           fhMCENCellOverlap1[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5326                                                   Form("Overalap 1, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5327                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5328           fhMCENCellOverlap1[j][i]   ->SetYTitle("#it{N} cells");
5329           fhMCENCellOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5330           outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5331           
5332           fhMCENCellOverlapN[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5333                                                   Form("Overlap N, n cells vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5334                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5335           fhMCENCellOverlapN[j][i]   ->SetYTitle("#it{N} cells");
5336           fhMCENCellOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5337           outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5338         }
5339         
5340         fhMCEEpriOverlap0[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5341                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5342                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5343         fhMCEEpriOverlap0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5344         fhMCEEpriOverlap0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5345         outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5346         
5347         fhMCEEpriOverlap1[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5348                                                Form("Overalap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5349                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5350         fhMCEEpriOverlap1[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5351         fhMCEEpriOverlap1[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5352         outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5353         
5354         fhMCEEpriOverlapN[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5355                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5356                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5357         fhMCEEpriOverlapN[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5358         fhMCEEpriOverlapN[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5359         outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5360         
5361         
5362         fhMCEEpriOverlap0IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5363                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5364                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5365         fhMCEEpriOverlap0IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5366         fhMCEEpriOverlap0IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5367         outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5368         
5369         fhMCEEpriOverlap1IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5370                                                Form("Overlap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5371                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5372         fhMCEEpriOverlap1IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5373         fhMCEEpriOverlap1IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5374         outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5375         
5376         fhMCEEpriOverlapNIdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5377                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5378                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5379         fhMCEEpriOverlapNIdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5380         fhMCEEpriOverlapNIdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5381         outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5382
5383         
5384         fhMCESplitEFracOverlap0[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5385                                                      Form("Overlap 0, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5386                                                      nptbins,ptmin,ptmax,120,0,1.2);
5387         fhMCESplitEFracOverlap0[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5388         fhMCESplitEFracOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5389         outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5390         
5391         fhMCESplitEFracOverlap1[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5392                                                      Form("Overalap 1, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5393                                                      nptbins,ptmin,ptmax,120,0,1.2);
5394         fhMCESplitEFracOverlap1[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5395         fhMCESplitEFracOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5396         outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5397         
5398         fhMCESplitEFracOverlapN[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5399                                                      Form("Overlap N, SplitEFrac vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5400                                                      nptbins,ptmin,ptmax,120,0,1.2);
5401         fhMCESplitEFracOverlapN[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5402         fhMCESplitEFracOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5403         outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5404         
5405         if(i < 5)
5406         {
5407           fhMCPi0MassM02Overlap0[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5408                                                      Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5409                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5410           fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5411           fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5412           outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5413           
5414           fhMCPi0MassM02Overlap1[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5415                                                      Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5416                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5417           fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5418           fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5419           outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5420           
5421           fhMCPi0MassM02OverlapN[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5422                                                      Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5423                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5424           fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5425           fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5426           outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5427         }
5428         
5429         if(fFillTMHisto)
5430         {
5431           fhMCENOverlapsMatch[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5432                                                    Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5433                                                    nptbins,ptmin,ptmax,10,0,10);
5434           fhMCENOverlapsMatch[j][i]   ->SetYTitle("# overlaps");
5435           fhMCENOverlapsMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5436           outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5437           
5438           fhMCEM02Overlap0Match[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5439                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5440                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5441           fhMCEM02Overlap0Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5442           fhMCEM02Overlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5443           outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5444           
5445           fhMCEM02Overlap1Match[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5446                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5447                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5448           fhMCEM02Overlap1Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5449           fhMCEM02Overlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5450           outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5451           
5452           fhMCEM02OverlapNMatch[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5453                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5454                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5455           fhMCEM02OverlapNMatch[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5456           fhMCEM02OverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5457           outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5458           
5459           fhMCEMassOverlap0Match[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5460                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5461                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5462           fhMCEMassOverlap0Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5463           fhMCEMassOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5464           outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5465           
5466           fhMCEMassOverlap1Match[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5467                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5468                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5469           fhMCEMassOverlap1Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5470           fhMCEMassOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5471           outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5472           
5473           fhMCEMassOverlapNMatch[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5474                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5475                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5476           fhMCEMassOverlapNMatch[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5477           fhMCEMassOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5478           outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5479           
5480           
5481           fhMCEAsymOverlap0Match[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5482                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5483                                                       nptbins,ptmin,ptmax,100,0,1);
5484           fhMCEAsymOverlap0Match[j][i]   ->SetYTitle("|#it{A}|");
5485           fhMCEAsymOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5486           outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5487           
5488           fhMCEAsymOverlap1Match[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5489                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5490                                                       nptbins,ptmin,ptmax,100,0,1);
5491           fhMCEAsymOverlap1Match[j][i]   ->SetYTitle("|#it{A}|");
5492           fhMCEAsymOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5493           outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5494           
5495           fhMCEAsymOverlapNMatch[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5496                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5497                                                       nptbins,ptmin,ptmax,100,0,1);
5498           fhMCEAsymOverlapNMatch[j][i]   ->SetYTitle("|#it{A}|");
5499           fhMCEAsymOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5500           outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5501
5502           
5503           fhMCENCellOverlap0Match[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5504                                                       Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5505                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5506           fhMCENCellOverlap0Match[j][i]   ->SetYTitle("#it{N} cells");
5507           fhMCENCellOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5508           outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5509           
5510           fhMCENCellOverlap1Match[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5511                                                       Form("Overalap 1, n cell vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5512                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5513           fhMCENCellOverlap1Match[j][i]   ->SetYTitle("#it{N} cells");
5514           fhMCENCellOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5515           outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5516           
5517           fhMCENCellOverlapNMatch[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5518                                                       Form("Overlap N, n cell vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5519                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5520           fhMCENCellOverlapNMatch[j][i]   ->SetYTitle("#it{N} cells");
5521           fhMCENCellOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5522           outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5523
5524           fhMCEEpriOverlap0Match[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5525                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5526                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5527           fhMCEEpriOverlap0Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5528           fhMCEEpriOverlap0Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5529           outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5530           
5531           fhMCEEpriOverlap1Match[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5532                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5533                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5534           fhMCEEpriOverlap1Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5535           fhMCEEpriOverlap1Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5536           outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5537           
5538           fhMCEEpriOverlapNMatch[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5539                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5540                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5541           fhMCEEpriOverlapNMatch[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5542           fhMCEEpriOverlapNMatch[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5543           outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5544           
5545           
5546           fhMCESplitEFracOverlap0Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5547                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5548                                                             nptbins,ptmin,ptmax,120,0,1.2);
5549           fhMCESplitEFracOverlap0Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5550           fhMCESplitEFracOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5551           outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5552           
5553           fhMCESplitEFracOverlap1Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5554                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5555                                                             nptbins,ptmin,ptmax,120,0,1.2);
5556           fhMCESplitEFracOverlap1Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5557           fhMCESplitEFracOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5558           outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5559           
5560           fhMCESplitEFracOverlapNMatch[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5561                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5562                                                             nptbins,ptmin,ptmax,120,0,1.2);
5563           fhMCESplitEFracOverlapNMatch[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5564           fhMCESplitEFracOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5565           outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5566           
5567           
5568           if(i < 5)
5569           {
5570             fhMCPi0MassM02Overlap0Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5571                                                             Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5572                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5573             fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5574             fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5575             outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5576             
5577             fhMCPi0MassM02Overlap1Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5578                                                             Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5579                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5580             fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5581             fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5582             outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5583             
5584             fhMCPi0MassM02OverlapNMatch[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5585                                                             Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5586                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5587             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5588             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5589             outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5590             
5591           }
5592           
5593         }
5594       }
5595     }
5596     
5597     fhMCPi0HighNLMPair    = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5598                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5599     fhMCPi0HighNLMPair   ->SetYTitle("#it{N} maxima");
5600     fhMCPi0HighNLMPair   ->SetXTitle("#it{E} (GeV)");
5601     outputContainer->Add(fhMCPi0HighNLMPair) ;
5602     
5603     fhMCPi0LowNLMPair     = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5604                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5605     fhMCPi0LowNLMPair   ->SetYTitle("#it{N} maxima");
5606     fhMCPi0LowNLMPair   ->SetXTitle("#it{E} (GeV)");
5607     outputContainer->Add(fhMCPi0LowNLMPair) ;
5608     
5609     fhMCPi0AnyNLMPair     = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5610                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5611     fhMCPi0AnyNLMPair   ->SetYTitle("#it{N} maxima");
5612     fhMCPi0AnyNLMPair   ->SetXTitle("#it{E} (GeV)");
5613     outputContainer->Add(fhMCPi0AnyNLMPair) ;
5614     
5615     fhMCPi0NoneNLMPair     = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5616                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5617     fhMCPi0NoneNLMPair   ->SetYTitle("#it{N} maxima");
5618     fhMCPi0NoneNLMPair   ->SetXTitle("#it{E} (GeV)");
5619     outputContainer->Add(fhMCPi0NoneNLMPair) ;
5620     
5621     
5622     fhMCPi0HighNLMPairNoMCMatch    = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5623                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5624     fhMCPi0HighNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5625     fhMCPi0HighNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5626     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5627     
5628     fhMCPi0LowNLMPairNoMCMatch     = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5629                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5630     fhMCPi0LowNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5631     fhMCPi0LowNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5632     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5633     
5634     fhMCPi0AnyNLMPairNoMCMatch     = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5635                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5636     fhMCPi0AnyNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5637     fhMCPi0AnyNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5638     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5639     
5640     fhMCPi0NoneNLMPairNoMCMatch     = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5641                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5642     fhMCPi0NoneNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5643     fhMCPi0NoneNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5644     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5645     
5646     
5647     fhMCPi0HighNLMPairOverlap    = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5648                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5649     fhMCPi0HighNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5650     fhMCPi0HighNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5651     outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5652     
5653     fhMCPi0LowNLMPairOverlap     = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5654                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5655     fhMCPi0LowNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5656     fhMCPi0LowNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5657     outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5658     
5659     fhMCPi0AnyNLMPairOverlap     = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5660                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5661     fhMCPi0AnyNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5662     fhMCPi0AnyNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5663     outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5664     
5665     fhMCPi0NoneNLMPairOverlap     = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5666                                              nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5667     fhMCPi0NoneNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5668     fhMCPi0NoneNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5669     outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5670     
5671     fhMCPi0HighNLMPairNoMCMatchOverlap    = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5672                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5673     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5674     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5675     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5676     
5677     fhMCPi0LowNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5678                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5679     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5680     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5681     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5682     
5683     fhMCPi0AnyNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5684                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5685     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5686     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5687     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5688     
5689     fhMCPi0NoneNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5690                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5691     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5692     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5693     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5694   
5695     
5696     fhMCPi0DecayPhotonHitHighLM    = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5697                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5698     fhMCPi0DecayPhotonHitHighLM    ->SetYTitle("#it{N} maxima");
5699     fhMCPi0DecayPhotonHitHighLM    ->SetXTitle("#it{E} (GeV)");
5700     outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5701     
5702     fhMCPi0DecayPhotonAdjHighLM    = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5703                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5704     fhMCPi0DecayPhotonAdjHighLM    ->SetYTitle("#it{N} maxima");
5705     fhMCPi0DecayPhotonAdjHighLM    ->SetXTitle("#it{E} (GeV)");
5706     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5707     
5708     fhMCPi0DecayPhotonHitOtherLM    = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5709                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5710     fhMCPi0DecayPhotonHitOtherLM    ->SetYTitle("#it{N} maxima");
5711     fhMCPi0DecayPhotonHitOtherLM    ->SetXTitle("#it{E} (GeV)");
5712     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5713     
5714     fhMCPi0DecayPhotonAdjOtherLM    = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5715                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5716     fhMCPi0DecayPhotonAdjOtherLM    ->SetYTitle("#it{N} maxima");
5717     fhMCPi0DecayPhotonAdjOtherLM    ->SetXTitle("#it{E} (GeV)");
5718     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5719     
5720     fhMCPi0DecayPhotonAdjacent   = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5721                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5722     fhMCPi0DecayPhotonAdjacent    ->SetYTitle("#it{N} maxima");
5723     fhMCPi0DecayPhotonAdjacent    ->SetXTitle("#it{E} (GeV)");
5724     outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5725     
5726     fhMCPi0DecayPhotonHitNoLM    = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5727                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5728     fhMCPi0DecayPhotonHitNoLM    ->SetYTitle("#it{N} maxima");
5729     fhMCPi0DecayPhotonHitNoLM    ->SetXTitle("#it{E} (GeV)");
5730     outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5731     
5732     
5733     fhMCPi0DecayPhotonHitHighLMOverlap    = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5734                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5735     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetYTitle("#it{N} maxima");
5736     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5737     outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5738     
5739     fhMCPi0DecayPhotonAdjHighLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5740                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5741     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetYTitle("#it{N} maxima");
5742     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5743     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5744     
5745     fhMCPi0DecayPhotonHitOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5746                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5747     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5748     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5749     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5750     
5751     fhMCPi0DecayPhotonAdjOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5752                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5753     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5754     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5755     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5756     
5757     fhMCPi0DecayPhotonAdjacentOverlap   = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5758                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5759     fhMCPi0DecayPhotonAdjacentOverlap    ->SetYTitle("#it{N} maxima");
5760     fhMCPi0DecayPhotonAdjacentOverlap    ->SetXTitle("#it{E} (GeV)");
5761     outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5762     
5763     fhMCPi0DecayPhotonHitNoLMOverlap    = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5764                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5765     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetYTitle("#it{N} maxima");
5766     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetXTitle("#it{E} (GeV)");
5767     outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5768     
5769     
5770     for(Int_t nlm = 0; nlm < 3; nlm++)
5771     {
5772       fhMCPi0DecayPhotonHitHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5773                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5774                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5775       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5776       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5777       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5778       
5779       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5780                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5781                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5782       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5783       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5784       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5785       
5786       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5787                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5788                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5789       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5790       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5791       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5792       
5793       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5794                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5795                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5796       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5797       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5798       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5799       
5800       fhMCPi0DecayPhotonAdjacentMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5801                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5802                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5803       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5804       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5805       outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5806       
5807       fhMCPi0DecayPhotonHitNoLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5808                                                      Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5809                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
5810       fhMCPi0DecayPhotonHitNoLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5811       fhMCPi0DecayPhotonHitNoLMMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5812       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5813       
5814       
5815       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5816                                                                Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5817                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5818       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5819       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5820       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5821       
5822       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5823                                                                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()),
5824                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5825       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5826       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5827       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5828       
5829       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5830                                                                 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5831                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5832       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5833       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5834       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5835       
5836       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5837                                                                 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()),
5838                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5839       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5840       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5841       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5842       
5843       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5844                                                              Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5845                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5846       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5847       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5848       outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5849       
5850       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5851                                                              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()),
5852                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5853       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5854       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5855       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5856       
5857       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5858                                                            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()),
5859                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5860       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5861       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5862       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5863       
5864       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5865                                                            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()),
5866                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5867       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5868       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetXTitle("E pi0 (GeV)");
5869       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5870       
5871       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5872                                                             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()),
5873                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5874       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5875       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5876       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5877       
5878       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5879                                                             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()),
5880                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5881       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5882       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5883       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5884       
5885       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5886                                                                    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()),
5887                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5888       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5889       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5890       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5891       
5892       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5893                                                                    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()),
5894                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5895       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5896       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5897       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5898       
5899       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5900                                                                     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()),
5901                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5902       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5903       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5904       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5905       
5906       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5907                                                                     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()),
5908                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5909       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5910       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5911       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5912       
5913       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5914                                                            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()),
5915                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5916       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5917       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5918       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5919       
5920       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5921                                                            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()),
5922                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5923       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5924       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5925       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5926       
5927       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5928                                                             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()),
5929                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5930       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5931       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5932       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5933       
5934       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5935                                                             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()),
5936                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5937       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5938       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5939       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5940       
5941       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5942                                                                    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()),
5943                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5944       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5945       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5946       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5947       
5948       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5949                                                                    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()),
5950                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5951       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5952       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5953       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5954       
5955       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5956                                                                     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()),
5957                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5958       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5959       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5960       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5961       
5962       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5963                                                                     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()),
5964                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5965       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5966       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5967       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5968       
5969       
5970       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5971                                                                  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()),
5972                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5973       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5974       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5975       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5976       
5977       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5978                                                                  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()),
5979                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5980       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5981       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E} (GeV)");
5982       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5983       
5984       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5985                                                                   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()),
5986                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5987       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5988       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5989       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5990       
5991       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5992                                                                   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()),
5993                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5994       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5995       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5996       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5997       
5998       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5999                                                                          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()),
6000                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6001       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6002       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6003       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
6004       
6005       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6006                                                                          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()),
6007                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6008       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6009       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6010       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
6011       
6012       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6013                                                                           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()),
6014                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6015       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6016       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6017       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6018       
6019       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6020                                                                           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()),
6021                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6022       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6023       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6024       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6025       
6026       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6027                                                                  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()),
6028                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6029       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6030       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6031       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
6032       
6033       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6034                                                                  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()),
6035                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6036       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6037       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6038       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
6039       
6040       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6041                                                                   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()),
6042                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6043       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6044       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6045       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
6046       
6047       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6048                                                                   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()),
6049                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6050       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6051       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6052       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
6053       
6054       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6055                                                                          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()),
6056                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6057       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6058       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6059       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
6060       
6061       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6062                                                                          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()),
6063                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6064       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6065       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6066       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
6067       
6068       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6069                                                                           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()),
6070                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6071       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6072       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6073       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6074       
6075       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6076                                                                           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()),
6077                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6078       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6079       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6080       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6081       
6082     }
6083     
6084     fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
6085                                 nptbins,ptmin,ptmax,5,0,5);
6086     //fhMCEOverlapType   ->SetYTitle("Overlap Type");
6087     fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
6088     fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6089     fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6090     fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6091     fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
6092     fhMCEOverlapType->SetXTitle("Cluster #it{E} (GeV)");
6093     outputContainer->Add(fhMCEOverlapType) ;
6094     
6095     fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
6096                                      nptbins,ptmin,ptmax,5,0,5);
6097     //fhMCEOverlapTypeMatch   ->SetYTitle("Overlap Type");
6098     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
6099     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6100     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6101     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6102     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
6103     fhMCEOverlapTypeMatch->SetXTitle("Cluster #it{E} (GeV)");
6104     outputContainer->Add(fhMCEOverlapTypeMatch) ;
6105     
6106   }// MC analysis, check overlaps
6107   
6108   
6109   if(IsDataMC())
6110   {
6111     for(Int_t inlm = 0; inlm < 3; inlm++)
6112     {
6113       fhAsyMCGenRecoDiffMCPi0[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
6114                                                 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0",inlm),
6115                                                 nptbins,ptmin,ptmax,200,-1,1);
6116       fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6117       fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("#it{E} (GeV)");
6118       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
6119       
6120       fhAsyMCGenRecoDiffMCPi0Conv[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
6121                                                 Form("Reconstructed - Generated asymmetry  with #it{NLM}=%d vs E, MC Pi0Conv",inlm),
6122                                                 nptbins,ptmin,ptmax,200,-1,1);
6123       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6124       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("#it{E} (GeV)");
6125       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
6126     }
6127   }
6128   
6129   if(fFillArmenterosHisto)
6130   {
6131     Int_t narmbins = 400;
6132     Float_t armmin = 0;
6133     Float_t armmax = 0.4;
6134     
6135     for(Int_t i = 0; i < 7; i++) // MC bin
6136     {
6137       for(Int_t j = 0; j < 4; j++) // E bin
6138       {
6139         fhArmNLocMax1[i][j]  = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
6140                                          Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6141                                          200, -1, 1, narmbins,armmin,armmax);
6142         fhArmNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6143         fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6144         outputContainer->Add(fhArmNLocMax1[i][j]) ;
6145         
6146         fhArmNLocMax2[i][j]  = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
6147                                          Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6148                                          200, -1, 1, narmbins,armmin,armmax);
6149         fhArmNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6150         fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6151         outputContainer->Add(fhArmNLocMax2[i][j]) ;
6152         
6153         fhArmNLocMaxN[i][j]  = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
6154                                          Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6155                                          200, -1, 1, narmbins,armmin,armmax);
6156         fhArmNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6157         fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6158         outputContainer->Add(fhArmNLocMaxN[i][j]) ;
6159         
6160         if(asyOn || m02On)
6161         {
6162           fhArmAfterCutsNLocMax1[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
6163                                           Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6164                                           200, -1, 1, narmbins,armmin,armmax);
6165           fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6166           fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6167           outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
6168           
6169           fhArmAfterCutsNLocMax2[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
6170                                           Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6171                                           200, -1, 1, narmbins,armmin,armmax);
6172           fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6173           fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6174           outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6175           
6176           fhArmAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6177                                           Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6178                                           200, -1, 1, narmbins,armmin,armmax);
6179           fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6180           fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6181           outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6182         }
6183
6184         fhArmPi0NLocMax1[i][j]  = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6185                                                  Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6186                                                  200, -1, 1, narmbins,armmin,armmax);
6187         fhArmPi0NLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6188         fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6189         outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6190         
6191         fhArmPi0NLocMax2[i][j]  = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6192                                                  Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6193                                                  200, -1, 1, narmbins,armmin,armmax);
6194         fhArmPi0NLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6195         fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6196         outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6197         
6198         fhArmPi0NLocMaxN[i][j]  = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6199                                                  Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6200                                                  200, -1, 1, narmbins,armmin,armmax);
6201         fhArmPi0NLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6202         fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6203         outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6204  
6205       }
6206     }
6207   }
6208   
6209   return outputContainer ;
6210   
6211 }
6212
6213 //_____________________________________________________________________________
6214 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6215                                                   Int_t & mcindex, Int_t & tag)
6216 {
6217   
6218   // Assign mc index depending on MC bit set, to be used in histograms arrays
6219     
6220   tag   = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(),GetCalorimeter());
6221   
6222   if      ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6223            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6224   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)  )      mcindex = kmcPi0Conv;
6225   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)  )      mcindex = kmcEta;
6226   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6227            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6228   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6229             GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6230   else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) mcindex = kmcHadron;
6231  
6232   //printf("MC index %d\n",mcindex);
6233   
6234 }
6235
6236 //____________________________________________________________________________________________
6237 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6238                                                         Int_t mctag, Bool_t matched,
6239                                                         Float_t & eprim, Float_t & asymGen,
6240                                                         Float_t & angleGen, Int_t & noverlaps )
6241 {
6242   // Check origin of the candidates, get primary kinematics if overlapped meson decay
6243   
6244   Bool_t ok      = kFALSE;
6245   Int_t  mcLabel = cluster->GetLabel();
6246   
6247   fPrimaryMom = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6248   eprim = fPrimaryMom.E();
6249   
6250   Int_t mesonLabel = -1;
6251   
6252   if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6253   {
6254     if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6255     {
6256       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6257       asymGen = TMath::Abs(asymGen);
6258       fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6259       if(fGrandMotherMom.E() > 0 && ok) eprim =  fGrandMotherMom.E();
6260     }
6261     else
6262     {
6263       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6264       asymGen = TMath::Abs(asymGen);
6265       fGrandMotherMom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6266       if(fGrandMotherMom.E() > 0 && ok) eprim =  fGrandMotherMom.E();
6267     }
6268   }
6269   
6270   if(!fFillMCOverlapHisto) return;
6271     
6272   const UInt_t nlabels = cluster->GetNLabels();
6273   Int_t overpdg[nlabels];
6274   noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6275
6276   for(Int_t iover = 0; iover < noverlaps; iover++)
6277   {
6278     Float_t histobin = -1;
6279     Int_t   mpdg     = overpdg[iover];
6280     
6281     if     (mpdg==22)      histobin = 0.5;
6282     else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6283     else if(mpdg==-999999) histobin = 4.5;
6284     else
6285     {
6286       Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6287       if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6288       else                        histobin = 3.5;
6289       //printf("charge %f\n",charge);
6290     }
6291     
6292     //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6293     if(histobin > 0)
6294     {
6295       if(matched)fhMCEOverlapType     ->Fill(cluster->E(),histobin);
6296       else       fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6297     }
6298   }
6299 }
6300
6301 //___________________________________________
6302 void AliAnaInsideClusterInvariantMass::Init()
6303 {
6304   //Init
6305   //Do some checks
6306   
6307   if(GetCalorimeter() == kPHOS && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6308   {
6309     AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
6310   }
6311   else  if(GetCalorimeter() == kEMCAL && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6312   {
6313     AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
6314   }
6315   
6316   if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6317   {
6318     AliFatal("!!STOP: You want to use pure MC data!!\n");
6319   }
6320   
6321 }
6322
6323 //_____________________________________________________
6324 void AliAnaInsideClusterInvariantMass::InitParameters()
6325 {
6326   //Initialize the parameters of the analysis.  
6327   AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6328   
6329   fMinNCells   = 4 ;
6330   fMinBadDist  = 2 ;
6331   
6332   fHistoECut   = 8 ;
6333   
6334   fSSWeightN    = 10;
6335   fSSWeight [0] = 4.00;  fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6336   fSSWeight [5] = 4.40;  fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6337   fSSWeight[10] = 4.70;  fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6338   fSSWeight[15] = 5.20;  fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6339   
6340   fSSECellCutN    = 10;
6341   fSSECellCut [0] = 0.05;  fSSECellCut [1] = 0.06;  fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6342   fSSECellCut [5] = 0.10;  fSSECellCut [6] = 0.11;  fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6343   fSSECellCut[10] = 0.15;  fSSECellCut[11] = 0.16;  fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6344   fSSECellCut[15] = 0.20;  fSSECellCut[16] = 0.21;  fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6345
6346   fNLMSettingN = 5;
6347   fNLMMinE   [0] = 0.10; fNLMMinE   [1] = 0.20; fNLMMinE   [2] = 0.35; fNLMMinE   [3] = 0.50; fNLMMinE   [4] = 1.00;
6348   fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6349   
6350   fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6351   fWSimu[1] = 0; // Default, do not correct, change to 0.07
6352
6353 }
6354
6355
6356 //__________________________________________________________________
6357 void  AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() 
6358 {
6359   //Search for pi0 in GetCalorimeter() with shower shape analysis 
6360   
6361   TObjArray * pl       = 0x0; 
6362   AliVCaloCells* cells = 0x0;
6363
6364   //Select the Calorimeter of the photon
6365   if(GetCalorimeter() == kPHOS)
6366   {
6367     pl    = GetPHOSClusters();
6368     cells = GetPHOSCells();
6369   }
6370   else if (GetCalorimeter() == kEMCAL)
6371   {
6372     pl    = GetEMCALClusters();
6373     cells = GetEMCALCells();
6374   }
6375   
6376   if(!pl || !cells) 
6377   {
6378     Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",GetCalorimeterString().Data());
6379     return;
6380   }  
6381   
6382         if(GetCalorimeter() == kPHOS) return; // Not implemented for PHOS yet
6383
6384   for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6385   {
6386     AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));  
6387
6388     //-------------------------------------------
6389     // Get cluster parameters, do some rejection
6390     //-------------------------------------------
6391     
6392     Float_t en = cluster->E();
6393     Float_t l0 = cluster->GetM02();
6394     Int_t   nc = cluster->GetNCells();
6395     Float_t bd = cluster->GetDistanceToBadChannel() ; 
6396     
6397     //If too small or big E or low number of cells, or close to a bad channel skip it
6398     
6399     if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6400     
6401     //printf("en %2.3f  GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6402     
6403     // Track-cluster matching
6404     
6405     Bool_t  matched   = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6406     if(!fFillTMHisto && matched) continue ;
6407
6408     // Get cluster angles
6409     
6410     cluster->GetMomentum(fClusterMomentum, GetVertex(0));
6411     Float_t eta = fClusterMomentum.Eta();
6412     Float_t phi = fClusterMomentum.Phi();
6413     if(phi<0) phi=+TMath::TwoPi();
6414     
6415     //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d,  bd %2.2f, fMinBadDist %2.2f\n",
6416     //       en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6417     
6418     if(fFillNLMDiffCutHisto)
6419     {
6420       FillNLMDiffCutHistograms(cluster,cells,matched);
6421       return;
6422     }
6423     
6424     // Get PID, N local maximum, *** split cluster ***
6425     
6426     Int_t    nMax = 0;
6427     Double_t mass = 0., angle = 0.;
6428     Int_t    absId1   =-1; Int_t   absId2   =-1;
6429     Float_t  distbad1 =-1; Float_t distbad2 =-1;
6430     Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
6431     
6432     Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6433                                                                                GetVertex(0), nMax, mass, angle,
6434                                                                                fSubClusterMom1,fSubClusterMom2,
6435                                                                                absId1,absId2,
6436                                                                                distbad1,distbad2,
6437                                                                                fidcut1,fidcut2);
6438     if (nMax <= 0) 
6439     {
6440       if(GetDebug() > 0 )
6441         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6442       
6443       continue;
6444     }
6445     
6446     // Set some index for array histograms
6447     
6448     Int_t inlm = -1;
6449     if     (nMax == 1) inlm = 0;
6450     else if(nMax == 2) inlm = 1;
6451     else if(nMax >  2) inlm = 2;
6452     else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6453
6454     // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6455     if( (fCheckSplitDistToBad) &&
6456         (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6457     {
6458       if(GetDebug() > 1)
6459         Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6460                                  distbad1,distbad2, fidcut1,fidcut2);
6461       
6462       if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6463       {
6464         fhMassBadDistClose[inlm]->Fill(en,mass);
6465         fhM02BadDistClose [inlm]->Fill(en,l0  );
6466       }
6467       
6468       if(!fidcut1 || !fidcut2)
6469       {
6470         fhMassOnBorder[inlm]->Fill(en,mass);
6471         fhM02OnBorder [inlm]->Fill(en,l0  );
6472       }
6473       
6474       continue ;
6475     }
6476
6477     // Get sub-cluster parameters
6478     
6479     Float_t e1 = fSubClusterMom1.Energy();
6480     Float_t e2 = fSubClusterMom2.Energy();
6481     
6482     Double_t tof1  = cells->GetCellTime(absId1);
6483     GetCaloUtils()->RecalibrateCellTime(tof1, GetCalorimeter(), absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6484     tof1*=1.e9;
6485     
6486     Double_t tof2  = cells->GetCellTime(absId2);
6487     GetCaloUtils()->RecalibrateCellTime(tof2, GetCalorimeter(), absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6488     tof2*=1.e9;
6489     
6490     Double_t t12diff = tof1-tof2;
6491     
6492     Float_t splitFrac = (e1+e2)/en;
6493
6494     Float_t asym = -10;
6495     if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6496     
6497     //
6498     
6499     Int_t ebin = -1;
6500     if(en > 8  && en <= 12) ebin = 0;
6501     if(en > 12 && en <= 16) ebin = 1;
6502     if(en > 16 && en <= 20) ebin = 2;
6503     if(en > 20)             ebin = 3;
6504     
6505     // MC data histograms and some related calculations
6506     // mc tag, n overlaps, asym of generated mesons
6507     
6508     Int_t   mcindex   = -1;
6509     Int_t   mctag     = -1;
6510     Float_t eprim     = -1;
6511     Float_t asymGen   = -2;
6512     Float_t angleGen  =  2000;
6513     Int_t   noverlaps =  0;
6514     
6515     if(IsDataMC())
6516     {
6517       // MC indexes
6518
6519       GetMCIndex(cluster,mcindex,mctag);
6520       
6521       // MC primary kine, generation fractions
6522
6523       GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6524         
6525       // For cluster with MC pi0 and more than 1 maxima
6526       
6527      }
6528     
6529     //
6530     
6531     FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6532
6533     //
6534     
6535     if(fFillNCellHisto)
6536       FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6537     
6538     //
6539     
6540     if(fFillSSExtraHisto)
6541       FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin)  ;
6542     
6543     //
6544
6545     if(!matched && ebin >= 0 && fFillEbinHisto)
6546       FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6547
6548     //
6549     
6550     if(fFillAngleHisto)
6551       FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6552
6553     if(fFillArmenterosHisto && ebin >= 0)
6554       FillArmenterosHistograms(nMax, ebin, mcindex, en, l0, pidTag);
6555
6556     if(fFillThetaStarHisto)
6557       FillThetaStarHistograms(nMax,matched,mcindex, en, l0, pidTag);
6558
6559     
6560     //---------------------------------------------------------------------
6561     // From here start applying some cuts
6562     //---------------------------------------------------------------------
6563     
6564     // If set, check just on MC clusters when SS cut is applied
6565     if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6566     {
6567       // For cluster with MC pi0 and more than 1 maxima
6568       
6569       if(fFillMCOverlapHisto)
6570         CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6571       //l0, l1, l2);
6572       
6573       //
6574       
6575       if(fFillMCHisto)
6576         FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6577                          nMax,matched,splitFrac, asym, eprim,asymGen);
6578       
6579       //
6580       
6581       if(fFillMCOverlapHisto)
6582         FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6583       
6584     }
6585     
6586     // Fill few histograms, some still without cuts
6587     FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6588     
6589     if(pidTag==AliCaloPID::kPi0)
6590     {
6591       FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6592       
6593       if(fFillSSWeightHisto && !matched)
6594         FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6595       
6596       if(fFillTMHisto && fFillTMResidualHisto)
6597         FillTrackMatchingHistograms(cluster,nMax,mcindex);
6598       
6599       if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6600       {
6601         if     (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6602         else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6603         else if(noverlaps  > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6604       }
6605     }
6606     else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6607     {
6608       FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6609     }
6610     else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6611     {
6612       FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6613     }
6614     
6615   }//loop
6616   
6617   if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6618
6619 }
6620
6621 //______________________________________________________________________
6622 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6623 {
6624   //Print some relevant parameters set for the analysis
6625   if(! opt)
6626     return;
6627   
6628   printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6629   AliAnaCaloTrackCorrBaseClass::Print("");
6630   printf("Calorimeter     =     %s\n",  GetCalorimeterString().Data()) ;
6631   if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n",       GetCaloUtils()->GetLocalMaximaCutE());
6632   if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n",  GetCaloUtils()->GetLocalMaximaCutEDiff());
6633   printf("Min. N Cells =%d \n",         fMinNCells) ;
6634   printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6635   if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6636
6637   printf("    \n") ;
6638   
6639
6640
6641 //___________________________________________________________________________________________________________________
6642 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6643                                                                                           AliVCaloCells* cells,
6644                                                                                           AliVCluster * cluster,
6645                                                                                           Float_t & l0,   Float_t & l1,
6646                                                                                           Float_t & disp, Float_t & dEta, Float_t & dPhi,
6647                                                                                           Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6648                                                                                           Float_t eCellMin)
6649 {
6650   // Calculates new center of gravity in the local EMCAL-module coordinates
6651   // and tranfers into global ALICE coordinates
6652   // Calculates Dispersion and main axis
6653   
6654   if(!cluster)
6655   {
6656     AliInfo("Cluster pointer null!");
6657     return;
6658   }
6659   
6660   Double_t eCell       = 0.;
6661   Float_t  fraction    = 1.;
6662   Float_t  recalFactor = 1.;
6663   
6664   Int_t    iSupMod = -1;
6665   Int_t    iTower  = -1;
6666   Int_t    iIphi   = -1;
6667   Int_t    iIeta   = -1;
6668   Int_t    iphi    = -1;
6669   Int_t    ieta    = -1;
6670   Double_t etai    = -1.;
6671   Double_t phii    = -1.;
6672   
6673   Int_t    nstat   = 0 ;
6674   Float_t  wtot    = 0.;
6675   Double_t w       = 0.;
6676   Double_t etaMean = 0.;
6677   Double_t phiMean = 0.;
6678     
6679   Bool_t  shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6680
6681   Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6682   
6683   Float_t simuTotWeight = 0;
6684   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6685   {
6686     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6687     simuTotWeight/= energy;
6688   }
6689   
6690   //Loop on cells, get weighted parameters
6691   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6692   {
6693     //Get from the absid the supermodule, tower and eta/phi numbers
6694     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6695     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6696     
6697     //Get the cell energy, if recalibration is on, apply factors
6698     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6699     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6700     
6701     if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6702     {
6703       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6704     }
6705     
6706     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6707     
6708     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6709     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6710     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6711     
6712     if(energy > 0 && eCell > eCellMin)
6713     {
6714       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6715         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6716       
6717       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6718
6719       //correct weight, ONLY in simulation
6720       w *= (fWSimu[0] - fWSimu[1] * w );
6721
6722       etai=(Double_t)ieta;
6723       phii=(Double_t)iphi;
6724       
6725       if(w > 0.0)
6726       {
6727         wtot += w ;
6728         nstat++;
6729         //Shower shape
6730         sEta     += w * etai * etai ;
6731         etaMean  += w * etai ;
6732         sPhi     += w * phii * phii ;
6733         phiMean  += w * phii ;
6734         sEtaPhi  += w * etai * phii ;
6735       }
6736     }
6737     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6738     
6739   }//cell loop
6740   
6741   //Normalize to the weight
6742   if (wtot > 0)
6743   {
6744     etaMean /= wtot ;
6745     phiMean /= wtot ;
6746   }
6747   else
6748     AliError(Form("Wrong weight %f\n", wtot));
6749   
6750   //Calculate dispersion
6751   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6752   {
6753     //Get from the absid the supermodule, tower and eta/phi numbers
6754     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6755     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6756     
6757     //Get the cell energy, if recalibration is on, apply factors
6758     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6759     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6760     if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6761     {
6762       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6763     }
6764     
6765     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6766     
6767     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6768     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6769     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6770     
6771     if(energy > 0 && eCell > eCellMin)
6772     {
6773       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6774         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6775       
6776       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6777       
6778       //correct weight, ONLY in simulation
6779       w *= (fWSimu[0] - fWSimu[1] * w );
6780
6781       etai=(Double_t)ieta;
6782       phii=(Double_t)iphi;
6783       if(w > 0.0)
6784       {
6785         disp +=  w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6786         dEta +=  w * (etai-etaMean)*(etai-etaMean) ;
6787         dPhi +=  w * (phii-phiMean)*(phii-phiMean) ;
6788       }
6789     }
6790     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6791   }// cell loop
6792   
6793   //Normalize to the weigth and set shower shape parameters
6794   if (wtot > 0 && nstat > 1)
6795   {
6796     disp    /= wtot ;
6797     dEta    /= wtot ;
6798     dPhi    /= wtot ;
6799     sEta    /= wtot ;
6800     sPhi    /= wtot ;
6801     sEtaPhi /= wtot ;
6802     
6803     sEta    -= etaMean * etaMean ;
6804     sPhi    -= phiMean * phiMean ;
6805     sEtaPhi -= etaMean * phiMean ;
6806     
6807     l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6808     l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6809   }
6810   else
6811   {
6812     l0   = 0. ;
6813     l1   = 0. ;
6814     dEta = 0. ; dPhi = 0. ; disp    = 0. ;
6815     sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;
6816   }
6817   
6818 }
6819
6820