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