]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[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(),            fCalorimeter(""),
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   fhMassAsyCutNLocMax1(0),                   fhMassAsyCutNLocMax2(0),                   fhMassAsyCutNLocMaxN(0),
67   fhM02AsyCutNLocMax1(0),                    fhM02AsyCutNLocMax2(0),                    fhM02AsyCutNLocMaxN(0),
68   fhMassM02CutNLocMax1(0),                   fhMassM02CutNLocMax2(0),                   fhMassM02CutNLocMaxN(0),
69   fhAsymM02CutNLocMax1(0),                   fhAsymM02CutNLocMax2(0),                   fhAsymM02CutNLocMaxN(0),
70   fhMassEnCutNLocMax1(0),                    fhMassEnCutNLocMax2(0),                    fhMassEnCutNLocMaxN(0),
71   fhM02EnCutNLocMax1(0),                     fhM02EnCutNLocMax2(0),                     fhM02EnCutNLocMaxN(0),
72   fhAsymEnCutNLocMax1(0),                    fhAsymEnCutNLocMax2(0),                    fhAsymEnCutNLocMaxN(0),
73   fhSplitEFracEnCutNLocMax1(0),              fhSplitEFracEnCutNLocMax2(0),              fhSplitEFracEnCutNLocMaxN(0),
74   fhMassSplitECutNLocMax1(0),                fhMassSplitECutNLocMax2(0),                fhMassSplitECutNLocMaxN(0),
75   fhMCGenFracAfterCutsNLocMax1MCPi0(0),      fhMCGenFracAfterCutsNLocMax2MCPi0(0),      fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
76   fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
77   fhNCellMassEHighNLocMax1MCPi0(0),          fhNCellM02EHighNLocMax1MCPi0(0),
78   fhNCellMassELowNLocMax1MCPi0(0),           fhNCellM02ELowNLocMax1MCPi0(0),
79   fhNCellMassEHighNLocMax2MCPi0(0),          fhNCellM02EHighNLocMax2MCPi0(0),
80   fhNCellMassELowNLocMax2MCPi0(0),           fhNCellM02ELowNLocMax2MCPi0(0),
81   fhNCellMassEHighNLocMaxNMCPi0(0),          fhNCellM02EHighNLocMaxNMCPi0(0),
82   fhNCellMassELowNLocMaxNMCPi0(0),           fhNCellM02ELowNLocMaxNMCPi0(0),
83   fhAnglePairPrimPi0RecoNLocMax1(0),         fhAnglePairPrimPi0RecoNLocMax2(0),         fhAnglePairPrimPi0RecoNLocMaxN(0),
84   fhAnglePairPrimPi0vsRecoNLocMax1(0),       fhAnglePairPrimPi0vsRecoNLocMax2(0),       fhAnglePairPrimPi0vsRecoNLocMaxN(0),
85   fhAnglePairPrimPi0OverM02NLocMax1(0),      fhAnglePairPrimPi0OverM02NLocMax2(0),      fhAnglePairPrimPi0OverM02NLocMaxN(0),
86   fhCentralityPi0NLocMax1(0),                fhCentralityEtaNLocMax1(0),
87   fhCentralityPi0NLocMax2(0),                fhCentralityEtaNLocMax2(0),
88   fhCentralityPi0NLocMaxN(0),                fhCentralityEtaNLocMaxN(0),
89   fhEventPlanePi0NLocMax1(0),                fhEventPlaneEtaNLocMax1(0),
90   fhEventPlanePi0NLocMax2(0),                fhEventPlaneEtaNLocMax2(0),
91   fhEventPlanePi0NLocMaxN(0),                fhEventPlaneEtaNLocMaxN(0),
92   fhClusterEtaPhiNLocMax1(0),                fhClusterEtaPhiNLocMax2(0),                fhClusterEtaPhiNLocMaxN(0),
93   fhPi0EtaPhiNLocMax1(0),                    fhPi0EtaPhiNLocMax2(0),                    fhPi0EtaPhiNLocMaxN(0),
94   fhEtaEtaPhiNLocMax1(0),                    fhEtaEtaPhiNLocMax2(0),                    fhEtaEtaPhiNLocMaxN(0),
95   fhPi0EPairDiffTimeNLM1(0),                 fhPi0EPairDiffTimeNLM2(0),                 fhPi0EPairDiffTimeNLMN(0),
96   fhEtaEPairDiffTimeNLM1(0),                 fhEtaEPairDiffTimeNLM2(0),                 fhEtaEPairDiffTimeNLMN(0),
97   fhMCPi0HighNLMPair(0),                     fhMCPi0LowNLMPair(0),
98   fhMCPi0AnyNLMPair(0),                      fhMCPi0NoneNLMPair(0),
99   fhMCPi0HighNLMPairNoMCMatch(0),            fhMCPi0LowNLMPairNoMCMatch(0),
100   fhMCPi0AnyNLMPairNoMCMatch(0),             fhMCPi0NoneNLMPairNoMCMatch(0),
101   fhMCPi0HighNLMPairOverlap(0),              fhMCPi0LowNLMPairOverlap(0),
102   fhMCPi0AnyNLMPairOverlap(0),               fhMCPi0NoneNLMPairOverlap(0),
103   fhMCPi0HighNLMPairNoMCMatchOverlap(0),     fhMCPi0LowNLMPairNoMCMatchOverlap(0),
104   fhMCPi0AnyNLMPairNoMCMatchOverlap(0),      fhMCPi0NoneNLMPairNoMCMatchOverlap(0),
105   fhMCPi0DecayPhotonHitHighLM(0),            fhMCPi0DecayPhotonAdjHighLM(0),
106   fhMCPi0DecayPhotonHitOtherLM(0),           fhMCPi0DecayPhotonAdjOtherLM(0),
107   fhMCPi0DecayPhotonAdjacent(0),             fhMCPi0DecayPhotonHitNoLM(0),
108   fhMCPi0DecayPhotonHitHighLMOverlap(0),     fhMCPi0DecayPhotonAdjHighLMOverlap(0),
109   fhMCPi0DecayPhotonHitOtherLMOverlap(0),    fhMCPi0DecayPhotonAdjOtherLMOverlap(0),
110   fhMCPi0DecayPhotonAdjacentOverlap(0),      fhMCPi0DecayPhotonHitNoLMOverlap(0),
111   fhMCEOverlapType(0),                       fhMCEOverlapTypeMatch(0)
112 {
113   //default ctor
114   
115   // Init array of histograms
116   for(Int_t i = 0; i < 7; i++)
117   {
118     for(Int_t j = 0; j < 2; j++)
119     {
120       fhMassNLocMax1[i][j]  = 0;
121       fhMassNLocMax2[i][j]  = 0;
122       fhMassNLocMaxN[i][j]  = 0;
123       fhMassSplitENLocMax1[i][j]  = 0;
124       fhMassSplitENLocMax2[i][j]  = 0;
125       fhMassSplitENLocMaxN[i][j]  = 0;
126       fhNLocMax[i][j]       = 0;
127       fhNLocMaxM02Cut[i][j] = 0;
128       fhSplitClusterENLocMax   [i][j] = 0;
129       fhSplitClusterEPi0NLocMax[i][j] = 0;
130       fhM02NLocMax1[i][j]   = 0;
131       fhM02NLocMax2[i][j]   = 0;
132       fhM02NLocMaxN[i][j]   = 0;
133       fhNCellNLocMax1[i][j] = 0;
134       fhNCellNLocMax2[i][j] = 0;
135       fhNCellNLocMaxN[i][j] = 0;
136       fhM02Pi0NLocMax1[i][j] = 0;
137       fhM02EtaNLocMax1[i][j] = 0;
138       fhM02ConNLocMax1[i][j] = 0;
139       fhM02Pi0NLocMax2[i][j] = 0;
140       fhM02EtaNLocMax2[i][j] = 0;
141       fhM02ConNLocMax2[i][j] = 0;
142       fhM02Pi0NLocMaxN[i][j] = 0;
143       fhM02EtaNLocMaxN[i][j] = 0;
144       fhM02ConNLocMaxN[i][j] = 0;
145       
146       fhMassPi0NLocMax1[i][j] = 0;
147       fhMassEtaNLocMax1[i][j] = 0;
148       fhMassConNLocMax1[i][j] = 0;
149       fhMassPi0NLocMax2[i][j] = 0;
150       fhMassEtaNLocMax2[i][j] = 0;
151       fhMassConNLocMax2[i][j] = 0;
152       fhMassPi0NLocMaxN[i][j] = 0;
153       fhMassEtaNLocMaxN[i][j] = 0;
154       fhMassConNLocMaxN[i][j] = 0;
155       
156       fhNCellPi0NLocMax1[i][j] = 0;
157       fhNCellEtaNLocMax1[i][j] = 0;
158       fhNCellPi0NLocMax2[i][j] = 0;
159       fhNCellEtaNLocMax2[i][j] = 0;
160       fhNCellPi0NLocMaxN[i][j] = 0;
161       fhNCellEtaNLocMaxN[i][j] = 0;
162       
163       fhAsyPi0NLocMax1[i][j] = 0;
164       fhAsyEtaNLocMax1[i][j] = 0;
165       fhAsyConNLocMax1[i][j] = 0;
166       fhAsyPi0NLocMax2[i][j] = 0;
167       fhAsyEtaNLocMax2[i][j] = 0;
168       fhAsyConNLocMax2[i][j] = 0;
169       fhAsyPi0NLocMaxN[i][j] = 0;
170       fhAsyEtaNLocMaxN[i][j] = 0;
171       fhAsyConNLocMaxN[i][j] = 0;      
172       
173       fhMassM02NLocMax1[i][j]= 0;
174       fhMassM02NLocMax2[i][j]= 0;
175       fhMassM02NLocMaxN[i][j]= 0;
176       
177       fhMassSplitEPi0NLocMax1[i][j]  = 0;
178       fhMassSplitEPi0NLocMax2[i][j]  = 0;
179       fhMassSplitEPi0NLocMaxN[i][j]  = 0;
180
181       fhMassSplitEAfterCutsNLocMax1[i][j]  = 0;
182       fhMassSplitEAfterCutsNLocMax2[i][j]  = 0;
183       fhMassSplitEAfterCutsNLocMaxN[i][j]  = 0;
184
185       
186       fhMassDispEtaNLocMax1[i][j]= 0;
187       fhMassDispEtaNLocMax2[i][j]= 0;
188       fhMassDispEtaNLocMaxN[i][j]= 0;      
189       fhMassDispPhiNLocMax1[i][j]= 0;
190       fhMassDispPhiNLocMax2[i][j]= 0;
191       fhMassDispPhiNLocMaxN[i][j]= 0;      
192       fhMassDispAsyNLocMax1[i][j]= 0;
193       fhMassDispAsyNLocMax2[i][j]= 0;
194       fhMassDispAsyNLocMaxN[i][j]= 0;      
195       
196       fhSplitEFractionNLocMax1[i][j]=0;
197       fhSplitEFractionNLocMax2[i][j]=0;
198       fhSplitEFractionNLocMaxN[i][j]=0;
199       
200       fhAnglePairNLocMax1         [i][j] = 0;
201       fhAnglePairNLocMax2         [i][j] = 0;
202       fhAnglePairNLocMaxN         [i][j] = 0;
203
204       fhAnglePairAfterCutsNLocMax1[i][j] = 0;
205       fhAnglePairAfterCutsNLocMax2[i][j] = 0;
206       fhAnglePairAfterCutsNLocMaxN[i][j] = 0;
207
208       fhAnglePairPi0NLocMax1      [i][j] = 0;
209       fhAnglePairPi0NLocMax2      [i][j] = 0;
210       fhAnglePairPi0NLocMaxN      [i][j] = 0;
211       
212       fhAnglePairMassNLocMax1     [i][j] = 0;
213       fhAnglePairMassNLocMax2     [i][j] = 0;
214       fhAnglePairMassNLocMaxN     [i][j] = 0;
215
216       fhAnglePairM02NLocMax1      [i][j] = 0;
217       fhAnglePairM02NLocMax2      [i][j] = 0;
218       fhAnglePairM02NLocMaxN      [i][j] = 0;
219       
220       fhAnglePairOverM02NLocMax1  [i][j] = 0;
221       fhAnglePairOverM02NLocMax2  [i][j] = 0;
222       fhAnglePairOverM02NLocMaxN  [i][j] = 0;
223       
224       fhAnglePairOverM02NLocMax1Overlap0[i][j] = 0;
225       fhAnglePairOverM02NLocMax2Overlap0[i][j] = 0;
226       fhAnglePairOverM02NLocMaxNOverlap0[i][j] = 0;
227       
228       fhCosThStarNLocMax1         [i][j] = 0;
229       fhCosThStarNLocMax2         [i][j] = 0;
230       fhCosThStarNLocMaxN         [i][j] = 0;
231       
232       fhCosThStarAfterCutsNLocMax1[i][j] = 0;
233       fhCosThStarAfterCutsNLocMax2[i][j] = 0;
234       fhCosThStarAfterCutsNLocMaxN[i][j] = 0;
235       
236       fhCosThStarPi0NLocMax1      [i][j] = 0;
237       fhCosThStarPi0NLocMax2      [i][j] = 0;
238       fhCosThStarPi0NLocMaxN      [i][j] = 0;
239       
240       fhMCGenFracNLocMax1[i][j]= 0;
241       fhMCGenFracNLocMax2[i][j]= 0;
242       fhMCGenFracNLocMaxN[i][j]= 0;
243
244       fhMCGenFracNLocMax1NoOverlap[i][j]= 0;
245       fhMCGenFracNLocMax2NoOverlap[i][j]= 0;
246       fhMCGenFracNLocMaxNNoOverlap[i][j]= 0;
247       
248       fhMCGenSplitEFracNLocMax1[i][j]= 0;
249       fhMCGenSplitEFracNLocMax2[i][j]= 0;
250       fhMCGenSplitEFracNLocMaxN[i][j]= 0;    
251
252       fhMCGenSplitEFracNLocMax1NoOverlap[i][j]= 0;
253       fhMCGenSplitEFracNLocMax2NoOverlap[i][j]= 0;
254       fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]= 0;
255       
256       fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
257       fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
258       fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;    
259       
260       fhMCGenEvsSplitENLocMax1[i][j]= 0;
261       fhMCGenEvsSplitENLocMax2[i][j]= 0;
262       fhMCGenEvsSplitENLocMaxN[i][j]= 0;     
263       
264       fhAsymNLocMax1 [i][j] = 0;
265       fhAsymNLocMax2 [i][j] = 0;
266       fhAsymNLocMaxN [i][j] = 0;
267       
268       fhMassAfterCutsNLocMax1[i][j] = 0;
269       fhMassAfterCutsNLocMax2[i][j] = 0;
270       fhMassAfterCutsNLocMaxN[i][j] = 0;
271
272       
273       fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
274       fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
275       fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
276     }
277    
278     for(Int_t jj = 0; jj < 4; jj++)
279     {
280       fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
281       fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
282       fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
283       
284       fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
285       fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
286       fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
287       
288       fhMCGenFracNLocMaxEbin[i][jj]       = 0;
289       fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
290       
291       fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
292       fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
293       fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
294     }
295     
296     fhTrackMatchedDEtaNLocMax1[i] = 0;
297     fhTrackMatchedDPhiNLocMax1[i] = 0;
298     fhTrackMatchedDEtaNLocMax2[i] = 0;
299     fhTrackMatchedDPhiNLocMax2[i] = 0; 
300     fhTrackMatchedDEtaNLocMaxN[i] = 0; 
301     fhTrackMatchedDPhiNLocMaxN[i] = 0; 
302
303     fhTrackMatchedDEtaNLocMax1Pos[i] = 0;
304     fhTrackMatchedDPhiNLocMax1Pos[i] = 0;
305     fhTrackMatchedDEtaNLocMax2Pos[i] = 0;
306     fhTrackMatchedDPhiNLocMax2Pos[i] = 0;
307     fhTrackMatchedDEtaNLocMaxNPos[i] = 0;
308     fhTrackMatchedDPhiNLocMaxNPos[i] = 0;
309
310     fhTrackMatchedDEtaNLocMax1Neg[i] = 0;
311     fhTrackMatchedDPhiNLocMax1Neg[i] = 0;
312     fhTrackMatchedDEtaNLocMax2Neg[i] = 0;
313     fhTrackMatchedDPhiNLocMax2Neg[i] = 0;
314     fhTrackMatchedDEtaNLocMaxNNeg[i] = 0;
315     fhTrackMatchedDPhiNLocMaxNNeg[i] = 0;
316     
317     for(Int_t nlm = 0; nlm < 3; nlm++)
318     {
319       fhMCEM02Overlap0     [nlm][i] = 0;
320       fhMCEM02Overlap1     [nlm][i] = 0;
321       fhMCEM02OverlapN     [nlm][i] = 0;
322       fhMCEM02Overlap0Match[nlm][i] = 0;
323       fhMCEM02Overlap1Match[nlm][i] = 0;
324       fhMCEM02OverlapNMatch[nlm][i] = 0;
325       
326       fhMCEMassOverlap0     [nlm][i] = 0;
327       fhMCEMassOverlap1     [nlm][i] = 0;
328       fhMCEMassOverlapN     [nlm][i] = 0;
329       fhMCEMassOverlap0Match[nlm][i] = 0;
330       fhMCEMassOverlap1Match[nlm][i] = 0;
331       fhMCEMassOverlapNMatch[nlm][i] = 0;
332
333       fhMCEAsymOverlap0     [nlm][i] = 0;
334       fhMCEAsymOverlap1     [nlm][i] = 0;
335       fhMCEAsymOverlapN     [nlm][i] = 0;
336       fhMCEAsymOverlap0Match[nlm][i] = 0;
337       fhMCEAsymOverlap1Match[nlm][i] = 0;
338       fhMCEAsymOverlapNMatch[nlm][i] = 0;
339
340       fhMCENCellOverlap0     [nlm][i] = 0;
341       fhMCENCellOverlap1     [nlm][i] = 0;
342       fhMCENCellOverlapN     [nlm][i] = 0;
343       fhMCENCellOverlap0Match[nlm][i] = 0;
344       fhMCENCellOverlap1Match[nlm][i] = 0;
345       fhMCENCellOverlapNMatch[nlm][i] = 0;
346       
347       fhMCEEpriOverlap0     [nlm][i] = 0;
348       fhMCEEpriOverlap1     [nlm][i] = 0;
349       fhMCEEpriOverlapN     [nlm][i] = 0;
350       fhMCEEpriOverlap0Match[nlm][i] = 0;
351       fhMCEEpriOverlap1Match[nlm][i] = 0;
352       fhMCEEpriOverlapNMatch[nlm][i] = 0;
353
354       fhMCEEpriOverlap0IdPi0[nlm][i] = 0;
355       fhMCEEpriOverlap1IdPi0[nlm][i] = 0;
356       fhMCEEpriOverlapNIdPi0[nlm][i] = 0;
357       
358       fhMCESplitEFracOverlap0     [nlm][i] = 0;
359       fhMCESplitEFracOverlap1     [nlm][i] = 0;
360       fhMCESplitEFracOverlapN     [nlm][i] = 0;
361       fhMCESplitEFracOverlap0Match[nlm][i] = 0;
362       fhMCESplitEFracOverlap1Match[nlm][i] = 0;
363       fhMCESplitEFracOverlapNMatch[nlm][i] = 0;
364       
365       fhMCENOverlaps       [nlm][i] = 0;
366       fhMCENOverlapsMatch  [nlm][i] = 0;
367             
368       if(i > 3) continue ;
369       
370       fhMCPi0MassM02Overlap0     [nlm][i] = 0;
371       fhMCPi0MassM02Overlap1     [nlm][i] = 0;
372       fhMCPi0MassM02OverlapN     [nlm][i] = 0;
373       fhMCPi0MassM02Overlap0Match[nlm][i] = 0;
374       fhMCPi0MassM02Overlap1Match[nlm][i] = 0;
375       fhMCPi0MassM02OverlapNMatch[nlm][i] = 0;
376     }
377   }
378    
379   for(Int_t i = 0; i < 2; i++)
380   {
381     fhSplitEFractionvsAsyNLocMax1[i] = 0;
382     fhSplitEFractionvsAsyNLocMax2[i] = 0; 
383     fhSplitEFractionvsAsyNLocMaxN[i] = 0;    
384   }
385   
386   for(Int_t i = 0; i < 4; i++)
387   {
388     fhMassM02NLocMax1Ebin[i] = 0 ;
389     fhMassM02NLocMax2Ebin[i] = 0 ;
390     fhMassM02NLocMaxNEbin[i] = 0 ;
391
392     fhMassAsyNLocMax1Ebin[i] = 0 ;
393     fhMassAsyNLocMax2Ebin[i] = 0 ;
394     fhMassAsyNLocMaxNEbin[i] = 0 ;
395
396     fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
397     fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
398     fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
399     
400     fhMassDispEtaNLocMax1Ebin[i] = 0 ;
401     fhMassDispEtaNLocMax2Ebin[i] = 0 ;
402     fhMassDispEtaNLocMaxNEbin[i] = 0 ;
403     
404     fhMassDispPhiNLocMax1Ebin[i] = 0 ;
405     fhMassDispPhiNLocMax2Ebin[i] = 0 ;
406     fhMassDispPhiNLocMaxNEbin[i] = 0 ;    
407     
408     fhMassDispAsyNLocMax1Ebin[i] = 0 ;
409     fhMassDispAsyNLocMax2Ebin[i] = 0 ;
410     fhMassDispAsyNLocMaxNEbin[i] = 0 ;    
411
412     fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
413     fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
414     fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
415   }
416   
417   for(Int_t nlm = 0; nlm < 3; nlm++)
418   {
419     
420     fhMCPi0DecayPhotonHitHighLMDiffELM1 [nlm] = 0 ;
421     fhMCPi0DecayPhotonAdjHighLMDiffELM1 [nlm] = 0 ;           
422     fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] = 0 ;           
423     fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] = 0 ;            
424     
425     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1 [nlm] = 0 ;     
426     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1 [nlm] = 0 ;      
427     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm] = 0 ;     
428     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm] = 0 ;     
429     
430     fhMCPi0DecayPhotonHitHighLMDiffELM2 [nlm] = 0 ;           
431     fhMCPi0DecayPhotonAdjHighLMDiffELM2 [nlm] = 0 ;            
432     fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] = 0 ;            
433     fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] = 0 ;         
434     
435     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2 [nlm] = 0 ;    
436     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2 [nlm] = 0 ;      
437     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm] = 0 ;     
438     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm] = 0 ;
439     
440     fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1 [nlm] = 0 ;
441     fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1 [nlm] = 0 ;
442     fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] = 0 ;
443     fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] = 0 ;
444     
445     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
446     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1 [nlm] = 0 ;
447     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
448     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm] = 0 ;
449     
450     fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2 [nlm] = 0 ;
451     fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2 [nlm] = 0 ;
452     fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] = 0 ;
453     fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] = 0 ;
454     
455     fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
456     fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2 [nlm] = 0 ;
457     fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
458     fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm] = 0 ;
459     
460     fhMCPi0DecayPhotonHitHighLMMass [nlm] = 0 ;
461     fhMCPi0DecayPhotonAdjHighLMMass [nlm] = 0 ;                 
462     fhMCPi0DecayPhotonHitOtherLMMass[nlm] = 0 ;              
463     fhMCPi0DecayPhotonAdjOtherLMMass[nlm] = 0 ;               
464     fhMCPi0DecayPhotonAdjacentMass  [nlm] = 0 ;                  
465     fhMCPi0DecayPhotonHitNoLMMass   [nlm] = 0 ;                  
466     
467     fhMCPi0DecayPhotonHitHighLMOverlapMass [nlm] = 0 ;
468     fhMCPi0DecayPhotonAdjHighLMOverlapMass [nlm] = 0 ;          
469     fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm] = 0 ;        
470     fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm] = 0 ;        
471     fhMCPi0DecayPhotonAdjacentOverlapMass  [nlm] = 0 ;
472     fhMCPi0DecayPhotonHitNoLMOverlapMass   [nlm] = 0 ;          
473     
474     fhPi0CellE       [nlm] = 0 ;
475     fhPi0CellEFrac   [nlm] = 0 ;
476     fhPi0CellLogEFrac[nlm] = 0 ;
477     
478     fhPi0CellEMaxEMax2Frac   [nlm] = 0 ;
479     fhPi0CellEMaxClusterFrac [nlm] = 0 ;
480     fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
481
482     fhPi0CellEMaxFrac [nlm] = 0 ;
483     fhPi0CellEMax2Frac[nlm] = 0 ;
484     
485     for(Int_t i = 0; i < 20; i++)
486     {
487       fhM02WeightPi0  [nlm][i] = 0;
488       fhM02ECellCutPi0[nlm][i] = 0;
489     }
490     
491     fhMassBadDistClose[nlm] = 0;
492     fhM02BadDistClose [nlm] = 0;
493     fhMassOnBorder    [nlm] = 0;
494     fhM02OnBorder     [nlm] = 0;
495     
496     fhAsyMCGenRecoDiffMCPi0    [nlm] = 0;
497     fhAsyMCGenRecoDiffMCPi0Conv[nlm] = 0;
498
499   }
500   
501   for(Int_t i = 0; i < 7; i++)
502   {
503     for(Int_t j = 0; j < 4; j++)
504     {
505       
506       fhArmNLocMax1[i][j]  = 0;
507       fhArmNLocMax2[i][j]  = 0;
508       fhArmNLocMaxN[i][j]  = 0;
509       
510       fhArmPi0NLocMax1[i][j] = 0;
511       fhArmPi0NLocMax2[i][j] = 0;
512       fhArmPi0NLocMaxN[i][j] = 0;
513       
514       fhArmAfterCutsNLocMax1[i][j] = 0;
515       fhArmAfterCutsNLocMax2[i][j] = 0;
516       fhArmAfterCutsNLocMaxN[i][j] = 0;
517       
518     }
519   }
520   
521   for(Int_t i = 0; i < 5; i++)
522   {
523     for(Int_t j = 0; j < 5; j++)
524     {
525       fhNLocMaxDiffCut   [i][j][0] = 0;
526       fhNLocMaxDiffCut   [i][j][1] = 0;
527       fhNLocMaxDiffCutPi0[i][j][0] = 0;
528       fhNLocMaxDiffCutPi0[i][j][1] = 0;
529       for(Int_t k = 0; k < 3; k++)
530       {
531         fhM02NLocMaxDiffCut    [i][j][k][0] = 0;
532         fhM02NLocMaxDiffCut    [i][j][k][1] = 0;
533         fhM02NLocMaxDiffCutPi0 [i][j][k][0] = 0;
534         fhM02NLocMaxDiffCutPi0 [i][j][k][1] = 0;
535         fhMassNLocMaxDiffCut   [i][j][k][0] = 0;
536         fhMassNLocMaxDiffCut   [i][j][k][1] = 0;
537         fhMassNLocMaxDiffCutPi0[i][j][k][0] = 0;
538         fhMassNLocMaxDiffCutPi0[i][j][k][1] = 0;
539       }
540     }
541   }
542   
543   InitParameters();
544
545 }
546
547 //___________________________________________________________________________________________________________________
548 void AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
549                                                                 Float_t e1,    Float_t e2,    Float_t mass)
550                                                                 //Float_t m02,
551                                                                 //TLorentzVector l1, TLorentzVector l2)
552 {
553   // Check origin NLM tower of the cluster, when MC gives merged pi0
554   
555   if(mcindex != kmcPi0 && mcindex != kmcPi0Conv) return;
556
557   const UInt_t nc = cluster->GetNCells();
558   Int_t   list[nc];
559   Float_t elist[nc];
560   Int_t nMax = GetCaloUtils()->GetNumberOfLocalMaxima(cluster, GetEMCALCells(),list, elist);
561   
562   
563   //// PRINTS /////
564   
565   //if(mcindex==kmcPi0)     printf("** Normal Pi0 **\n");
566   //if(mcindex==kmcPi0Conv) printf("** Converted Pi0 **\n");
567
568 //  if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
569 //  {
570 //     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",
571 //            nMax, noverlaps,mass,m02,
572 //            l1.E(),l1.Eta(),l1.Phi()*TMath::RadToDeg(),
573 //            l2.E(),l2.Eta(),l2.Phi()*TMath::RadToDeg(), (l1+l2).M());
574 //    
575 //    // Study the mothers of cluster
576 //    printf("Cluster MC labels %d \n", cluster->GetNLabels());
577 //    for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
578 //    {
579 //      Int_t mclabel = cluster->GetLabels()[ilab];
580 //      
581 //      Bool_t  mOK = 0;
582 //      Int_t   mpdg = -999999;
583 //      Int_t   mstatus = -1;
584 //      Int_t   grandLabel = -1;
585 //      TLorentzVector mother = GetMCAnalysisUtils()->GetMother(mclabel,GetReader(),mpdg,mstatus,mOK,grandLabel);
586 //      
587 //      printf("******** mother %d : Label %d, pdg %d; status %d, E %2.2f, Eta %2.2f, Phi %2.2f, ok %d, mother label %d\n",
588 //             ilab, mclabel, mpdg, mstatus,mother.E(), mother.Eta(),mother.Phi()*TMath::RadToDeg(),mOK,grandLabel);
589 //      
590 //      if( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
591 //      {
592 //        while( ( mpdg == 22 || TMath::Abs(mpdg)==11 ) && grandLabel >=0 )
593 //        {
594 //          Int_t newLabel = -1;
595 //          TLorentzVector grandmother = GetMCAnalysisUtils()->GetMother(grandLabel,GetReader(),mpdg,mstatus,mOK,newLabel);
596 //          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",
597 //                 ilab, grandLabel, mpdg, mstatus,grandmother.E(), grandmother.Eta(), grandmother.Phi()*TMath::RadToDeg(),mOK,newLabel);
598 //          grandLabel = newLabel;
599 //          
600 //        }
601 //      }
602 //    }
603 //    
604 //    printf("Cells in cluster %d\n",cluster->GetNCells() );
605 //    for(Int_t icell = 0; icell < cluster->GetNCells(); icell++)
606 //    {
607 //      Int_t absIdCell = cluster->GetCellAbsId(icell);
608 //      Int_t mcLabel   = GetEMCALCells()->GetCellMCLabel(absIdCell);
609 //      GetReader()->RemapMCLabelForAODs(mcLabel);
610 //      Int_t ietac=-1; Int_t iphic = 0; Int_t rcuc = 0;
611 //      Int_t smc = GetModuleNumberCellIndexes(absIdCell,fCalorimeter, ietac, iphic, rcuc);
612 //
613 //      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);
614 //    }
615 //  }
616   //// PRINTS /////
617   
618   
619   //If only one maxima, consider all the towers in the cluster
620   if(nMax==1)
621   {
622     for (UInt_t icell = 0; icell < nc; icell++ )
623     {
624       list [icell] = cluster->GetCellAbsId(icell);
625       elist[icell] = GetEMCALCells()->GetCellAmplitude(list[icell]);
626     }
627   }
628   
629   Int_t nmaxima = nMax;
630   if(nMax==1) nmaxima = nc ;
631   
632   //Find highest energy Local Maxima Towers
633   Int_t   imax  = 999;
634   Int_t   imax2 = 999;
635   Float_t emax  = -1;
636   Float_t emax2 = -1;
637   for(Int_t i = 0; i < nmaxima; i++)
638   {
639     //printf("i %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
640     if(elist[i] > emax)
641     {
642       imax = i;
643       emax = elist[i];
644     }
645   }
646   
647   //Find second highest
648   for(Int_t i = 0; i < nmaxima; i++)
649   {
650     if(i==imax) continue;
651     
652     //printf("j %d: AbsId %d; E %2.3f\n",i,list[i],elist[i]);
653     
654     if(elist[i] > emax2)
655     {
656       imax2 = i;
657       emax2 = elist[i];
658     }
659   }
660   
661 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
662 //    printf("Local maxima: a) index %d, absId %d; b) index %d, absId %d\n",imax, list[imax], imax2, list[imax2]);
663   
664   //---------------------------------------------------------
665   //---------------------------------------------------------
666   // Compare ancestors of all local maxima at cell MC level
667   //---------------------------------------------------------
668   //---------------------------------------------------------
669   
670   // Check that the highest mc label and the max cluster label are the same
671   Int_t mcLabelMax = -1 ;
672   if(imax >=0 && imax < 999)
673   {
674     mcLabelMax = GetEMCALCells()->GetCellMCLabel(list[imax]);
675     GetReader()->RemapMCLabelForAODs(mcLabelMax);
676   }
677   
678   Int_t mcLabelMax2 = -1 ;
679   if(imax2 >=0 && imax2 < 999)
680   {
681     mcLabelMax2 = GetEMCALCells()->GetCellMCLabel(list[imax2]);
682     GetReader()->RemapMCLabelForAODs(mcLabelMax2);
683   }
684   
685   Int_t mcLabelclusterMax = cluster->GetLabels()[0];
686   Bool_t matchHighLMAndHighMC = kFALSE;
687   
688   //printf("MC label: LM1 %d, LM2 %d, cluster %d\n",mcLabelMax,mcLabelMax2,mcLabelclusterMax);
689   
690   if(mcLabelclusterMax == mcLabelMax && mcLabelclusterMax >= 0)
691   {
692     matchHighLMAndHighMC = kTRUE;
693     //printf("\t *** MATCH cluster and LM maximum ***\n");
694   }
695   else
696   {
697      //printf("\t *** NO MATCH cluster and LM maximum, check second ***\n");
698     if(mcLabelclusterMax == mcLabelMax2 && mcLabelclusterMax >= 0)
699     {
700       //printf("\t \t *** MATCH cluster and 2nd LM maximum ***\n");
701       matchHighLMAndHighMC = kTRUE;
702     }
703     else
704     {
705       //printf("\t \t *** NO MATCH***\n");
706       matchHighLMAndHighMC = kFALSE;
707     }
708   }
709   
710   // Compare the common ancestors of the 2 highest energy local maxima
711   Int_t ancPDG = 0, ancStatus = -1;
712   TLorentzVector momentum; TVector3 prodVertex;
713   Int_t ancLabel = 0;
714   Bool_t high = kFALSE;
715   Bool_t low  = kFALSE;
716
717 //  // print maxima origin
718 //  for(Int_t i = 0; i < nMax; i++)
719 //  {
720 //    Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
721 //    GetReader()->RemapMCLabelForAODs(mcLabel1);
722 //    
723 //    Bool_t ok  =kFALSE,gok = kFALSE;
724 //    Int_t pdg    = -22222, status   = -1;
725 //    Int_t gpdg   = -22222, gstatus  = -1;
726 //    Int_t ggpdg  = -22222, ggstatus = -1;
727 //    Int_t gLabel = -1, ggLabel = -1;
728 //    TLorentzVector primary   =GetMCAnalysisUtils()->GetMother     (mcLabel1,GetReader(),  pdg,  status, ok);
729 //    TLorentzVector gprimary  =GetMCAnalysisUtils()->GetGrandMother(mcLabel1,GetReader(), gpdg, gstatus,gok, gLabel,ggLabel);
730 //    TLorentzVector ggprimary =GetMCAnalysisUtils()->GetMother(ggLabel  ,GetReader(),ggpdg,ggstatus,gok);
731 //    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",
732 //           i,mcLabel1,pdg,primary.E(), gLabel,gpdg,gprimary.E(), ggLabel,ggpdg,ggprimary.E());
733 //  }
734
735   for(Int_t i = 0; i < nmaxima-1; i++)
736   {
737     Int_t mcLabel1 = GetEMCALCells()->GetCellMCLabel(list[i]);
738     GetReader()->RemapMCLabelForAODs(mcLabel1);
739  
740     for(Int_t j = i+1; j < nmaxima; j++)
741     {
742       Int_t mcLabel2 = GetEMCALCells()->GetCellMCLabel(list[j]);
743       GetReader()->RemapMCLabelForAODs(mcLabel2);
744       
745       if(mcLabel1 < 0 || mcLabel2 < 0 )
746       {
747         //printf("\t i %d label %d - j %d label %d; skip!\n",i,mcLabel1,j,mcLabel2);
748         continue;
749       }
750       
751       ancLabel = GetMCAnalysisUtils()->CheckCommonAncestor(mcLabel1,mcLabel2,
752                                                            GetReader(),ancPDG,ancStatus,momentum,prodVertex);
753       if(ancPDG==111)
754       {
755         if((i==imax && j==imax2) ||  (j==imax && i==imax2))
756           high = kTRUE;
757         else
758           low = kTRUE;
759       }
760       else if(ancPDG==22 || TMath::Abs(ancPDG)==11)
761       {
762         // If both bits are set, it could be that one of the maxima had a conversion
763         // reset the bit in this case
764         if(high && low)
765         {
766           //printf("\t Reset low bit\n");
767           low = kFALSE;
768         }
769       }
770      
771       Bool_t ok  =kFALSE;
772       Int_t pdg = -22222, status = -1;
773       TLorentzVector primary  =GetMCAnalysisUtils()->GetMother(ancLabel,GetReader(), pdg, status, ok);
774       //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);
775
776     }
777   }
778   
779   Float_t en = cluster->E();
780   
781 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
782 //    printf("Cell MC match: nMax %d; Match MC? %d; high %d; low %d\n",nMax,matchHighLMAndHighMC,high,low);
783   
784   if(!noverlaps)
785   {
786     if(matchHighLMAndHighMC)
787     {
788       if     (high && !low)  fhMCPi0HighNLMPair->Fill(en,nMax);
789       else if(low  && !high) fhMCPi0LowNLMPair ->Fill(en,nMax);
790       else if(low  &&  high) fhMCPi0AnyNLMPair ->Fill(en,nMax);
791       else                   fhMCPi0NoneNLMPair->Fill(en,nMax);
792     }
793     else
794     {
795       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatch->Fill(en,nMax);
796       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatch ->Fill(en,nMax);
797       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatch ->Fill(en,nMax);
798       else                   fhMCPi0NoneNLMPairNoMCMatch->Fill(en,nMax);
799     }
800   }
801   else
802   {
803     if(matchHighLMAndHighMC)
804     {
805       if     (high && !low)  fhMCPi0HighNLMPairOverlap->Fill(en,nMax);
806       else if(low  && !high) fhMCPi0LowNLMPairOverlap->Fill(en,nMax);
807       else if(low  &&  high) fhMCPi0AnyNLMPairOverlap->Fill(en,nMax);
808       else                   fhMCPi0NoneNLMPairOverlap->Fill(en,nMax);
809     }
810     else
811     {
812       if     (high && !low)  fhMCPi0HighNLMPairNoMCMatchOverlap->Fill(en,nMax);
813       else if(low  && !high) fhMCPi0LowNLMPairNoMCMatchOverlap->Fill(en,nMax);
814       else if(low  &&  high) fhMCPi0AnyNLMPairNoMCMatchOverlap->Fill(en,nMax);
815       else                   fhMCPi0NoneNLMPairNoMCMatchOverlap->Fill(en,nMax);
816     }  
817   }
818   
819   //----------------------------------------------------------------------
820   //----------------------------------------------------------------------
821   // Compare MC decay photon projection to cell location and Local Maxima
822   //----------------------------------------------------------------------
823   //----------------------------------------------------------------------
824   
825   // Get the mother pi0
826   
827   Bool_t ok     = kFALSE;
828   Int_t pdg    = -22222, status   = -1;
829   Int_t gLabel = -1;
830   
831   Int_t label = cluster->GetLabel();
832   TLorentzVector pi0Kine;
833     
834   while( pdg!=111 && label>=0 )
835   {
836     pi0Kine = GetMCAnalysisUtils()->GetGrandMother(label,GetReader(),pdg,status,ok, label,gLabel);
837   }
838   
839   if(pdg!=111 || label < 0)
840   {
841     Info("CheckLocalMaximaMCOrigin","Mother Pi0 not found!\n");
842     return;
843   }
844   
845   Int_t nDaugthers = GetMCAnalysisUtils()->GetNDaughters(label,GetReader(),ok);
846   
847   if(nDaugthers != 2)
848   {
849     Info("CheckLocalMaximaMCOrigin","N daughters %d !=2!\n",nDaugthers);
850     return;
851   }
852   
853   // Get daughter photon kinematics
854   Int_t pdg0 = -22222, status0   = -1; Int_t label0 = -1;
855   TLorentzVector photon0Kine = GetMCAnalysisUtils()->GetDaughter(0,label,GetReader(),pdg0,status0,ok,label0);
856   Int_t pdg1 = -22222, status1   = -1; Int_t label1 = -1;
857   TLorentzVector photon1Kine = GetMCAnalysisUtils()->GetDaughter(1,label,GetReader(),pdg1,status1,ok,label1);
858
859   if(pdg1!=22 || pdg0 != 22)
860   {
861     Info("CheckLocalMaximaMCOrigin","Wrong daughters PDG: photon0 %d - photon1 %d\n",pdg0,pdg1);
862     return;
863   }
864   
865   // In what cells did the photons hit
866   Float_t eta0 = photon0Kine.Eta();
867   Float_t eta1 = photon1Kine.Eta();
868   
869   Float_t phi0 = photon0Kine.Phi();
870   Float_t phi1 = photon1Kine.Phi();
871
872 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
873 //  {
874 //    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",
875 //           label , pi0Kine.E()    , pi0Kine.Eta(),pi0Kine.Phi()*TMath::RadToDeg(), (photon0Kine+photon1Kine).M(),
876 //           label0, photon0Kine.E(),          eta0,         phi0*TMath::RadToDeg(),
877 //           label1, photon1Kine.E(),          eta1,         phi1*TMath::RadToDeg());
878 //    
879 //    TLorentzVector momclus;
880 //    cluster->GetMomentum(momclus,GetVertex(0));
881 //    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());
882 //  }
883   
884   if(phi0 < 0 ) phi0+=TMath::TwoPi();
885   if(phi1 < 0 ) phi1+=TMath::TwoPi();
886   
887   Int_t absId0=-1, absId1=-1;
888   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta0, phi0, absId0);
889   GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta1, phi1, absId1);
890   
891   if(absId0 < 0 || absId1 < 0)
892   {
893     //printf("AliAnaInsideClusterInvariantMass::CheckLocalMaximaMCOrigin(() -  Photon hit AbsId: photon0 %d - photon1 %d\n",absId0,absId1);
894     return;
895   }
896   
897   //-----------------------------------------------
898   // Check that the 2 photons hit the Local Maxima
899   //-----------------------------------------------
900   
901   
902 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
903 //  {
904 //    printf("Photons AbsId (%d,%d); Local Maxima AbsId(%d,%d)\n",absId0,absId1,list[imax],list[imax2]);
905 //    printf("Photon1 (eta,phi)=(%f,%f); Photon2 (eta,phi)=(%f,%f);\n",eta0,phi0*TMath::RadToDeg(),eta1,phi1*TMath::RadToDeg());
906 //
907 //    Int_t ieta0=-1; Int_t iphi0 = 0; Int_t rcu0 = 0;
908 //    Int_t sm0 = GetModuleNumberCellIndexes(absId0,fCalorimeter, ieta0, iphi0, rcu0);
909 //    Int_t ieta1=-1; Int_t iphi1 = 0; Int_t rcu1 = 0;
910 //    Int_t sm1 = GetModuleNumberCellIndexes(absId1,fCalorimeter, ieta1, iphi1, rcu1);
911 //    
912 //    printf("Photon1 (id,sm,eta,phi)=(%d,%d,%d,%d), Photon2 (id,sm,eta,phi)=(%d,%d,%d,%d)\n",
913 //           absId0,sm0,ieta0,iphi0,absId1,sm1,ieta1,iphi1);
914 //    
915 //    Int_t ietam0=-1; Int_t iphim0 = 0; Int_t rcum0 = 0; Int_t smm0 = -1 ;
916 //    if(imax  >= 0) smm0 = GetModuleNumberCellIndexes(list[imax] ,fCalorimeter, ietam0, iphim0, rcum0);
917 //    Int_t ietam1=-1; Int_t iphim1 = 0; Int_t rcum1 = 0; Int_t smm1 = -1 ;
918 //    if(imax2 >= 0) smm1 = GetModuleNumberCellIndexes(list[imax2],fCalorimeter, ietam1, iphim1, rcum1);
919 //    
920 //    printf("Max (id, sm,eta,phi)=(%d,%d,%d,%d), Max2 (id, sm,eta,phi)=(%d,%d,%d,%d)\n",
921 //           list[imax],smm0,ietam0,iphim0,list[imax2],smm1,ietam1,iphim1);
922 //  }
923
924   Int_t inlm = nMax-1;
925   if(inlm > 2) inlm = 2;
926   
927   Bool_t match0  = kFALSE;
928   Bool_t match1  = kFALSE;
929   Int_t imatch0  = -1;
930   Int_t imatch1  = -1;
931   if(imax >= 0 && imax2 >=0 && absId0 > 0 && absId1 > 0 )
932   {
933     if     (absId0 == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
934     else if(absId0 == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
935     
936     if     (absId1 == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
937     else if(absId1 == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
938   }
939   
940   //printf("primary imatch0 %d, imatch1 %d\n",imatch0,imatch1);
941
942   // If one or the 2 not matched, check with the other MC labels
943   // only in case there was a conversion
944   
945   Int_t   absId0second  = -1;
946   Int_t   absId1second  = -1;
947   Int_t   secLabel0     = -1;
948   Int_t   secLabel1     = -1;
949   Int_t   mcLabel0      = -1;
950   Int_t   mcLabel1      = -1;
951   Bool_t  secOK         = 0;
952   Int_t   secpdg        = -999999;
953   Int_t   secstatus     = -1;
954   Int_t   secgrandLabel = -1;
955
956   if(match0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
957   if(match1) { secLabel1 = label1 ; mcLabel1 = label1 ; }
958   
959   if((!match0 || !match1) && mcindex == kmcPi0Conv)
960   {
961     for (UInt_t ilab = 0; ilab < cluster->GetNLabels(); ilab++ )
962     {
963       Int_t mclabel = cluster->GetLabels()[ilab];
964       
965       //printf("Check label %d - %d\n",ilab,mclabel);
966       
967       if(mclabel == label0 || mclabel == label1)
968       {
969         //printf("continue: secLabel %d, label0 %d, label1 %d\n",mclabel,label0,label1);
970         if(mclabel == label0 && secLabel0 < 0) { secLabel0 = label0 ; mcLabel0 = label0 ; }
971         if(mclabel == label1 && secLabel1 < 0) { secLabel1 = label1 ; mcLabel1 = label1 ; }
972         continue ;
973       }
974       
975       //printf("Before while: secLabel0 %d, secLabel1 %d\n",secLabel0,secLabel1);
976       
977       // match mc label and parent photon
978       Int_t tmplabel   = mclabel;
979       while((secLabel0 < 0 || secLabel1 < 0) && tmplabel > 0 )
980       {
981         TLorentzVector mother = GetMCAnalysisUtils()->GetMother(tmplabel,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
982         
983         //printf("\t \t while secLabel %d, mom %d, granmom %d\n",mclabel,tmplabel,secgrandLabel);
984         
985         if((secgrandLabel == label0) || (secgrandLabel == label1 ))
986         {
987           //printf("mcMatch! grand label %d, secLabel %d\n",secgrandLabel, mclabel);
988           if(!match0 && mcLabel1 != secgrandLabel) { secLabel0 = mclabel; mcLabel0 = secgrandLabel; }
989           if(!match1 && mcLabel0 != secgrandLabel) { secLabel1 = mclabel; mcLabel1 = secgrandLabel; }
990         }
991         
992         //printf("\t GrandMother %d, secLabel0 %d, secLabel1 %d \n",secgrandLabel, secLabel0,secLabel1);
993
994         tmplabel = secgrandLabel;
995       }
996     }
997     
998     // Get the position of the found secondaries mother
999     if(!match0 && secLabel0 > 0)
1000     {
1001       TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel0,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1002       
1003       //Float_t eta = mother.Eta();
1004       //Float_t phi = mother.Phi();
1005       //if(phi < 0 ) phi+=TMath::TwoPi();
1006       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId0second);
1007       
1008       //printf("Secondary MC0 label %d, absId %d E %2.2F eta %2.2f, phi %f\n", secLabel0,absId0second, mother.E(),mother.Eta(),mother.Phi()*TMath::RadToDeg());
1009       
1010       if(absId0second == list[imax] ) { match0 = kTRUE ; imatch0 = imax  ; }
1011       if(absId0second == list[imax2]) { match0 = kTRUE ; imatch0 = imax2 ; }
1012     }
1013
1014     if(!match1 && secLabel1 > 0)
1015     {
1016       TLorentzVector mother = GetMCAnalysisUtils()->GetMother(secLabel1,GetReader(),secpdg,secstatus,secOK,secgrandLabel);
1017       
1018       //Float_t eta = mother.Eta();
1019       //Float_t phi = mother.Phi();
1020       //if(phi < 0 ) phi+=TMath::TwoPi();
1021       //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta, phi, absId1second);
1022       
1023       //printf("Secondary MC1 label %d absId %d E %2.2F eta %2.2f, phi %f\n",secLabel1, absId1second, mother.E(),mother.Eta(),mother.Phi()*TMath::RadToDeg());
1024       
1025       if(absId1second == list[imax] ) { match1 = kTRUE ; imatch1 = imax  ; }
1026       if(absId1second == list[imax2]) { match1 = kTRUE ; imatch1 = imax2 ; }
1027     }
1028
1029     //printf("secondary label mc0 %d, mc1 %d, imatch0 %d, imatch1 %d\n",secLabel0,secLabel1,imatch0,imatch1);
1030     
1031   }
1032     
1033   //printf("imatch0 %d, imatch1 %d\n",imatch0,imatch1);
1034   if( match0 && match1 )
1035   {
1036 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1037 //      printf("a) Both Photons hit local maxima \n");
1038     
1039     if(!noverlaps)
1040     {
1041       fhMCPi0DecayPhotonHitHighLM          ->Fill(en,nMax);
1042       fhMCPi0DecayPhotonHitHighLMMass[inlm]->Fill(en,mass);
1043       if(match0 && imatch0 == imax)
1044       {
1045         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1046         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1047         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1048         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1049       }
1050       else
1051       {
1052         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1053         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1054         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1055         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1056       }
1057     }
1058     else
1059     {
1060       fhMCPi0DecayPhotonHitHighLMOverlap          ->Fill(en,nMax);
1061       fhMCPi0DecayPhotonHitHighLMOverlapMass[inlm]->Fill(en,mass);
1062       if(match0 && imatch0 == imax )
1063       {
1064         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1065         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1066         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1067         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1068       }
1069       else
1070       {
1071         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1072         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1073         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1074         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1075       }
1076
1077     }
1078     
1079     return ;
1080   }
1081   
1082   //printf("Any match? photon0 %d, photon1 %d\n",match0,match1);
1083   //if(!match0 && !match1) printf("WARNING, LM not matched to any photon decay!\n");
1084   
1085   //---------------------------------------------
1086   // Check the adjacent cells to the local maxima
1087   //---------------------------------------------
1088   
1089   if(!match0)
1090   {
1091     if(imatch1!=imax  && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax]))   { match0 = kTRUE; imatch0 = imax  ; }
1092     //printf("imax - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam0,ieta0-ietam0, iphi0,iphim0,iphi0-iphim0);
1093     if(imatch1!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[imax2]) ) { match0 = kTRUE; imatch0 = imax2 ; }
1094     //printf("imax2 - match0? (%d-%d)=%d, (%d-%d)=%d\n",ieta0,ietam1,ieta0-ietam1, iphi0,iphim1,iphi0-iphim1);
1095   }
1096   
1097   if(!match1)
1098   {
1099     if(imatch0!=imax  && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax]) ) { match1 = kTRUE; imatch1 = imax  ; }
1100     //printf("imax - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam0,ieta1-ietam0, iphi1,iphim0,iphi1-iphim0);
1101   
1102     if(imatch0!=imax2 && GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[imax2])) { match1 = kTRUE; imatch1 = imax2 ; }
1103     //printf("imax2 - match1? (%d-%d)=%d, (%d-%d)=%d\n",ieta1,ietam1,ieta1-ietam1, iphi1,iphim1,iphi1-iphim1);
1104   }
1105     
1106   //printf("Local Maxima: adjacent0 %d,adjacent1 %d \n",match0,match1);
1107   
1108   if(match0 && match1)
1109   {
1110 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1111 //      printf("b) Both Photons hit local maxima or cell adjacent or 2 cells adjacent \n");
1112     
1113     if(!noverlaps)
1114     {
1115       fhMCPi0DecayPhotonAdjHighLM          ->Fill(en,nMax);
1116       fhMCPi0DecayPhotonAdjHighLMMass[inlm]->Fill(en,mass);
1117
1118       if(match0 && imatch0 == imax)
1119       {
1120         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1121         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1122         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1123         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1124       }
1125       else
1126       {
1127         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1128         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1129         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1130         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1131       }
1132     }
1133     else
1134     {
1135       fhMCPi0DecayPhotonAdjHighLMOverlap          ->Fill(en,nMax);
1136       fhMCPi0DecayPhotonAdjHighLMOverlapMass[inlm]->Fill(en,mass);
1137       if(match0 && imatch0 == imax)
1138       {
1139         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1140         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1141         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon0Kine.E())/photon0Kine.E());
1142         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon1Kine.E())/photon1Kine.E());
1143       }
1144       else
1145       {
1146         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1147         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1148         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[inlm]->Fill(e1,(e1-photon1Kine.E())/photon1Kine.E());
1149         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[inlm]->Fill(e2,(e2-photon0Kine.E())/photon0Kine.E());
1150       }
1151     }
1152     
1153     return;
1154   }
1155   
1156   // Decay photon cells are adjacent?
1157   
1158   if( (match0 || match1) && GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,absId1) )
1159   {
1160 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1161 //      printf("c) Both Photons hit a local maxima and in adjacent cells \n");
1162     if(!noverlaps)
1163     {
1164       fhMCPi0DecayPhotonAdjacent          ->Fill(en,nMax);
1165       fhMCPi0DecayPhotonAdjacentMass[inlm]->Fill(en,mass);
1166     }
1167     else
1168     {
1169       fhMCPi0DecayPhotonAdjacentOverlap          ->Fill(en,nMax);
1170       fhMCPi0DecayPhotonAdjacentOverlapMass[inlm]->Fill(en,mass);
1171     }
1172     
1173     return;
1174   }
1175   
1176   //--------------------
1177   // Other Local maxima
1178   //--------------------
1179   
1180   Bool_t matchMCHitOtherLM = kFALSE;
1181   if(!match1)
1182   {
1183     for(Int_t i = 0; i < nmaxima; i++)
1184     {
1185       if(imax!=i && imax2!=i && absId1 == list[i]) { match1 = kTRUE; matchMCHitOtherLM = kTRUE; }
1186     }
1187   }
1188   
1189   if(!match0)
1190   {
1191     for(Int_t i = 0; i < nmaxima; i++)
1192     {
1193       if(imax!=i && imax2!=i && absId0 == list[i]) { match0 = kTRUE; matchMCHitOtherLM = kTRUE; }
1194     }
1195   }
1196   
1197   if(matchMCHitOtherLM)
1198   {
1199 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1200 //      printf("d) One Photon hits a local maxima, the other another not high \n");
1201     
1202     if(!noverlaps)
1203     {
1204       fhMCPi0DecayPhotonHitOtherLM          ->Fill(en,nMax);
1205       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1206       if(match0 && imatch0 == imax)
1207       {
1208         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1209         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1210       }
1211       else
1212       {
1213         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1214         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1215       }
1216     }
1217     else
1218     {
1219       fhMCPi0DecayPhotonHitOtherLMOverlap   ->Fill(en,nMax);
1220       fhMCPi0DecayPhotonHitOtherLMMass[inlm]->Fill(en,mass);
1221       if(match0 && imatch0 == imax)
1222       {
1223         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1224         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1225       }
1226       else
1227       {
1228         if(photon1Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1229         if(photon0Kine.E()>0)fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1230       }
1231     }
1232     
1233     return ;
1234   }
1235   
1236   // Adjacent to other maxima
1237   
1238   Bool_t adjacentOther1 = kFALSE;
1239   if(match0)
1240   {
1241     for(Int_t i = 0; i < nmaxima; i++)
1242     {
1243       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1244       GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1245       
1246       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1247       
1248       if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId1,list[i]) ) adjacentOther1 = kTRUE;
1249       
1250       //printf("Other Maxima: adjacentOther1 %d\n",adjacentOther1);
1251     }
1252   }
1253   
1254   Bool_t adjacentOther0 = kFALSE;
1255   if(match1)
1256   {
1257     for(Int_t i = 0; i < nmaxima; i++)
1258     {
1259       Int_t ieta=-1; Int_t iphi = 0; Int_t rcu = 0;
1260       GetModuleNumberCellIndexes(list[i] ,fCalorimeter, ieta, iphi, rcu);
1261       
1262       //printf(" Other Max (eta,phi)=(%d,%d)\n",ieta,iphi);
1263       
1264       if(GetCaloUtils()->AreNeighbours(fCalorimeter,absId0,list[i]) ) adjacentOther0 = kTRUE;
1265       
1266       //printf("Other Maxima: adjacentOther0 %d\n",adjacentOther0);
1267     }
1268   }
1269   
1270   if((match0 && adjacentOther1) || (match1 && adjacentOther0))
1271   {
1272     
1273 //   if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1274 //      printf("e) One Photon hits a local maxima, the other another not high, adjacent \n");
1275     
1276     if(!noverlaps)
1277     {
1278       fhMCPi0DecayPhotonAdjOtherLM       ->Fill(en,nMax);
1279       fhMCPi0DecayPhotonAdjOtherLMMass[inlm]->Fill(en,mass);
1280       if(match0 && imatch0 == imax)
1281       {
1282         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1283         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1284       }
1285       else
1286       {
1287         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1288         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1289       }
1290     }
1291     else
1292     {
1293       fhMCPi0DecayPhotonAdjOtherLMOverlap          ->Fill(en,nMax);
1294       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[inlm]->Fill(en,mass);
1295       if(match0 && imatch0 == imax)
1296       {
1297         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon0Kine.E())/photon0Kine.E());
1298         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon1Kine.E())/photon1Kine.E());
1299       }
1300       else
1301       {
1302         if(photon1Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[inlm]->Fill(en,(e1-photon1Kine.E())/photon1Kine.E());
1303         if(photon0Kine.E()>0)fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[inlm]->Fill(en,(e2-photon0Kine.E())/photon0Kine.E());
1304       }
1305     }
1306     
1307     return;
1308   }
1309   
1310 // if((mass < 0.06 || mass > 1.8) && mcindex==kmcPi0 && noverlaps == 0)
1311 //    printf("f) No hit found \n");
1312   if(!noverlaps)
1313   {
1314     fhMCPi0DecayPhotonHitNoLM          ->Fill(en,nMax);
1315     fhMCPi0DecayPhotonHitNoLMMass[inlm]->Fill(en,mass);
1316   }
1317   else
1318   {
1319     fhMCPi0DecayPhotonHitNoLMOverlap          ->Fill(en,nMax);
1320     fhMCPi0DecayPhotonHitNoLMOverlapMass[inlm]->Fill(en,mass);
1321   }
1322   
1323 }
1324
1325 //___________________________________________________________________________________________________________
1326 void AliAnaInsideClusterInvariantMass::FillAngleHistograms(Int_t   nMax,      Bool_t  matched, Int_t mcIndex,
1327                                                            Float_t en,        Float_t e1,      Float_t e2,
1328                                                            Float_t angle,     Float_t mass,
1329                                                            Float_t anglePrim, Float_t m02,
1330                                                            Float_t asym,      Int_t   pid,     Int_t noverlaps)
1331 {
1332   // Fill histograms related to opening angle
1333   
1334   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1335   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1336   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1337   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1338
1339   Bool_t eCutOK= kFALSE;
1340   Int_t inlm = nMax-1;
1341   if(inlm > 2 ) inlm = 2;
1342   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1343   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1344   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1345
1346   if     (nMax==1)
1347   {
1348     fhAnglePairNLocMax1[0][matched]->Fill(en,angle);
1349     
1350     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1351       fhAnglePairAfterCutsNLocMax1[0][matched]->Fill(en,angle);
1352     if(pid==AliCaloPID::kPi0)
1353       fhAnglePairPi0NLocMax1[0][matched]->Fill(en,angle);
1354     
1355     if(m02 > 0)
1356     {
1357       fhAnglePairOverM02NLocMax1[0][matched]->Fill(en,angle/m02);
1358       if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[0][matched]->Fill(en,angle/m02);
1359     }
1360     
1361     if( en > 15 )
1362     {
1363       fhAnglePairMassNLocMax1[0][matched]->Fill(mass,angle);
1364       fhAnglePairM02NLocMax1 [0][matched]->Fill(m02 ,angle);
1365     }
1366   }
1367   else if(nMax==2)
1368   {
1369     fhAnglePairNLocMax2[0][matched]->Fill(en,angle);
1370     
1371     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1372       fhAnglePairAfterCutsNLocMax2[0][matched]->Fill(en,angle);
1373     if(pid==AliCaloPID::kPi0)
1374       fhAnglePairPi0NLocMax2[0][matched]->Fill(en,angle);
1375     
1376     if(m02 > 0)
1377     {
1378       fhAnglePairOverM02NLocMax2[0][matched]->Fill(en,angle/m02);
1379       if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[0][matched]->Fill(angle/m02,en);
1380     }
1381     
1382     if( en > fHistoECut )
1383     {
1384       fhAnglePairMassNLocMax2[0][matched]->Fill(mass,angle);
1385       fhAnglePairM02NLocMax2 [0][matched]->Fill(m02,angle);
1386     }
1387   }
1388   else if(nMax >2)
1389   {
1390     fhAnglePairNLocMaxN[0][matched]->Fill(en,angle);
1391     
1392     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1393       fhAnglePairAfterCutsNLocMaxN[0][matched]->Fill(en,angle);
1394     if(pid==AliCaloPID::kPi0)
1395       fhAnglePairPi0NLocMaxN[0][matched]->Fill(en,angle);
1396     
1397     if(m02 > 0)
1398     {
1399       fhAnglePairOverM02NLocMaxN[0][matched]->Fill(en,angle/m02);
1400       if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[0][matched]->Fill(angle/m02,en);
1401     }
1402     
1403     if( en > fHistoECut )
1404     {
1405       fhAnglePairMassNLocMaxN[0][matched]->Fill(mass,angle);
1406       fhAnglePairM02NLocMaxN [0][matched]->Fill(m02,angle);
1407     }
1408   }
1409   
1410   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1411   {
1412     if     (nMax==1)
1413     {
1414       fhAnglePairNLocMax1[mcIndex][matched]->Fill(en,angle);
1415       if( en > 15 )
1416       {
1417         fhAnglePairMassNLocMax1[mcIndex][matched]->Fill(mass,angle);
1418         fhAnglePairM02NLocMax1 [mcIndex][matched]->Fill(m02,angle);
1419       }
1420       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1421         fhAnglePairAfterCutsNLocMax1[mcIndex][matched]->Fill(en,angle);
1422       if(pid==AliCaloPID::kPi0)
1423          fhAnglePairPi0NLocMax1[mcIndex][matched]->Fill(en,angle);
1424       
1425       if(m02 > 0)
1426       {
1427         fhAnglePairOverM02NLocMax1[mcIndex][matched]->Fill(en,angle/m02);
1428         if(noverlaps == 0) fhAnglePairOverM02NLocMax1Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1429       }
1430       
1431       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1432       {
1433         fhAnglePairPrimPi0RecoNLocMax1->Fill(en,angle/anglePrim);
1434         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax1->Fill(en,anglePrim/m02);
1435         if(en > 15) fhAnglePairPrimPi0vsRecoNLocMax1->Fill(anglePrim,angle);
1436
1437       }
1438     }
1439     else if(nMax==2)
1440     {
1441       fhAnglePairNLocMax2[mcIndex][matched]->Fill(en,angle);
1442       if( en > fHistoECut )
1443       {
1444         fhAnglePairMassNLocMax2[mcIndex][matched]->Fill(mass,angle);
1445         fhAnglePairM02NLocMax2 [mcIndex][matched]->Fill(m02 ,angle);
1446       }
1447       
1448       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1449         fhAnglePairAfterCutsNLocMax2[mcIndex][matched]->Fill(en,angle);
1450       if(pid==AliCaloPID::kPi0)
1451         fhAnglePairPi0NLocMax2[mcIndex][matched]->Fill(en,angle);
1452       
1453       if(m02 > 0)
1454       {
1455         fhAnglePairOverM02NLocMax2[mcIndex][matched]->Fill(en,angle/m02);
1456         if(noverlaps == 0) fhAnglePairOverM02NLocMax2Overlap0[mcIndex][matched]->Fill(angle/m02,en);
1457       }
1458       
1459       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1460       {
1461         fhAnglePairPrimPi0RecoNLocMax2->Fill(en,angle/anglePrim);
1462         if(m02>0)fhAnglePairPrimPi0OverM02NLocMax2->Fill(en,anglePrim/m02);
1463         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMax2->Fill(anglePrim,angle);
1464       }
1465     }
1466     else if(nMax >2)
1467     {
1468       fhAnglePairNLocMaxN[mcIndex][matched]->Fill(en,angle);
1469       if( en > fHistoECut )
1470       {
1471         fhAnglePairMassNLocMaxN[mcIndex][matched]->Fill(mass,angle);
1472         fhAnglePairM02NLocMaxN [mcIndex][matched]->Fill(m02 ,angle);
1473       }
1474       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1475         fhAnglePairAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,angle);
1476       if(pid==AliCaloPID::kPi0)
1477         fhAnglePairPi0NLocMaxN[mcIndex][matched]->Fill(en,angle);
1478       
1479       if(m02 > 0)
1480       {
1481         fhAnglePairOverM02NLocMaxN[mcIndex][matched]->Fill(en,angle/m02);
1482         if(noverlaps == 0) fhAnglePairOverM02NLocMaxNOverlap0[mcIndex][matched]->Fill(angle/m02,en);
1483       }
1484       
1485       if((mcIndex == kmcPi0 || mcIndex == kmcPi0Conv) && !matched && anglePrim > 0)
1486       {
1487         fhAnglePairPrimPi0RecoNLocMaxN->Fill(en,angle/anglePrim);
1488         if(m02>0)fhAnglePairPrimPi0OverM02NLocMaxN->Fill(en,anglePrim/m02);
1489         if(en > 10) fhAnglePairPrimPi0vsRecoNLocMaxN->Fill(anglePrim,angle);
1490       }
1491     }
1492     
1493   }
1494   
1495 }
1496
1497 //______________________________________________________________________________________________________________________
1498 void AliAnaInsideClusterInvariantMass::FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcIndex,
1499                                                                 Float_t en, TLorentzVector g1, TLorentzVector g2,
1500                                                                 Float_t m02, Int_t pid)
1501 {
1502   // Fill Armeteros type histograms
1503   
1504   // Get pTArm and AlphaArm
1505   TLorentzVector pi0 = g1+g2;
1506   Float_t momentumSquaredMother = pi0.P()*pi0.P();
1507   Float_t momentumDaughter1AlongMother = 0.;
1508   Float_t momentumDaughter2AlongMother = 0.;
1509
1510   if (momentumSquaredMother > 0.)
1511   {
1512     momentumDaughter1AlongMother = (g1.Px()*pi0.Px() + g1.Py()*pi0.Py()+ g1.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1513     momentumDaughter2AlongMother = (g2.Px()*pi0.Px() + g2.Py()*pi0.Py()+ g2.Pz()*pi0.Pz()) / sqrt(momentumSquaredMother);
1514   }
1515
1516   Float_t momentumSquaredDaughter1 = g1.P()*g1.P();
1517   Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1518   
1519   Float_t pTArm = 0.;
1520   if (ptArmSquared > 0.)
1521     pTArm = sqrt(ptArmSquared);
1522   
1523   Float_t alphaArm = 0.;
1524   if(momentumDaughter1AlongMother +momentumDaughter2AlongMother > 0)
1525     alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1526   
1527   Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1528   
1529    if(GetDebug() > 2 ) Info("FillArmenterosHistograms()","E %f, alphaArm %f, pTArm %f\n",en,alphaArm,pTArm);
1530   
1531   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1532   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1533   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1534   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1535   
1536   Bool_t eCutOK= kFALSE;
1537   Int_t inlm = nMax-1;
1538   if(inlm > 2 ) inlm = 2;
1539   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1540   if     (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1541   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1542
1543   
1544   if     (nMax==1)
1545   {
1546     fhArmNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1547     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1548       fhArmAfterCutsNLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1549     if(pid==AliCaloPID::kPi0)
1550       fhArmPi0NLocMax1[0][ebin]->Fill(alphaArm,pTArm);
1551   }
1552   else if(nMax==2)
1553   {
1554     fhArmNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1555     if((m02OK && asyOK) && (asyOn || m02On))
1556       fhArmAfterCutsNLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1557     if(pid==AliCaloPID::kPi0)
1558       fhArmPi0NLocMax2[0][ebin]->Fill(alphaArm,pTArm);
1559   }
1560   else if(nMax >2)
1561   {
1562     fhArmNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1563     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1564       fhArmAfterCutsNLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1565     if(pid==AliCaloPID::kPi0)
1566       fhArmPi0NLocMaxN[0][ebin]->Fill(alphaArm,pTArm);
1567   }
1568
1569   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1570   {
1571     if     (nMax==1)
1572     {
1573       fhArmNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1574       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1575         fhArmAfterCutsNLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1576       if(pid==AliCaloPID::kPi0)
1577         fhArmPi0NLocMax1[mcIndex][ebin]->Fill(alphaArm,pTArm);
1578     }
1579     else if(nMax==2)
1580     {
1581       fhArmNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1582       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1583         fhArmAfterCutsNLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1584       if(pid==AliCaloPID::kPi0)
1585         fhArmPi0NLocMax2[mcIndex][ebin]->Fill(alphaArm,pTArm);
1586     }
1587     else if(nMax >2)
1588     {
1589       fhArmNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1590       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1591         fhArmAfterCutsNLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1592       if(pid==AliCaloPID::kPi0)
1593         fhArmPi0NLocMaxN[mcIndex][ebin]->Fill(alphaArm,pTArm);
1594     }  
1595   
1596   }
1597   
1598 }
1599
1600 //______________________________________________________________________________________________________________
1601 void AliAnaInsideClusterInvariantMass::FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcIndex,
1602                                                                Float_t en, TLorentzVector g1, TLorentzVector g2,
1603                                                                Float_t m02, Int_t pid)
1604 {
1605   // Fill cos Theta^star histograms
1606
1607   
1608   // Get cos Theta^star
1609   TLorentzVector pi0 = g1+g2;
1610   TLorentzVector g1Boost = g1;
1611   g1Boost.Boost(-pi0.BoostVector());
1612   Float_t  cosThStar=TMath::Cos(g1Boost.Vect().Angle(pi0.Vect()));
1613   
1614   Float_t asym = TMath::Abs( g1.Energy()-g2.Energy() )/( g1.Energy()+g2.Energy() ) ;
1615
1616   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,m02,nMax);
1617   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1618   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1619   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1620   
1621   Bool_t eCutOK= kFALSE;
1622   Int_t inlm = nMax-1;
1623   if(inlm > 2 ) inlm = 2;
1624   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1625   if     (ensubcut > 0.1 && ensubcut < g1.E() && ensubcut < g2.E() ) eCutOK = kTRUE;
1626   else if(ensubcut < 0.1)                                            eCutOK = kTRUE;
1627
1628   //printf("Reco cos %f, asy %f\n",cosThStar,asym);
1629   
1630   if     (nMax==1)
1631   {
1632     fhCosThStarNLocMax1[0][matched]->Fill(en,cosThStar);
1633     
1634     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1635       fhCosThStarAfterCutsNLocMax1[0][matched]->Fill(en,cosThStar);
1636     if(pid==AliCaloPID::kPi0)
1637       fhCosThStarPi0NLocMax1[0][matched]->Fill(en,cosThStar);
1638   }
1639   else if(nMax==2)
1640   {
1641     fhCosThStarNLocMax2[0][matched]->Fill(en,cosThStar);
1642     
1643     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1644       fhCosThStarAfterCutsNLocMax2[0][matched]->Fill(en,cosThStar);
1645     if(pid==AliCaloPID::kPi0)
1646       fhCosThStarPi0NLocMax2[0][matched]->Fill(en,cosThStar);
1647   }
1648   else if(nMax >2)
1649   {
1650     fhCosThStarNLocMaxN[0][matched]->Fill(en,cosThStar);
1651     
1652     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1653       fhCosThStarAfterCutsNLocMaxN[0][matched]->Fill(en,cosThStar);
1654     if(pid==AliCaloPID::kPi0)
1655       fhCosThStarPi0NLocMaxN[0][matched]->Fill(en,cosThStar);
1656   }
1657   
1658   if(IsDataMC() && mcIndex >  0 && mcIndex < 7)
1659   {
1660     if     (nMax==1)
1661     {
1662       fhCosThStarNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1663       
1664       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1665         fhCosThStarAfterCutsNLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1666       if(pid==AliCaloPID::kPi0)
1667         fhCosThStarPi0NLocMax1[mcIndex][matched]->Fill(en,cosThStar);
1668     }
1669     else if(nMax==2)
1670     {
1671       fhCosThStarNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1672       
1673       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1674         fhCosThStarAfterCutsNLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1675       if(pid==AliCaloPID::kPi0)
1676         fhCosThStarPi0NLocMax2[mcIndex][matched]->Fill(en,cosThStar);
1677     }
1678     else if(nMax >2)
1679     {
1680       fhCosThStarNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1681       
1682       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1683         fhCosThStarAfterCutsNLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1684       if(pid==AliCaloPID::kPi0)
1685         fhCosThStarPi0NLocMaxN[mcIndex][matched]->Fill(en,cosThStar);
1686     }
1687     
1688   }
1689
1690 }
1691
1692 //__________________________________________________________________________________________________________________
1693 void AliAnaInsideClusterInvariantMass::FillEBinHistograms(Int_t   ebin     , Int_t   nMax, Int_t mcindex,
1694                                                           Float_t splitFrac, Float_t mass, Float_t asym, Float_t l0)
1695 {
1696   // Fill some histograms integrating in few energy bins
1697     
1698   if     (nMax==1)
1699   {
1700     fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac,  mass);
1701     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1702     
1703     fhMassM02NLocMax1Ebin    [ebin]->Fill(l0  ,  mass );
1704     fhMassAsyNLocMax1Ebin    [ebin]->Fill(asym,  mass );
1705   }
1706   else if(nMax==2)
1707   {
1708     fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac,  mass);
1709     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac,  mass);
1710     
1711     fhMassM02NLocMax2Ebin    [ebin]->Fill(l0  ,  mass );
1712     fhMassAsyNLocMax2Ebin    [ebin]->Fill(asym,  mass );
1713   }
1714   else if(nMax > 2 )
1715   {
1716     fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac,  mass);
1717     if(IsDataMC() && mcindex > 0 && mcindex < 7)fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac,  mass);
1718     
1719     fhMassM02NLocMaxNEbin    [ebin]->Fill(l0  ,  mass );
1720     fhMassAsyNLocMaxNEbin    [ebin]->Fill(asym,  mass );
1721   }
1722   
1723 }
1724
1725 //________________________________________________________________________________________________
1726 void AliAnaInsideClusterInvariantMass::FillHistograms1(Float_t en,     Float_t e1,     Float_t e2,
1727                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1728                                                        Float_t eta,    Float_t phi,
1729                                                        Bool_t matched, Int_t mcindex)
1730 {
1731   // Fill histograms for clusters before any selection after spliting
1732   
1733   Float_t splitFrac = (e1+e2)/en;
1734   
1735   Float_t asym = -10;
1736   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1737   
1738   fhNLocMax   [0][matched]->Fill(en,nMax);
1739   fhLM1NLocMax[0][matched]->Fill(e1,nMax);
1740   fhLM2NLocMax[0][matched]->Fill(e2,nMax);
1741   fhSplitClusterENLocMax[0][matched]->Fill(e1,nMax);
1742   fhSplitClusterENLocMax[0][matched]->Fill(e2,nMax);
1743   
1744   if(IsDataMC() && mcindex > 0 && mcindex < 7)
1745   {
1746     fhNLocMax   [mcindex][matched]->Fill(en,nMax);
1747     fhLM1NLocMax[mcindex][matched]->Fill(e1,nMax);
1748     fhLM2NLocMax[mcindex][matched]->Fill(e2,nMax);
1749     fhSplitClusterENLocMax[mcindex][matched]->Fill(e1,nMax);
1750     fhSplitClusterENLocMax[mcindex][matched]->Fill(e2,nMax);
1751   }
1752   
1753   if     ( nMax == 1  )
1754   {
1755     fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1756     fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1757     
1758     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1759     {
1760       fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ;
1761       fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ;
1762     }
1763     
1764     if(en > fHistoECut)
1765     {
1766       fhMassM02NLocMax1[0][matched]->Fill(l0, mass);
1767       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax1[mcindex][matched]->Fill(l0, mass);
1768       
1769       fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1770       if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1771     }
1772   }
1773   else if( nMax == 2  )
1774   {
1775     fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1776     fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1777     
1778     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1779     {
1780       fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ;
1781       fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ;
1782     }
1783     
1784     if(en > fHistoECut)
1785     {
1786       fhMassM02NLocMax2[0][matched]->Fill(l0,  mass );
1787       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMax2[mcindex][matched]->Fill(l0,mass);
1788       
1789       fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1790       if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1791     }
1792   }
1793   else if( nMax >= 3  )
1794   {
1795     fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1796     fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1797     
1798     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1799     {
1800       fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ;
1801       fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ;
1802     }
1803     
1804     if(en > fHistoECut)
1805     {
1806       
1807       fhMassM02NLocMaxN[0][matched]->Fill(l0,mass);
1808       if( IsDataMC() && mcindex > 0 && mcindex < 7 ) fhMassM02NLocMaxN[mcindex][matched]->Fill(l0,mass);
1809       
1810       fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1811       if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1812     }
1813   }
1814   
1815   
1816 }
1817
1818 //________________________________________________________________________________________________
1819 void AliAnaInsideClusterInvariantMass::FillHistograms2(Float_t en,     Float_t eprim,
1820                                                        Float_t e1,     Float_t e2,
1821                                                        Int_t nMax,     Float_t mass,   Float_t l0,
1822                                                        Bool_t matched, Int_t mcindex)
1823 {
1824   // Fill histograms for clusters passing the first M02 selection
1825   
1826   Float_t efrac      = eprim/en;
1827   Float_t efracSplit = 0;
1828   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
1829   
1830   Float_t splitFrac = (e1+e2)/en;
1831   
1832   Float_t asym = -10;
1833   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1834   
1835   Int_t inlm = nMax-1;
1836   if(inlm > 2) inlm = 2;
1837   Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
1838   
1839   Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
1840   Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
1841   Bool_t m02On = GetCaloPID()->IsSplitShowerShapeCutOn();
1842   Bool_t asyOn = GetCaloPID()->IsSplitAsymmetryCutOn();
1843   
1844   Bool_t eCutOK = kFALSE;
1845   Float_t ensubcut = GetCaloPID()->GetSubClusterEnergyMinimum(inlm);
1846   if     (ensubcut > 0.1 && ensubcut < e1 && ensubcut < e2 ) eCutOK = kTRUE;
1847   else if(ensubcut < 0.1)                                    eCutOK = kTRUE;
1848
1849   //printf("splitFracMin %f, val %f, m02ok %d, asyok %d, m02On %d, asyOn %d, ecutOK %d\n",splitFracMin,splitFrac,m02OK,asyOK,m02On,asyOn,eCutOK);
1850   
1851   if(m02On && m02OK)
1852   {
1853     fhNLocMaxM02Cut   [0][matched]->Fill(en,nMax);
1854     fhLM1NLocMaxM02Cut[0][matched]->Fill(e1,nMax);
1855     fhLM2NLocMaxM02Cut[0][matched]->Fill(e2,nMax);
1856     if(IsDataMC() && mcindex > 0 && mcindex < 7)
1857     {
1858       fhNLocMaxM02Cut   [mcindex][matched]->Fill(en,nMax);
1859       fhLM1NLocMaxM02Cut[mcindex][matched]->Fill(e1,nMax);
1860       fhLM2NLocMaxM02Cut[mcindex][matched]->Fill(e2,nMax);
1861     }
1862   }
1863   
1864   if     (nMax==1)
1865   {
1866     fhMassNLocMax1[0][matched]->Fill(en,mass );
1867     fhAsymNLocMax1[0][matched]->Fill(en,asym );
1868     fhMassSplitENLocMax1[0][matched]->Fill(e1+e2,mass);
1869     
1870     // Effect of cuts in mass histograms
1871
1872     if(!matched && asyOK && asyOn )
1873     {
1874       fhMassAsyCutNLocMax1->Fill(en,mass);
1875       fhM02AsyCutNLocMax1 ->Fill(en,l0 );
1876     }
1877     
1878     if(!matched && m02OK && m02On )
1879     {
1880       fhMassM02CutNLocMax1->Fill(en,mass);
1881       fhAsymM02CutNLocMax1->Fill(en,asym );
1882       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax1) fhMassSplitECutNLocMax1->Fill(en,mass );
1883     } 
1884     
1885     if(!matched && eCutOK && ensubcut > 0.1)
1886     {
1887       fhMassEnCutNLocMax1->Fill(en,mass );
1888       fhM02EnCutNLocMax1 ->Fill(en,l0   );
1889       fhAsymEnCutNLocMax1->Fill(en,asym );
1890       fhSplitEFracEnCutNLocMax1->Fill(en,splitFrac );
1891     }
1892     
1893     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1894     {
1895       fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
1896       if(splitFrac > splitFracMin)
1897       {
1898         fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
1899         fhMassSplitEAfterCutsNLocMax1[0][matched]->Fill(e1+e2,mass);
1900       }
1901       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1902       {
1903         fhMCGenFracAfterCutsNLocMax1MCPi0      ->Fill(en   ,  efrac     );
1904         fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en   ,  efracSplit);
1905       }
1906     }
1907   }
1908   else if( nMax == 2 )
1909   {
1910     fhMassNLocMax2[0][matched]->Fill(en,mass );
1911     fhAsymNLocMax2[0][matched]->Fill(en,asym );
1912     fhMassSplitENLocMax2[0][matched]->Fill(e1+e2,mass);
1913
1914     // Effect of cuts in mass histograms
1915     
1916     if(!matched && asyOK && asyOn )
1917     {
1918       fhMassAsyCutNLocMax2->Fill(en,mass);
1919       fhM02AsyCutNLocMax2 ->Fill(en,l0 );
1920     }
1921     
1922     if(!matched && m02OK && m02On )
1923     {
1924       fhMassM02CutNLocMax2->Fill(en,mass);
1925       fhAsymM02CutNLocMax2->Fill(en,asym );
1926       if(splitFrac > splitFracMin && fhMassSplitECutNLocMax2) fhMassSplitECutNLocMax2->Fill(en,mass );
1927     } 
1928     
1929     if(!matched && eCutOK && ensubcut > 0.1)
1930     {
1931       fhMassEnCutNLocMax2->Fill(en,mass );
1932       fhM02EnCutNLocMax2 ->Fill(en,l0   );
1933       fhAsymEnCutNLocMax2->Fill(en,asym );
1934       fhSplitEFracEnCutNLocMax2->Fill(en,splitFrac );
1935     }
1936     
1937     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1938     {
1939       fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
1940       if(splitFrac > splitFracMin)
1941       {
1942         fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
1943         fhMassSplitEAfterCutsNLocMax2[0][matched]->Fill(e1+e2,mass);
1944       }
1945       
1946       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1947       {
1948         fhMCGenFracAfterCutsNLocMax2MCPi0      ->Fill(en   ,  efrac     );
1949         fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en   ,  efracSplit);
1950       }
1951     }
1952   }
1953   else if( nMax > 2 )
1954   {
1955     fhMassNLocMaxN[0][matched]->Fill(en,mass);
1956     fhAsymNLocMaxN[0][matched]->Fill(en,asym);
1957     fhMassSplitENLocMaxN[0][matched]->Fill(e1+e2,mass);
1958
1959     // Effect of cuts in mass histograms
1960     
1961     if(!matched && asyOK && asyOn )
1962     {
1963       fhMassAsyCutNLocMaxN->Fill(en,mass);
1964       fhM02AsyCutNLocMaxN ->Fill(en,l0 );
1965     }
1966     
1967     if(!matched && m02OK && m02On )
1968     {
1969       fhMassM02CutNLocMaxN->Fill(en,mass);
1970       fhAsymM02CutNLocMaxN->Fill(en,asym );
1971       if(splitFrac > splitFracMin && fhMassSplitECutNLocMaxN) fhMassSplitECutNLocMaxN->Fill(en,mass );
1972     } 
1973     
1974     if(!matched && eCutOK && ensubcut > 0.1 )
1975     {
1976       fhMassEnCutNLocMaxN->Fill(en,mass );
1977       fhM02EnCutNLocMaxN ->Fill(en,l0   );
1978       fhAsymEnCutNLocMaxN->Fill(en,asym );
1979       fhSplitEFracEnCutNLocMaxN->Fill(en,splitFrac );
1980     }
1981     
1982     if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
1983     {
1984       fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
1985       if(splitFrac > splitFracMin)
1986       {
1987         fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
1988         fhMassSplitEAfterCutsNLocMaxN[0][matched]->Fill(e1+e2,mass);
1989       }
1990       
1991       if(!matched && IsDataMC() && fFillMCHisto && mcindex==kmcPi0)
1992       {
1993         fhMCGenFracAfterCutsNLocMaxNMCPi0      ->Fill(en   ,  efrac     );
1994         fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en   ,  efracSplit);
1995       }
1996     }
1997   }
1998   
1999   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2000   {
2001     if     (nMax==1)
2002     {
2003       fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2004       fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2005       fhMassSplitENLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2006
2007       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2008       {
2009         fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
2010         if(splitFrac > splitFracMin)
2011         {
2012           fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
2013           fhMassSplitEAfterCutsNLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2014         }
2015       }
2016     }
2017     else if(nMax==2)
2018     {
2019       fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
2020       fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2021       fhMassSplitENLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2022
2023       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2024       {
2025         fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
2026         if(splitFrac > splitFracMin)
2027         {
2028           fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
2029           fhMassSplitEAfterCutsNLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2030         }
2031
2032       }
2033     }
2034     else if(nMax >2)
2035     {
2036       fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
2037       fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2038       fhMassSplitENLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2039
2040       if((m02OK && asyOK) && (asyOn || m02On) && eCutOK)
2041       {
2042         fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
2043         if(splitFrac > splitFracMin)
2044         {
2045           fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
2046           fhMassSplitEAfterCutsNLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2047         }
2048       }
2049     }
2050   }//Work with MC truth
2051 }
2052
2053
2054 //_________________________________________________________________________________________________________
2055 void AliAnaInsideClusterInvariantMass::FillIdPi0Histograms(Float_t en,     Float_t e1,     Float_t e2,
2056                                                            Int_t nc,       Int_t nMax,     Float_t t12diff,
2057                                                            Float_t mass,   Float_t l0,
2058                                                            Float_t eta,    Float_t phi,
2059                                                            Bool_t matched, Int_t mcindex)
2060 {
2061   // Fill histograms for clusters passing the pi0 selection
2062   
2063   Float_t asym = -10;
2064   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2065   
2066   fhNLocMaxIdPi0   [0][matched]->Fill(en,nMax);
2067   fhLM1NLocMaxIdPi0[0][matched]->Fill(e1,nMax);
2068   fhLM2NLocMaxIdPi0[0][matched]->Fill(e2,nMax);
2069   
2070   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e1,nMax);
2071   fhSplitClusterEPi0NLocMax[0][matched]->Fill(e2,nMax);
2072   
2073   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2074   {
2075     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e1,nMax);
2076     fhSplitClusterEPi0NLocMax[mcindex][matched]->Fill(e2,nMax);
2077   }
2078   
2079   if     (nMax==1)
2080   {
2081     fhM02Pi0NLocMax1 [0][matched]->Fill(en,l0);
2082     fhMassPi0NLocMax1[0][matched]->Fill(en,mass);
2083     fhAsyPi0NLocMax1 [0][matched]->Fill(en,asym);
2084     fhMassSplitEPi0NLocMax1[0][matched]->Fill(e1+e2,mass);
2085     if(fFillNCellHisto) fhNCellPi0NLocMax1[0][matched]->Fill(en,nc);
2086     
2087     if(!matched)
2088     {
2089       if(fFillHighMultHisto)
2090       {
2091         fhCentralityPi0NLocMax1->Fill(en,GetEventCentrality()) ;
2092         fhEventPlanePi0NLocMax1->Fill(en,GetEventPlaneAngle()) ;
2093       }
2094       if(en > fHistoECut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
2095       fhPi0EPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2096     }
2097   }
2098   else if(nMax==2)
2099   {
2100     fhM02Pi0NLocMax2 [0][matched]->Fill(en,l0);
2101     fhMassPi0NLocMax2[0][matched]->Fill(en,mass);
2102     fhAsyPi0NLocMax2 [0][matched]->Fill(en,asym);
2103     fhMassSplitEPi0NLocMax2[0][matched]->Fill(e1+e2,mass);
2104     if(fFillNCellHisto) fhNCellPi0NLocMax2[0][matched]->Fill(en,nc);
2105     
2106     if(!matched)
2107     {
2108       if(fFillHighMultHisto)
2109       {
2110         fhCentralityPi0NLocMax2->Fill(en,GetEventCentrality()) ;
2111         fhEventPlanePi0NLocMax2->Fill(en,GetEventPlaneAngle()) ;
2112       }
2113       if(en > fHistoECut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
2114       fhPi0EPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2115     }
2116   }
2117   else if(nMax >2)
2118   {
2119     fhM02Pi0NLocMaxN [0][matched]->Fill(en,l0);
2120     fhMassPi0NLocMaxN[0][matched]->Fill(en,mass);
2121     fhAsyPi0NLocMaxN [0][matched]->Fill(en,asym);
2122     fhMassSplitEPi0NLocMaxN[0][matched]->Fill(e1+e2,mass);
2123     if(fFillNCellHisto) fhNCellPi0NLocMaxN[0][matched]->Fill(en,nc);
2124     
2125     if(!matched)
2126     {
2127       if(fFillHighMultHisto)
2128       {
2129         fhCentralityPi0NLocMaxN->Fill(en,GetEventCentrality()) ;
2130         fhEventPlanePi0NLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2131       }
2132       if(en > fHistoECut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
2133       fhPi0EPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2134     }
2135   }
2136   
2137   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2138   {
2139     fhNLocMaxIdPi0   [mcindex][matched]->Fill(en,nMax);
2140     fhLM1NLocMaxIdPi0[mcindex][matched]->Fill(e1,nMax);
2141     fhLM2NLocMaxIdPi0[mcindex][matched]->Fill(e2,nMax);
2142     
2143     if     (nMax==1)
2144     {
2145       fhM02Pi0NLocMax1 [mcindex][matched]->Fill(en,l0);
2146       fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass);
2147       fhAsyPi0NLocMax1 [mcindex][matched]->Fill(en,asym);
2148       fhMassSplitEPi0NLocMax1[mcindex][matched]->Fill(e1+e2,mass);
2149       if(fFillNCellHisto) fhNCellPi0NLocMax1[mcindex][matched]->Fill(en,nc);
2150       
2151     }
2152     else if(nMax==2)
2153     {
2154       fhM02Pi0NLocMax2 [mcindex][matched]->Fill(en,l0);
2155       fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass);
2156       fhAsyPi0NLocMax2 [mcindex][matched]->Fill(en,asym);
2157       fhMassSplitEPi0NLocMax2[mcindex][matched]->Fill(e1+e2,mass);
2158       if(fFillNCellHisto) fhNCellPi0NLocMax2[mcindex][matched]->Fill(en,nc);
2159     }
2160     else if(nMax >2)
2161     {
2162       fhM02Pi0NLocMaxN [mcindex][matched]->Fill(en,l0);
2163       fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass);
2164       fhAsyPi0NLocMaxN [mcindex][matched]->Fill(en,asym);
2165       fhMassSplitEPi0NLocMaxN[mcindex][matched]->Fill(e1+e2,mass);
2166       if(fFillNCellHisto) fhNCellPi0NLocMaxN[mcindex][matched]->Fill(en,nc);
2167     }
2168   }//Work with MC truth
2169 }
2170
2171 //______________________________________________________________________________________________________
2172 void AliAnaInsideClusterInvariantMass::FillIdEtaHistograms(Float_t en,     Float_t e1,  Float_t e2,
2173                                                            Int_t nc,       Int_t nMax,  Float_t t12diff,
2174                                                            Float_t mass,   Float_t l0,
2175                                                            Float_t eta,    Float_t phi,
2176                                                            Bool_t matched, Int_t mcindex)
2177 {
2178   // Fill histograms for clusters passing the eta selection
2179   
2180   Float_t asym = -10;
2181   if(e1+e2>0) asym = (e1-e2)/(e1+e2);
2182   
2183   if     (nMax==1)
2184   {
2185     fhM02EtaNLocMax1 [0][matched]->Fill(en,l0);
2186     fhMassEtaNLocMax1[0][matched]->Fill(en,mass);
2187     fhAsyEtaNLocMax1 [0][matched]->Fill(en,asym);
2188     if(fFillNCellHisto) fhNCellEtaNLocMax1[0][matched]->Fill(en,nc);
2189     
2190     if(!matched)
2191     {
2192       if(fFillHighMultHisto)
2193       {
2194         fhCentralityEtaNLocMax1->Fill(en,GetEventCentrality()) ;
2195         fhEventPlaneEtaNLocMax1->Fill(en,GetEventPlaneAngle()) ;
2196       }
2197       if(en > fHistoECut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2198       fhEtaEPairDiffTimeNLM1->Fill(e1+e2,t12diff);
2199     }
2200   }
2201   else if(nMax==2)
2202   {
2203     fhM02EtaNLocMax2 [0][matched]->Fill(en,l0);
2204     fhMassEtaNLocMax2[0][matched]->Fill(en,mass);
2205     fhAsyEtaNLocMax2 [0][matched]->Fill(en,asym);
2206     if(fFillNCellHisto) fhNCellEtaNLocMax2[0][matched]->Fill(en,nc);
2207     
2208     if(!matched)
2209     {
2210       if(fFillHighMultHisto)
2211       {
2212         fhCentralityEtaNLocMax2->Fill(en,GetEventCentrality()) ;
2213         fhEventPlaneEtaNLocMax2->Fill(en,GetEventPlaneAngle()) ;
2214       }
2215       if(en > fHistoECut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2216       fhEtaEPairDiffTimeNLM2->Fill(e1+e2,t12diff);
2217     }
2218   }
2219   else if(nMax >2)
2220   {
2221     fhM02EtaNLocMaxN [0][matched]->Fill(en,l0);
2222     fhMassEtaNLocMaxN[0][matched]->Fill(en,mass);
2223     fhAsyEtaNLocMaxN [0][matched]->Fill(en,asym);
2224     if(fFillNCellHisto) fhNCellEtaNLocMaxN[0][matched]->Fill(en,nc);
2225     
2226     if(!matched)
2227     {
2228       if(fFillHighMultHisto)
2229       {
2230         fhCentralityEtaNLocMaxN->Fill(en,GetEventCentrality()) ;
2231         fhEventPlaneEtaNLocMaxN->Fill(en,GetEventPlaneAngle()) ;
2232       }
2233       if(en > fHistoECut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2234       fhEtaEPairDiffTimeNLMN->Fill(e1+e2,t12diff);
2235     }
2236   }
2237   
2238   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2239   {
2240     if     (nMax==1)
2241     {
2242       fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0);
2243       fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass);
2244       fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym);
2245       if(fFillNCellHisto) fhNCellEtaNLocMax1[mcindex][matched]->Fill(en,nc);
2246     }
2247     else if(nMax==2)
2248     {
2249       fhM02EtaNLocMax2 [mcindex][matched]->Fill(en,l0);
2250       fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass);
2251       fhAsyEtaNLocMax2 [mcindex][matched]->Fill(en,asym);
2252       if(fFillNCellHisto) fhNCellEtaNLocMax2[mcindex][matched]->Fill(en,nc);
2253       
2254     }
2255     else if(nMax >2)
2256     {
2257       fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0);
2258       fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass);
2259       fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym);
2260       if(fFillNCellHisto) fhNCellEtaNLocMaxN[mcindex][matched]->Fill(en,nc);
2261     }
2262   }//Work with MC truth
2263 }
2264
2265
2266 //__________________________________________________________________________________________________
2267 void AliAnaInsideClusterInvariantMass::FillIdConvHistograms(Float_t en,    Int_t nMax, Float_t asym,
2268                                                             Float_t mass,   Float_t l0,
2269                                                             Bool_t matched, Int_t mcindex)
2270 {
2271   // Fill histograms for clusters passing the photon selection
2272   
2273   if     (nMax==1)
2274   {
2275     fhM02ConNLocMax1 [0][matched]->Fill(en,l0);
2276     fhMassConNLocMax1[0][matched]->Fill(en,mass);
2277     fhAsyConNLocMax1 [0][matched]->Fill(en,asym);
2278   }
2279   else if(nMax==2)
2280   {
2281     fhM02ConNLocMax2 [0][matched]->Fill(en,l0);
2282     fhMassConNLocMax2[0][matched]->Fill(en,mass);
2283     fhAsyConNLocMax2 [0][matched]->Fill(en,asym);
2284   }
2285   else if(nMax >2)
2286   {
2287     fhM02ConNLocMaxN [0][matched]->Fill(en,l0);
2288     fhMassConNLocMaxN[0][matched]->Fill(en,mass);
2289     fhAsyConNLocMaxN [0][matched]->Fill(en,asym);
2290   }
2291   
2292   if(IsDataMC() && mcindex > 0 && mcindex < 7)
2293   {
2294     if     (nMax==1)
2295     {
2296       fhM02ConNLocMax1 [mcindex][matched]->Fill(en,l0);
2297       fhMassConNLocMax1[mcindex][matched]->Fill(en,mass);
2298       fhAsyConNLocMax1 [mcindex][matched]->Fill(en,asym);
2299     }
2300     else if(nMax==2)
2301     {
2302       fhM02ConNLocMax2 [mcindex][matched]->Fill(en,l0);
2303       fhMassConNLocMax2[mcindex][matched]->Fill(en,mass);
2304       fhAsyConNLocMax2 [mcindex][matched]->Fill(en,asym);
2305     }
2306     else if(nMax >2)
2307     {
2308       fhM02ConNLocMaxN [mcindex][matched]->Fill(en,l0);
2309       fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass);
2310       fhAsyConNLocMaxN [mcindex][matched]->Fill(en,asym);
2311     }
2312     
2313   }//Work with MC truth
2314 }
2315
2316 //_______________________________________________________________________________________________________
2317 void AliAnaInsideClusterInvariantMass::FillMCHistograms(Float_t en,        Float_t e1  , Float_t e2,
2318                                                         Int_t ebin,        Int_t mcindex,Int_t noverlaps,
2319                                                         Float_t l0,        Float_t mass,
2320                                                         Int_t nMax,        Bool_t  matched,
2321                                                         Float_t splitFrac, Float_t asym,
2322                                                         Float_t eprim,     Float_t asymGen)
2323 {
2324   // Fill histograms needing some MC input
2325     
2326   Float_t efrac      = eprim/en;
2327   Float_t efracSplit = 0;
2328   if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
2329   Float_t asymDiff = TMath::Abs(asym) - TMath::Abs(asymGen);
2330   
2331   //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",
2332   //       e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2333   
2334   if(ebin >= 0 && fFillEbinHisto)
2335   {
2336     if( !matched ) fhMCGenFracNLocMaxEbin       [mcindex][ebin]->Fill(efrac,nMax);
2337     else           fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2338   }
2339
2340   if     (nMax==1)
2341   {
2342     fhMCGenFracNLocMax1      [mcindex][matched]->Fill(en     ,  efrac );
2343     fhMCGenSplitEFracNLocMax1[mcindex][matched]->Fill(en     ,  efracSplit );
2344     fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2345     if(asym > 0 && !matched)
2346     {
2347       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[0]    ->Fill(en, asymDiff );
2348       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[0]->Fill(en, asymDiff );
2349     }
2350
2351     if(noverlaps==0)
2352     {
2353       fhMCGenFracNLocMax1NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2354       fhMCGenSplitEFracNLocMax1NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2355     }
2356     
2357     if( en > fHistoECut )
2358     {
2359       fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2360       
2361       if(!matched && ebin >= 0 && fFillEbinHisto)
2362       {
2363         fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2364         fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2365         
2366         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2367         {
2368           fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2369           fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym,  asymGen );
2370         }
2371       }
2372     }
2373   }
2374   else if(nMax==2)
2375   {
2376     fhMCGenFracNLocMax2      [mcindex][matched]->Fill(en     ,  efrac );
2377     fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en     ,  efracSplit );
2378     fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim  ,  e1+e2);
2379
2380     if(asym > 0 && !matched)
2381     {
2382      if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[1]    ->Fill(en, asymDiff );
2383      else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[1]->Fill(en, asymDiff );
2384     }
2385     
2386     if(noverlaps==0)
2387     {
2388       fhMCGenFracNLocMax2NoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2389       fhMCGenSplitEFracNLocMax2NoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2390     }
2391     
2392     if( en > fHistoECut )
2393     {
2394       fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2395       
2396       if(!matched && ebin >= 0 && fFillEbinHisto)
2397       {
2398         fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac  ,  l0    );
2399         fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac  ,  mass  );
2400         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2401         {
2402           fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2403           fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym,  asymGen );
2404         }
2405       }
2406     }
2407
2408   }
2409   else if(nMax > 2 )
2410   {
2411     fhMCGenFracNLocMaxN      [mcindex][matched]->Fill(en     ,  efrac );
2412     fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en     ,  efracSplit );
2413     fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim  ,  e1+e2);
2414     if(asym > 0 && !matched)
2415     {
2416       if      (mcindex==kmcPi0)    fhAsyMCGenRecoDiffMCPi0[2]    ->Fill(en, asymDiff );
2417       else  if(mcindex==kmcPi0Conv)fhAsyMCGenRecoDiffMCPi0Conv[2]->Fill(en, asymDiff );
2418     }
2419
2420     if(noverlaps==0)
2421     {
2422       fhMCGenFracNLocMaxNNoOverlap      [mcindex][matched]->Fill(en ,  efrac );
2423       fhMCGenSplitEFracNLocMaxNNoOverlap[mcindex][matched]->Fill(en ,  efracSplit );
2424     }
2425     
2426     if( en > fHistoECut )
2427     {
2428       fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac,splitFrac );
2429       
2430       if(!matched && ebin >= 0 && fFillEbinHisto)
2431       {
2432         fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac  ,  l0    );
2433         fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac  ,  mass  );
2434         
2435         if(mcindex==kmcPi0 || mcindex==kmcPi0Conv)
2436         {
2437           fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0  ,  asymGen );
2438           fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym,  asymGen );
2439         }
2440       }
2441     }
2442   }
2443 }
2444
2445 //__________________________________________________________________________________________________________
2446 void AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms(Float_t en,      Float_t enprim,
2447                                                                Int_t   nc,      Float_t mass,    Float_t l0,
2448                                                                Float_t asym,    Float_t splitFrac,
2449                                                                Int_t   inlm,    Int_t ebin, Bool_t matched,
2450                                                                Int_t   mcindex, Int_t noverlaps)
2451 {
2452   // Fill histograms for MC Overlaps
2453   
2454   //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);
2455     
2456   //printf("AliAnaInsideClusterInvariantMass::FillMCOverlapHistograms - NLM bin=%d, mcIndex %d, n Overlaps %d\n",inlm,mcindex,noverlaps);
2457   
2458   if(!matched)
2459   {
2460     fhMCENOverlaps[inlm][mcindex]->Fill(en,noverlaps);
2461     
2462     if     (noverlaps == 0)
2463     {
2464       fhMCEM02Overlap0  [inlm][mcindex]->Fill(en, l0);
2465       fhMCEMassOverlap0 [inlm][mcindex]->Fill(en, mass);
2466       fhMCEEpriOverlap0 [inlm][mcindex]->Fill(en, enprim);
2467       fhMCEAsymOverlap0 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2468       if(fFillNCellHisto) fhMCENCellOverlap0[inlm][mcindex]->Fill(en, nc);
2469       fhMCESplitEFracOverlap0[inlm][mcindex]->Fill(en, splitFrac);
2470       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0[inlm][ebin]->Fill(l0,mass);
2471     }
2472     else if(noverlaps == 1)
2473     {
2474       fhMCEM02Overlap1  [inlm][mcindex]->Fill(en, l0);
2475       fhMCEMassOverlap1 [inlm][mcindex]->Fill(en, mass);
2476       fhMCEEpriOverlap1 [inlm][mcindex]->Fill(en, enprim);
2477       fhMCEAsymOverlap1 [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2478       if(fFillNCellHisto) fhMCENCellOverlap1[inlm][mcindex]->Fill(en, nc);
2479       fhMCESplitEFracOverlap1[inlm][mcindex]->Fill(en, splitFrac);
2480       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1[inlm][ebin]->Fill(l0,mass);
2481     }
2482     else if(noverlaps  > 1)
2483     {
2484       fhMCEM02OverlapN  [inlm][mcindex]->Fill(en, l0);
2485       fhMCEMassOverlapN [inlm][mcindex]->Fill(en, mass);
2486       fhMCEEpriOverlapN [inlm][mcindex]->Fill(en, enprim);
2487       fhMCEAsymOverlapN [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2488       if(fFillNCellHisto) fhMCENCellOverlapN[inlm][mcindex]->Fill(en, nc);
2489       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2490       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapN[inlm][ebin]->Fill(l0,mass);
2491     }
2492     else
2493       Info("FillMCOverlapHistograms","n overlaps = %d!!", noverlaps);
2494   }
2495   else if(fFillTMHisto)
2496   {
2497     fhMCENOverlapsMatch[inlm][mcindex]->Fill(en,noverlaps);
2498     
2499     if     (noverlaps == 0)
2500     {
2501       fhMCEM02Overlap0Match  [inlm][mcindex]->Fill(en, l0);
2502       fhMCEMassOverlap0Match [inlm][mcindex]->Fill(en, mass);
2503       fhMCEEpriOverlap0Match [inlm][mcindex]->Fill(en, enprim);
2504       fhMCEAsymOverlap0Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2505       if(fFillNCellHisto) fhMCENCellOverlap0Match[inlm][mcindex]->Fill(en, nc);
2506       fhMCESplitEFracOverlap0Match[inlm][mcindex]->Fill(en, splitFrac);
2507       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap0Match[inlm][ebin]->Fill(l0,mass);
2508     }
2509     else if(noverlaps == 1)
2510     {
2511       fhMCEM02Overlap1Match  [inlm][mcindex]->Fill(en, l0);
2512       fhMCEMassOverlap1Match [inlm][mcindex]->Fill(en, mass);
2513       fhMCEEpriOverlap1Match [inlm][mcindex]->Fill(en, enprim);
2514       fhMCEAsymOverlap1Match [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2515       if(fFillNCellHisto) fhMCENCellOverlap1Match[inlm][mcindex]->Fill(en, nc);
2516       fhMCESplitEFracOverlap1Match[inlm][mcindex]->Fill(en, splitFrac);
2517       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02Overlap1Match[inlm][ebin]->Fill(l0,mass);
2518     }
2519     else if(noverlaps  > 1)
2520     {
2521       fhMCEM02OverlapNMatch  [inlm][mcindex]->Fill(en, l0);
2522       fhMCEMassOverlapNMatch [inlm][mcindex]->Fill(en, mass);
2523       fhMCEEpriOverlapNMatch [inlm][mcindex]->Fill(en, enprim);
2524       fhMCEAsymOverlapNMatch [inlm][mcindex]->Fill(en, TMath::Abs(asym));
2525       if(fFillNCellHisto) fhMCENCellOverlapNMatch[inlm][mcindex]->Fill(en, nc);
2526       fhMCESplitEFracOverlapN[inlm][mcindex]->Fill(en, splitFrac);
2527       if((mcindex==kmcPi0 || mcindex == kmcPi0Conv) && ebin >=0) fhMCPi0MassM02OverlapNMatch[inlm][ebin]->Fill(l0,mass);
2528     }
2529     else
2530         Info("FillMCOverlapHistograms()","n overlaps in matched = %d!!", noverlaps);
2531   }
2532 }
2533
2534
2535 //_____________________________________________________________________________________________________
2536 void AliAnaInsideClusterInvariantMass::FillNCellHistograms(Int_t   ncells,  Float_t energy, Int_t nMax,
2537                                                            Bool_t  matched, Int_t mcindex,
2538                                                            Float_t mass   , Float_t l0)
2539
2540 {
2541   // Fill optional histograms with more SS parameters
2542     
2543   if     (nMax==1)
2544   {
2545     fhNCellNLocMax1[0][matched]->Fill(energy,ncells) ;
2546     if(mcindex > 0 )  fhNCellNLocMax1[mcindex][matched]->Fill(energy,ncells) ;
2547     
2548     if (mcindex==kmcPi0 && !matched)
2549     {
2550       if( energy > fHistoECut)
2551       {
2552         fhNCellMassEHighNLocMax1MCPi0->Fill(ncells,mass);
2553         fhNCellM02EHighNLocMax1MCPi0 ->Fill(ncells,l0);
2554       }
2555       else
2556       {
2557         fhNCellMassELowNLocMax1MCPi0->Fill(ncells,mass);
2558         fhNCellM02ELowNLocMax1MCPi0 ->Fill(ncells,l0);
2559       }
2560     }
2561   }
2562   else if( nMax == 2  )
2563   {
2564     fhNCellNLocMax2[0][matched]->Fill(energy,ncells) ;
2565     if(mcindex > 0 )  fhNCellNLocMax2[mcindex][matched]->Fill(energy,ncells) ;
2566     
2567     
2568     if (mcindex==kmcPi0 && !matched)
2569     {
2570       if( energy > fHistoECut)
2571       {
2572         fhNCellMassEHighNLocMax2MCPi0->Fill(ncells,mass);
2573         fhNCellM02EHighNLocMax2MCPi0 ->Fill(ncells,l0);
2574       }
2575       else
2576       {
2577         fhNCellMassELowNLocMax2MCPi0->Fill(ncells,mass);
2578         fhNCellM02ELowNLocMax2MCPi0 ->Fill(ncells,l0);
2579       }
2580     }
2581   }
2582   else if( nMax >= 3  )
2583   {
2584     fhNCellNLocMaxN[0][matched]->Fill(energy,ncells) ;
2585     if(mcindex > 0 )  fhNCellNLocMaxN[mcindex][matched]->Fill(energy,ncells) ;
2586     
2587     if (mcindex==kmcPi0 && !matched)
2588     {
2589       if( energy > fHistoECut)
2590       {
2591         fhNCellMassEHighNLocMaxNMCPi0->Fill(ncells,mass);
2592         fhNCellM02EHighNLocMaxNMCPi0 ->Fill(ncells,l0);
2593       }
2594       else
2595       {
2596         fhNCellMassELowNLocMaxNMCPi0->Fill(ncells,mass);
2597         fhNCellM02ELowNLocMaxNMCPi0 ->Fill(ncells,l0);
2598       }
2599     }
2600   }
2601 }
2602
2603 //______________________________________________________________________________________________________
2604 void AliAnaInsideClusterInvariantMass::FillNLMDiffCutHistograms(AliVCluster *clus, AliVCaloCells* cells, Bool_t matched)
2605 {
2606   // Calculate NLM for different settings
2607
2608   Float_t energy = clus->E();
2609   Float_t m02    = clus->GetM02();
2610   
2611   Float_t minEOrg     = GetCaloUtils()->GetLocalMaximaCutE() ;
2612   Float_t minEDiffOrg = GetCaloUtils()->GetLocalMaximaCutEDiff();
2613   
2614   Int_t    nlm  = 0;
2615   Double_t mass = 0., angle = 0.;
2616   TLorentzVector    lv1, lv2;
2617   Int_t    absId1   =-1; Int_t   absId2   =-1;
2618   Float_t  distbad1 =-1; Float_t distbad2 =-1;
2619   Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
2620   Int_t pidTag = -1;
2621   
2622   //printf("E %f, m02 %f; Org: minE %f, minDiffE %f\n",energy, m02, minEOrg,minEDiffOrg);
2623   for(Int_t iE = 0; iE < fNLMSettingN; iE++)
2624   {
2625     for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
2626     {
2627       GetCaloUtils()->SetLocalMaximaCutE    (fNLMMinE   [iE]   );
2628       GetCaloUtils()->SetLocalMaximaCutEDiff(fNLMMinDiff[iDiff]);
2629       
2630       //nlm = GetCaloUtils()->GetNumberOfLocalMaxima(clus, cells)  ;
2631       
2632       //printf("\t Change: i %d minE %f, j %d minDiffE %f - NLM = %d\n",iE, fNLMMinE[iE], iDiff, fNLMMinDiff[iDiff],nlm);
2633
2634       pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(clus,cells,GetCaloUtils(),
2635                                                                                  GetVertex(0), nlm, mass, angle,
2636                                                                                  lv1,lv2,absId1,absId2,
2637                                                                                  distbad1,distbad2,fidcut1,fidcut2);
2638       if (nlm <= 0)
2639       {
2640         if(GetDebug() > 0 )
2641         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
2642         
2643         continue;
2644       }
2645
2646       Int_t inlm = nlm-1;
2647       if(inlm>2) inlm = 2;
2648       
2649       fhNLocMaxDiffCut    [iE][iDiff]      [matched]->Fill(energy,nlm);
2650       fhM02NLocMaxDiffCut [iE][iDiff][inlm][matched]->Fill(energy,m02);
2651       fhMassNLocMaxDiffCut[iE][iDiff][inlm][matched]->Fill(energy,mass);
2652
2653       if(pidTag==AliCaloPID::kPi0)
2654       {
2655         fhNLocMaxDiffCutPi0    [iE][iDiff]      [matched]->Fill(energy,nlm);
2656         fhM02NLocMaxDiffCutPi0 [iE][iDiff][inlm][matched]->Fill(energy,m02);
2657         fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][matched]->Fill(energy,mass);
2658       }
2659       
2660     }
2661   }
2662   
2663   GetCaloUtils()->SetLocalMaximaCutE    (minEOrg    );
2664   GetCaloUtils()->SetLocalMaximaCutEDiff(minEDiffOrg);
2665
2666 }
2667
2668
2669 //_____________________________________________________________________________________________
2670 void AliAnaInsideClusterInvariantMass::FillSSExtraHistograms(AliVCluster  *cluster, Int_t nMax,
2671                                                              Bool_t  matched, Int_t mcindex,
2672                                                              Float_t mass   , Int_t ebin)
2673 {
2674   // Fill optional histograms with more SS parameters
2675     
2676   Float_t en = cluster->E();
2677   
2678   // Get more Shower Shape parameters
2679   Float_t ll0  = 0., ll1  = 0.;
2680   Float_t disp= 0., dispEta = 0., dispPhi    = 0.;
2681   Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2682   
2683   GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
2684                                                                                ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
2685   
2686   Float_t dispAsy = -1;
2687   if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
2688   
2689   if     (nMax==1)
2690   {
2691     if( en > fHistoECut )
2692     {
2693       fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta,  mass );
2694       fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi,  mass );
2695       fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy,  mass );
2696       
2697       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2698       {
2699         fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta,  mass );
2700         fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi,  mass );
2701         fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy,  mass );
2702       }
2703     }
2704     
2705     if(!matched && ebin >= 0 && fFillEbinHisto)
2706     {
2707       fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta,  mass );
2708       fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi,  mass );
2709       fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy,  mass );
2710     }
2711   }
2712   else if( nMax == 2  )
2713   {
2714     if( en > fHistoECut )
2715     {
2716       fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta,  mass );
2717       fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi,  mass );
2718       fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy,  mass );
2719       
2720       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2721       {
2722         fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta,  mass );
2723         fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi,  mass );
2724         fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy,  mass );
2725       }
2726     }
2727     
2728     if(!matched && ebin >= 0 && fFillEbinHisto)
2729     {
2730       fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta,  mass );
2731       fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi,  mass );
2732       fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy,  mass );
2733     }
2734     
2735   }
2736   else if( nMax >= 3  )
2737   {
2738     if( en > fHistoECut )
2739     {
2740       fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta,  mass );
2741       fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi,  mass );
2742       fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy,  mass );
2743       
2744       if(IsDataMC() && mcindex > 0 && mcindex < 7)
2745       {
2746         fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta,  mass );
2747         fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi,  mass );
2748         fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy,  mass );
2749       }
2750     }
2751     
2752     if(!matched && ebin >= 0 && fFillEbinHisto)
2753     {
2754       fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta,  mass );
2755       fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi,  mass );
2756       fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy,  mass );
2757     }
2758
2759   }
2760   
2761 }
2762
2763 //__________________________________________________________________________________________
2764 void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,  Int_t nlm,
2765                                                               Int_t absId1, Int_t absId2)
2766 {
2767   // Calculate weights and fill histograms
2768     
2769   AliVCaloCells* cells = 0;
2770   if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
2771   else                        cells = GetPHOSCells();
2772   
2773   // First recalculate energy in case non linearity was applied
2774   Float_t energy =  GetCaloUtils()->RecalibrateClusterEnergy(clus, cells);// recalculate cluster energy, avoid non lin correction.
2775   
2776   Float_t simuTotWeight = 0;
2777   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2778   {
2779     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(clus, cells,energy);
2780     simuTotWeight/= energy;
2781   }
2782   
2783   if(energy <=0 )
2784   {
2785     Info("WeightHistograms()","Wrong calculated energy %f\n",energy);
2786     return;
2787   }
2788   
2789   //Get amplitude of  main local maxima, recalibrate if needed
2790   Float_t amp1 = cells->GetCellAmplitude(absId1);
2791   GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
2792   Float_t amp2 = cells->GetCellAmplitude(absId2);
2793   GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
2794
2795   if(amp1 < amp2)        Info("FillSSWeightHistograms","Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
2796   if(amp1==0 || amp2==0) Info("FillSSWeightHistograms","Null E local maxima : id1 E %f, id2 E %f\n "        ,amp1,amp2);
2797   
2798   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2799   {
2800     amp1*=GetCaloUtils()->GetMCECellClusFracCorrection(amp1,energy)/simuTotWeight;
2801     amp2*=GetCaloUtils()->GetMCECellClusFracCorrection(amp2,energy)/simuTotWeight;
2802   }
2803   
2804   if(amp1>0)fhPi0CellEMaxEMax2Frac   [nlm]->Fill(energy,amp2/amp1);
2805   fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
2806   fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
2807   
2808   //Get the ratio and log ratio to all cells in cluster
2809   for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
2810   {
2811     Int_t id       = clus->GetCellsAbsId()[ipos];
2812     
2813     //Recalibrate cell energy if needed
2814     Float_t amp = cells->GetCellAmplitude(id);
2815     GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
2816     if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
2817     {
2818       //printf("eCell a) %f",amp);
2819       amp*=GetCaloUtils()->GetMCECellClusFracCorrection(amp,energy)/simuTotWeight;
2820       //printf(", b)%f\n",amp);
2821     }
2822     
2823     if(amp > 0)fhPi0CellE       [nlm]->Fill(energy,amp);
2824     fhPi0CellEFrac   [nlm]->Fill(energy,amp/energy);
2825     fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
2826     
2827     if     (id!=absId1 && id!=absId2)
2828     {
2829       if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
2830       if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
2831     }
2832
2833   }
2834
2835   //Recalculate shower shape for different W0
2836   if(fCalorimeter=="EMCAL")
2837   {
2838     Float_t l0org = clus->GetM02();
2839     Float_t l1org = clus->GetM20();
2840     Float_t dorg  = clus->GetDispersion();
2841     Float_t w0org =  GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
2842     
2843     //printf("E cl %2.3f, E recal %2.3f, nlm %d, Org w0 %2.3f, org l0 %2.3f\n",clus->E(), energy,nlm, w0org,l0org);
2844     
2845     for(Int_t iw = 0; iw < fSSWeightN; iw++)
2846     {
2847       GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
2848       //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
2849       //fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
2850
2851       Float_t l0   = 0., l1   = 0.;
2852       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2853       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2854       
2855       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2856                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[0]);
2857       //Make sure that for pp fSSECellCut[0]=0.05 and for PbPb fSSECellCut[0]=0.15
2858
2859       
2860       fhM02WeightPi0[nlm][iw]->Fill(energy,l0);
2861       
2862       //printf("\t w0 %2.3f, l0 %2.3f\n",GetCaloUtils()->GetEMCALRecoUtils()->GetW0(),l0);
2863       
2864     } // w0 loop
2865     
2866     // Set the original values back
2867     clus->SetM02(l0org);
2868     clus->SetM20(l1org);
2869     clus->SetDispersion(dorg);
2870     GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
2871
2872     for(Int_t iec = 0; iec < fSSECellCutN; iec++)
2873     {
2874       Float_t l0   = 0., l1   = 0.;
2875       Float_t disp = 0., dEta = 0., dPhi    = 0.;
2876       Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
2877       
2878       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
2879                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
2880       
2881       fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
2882       
2883       //printf("\t min E cell %2.3f, l0 %2.3f\n",fSSECellCut[iec], l0);
2884       
2885     } // w0 loop
2886   
2887   }// EMCAL
2888 }
2889
2890 //____________________________________________________________________________________________
2891 void  AliAnaInsideClusterInvariantMass::FillTrackMatchingHistograms(AliVCluster * cluster,
2892                                                                     Int_t nMax, Int_t mcindex)
2893 {
2894   // Fill histograms related to track matching
2895     
2896   Float_t dZ  = cluster->GetTrackDz();
2897   Float_t dR  = cluster->GetTrackDx();
2898   Float_t en  = cluster->E();
2899   
2900   if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
2901   {
2902     dR = 2000., dZ = 2000.;
2903     GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
2904   }
2905   
2906   //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
2907   
2908   if(TMath::Abs(dR) < 999)
2909   {
2910     if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
2911     else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
2912     else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
2913     
2914     if(IsDataMC() && mcindex > 0 && mcindex < 7)
2915     {
2916       if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
2917       else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
2918       else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
2919     }
2920     
2921     AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
2922     
2923     Bool_t positive = kFALSE;
2924     if(track) positive = (track->Charge()>0);
2925
2926     if(track)
2927     {
2928       if(positive)
2929       {
2930         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[0]->Fill(en,dR); }
2931         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[0]->Fill(en,dR); }
2932         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[0]->Fill(en,dR); }
2933         
2934         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2935         {
2936           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Pos[mcindex]->Fill(en,dR); }
2937           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Pos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Pos[mcindex]->Fill(en,dR); }
2938           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNPos[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNPos[mcindex]->Fill(en,dR); }
2939         }
2940       }
2941       else
2942       {
2943         if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[0]->Fill(en,dR); }
2944         else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[0]->Fill(en,dR); }
2945         else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[0]->Fill(en,dR); }
2946         
2947         if(IsDataMC() && mcindex > 0 && mcindex < 7)
2948         {
2949           if     ( nMax == 1  ) { fhTrackMatchedDEtaNLocMax1Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1Neg[mcindex]->Fill(en,dR); }
2950           else if( nMax == 2  ) { fhTrackMatchedDEtaNLocMax2Neg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2Neg[mcindex]->Fill(en,dR); }
2951           else if( nMax >= 3  ) { fhTrackMatchedDEtaNLocMaxNNeg[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxNNeg[mcindex]->Fill(en,dR); }
2952         }
2953       }
2954       
2955     }// track exists
2956     
2957   }
2958 }
2959
2960 //_______________________________________________________________
2961 TObjString *  AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
2962 {       
2963         //Save parameters used for analysis
2964   TString parList ; //this will be list of parameters used for this analysis.
2965   Int_t buffersize = 255;
2966   char onePar[buffersize] ;
2967   
2968   snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
2969   parList+=onePar ;     
2970   
2971   snprintf(onePar,buffersize,"Calorimeter: %s\n",        fCalorimeter.Data()) ;
2972   parList+=onePar ;
2973   snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n",    GetCaloUtils()->GetLocalMaximaCutE()) ;
2974   parList+=onePar ;
2975   snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
2976   parList+=onePar ;
2977   snprintf(onePar,buffersize,"fMinNCells =%d \n",        fMinNCells) ;
2978   parList+=onePar ;    
2979   snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n",    fMinBadDist) ;
2980   parList+=onePar ;  
2981   if(fFillSSWeightHisto)
2982   {
2983     snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2984     parList+=onePar ;
2985   }
2986   
2987   return new TObjString(parList) ;
2988   
2989 }
2990
2991 //________________________________________________________________
2992 TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
2993 {
2994   // Create histograms to be saved in output file and 
2995   // store them in outputContainer
2996   TList * outputContainer = new TList() ; 
2997   outputContainer->SetName("InsideClusterHistos") ;
2998   
2999   Int_t nptbins  = GetHistogramRanges()->GetHistoPtBins();           Float_t ptmax  = GetHistogramRanges()->GetHistoPtMax();           Float_t ptmin  = GetHistogramRanges()->GetHistoPtMin();
3000   Int_t ssbins   = GetHistogramRanges()->GetHistoShowerShapeBins();  Float_t ssmax  = GetHistogramRanges()->GetHistoShowerShapeMax();  Float_t ssmin  = GetHistogramRanges()->GetHistoShowerShapeMin();
3001   Int_t mbins    = GetHistogramRanges()->GetHistoMassBins();         Float_t mmax   = GetHistogramRanges()->GetHistoMassMax();         Float_t mmin   = GetHistogramRanges()->GetHistoMassMin();
3002   Int_t ncbins   = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t   ncmax  = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t   ncmin  = GetHistogramRanges()->GetHistoNClusterCellMin(); 
3003   Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();          Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();          Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
3004   Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();          Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();          Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
3005   
3006   Int_t   nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();          
3007   Float_t resetamax   = GetHistogramRanges()->GetHistoTrackResidualEtaMax();          
3008   Float_t resetamin   = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
3009   Int_t   nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();          
3010   Float_t resphimax   = GetHistogramRanges()->GetHistoTrackResidualPhiMax();          
3011   Float_t resphimin   = GetHistogramRanges()->GetHistoTrackResidualPhiMin();  
3012   
3013   Bool_t m02On   = GetCaloPID()->IsSplitShowerShapeCutOn();
3014   Bool_t asyOn   = GetCaloPID()->IsSplitAsymmetryCutOn();
3015   Bool_t splitOn = kFALSE;
3016   if(GetCaloPID()->GetSplitEnergyFractionMinimum(0) > 0 ||
3017      GetCaloPID()->GetSplitEnergyFractionMinimum(1) > 0 ||
3018      GetCaloPID()->GetSplitEnergyFractionMinimum(2) > 0) splitOn = kTRUE;
3019   
3020   TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#pi^{0} (#gamma->e^{#pm})","#eta", "hadron"};
3021   TString pname[] ={"","Photon","Conversion",     "Pi0",    "Pi0Conv",                  "Eta","Hadron"};
3022   TString snlm [] = {"1","2","N"};
3023
3024   TString sEBin[] = {"8 < #it{E} < 12 GeV","12 < #it{E} < 16 GeV", "16 < #it{E} < 20 GeV", "#it{E} > 20 GeV" };
3025
3026   Int_t n = 1;
3027   
3028   if(IsDataMC()) n = 7;
3029   
3030   Int_t nMaxBins = 10;
3031   
3032   TString sMatched[] = {"","Matched"};
3033   
3034   Int_t nMatched = 2;
3035   if(!fFillTMHisto) nMatched = 1;
3036   
3037   
3038   if(fFillNLMDiffCutHisto)
3039   {
3040     for(Int_t imatch = 0; imatch < nMatched; imatch++)
3041     {
3042       for(Int_t iE = 0; iE < fNLMSettingN; iE++)
3043       {
3044         for(Int_t iDiff = 0; iDiff < fNLMSettingN; iDiff++)
3045         {
3046           fhNLocMaxDiffCut[iE][iDiff][imatch]  = new TH2F(Form("hNLocMax_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3047                                                           Form("NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s", fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3048                                                           nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3049           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3050           fhNLocMaxDiffCut[iE][iDiff][imatch]->SetXTitle("#it{E}_{cluster}");
3051           outputContainer->Add(fhNLocMaxDiffCut[iE][iDiff][imatch]) ;
3052           
3053           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]  = new TH2F(Form("hNLocMaxPi0_MinE%d_MinDiffE%d%s",iE, iDiff, sMatched[imatch].Data()),
3054                                                              Form("#pi^{0} NLM for #it{E}_{LM}>%1.2f, #Delta E=%1.2F %s",
3055                                                                   fNLMMinE[iE], fNLMMinDiff[iDiff],sMatched[imatch].Data()),
3056                                                              nptbins,ptmin,ptmax, nMaxBins,0,nMaxBins);
3057           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetYTitle("#it{NLM}");
3058           fhNLocMaxDiffCutPi0[iE][iDiff][imatch]->SetXTitle("#it{E}_{#pi^{0}}");
3059           outputContainer->Add(fhNLocMaxDiffCutPi0[iE][iDiff][imatch]) ;
3060           
3061           for(Int_t inlm = 0; inlm < 3; inlm++)
3062           {
3063             
3064             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxM02_MinE%d_MinDiffE%d_NLM%s%s",
3065                                                                           iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3066                                                                      Form("#lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3067                                                                           fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3068                                                                      nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3069             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3070             fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3071             outputContainer->Add(fhM02NLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3072             
3073             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxMass_MinE%d_MinDiffE%d_NLM%s%s",
3074                                                                            iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3075                                                                       Form("#it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3076                                                                            fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3077                                                                       nptbins,ptmin,ptmax, mbins,mmin,mmax);
3078             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3079             fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3080             outputContainer->Add(fhMassNLocMaxDiffCut[iE][iDiff][inlm][imatch]) ;
3081             
3082             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0M02_MinE%d_MinDiffE%d_NLM%s%s",
3083                                                                              iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3084                                                                         Form("#pi^{0} #lambda^{2}_{0} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3085                                                                              fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3086                                                                         nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3087             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#lambda^{2}_{0}");
3088             fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3089             outputContainer->Add(fhM02NLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3090             
3091             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]  = new TH2F(Form("hNLocMaxPi0Mass_MinE%d_MinDiffE%d_NLM%s%s",
3092                                                                               iE, iDiff, snlm[inlm].Data(),sMatched[imatch].Data()),
3093                                                                          Form("#pi^{0} #it{M}_{split} for #it{E}_{LM}>%1.2f, #Delta E=%1.2F NLM %s %s",
3094                                                                               fNLMMinE[iE], fNLMMinDiff[iDiff],snlm[inlm].Data(), sMatched[imatch].Data()),
3095                                                                          nptbins,ptmin,ptmax, mbins,mmin,mmax);
3096             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetYTitle("#it{M}_{split}");
3097             fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]->SetXTitle("#it{E}_{cluster}");
3098             outputContainer->Add(fhMassNLocMaxDiffCutPi0[iE][iDiff][inlm][imatch]) ;
3099             
3100           }
3101           
3102         }
3103       }
3104     }
3105     return outputContainer;
3106   }
3107
3108   if(fCheckSplitDistToBad)
3109   {
3110     for(Int_t inlm = 0; inlm < 3; inlm++)
3111     {
3112       fhMassBadDistClose[inlm]  = new TH2F(Form("hMassBadDistCloseNLocMax%s",snlm[inlm].Data()),
3113                                            Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3114                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3115       fhMassBadDistClose[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3116       fhMassBadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3117       outputContainer->Add(fhMassBadDistClose[inlm]) ;
3118       
3119       fhM02BadDistClose[inlm]  = new TH2F(Form("hM02BadDistCloseNLocMax%s",snlm[inlm].Data()),
3120                                           Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to bad channel",inlm),
3121                                           nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3122       fhM02BadDistClose[inlm]->SetYTitle("#lambda_{0}^{2}");
3123       fhM02BadDistClose[inlm]->SetXTitle("#it{E} (GeV)");
3124       outputContainer->Add(fhM02BadDistClose[inlm]) ;
3125       
3126       fhMassOnBorder[inlm]  = new TH2F(Form("hMassOnBorderNLocMax%s",snlm[inlm].Data()),
3127                                        Form("Invariant mass of splitted cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3128                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3129       fhMassOnBorder[inlm]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3130       fhMassOnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3131       outputContainer->Add(fhMassOnBorder[inlm]) ;
3132       
3133       fhM02OnBorder[inlm]  = new TH2F(Form("hM02OnBorderNLocMax%s",snlm[inlm].Data()),
3134                                       Form("#lambda_{0}^{2} for cluster with #it{NLM}=%d vs E, 2nd LM close to border",inlm),
3135                                       nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3136       fhM02OnBorder[inlm]->SetYTitle("#lambda_{0}^{2}");
3137       fhM02OnBorder[inlm]->SetXTitle("#it{E} (GeV)");
3138       outputContainer->Add(fhM02OnBorder[inlm]) ;
3139       
3140     }
3141   }
3142   
3143   for(Int_t i = 0; i < n; i++)
3144   {
3145     for(Int_t j = 0; j < nMatched; j++)
3146     {
3147       
3148       fhNLocMax[i][j]     = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3149                                      Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3150                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3151       fhNLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3152       fhNLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3153       outputContainer->Add(fhNLocMax[i][j]) ;
3154
3155       fhLM1NLocMax[i][j]     = new TH2F(Form("hLM1NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3156                                      Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3157                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3158       fhLM1NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3159       fhLM1NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3160       outputContainer->Add(fhLM1NLocMax[i][j]) ;
3161
3162       fhLM2NLocMax[i][j]     = new TH2F(Form("hLM2NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3163                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3164                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3165       fhLM2NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3166       fhLM2NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3167       outputContainer->Add(fhLM2NLocMax[i][j]) ;
3168       
3169       if(m02On)
3170       {
3171         fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3172                                          Form("Number of local maxima in cluster %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3173                                          nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3174         fhNLocMaxM02Cut[i][j]->SetYTitle("#it{N} maxima");
3175         fhNLocMaxM02Cut[i][j]->SetXTitle("#it{E} (GeV)");
3176         outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
3177         
3178         fhLM1NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM1NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3179                                           Form("Number of local maxima in cluster for split cluster 1 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3180                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3181         fhLM1NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3182         fhLM1NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3183         outputContainer->Add(fhLM1NLocMaxM02Cut[i][j]) ;
3184         
3185         fhLM2NLocMaxM02Cut[i][j]     = new TH2F(Form("hLM2NLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
3186                                           Form("Number of local maxima in cluster for split cluster 2 %s %s, M02 cut",ptype[i].Data(),sMatched[j].Data()),
3187                                           nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3188         fhLM2NLocMaxM02Cut[i][j]   ->SetYTitle("#it{N} maxima");
3189         fhLM2NLocMaxM02Cut[i][j]   ->SetXTitle("#it{E} (GeV)");
3190         outputContainer->Add(fhLM2NLocMaxM02Cut[i][j]) ;
3191
3192       }
3193       
3194
3195       fhNLocMaxIdPi0[i][j]     = new TH2F(Form("hNLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3196                                      Form("Number of local maxima in pi0 ID cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
3197                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3198       fhNLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3199       fhNLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3200       outputContainer->Add(fhNLocMaxIdPi0[i][j]) ;
3201
3202       
3203       fhLM1NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM1NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3204                                         Form("Number of local maxima in cluster for split cluster 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3205                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3206       fhLM1NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3207       fhLM1NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3208       outputContainer->Add(fhLM1NLocMaxIdPi0[i][j]) ;
3209       
3210       fhLM2NLocMaxIdPi0[i][j]     = new TH2F(Form("hLM2NLocMaxIdPi0%s%s",pname[i].Data(),sMatched[j].Data()),
3211                                         Form("Number of local maxima in cluster for split cluster 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3212                                         nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3213       fhLM2NLocMaxIdPi0[i][j]   ->SetYTitle("#it{N} maxima");
3214       fhLM2NLocMaxIdPi0[i][j]   ->SetXTitle("#it{E} (GeV)");
3215       outputContainer->Add(fhLM2NLocMaxIdPi0[i][j]) ;
3216       
3217
3218       
3219       
3220       fhSplitClusterENLocMax[i][j]     = new TH2F(Form("hSplitEClusterNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3221                                                   Form("Number of local maxima vs E of split clusters %s %s",ptype[i].Data(),sMatched[j].Data()),
3222                                                   nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3223       fhSplitClusterENLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3224       fhSplitClusterENLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3225       outputContainer->Add(fhSplitClusterENLocMax[i][j]) ;
3226       
3227       
3228       fhSplitClusterEPi0NLocMax[i][j]     = new TH2F(Form("hSplitEClusterPi0NLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
3229                                                      Form("Number of local maxima vs E of split clusters, id as pi0, %s %s",ptype[i].Data(),sMatched[j].Data()),
3230                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
3231       fhSplitClusterEPi0NLocMax[i][j]   ->SetYTitle("#it{N} maxima");
3232       fhSplitClusterEPi0NLocMax[i][j]   ->SetXTitle("#it{E} (GeV)");
3233       outputContainer->Add(fhSplitClusterEPi0NLocMax[i][j]) ;
3234
3235       if(fFillNCellHisto)
3236       {
3237         fhNCellNLocMax1[i][j]  = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3238                                           Form("n cells vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3239                                           nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3240         fhNCellNLocMax1[i][j] ->SetYTitle("#it{N} cells");
3241         fhNCellNLocMax1[i][j] ->SetXTitle("#it{E} (GeV)");
3242         outputContainer->Add(fhNCellNLocMax1[i][j]) ;
3243         
3244         fhNCellNLocMax2[i][j]     = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3245                                              Form("n cells vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3246                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3247         fhNCellNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3248         fhNCellNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3249         outputContainer->Add(fhNCellNLocMax2[i][j]) ;
3250         
3251         
3252         fhNCellNLocMaxN[i][j]     = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3253                                              Form("n cells vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3254                                              nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3255         fhNCellNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3256         fhNCellNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3257         outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
3258       }
3259
3260       fhMassNLocMax1[i][j]  = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3261                                        Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3262                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3263       fhMassNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3264       fhMassNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3265       outputContainer->Add(fhMassNLocMax1[i][j]) ;   
3266       
3267       fhMassNLocMax2[i][j]  = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3268                                        Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3269                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3270       fhMassNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3271       fhMassNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3272       outputContainer->Add(fhMassNLocMax2[i][j]) ;   
3273       
3274       fhMassNLocMaxN[i][j]  = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3275                                        Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
3276                                        nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3277       fhMassNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3278       fhMassNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3279       outputContainer->Add(fhMassNLocMaxN[i][j]) ;
3280
3281       fhMassSplitENLocMax1[i][j]  = new TH2F(Form("hMassSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3282                                        Form("Invariant mass of splitted cluster with #it{NLM}=1 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3283                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3284       fhMassSplitENLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3285       fhMassSplitENLocMax1[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3286       outputContainer->Add(fhMassSplitENLocMax1[i][j]) ;
3287       
3288       fhMassSplitENLocMax2[i][j]  = new TH2F(Form("hMassSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3289                                        Form("Invariant mass of splitted cluster with #it{NLM}=2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3290                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3291       fhMassSplitENLocMax2[i][j]->SetYTitle("#it{E} _{M} (GeV/#it{c}^{2})");
3292       fhMassSplitENLocMax2[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3293       outputContainer->Add(fhMassSplitENLocMax2[i][j]) ;
3294       
3295       fhMassSplitENLocMaxN[i][j]  = new TH2F(Form("hMassSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3296                                        Form("Invariant mass of splitted cluster with NLM>2 vs #it{E}_{1}+#it{E}_{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3297                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
3298       fhMassSplitENLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3299       fhMassSplitENLocMaxN[i][j]->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3300       outputContainer->Add(fhMassSplitENLocMaxN[i][j]) ;
3301       
3302       fhM02NLocMax1[i][j]     = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3303                                          Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3304                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3305       fhM02NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3306       fhM02NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3307       outputContainer->Add(fhM02NLocMax1[i][j]) ;
3308       
3309       fhM02NLocMax2[i][j]     = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3310                                          Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3311                                          nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3312       fhM02NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3313       fhM02NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3314       outputContainer->Add(fhM02NLocMax2[i][j]) ;
3315       
3316       fhM02NLocMaxN[i][j]    = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3317                                         Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3318                                         nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3319       fhM02NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3320       fhM02NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3321       outputContainer->Add(fhM02NLocMaxN[i][j]) ;
3322       
3323       fhAsymNLocMax1[i][j]  = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3324                                        Form("Asymmetry of #it{NLM}=1  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3325                                        nptbins,ptmin,ptmax,200,-1,1);
3326       fhAsymNLocMax1[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3327       fhAsymNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
3328       outputContainer->Add(fhAsymNLocMax1[i][j]) ;
3329       
3330       fhAsymNLocMax2[i][j]  = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3331                                        Form("Asymmetry of #it{NLM}=2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3332                                        nptbins,ptmin,ptmax,200,-1,1);
3333       fhAsymNLocMax2[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3334       fhAsymNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
3335       outputContainer->Add(fhAsymNLocMax2[i][j]) ;
3336       
3337       fhAsymNLocMaxN[i][j]  = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3338                                        Form("Asymmetry of NLM>2  vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
3339                                        nptbins,ptmin,ptmax,200,-1,1);
3340       fhAsymNLocMaxN[i][j]->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3341       fhAsymNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
3342       outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
3343       
3344       fhSplitEFractionNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3345                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3346                                                     nptbins,ptmin,ptmax,120,0,1.2);
3347       fhSplitEFractionNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3348       fhSplitEFractionNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3349       outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
3350       
3351       fhSplitEFractionNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3352                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3353                                                     nptbins,ptmin,ptmax,120,0,1.2);
3354       fhSplitEFractionNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3355       fhSplitEFractionNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3356       outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
3357       
3358       fhSplitEFractionNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3359                                                    Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3360                                                    nptbins,ptmin,ptmax,120,0,1.2);
3361       fhSplitEFractionNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3362       fhSplitEFractionNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3363       outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
3364       
3365       if(i==0 && j==0 )
3366       {
3367         if(m02On)
3368         {
3369           fhMassM02CutNLocMax1  = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, M02 cut, no TM",
3370                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3371           fhMassM02CutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3372           fhMassM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3373           outputContainer->Add(fhMassM02CutNLocMax1) ;
3374           
3375           fhMassM02CutNLocMax2  = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, M02 cut, no TM",
3376                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3377           fhMassM02CutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3378           fhMassM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3379           outputContainer->Add(fhMassM02CutNLocMax2) ;
3380           
3381           fhMassM02CutNLocMaxN  = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
3382                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3383           fhMassM02CutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3384           fhMassM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3385           outputContainer->Add(fhMassM02CutNLocMaxN) ;
3386           
3387           fhAsymM02CutNLocMax1  = new TH2F("hAsymM02CutNLocMax1","Asymmetry of #it{NLM}=1  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3388           fhAsymM02CutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3389           fhAsymM02CutNLocMax1->SetXTitle("#it{E} (GeV)");
3390           outputContainer->Add(fhAsymM02CutNLocMax1) ;
3391           
3392           fhAsymM02CutNLocMax2  = new TH2F("hAsymM02CutNLocMax2","Asymmetry of #it{NLM}=2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3393           fhAsymM02CutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3394           fhAsymM02CutNLocMax2->SetXTitle("#it{E} (GeV)");
3395           outputContainer->Add(fhAsymM02CutNLocMax2) ;
3396           
3397           fhAsymM02CutNLocMaxN  = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2  vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
3398           fhAsymM02CutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3399           fhAsymM02CutNLocMaxN->SetXTitle("#it{E} (GeV)");
3400           outputContainer->Add(fhAsymM02CutNLocMaxN) ;
3401           
3402           if(splitOn)
3403           {
3404             fhMassSplitECutNLocMax1  = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3405                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3406             fhMassSplitECutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3407             fhMassSplitECutNLocMax1->SetXTitle("#it{E} (GeV)");
3408             outputContainer->Add(fhMassSplitECutNLocMax1) ;
3409             
3410             fhMassSplitECutNLocMax2  = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3411                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3412             fhMassSplitECutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3413             fhMassSplitECutNLocMax2->SetXTitle("#it{E} (GeV)");
3414             outputContainer->Add(fhMassSplitECutNLocMax2) ;
3415             
3416             fhMassSplitECutNLocMaxN  = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (#it{E}_{1}+#it{E}_{2})/E cut, M02 cut, no TM",
3417                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
3418             fhMassSplitECutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3419             fhMassSplitECutNLocMaxN->SetXTitle("#it{E} (GeV)");
3420             outputContainer->Add(fhMassSplitECutNLocMaxN) ;
3421           }
3422         }//m02on
3423         
3424         if(asyOn)
3425         {
3426           fhMassAsyCutNLocMax1  = new TH2F("hMassAsyCutNLocMax1","Invariant mass of splitted cluster with #it{NLM}=1 vs E, Asy cut, no TM",
3427                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3428           fhMassAsyCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3429           fhMassAsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3430           outputContainer->Add(fhMassAsyCutNLocMax1) ;
3431           
3432           fhMassAsyCutNLocMax2  = new TH2F("hMassAsyCutNLocMax2","Invariant mass of splitted cluster with #it{NLM}=2 vs E, Asy cut, no TM",
3433                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3434           fhMassAsyCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3435           fhMassAsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3436           outputContainer->Add(fhMassAsyCutNLocMax2) ;
3437           
3438           fhMassAsyCutNLocMaxN  = new TH2F("hMassAsyCutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, Asy cut, no TM",
3439                                            nptbins,ptmin,ptmax,mbins,mmin,mmax);
3440           fhMassAsyCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3441           fhMassAsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3442           outputContainer->Add(fhMassAsyCutNLocMaxN) ;
3443           
3444           fhM02AsyCutNLocMax1  = new TH2F("hM02AsyCutNLocMax1","#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, AsyCut, no TM",
3445                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3446           fhM02AsyCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3447           fhM02AsyCutNLocMax1->SetXTitle("#it{E} (GeV)");
3448           outputContainer->Add(fhM02AsyCutNLocMax1) ;
3449           
3450           fhM02AsyCutNLocMax2  = new TH2F("hM02AsyCutNLocMax2","#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, AsyCut, no TM",
3451                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3452           fhM02AsyCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3453           fhM02AsyCutNLocMax2->SetXTitle("#it{E} (GeV)");
3454           outputContainer->Add(fhM02AsyCutNLocMax2) ;
3455           
3456           fhM02AsyCutNLocMaxN  = new TH2F("hM02AsyCutNLocMaxN","#lambda_{0}^{2} of NLM>2  vs cluster Energy, AsyCut, no TM",
3457                                           nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3458           fhM02AsyCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3459           fhM02AsyCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3460           outputContainer->Add(fhM02AsyCutNLocMaxN) ;
3461         }
3462         
3463         if(GetCaloPID()->GetSubClusterEnergyMinimum(0) > 0.1)
3464         {
3465           fhMassEnCutNLocMax1  = new TH2F("hMassEnCutNLocMax1",Form("Invariant mass of splitted cluster with #it{NLM}=1 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3466                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3467           fhMassEnCutNLocMax1->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3468           fhMassEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3469           outputContainer->Add(fhMassEnCutNLocMax1) ;
3470           
3471           fhMassEnCutNLocMax2  = new TH2F("hMassEnCutNLocMax2",Form("Invariant mass of splitted cluster with #it{NLM}=2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3472                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3473           fhMassEnCutNLocMax2->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3474           fhMassEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3475           outputContainer->Add(fhMassEnCutNLocMax2) ;
3476           
3477           fhMassEnCutNLocMaxN  = new TH2F("hMassEnCutNLocMaxN",Form("Invariant mass of splitted cluster with NLM>2 vs E, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3478                                           nptbins,ptmin,ptmax,mbins,mmin,mmax);
3479           fhMassEnCutNLocMaxN->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3480           fhMassEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3481           outputContainer->Add(fhMassEnCutNLocMaxN) ;
3482           
3483           fhM02EnCutNLocMax1  = new TH2F("hM02EnCutNLocMax1",Form("#lambda_{0}^{2} of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0)),
3484                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3485           fhM02EnCutNLocMax1->SetYTitle("#lambda_{0}^{2}");
3486           fhM02EnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3487           outputContainer->Add(fhM02EnCutNLocMax1) ;
3488           
3489           fhM02EnCutNLocMax2  = new TH2F("hM02EnCutNLocMax2",Form("#lambda_{0}^{2} of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1)),
3490                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3491           fhM02EnCutNLocMax2->SetYTitle("#lambda_{0}^{2}");
3492           fhM02EnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3493           outputContainer->Add(fhM02EnCutNLocMax2) ;
3494           
3495           fhM02EnCutNLocMaxN  = new TH2F("hM02EnCutNLocMaxN",Form("#lambda_{0}^{2} of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2)),
3496                                          nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
3497           fhM02EnCutNLocMaxN->SetYTitle("#lambda_{0}^{2}");
3498           fhM02EnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3499           outputContainer->Add(fhM02EnCutNLocMaxN) ;
3500           
3501           fhAsymEnCutNLocMax1  = new TH2F("hAsymEnCutNLocMax1",Form("Asymmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3502                                           , nptbins,ptmin,ptmax,200,-1,1);
3503           fhAsymEnCutNLocMax1->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3504           fhAsymEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3505           outputContainer->Add(fhAsymEnCutNLocMax1) ;
3506           
3507           fhAsymEnCutNLocMax2  = new TH2F("hAsymEnCutNLocMax2",Form("Asymmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3508                                           , nptbins,ptmin,ptmax,200,-1,1);
3509           fhAsymEnCutNLocMax2->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3510           fhAsymEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3511           outputContainer->Add(fhAsymEnCutNLocMax2) ;
3512           
3513           fhAsymEnCutNLocMaxN  = new TH2F("hAsymEnCutNLocMaxN",Form("Asymmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3514                                           , nptbins,ptmin,ptmax,200,-1,1);
3515           fhAsymEnCutNLocMaxN->SetYTitle("(#it{E}_{1}-#it{E}_{2})/(#it{E}_{1}+#it{E}_{2})");
3516           fhAsymEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3517           outputContainer->Add(fhAsymEnCutNLocMaxN) ;
3518
3519           fhSplitEFracEnCutNLocMax1  = new TH2F("hSplitEFracEnCutNLocMax1",Form("SplitEFracmetry of #it{NLM}=1  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(0))
3520                                           , nptbins,ptmin,ptmax,120,0,1.2);
3521           fhSplitEFracEnCutNLocMax1->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3522           fhSplitEFracEnCutNLocMax1->SetXTitle("#it{E} (GeV)");
3523           outputContainer->Add(fhSplitEFracEnCutNLocMax1) ;
3524           
3525           fhSplitEFracEnCutNLocMax2  = new TH2F("hSplitEFracEnCutNLocMax2",Form("SplitEFracmetry of #it{NLM}=2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(1))
3526                                           , nptbins,ptmin,ptmax,120,0,1.2);
3527           fhSplitEFracEnCutNLocMax2->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3528           fhSplitEFracEnCutNLocMax2->SetXTitle("#it{E} (GeV)");
3529           outputContainer->Add(fhSplitEFracEnCutNLocMax2) ;
3530           
3531           fhSplitEFracEnCutNLocMaxN  = new TH2F("hSplitEFracEnCutNLocMaxN",Form("SplitEFracmetry of NLM>2  vs cluster Energy, E > %1.1f GeV, no TM",GetCaloPID()->GetSubClusterEnergyMinimum(2))
3532                                           , nptbins,ptmin,ptmax,120,0,1.2);
3533           fhSplitEFracEnCutNLocMaxN->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3534           fhSplitEFracEnCutNLocMaxN->SetXTitle("#it{E} (GeV)");
3535           outputContainer->Add(fhSplitEFracEnCutNLocMaxN) ;
3536         }
3537         
3538       } // no MC
3539       
3540       if(asyOn || m02On )
3541       {
3542         fhMassAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3543                                                      Form("Mass vs E, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3544                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3545         fhMassAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3546         fhMassAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3547         outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
3548         
3549         fhMassAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3550                                                      Form("Mass vs E, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3551                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3552         fhMassAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3553         fhMassAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3554         outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
3555         
3556         fhMassAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3557                                                      Form("Mass vs E, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3558                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3559         fhMassAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3560         fhMassAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3561         outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
3562
3563         fhMassSplitEAfterCutsNLocMax1[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3564                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3565                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3566         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3567         fhMassSplitEAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3568         outputContainer->Add(fhMassSplitEAfterCutsNLocMax1[i][j]) ;
3569         
3570         fhMassSplitEAfterCutsNLocMax2[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3571                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3572                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3573         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3574         fhMassSplitEAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3575         outputContainer->Add(fhMassSplitEAfterCutsNLocMax2[i][j]) ;
3576         
3577         fhMassSplitEAfterCutsNLocMaxN[i][j]     = new TH2F(Form("hMassSplitEAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3578                                                      Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s %s, for NLM > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
3579                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
3580         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3581         fhMassSplitEAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3582         outputContainer->Add(fhMassSplitEAfterCutsNLocMaxN[i][j]) ;
3583
3584         
3585         fhSplitEFractionAfterCutsNLocMax1[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3586                                                                Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 1, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3587                                                                nptbins,ptmin,ptmax,120,0,1.2);
3588         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3589         fhSplitEFractionAfterCutsNLocMax1[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3590         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
3591         
3592         fhSplitEFractionAfterCutsNLocMax2[i][j]     = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3593                                                                Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  = 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3594                                                                nptbins,ptmin,ptmax,120,0,1.2);
3595         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3596         fhSplitEFractionAfterCutsNLocMax2[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3597         outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
3598         
3599         fhSplitEFractionAfterCutsNLocMaxN[i][j]    = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3600                                                               Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs #it{E}_{cluster} for N max  > 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
3601                                                               nptbins,ptmin,ptmax,120,0,1.2);
3602         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetXTitle("#it{E}_{cluster} (GeV)");
3603         fhSplitEFractionAfterCutsNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
3604         outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
3605       }
3606       
3607       fhMassM02NLocMax1[i][j]  = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3608                                           Form("Invariant mass of splitted cluster with #it{NLM}=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3609                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3610       fhMassM02NLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3611       fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
3612       outputContainer->Add(fhMassM02NLocMax1[i][j]) ;   
3613       
3614       fhMassM02NLocMax2[i][j]  = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3615                                           Form("Invariant mass of splitted cluster with #it{NLM}=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3616                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3617       fhMassM02NLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3618       fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
3619       outputContainer->Add(fhMassM02NLocMax2[i][j]) ;   
3620       
3621       fhMassM02NLocMaxN[i][j]  = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3622                                           Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3623                                           ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3624       fhMassM02NLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3625       fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
3626       outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;   
3627       
3628       if(fFillSSExtraHisto)
3629       {
3630         fhMassDispEtaNLocMax1[i][j]  = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3631                                                 Form("Invariant mass of splitted cluster with #it{NLM}=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3632                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3633         fhMassDispEtaNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3634         fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3635         outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;   
3636         
3637         fhMassDispEtaNLocMax2[i][j]  = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3638                                                 Form("Invariant mass of splitted cluster with #it{NLM}=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3639                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3640         fhMassDispEtaNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3641         fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3642         outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;   
3643         
3644         fhMassDispEtaNLocMaxN[i][j]  = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3645                                                 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3646                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3647         fhMassDispEtaNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3648         fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
3649         outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;   
3650         
3651         fhMassDispPhiNLocMax1[i][j]  = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3652                                                 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3653                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3654         fhMassDispPhiNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3655         fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3656         outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;   
3657         
3658         fhMassDispPhiNLocMax2[i][j]  = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3659                                                 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3660                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3661         fhMassDispPhiNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3662         fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3663         outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;   
3664         
3665         fhMassDispPhiNLocMaxN[i][j]  = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3666                                                 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
3667                                                 ssbins,ssmin,ssmax,mbins,mmin,mmax); 
3668         fhMassDispPhiNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3669         fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
3670         outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;   
3671         
3672         fhMassDispAsyNLocMax1[i][j]  = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3673                                                 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
3674                                                 200,-1,1,mbins,mmin,mmax); 
3675         fhMassDispAsyNLocMax1[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3676         fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3677         outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;   
3678         
3679         fhMassDispAsyNLocMax2[i][j]  = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3680                                                 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
3681                                                 200,-1,1,mbins,mmin,mmax); 
3682         fhMassDispAsyNLocMax2[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3683         fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3684         outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;   
3685         
3686         fhMassDispAsyNLocMaxN[i][j]  = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3687                                                 Form("Invariant mass of N>2 local maxima cells vsA = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s %s",ptype[i].Data(),sMatched[j].Data()),
3688                                                 200,-1,1,mbins,mmin,mmax); 
3689         fhMassDispAsyNLocMaxN[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3690         fhMassDispAsyNLocMaxN[i][j]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
3691         outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;   
3692       }
3693       
3694       
3695       if(i > 0 && fFillMCHisto) // skip first entry in array, general case not filled
3696       {
3697         fhMCGenFracNLocMax1[i][j]     = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3698                                                  Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3699                                                  nptbins,ptmin,ptmax,200,0,2); 
3700         fhMCGenFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3701         fhMCGenFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3702         outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ; 
3703         
3704         fhMCGenFracNLocMax2[i][j]     = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3705                                                  Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3706                                                  nptbins,ptmin,ptmax,200,0,2); 
3707         fhMCGenFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3708         fhMCGenFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3709         outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ; 
3710         
3711         fhMCGenFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3712                                                 Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3713                                                 nptbins,ptmin,ptmax,200,0,2); 
3714         fhMCGenFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3715         fhMCGenFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3716         outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ; 
3717         
3718         fhMCGenFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3719                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3720                                                           nptbins,ptmin,ptmax,200,0,2);
3721         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3722         fhMCGenFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3723         outputContainer->Add(fhMCGenFracNLocMax1NoOverlap[i][j]) ;
3724         
3725         fhMCGenFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3726                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3727                                                           nptbins,ptmin,ptmax,200,0,2);
3728         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3729         fhMCGenFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3730         outputContainer->Add(fhMCGenFracNLocMax2NoOverlap[i][j]) ;
3731         
3732         fhMCGenFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3733                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3734                                                          nptbins,ptmin,ptmax,200,0,2);
3735         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
3736         fhMCGenFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3737         outputContainer->Add(fhMCGenFracNLocMaxNNoOverlap[i][j]) ;
3738         
3739         
3740         fhMCGenSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3741                                                        Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3742                                                        nptbins,ptmin,ptmax,200,0,2); 
3743         fhMCGenSplitEFracNLocMax1[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3744         fhMCGenSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3745         outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ; 
3746         
3747         fhMCGenSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3748                                                        Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3749                                                        nptbins,ptmin,ptmax,200,0,2); 
3750         fhMCGenSplitEFracNLocMax2[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3751         fhMCGenSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3752         outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ; 
3753         
3754         fhMCGenSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3755                                                       Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3756                                                       nptbins,ptmin,ptmax,200,0,2); 
3757         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3758         fhMCGenSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3759         outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ; 
3760         
3761         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3762                                                                 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3763                                                                 nptbins,ptmin,ptmax,200,0,2);
3764         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3765         fhMCGenSplitEFracNLocMax1NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3766         outputContainer->Add(fhMCGenSplitEFracNLocMax1NoOverlap[i][j]) ;
3767         
3768         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]     = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3769                                                                 Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3770                                                                 nptbins,ptmin,ptmax,200,0,2);
3771         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3772         fhMCGenSplitEFracNLocMax2NoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3773         outputContainer->Add(fhMCGenSplitEFracNLocMax2NoOverlap[i][j]) ;
3774         
3775         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]    = new TH2F(Form("hMCGenSplitEFracNoOverlapNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3776                                                                Form("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3777                                                                nptbins,ptmin,ptmax,200,0,2);
3778         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
3779         fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]   ->SetXTitle("#it{E} (GeV)");
3780         outputContainer->Add(fhMCGenSplitEFracNLocMaxNNoOverlap[i][j]) ;
3781         
3782         fhMCGenEFracvsSplitEFracNLocMax1[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3783                                                               Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3784                                                               200,0,2,200,0,2); 
3785         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3786         fhMCGenEFracvsSplitEFracNLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3787         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ; 
3788         
3789         fhMCGenEFracvsSplitEFracNLocMax2[i][j]     = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3790                                                               Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3791                                                               200,0,2,200,0,2); 
3792         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3793         fhMCGenEFracvsSplitEFracNLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3794         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ; 
3795         
3796         
3797         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]    = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3798                                                              Form("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco} vs #it{E}_{gen} / #it{E}_{reco} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3799                                                              200,0,2,200,0,2); 
3800         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetYTitle("(#it{E}_{1 split}+#it{E}_{2 split})/#it{E}_{reco}");
3801         fhMCGenEFracvsSplitEFracNLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
3802         outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ; 
3803         
3804         
3805         fhMCGenEvsSplitENLocMax1[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3806                                                       Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
3807                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3808         fhMCGenEvsSplitENLocMax1[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3809         fhMCGenEvsSplitENLocMax1[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3810         outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ; 
3811         
3812         fhMCGenEvsSplitENLocMax2[i][j]     = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3813                                                       Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3814                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3815         fhMCGenEvsSplitENLocMax2[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3816         fhMCGenEvsSplitENLocMax2[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3817         outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ; 
3818         
3819         
3820         fhMCGenEvsSplitENLocMaxN[i][j]    = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3821                                                      Form("#it{E}_{1 split}+#it{E}_{2 split} vs #it{E}_{gen} for N max  > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
3822                                                      nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
3823         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetYTitle("#it{E}_{1 split}+#it{E}_{2 split} (GeV)");
3824         fhMCGenEvsSplitENLocMaxN[i][j]   ->SetXTitle("#it{E}_{gen} (GeV)");
3825         outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ; 
3826       }
3827           
3828       // Histograms after cluster identification
3829       
3830       
3831       // Pi0 //
3832       
3833       fhM02Pi0NLocMax1[i][j]     = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3834                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3835                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3836       fhM02Pi0NLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3837       fhM02Pi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3838       outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
3839       
3840       fhM02Pi0NLocMax2[i][j]     = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3841                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM = 2",ptype[i].Data()),
3842                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3843       fhM02Pi0NLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3844       fhM02Pi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3845       outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ; 
3846       
3847       fhM02Pi0NLocMaxN[i][j]     = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3848                                             Form("#lambda_{0}^{2} vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3849                                             nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); 
3850       fhM02Pi0NLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3851       fhM02Pi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3852       outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ; 
3853       
3854       fhMassPi0NLocMax1[i][j]     = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3855                                              Form("Mass vs #it{E}, %s, for NLM = 1",ptype[i].Data()),
3856                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3857       fhMassPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3858       fhMassPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3859       outputContainer->Add(fhMassPi0NLocMax1[i][j]) ; 
3860       
3861       fhMassPi0NLocMax2[i][j]     = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3862                                              Form("Mass vs #it{E} , %s, for NLM = 2",ptype[i].Data()),
3863                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3864       fhMassPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3865       fhMassPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3866       outputContainer->Add(fhMassPi0NLocMax2[i][j]) ; 
3867       
3868       fhMassPi0NLocMaxN[i][j]     = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3869                                              Form("Mass vs #it{E}, %s, for NLM > 2",ptype[i].Data()),
3870                                              nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3871       fhMassPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3872       fhMassPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3873       outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ; 
3874
3875       fhMassSplitEPi0NLocMax1[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3876                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM = 1",ptype[i].Data()),
3877                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3878       fhMassSplitEPi0NLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3879       fhMassSplitEPi0NLocMax1[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3880       outputContainer->Add(fhMassSplitEPi0NLocMax1[i][j]) ;
3881       
3882       fhMassSplitEPi0NLocMax2[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3883                                              Form("Mass vs #it{E}_{1}+#it{E}_{2} , %s, for NLM = 2",ptype[i].Data()),
3884                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3885       fhMassSplitEPi0NLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3886       fhMassSplitEPi0NLocMax2[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3887       outputContainer->Add(fhMassSplitEPi0NLocMax2[i][j]) ;
3888       
3889       fhMassSplitEPi0NLocMaxN[i][j]     = new TH2F(Form("hMassSplitEPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3890                                              Form("Mass vs #it{E}_{1}+#it{E}_{2}, %s, for NLM > 2",ptype[i].Data()),
3891                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
3892       fhMassSplitEPi0NLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3893       fhMassSplitEPi0NLocMaxN[i][j]   ->SetXTitle("#it{E}_{1}+#it{E}_{2} (GeV)");
3894       outputContainer->Add(fhMassSplitEPi0NLocMaxN[i][j]) ;
3895       
3896       fhAsyPi0NLocMax1[i][j]     = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3897                                             Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3898                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3899       fhAsyPi0NLocMax1[i][j]   ->SetYTitle("#it{A}");
3900       fhAsyPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3901       outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ; 
3902       
3903       fhAsyPi0NLocMax2[i][j]     = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3904                                             Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3905                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3906       fhAsyPi0NLocMax2[i][j]   ->SetYTitle("#it{A}");
3907       fhAsyPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3908       outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ; 
3909       
3910       fhAsyPi0NLocMaxN[i][j]     = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3911                                             Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
3912                                             nptbins,ptmin,ptmax,mbins,mmin,mmax); 
3913       fhAsyPi0NLocMaxN[i][j]   ->SetYTitle("#it{A}");
3914       fhAsyPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3915       outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ; 
3916       
3917       if(fFillNCellHisto)
3918       {
3919         fhNCellPi0NLocMax1[i][j]     = new TH2F(Form("hNCellPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3920                                                 Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
3921                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3922         fhNCellPi0NLocMax1[i][j]   ->SetYTitle("#it{N} cells");
3923         fhNCellPi0NLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3924         outputContainer->Add(fhNCellPi0NLocMax1[i][j]) ;
3925         
3926         fhNCellPi0NLocMax2[i][j]     = new TH2F(Form("hNCellPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3927                                                 Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
3928                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3929         fhNCellPi0NLocMax2[i][j]   ->SetYTitle("#it{N} cells");
3930         fhNCellPi0NLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3931         outputContainer->Add(fhNCellPi0NLocMax2[i][j]) ;
3932         
3933         fhNCellPi0NLocMaxN[i][j]     = new TH2F(Form("hNCellPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3934                                                 Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
3935                                                 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
3936         fhNCellPi0NLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
3937         fhNCellPi0NLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3938         outputContainer->Add(fhNCellPi0NLocMaxN[i][j]) ;
3939       }
3940       
3941       // Eta
3942     
3943       if(fFillIdEtaHisto)
3944       {
3945         fhM02EtaNLocMax1[i][j]     = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3946                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
3947                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3948         fhM02EtaNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3949         fhM02EtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3950         outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
3951         
3952         
3953         fhM02EtaNLocMax2[i][j]     = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3954                                               Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
3955                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3956         fhM02EtaNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3957         fhM02EtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3958         outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
3959         
3960         fhM02EtaNLocMaxN[i][j]     = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3961                                               Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
3962                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
3963         fhM02EtaNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
3964         fhM02EtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3965         outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
3966         
3967         fhMassEtaNLocMax1[i][j]     = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3968                                                Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
3969                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3970         fhMassEtaNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3971         fhMassEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3972         outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
3973         
3974         fhMassEtaNLocMax2[i][j]     = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3975                                                Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
3976                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3977         fhMassEtaNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3978         fhMassEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
3979         outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
3980         
3981         fhMassEtaNLocMaxN[i][j]     = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3982                                                Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
3983                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
3984         fhMassEtaNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
3985         fhMassEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
3986         outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
3987         
3988         fhAsyEtaNLocMax1[i][j]     = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3989                                               Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
3990                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3991         fhAsyEtaNLocMax1[i][j]   ->SetYTitle("#it{A}");
3992         fhAsyEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
3993         outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
3994         
3995         fhAsyEtaNLocMax2[i][j]     = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3996                                               Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
3997                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
3998         fhAsyEtaNLocMax2[i][j]   ->SetYTitle("#it{A}");
3999         fhAsyEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4000         outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
4001         
4002         fhAsyEtaNLocMaxN[i][j]     = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4003                                               Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4004                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4005         fhAsyEtaNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4006         fhAsyEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4007         outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
4008         
4009         if(fFillNCellHisto)
4010         {
4011           fhNCellEtaNLocMax1[i][j]     = new TH2F(Form("hNCellEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4012                                                   Form("n cells vs E, %s, for NLM = 1",ptype[i].Data()),
4013                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4014           fhNCellEtaNLocMax1[i][j]   ->SetYTitle("#it{N} cells");
4015           fhNCellEtaNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4016           outputContainer->Add(fhNCellEtaNLocMax1[i][j]) ;
4017           
4018           fhNCellEtaNLocMax2[i][j]     = new TH2F(Form("hNCellEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4019                                                   Form("n cells vs E, %s, for NLM = 2",ptype[i].Data()),
4020                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4021           fhNCellEtaNLocMax2[i][j]   ->SetYTitle("#it{N} cells");
4022           fhNCellEtaNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4023           outputContainer->Add(fhNCellEtaNLocMax2[i][j]) ;
4024           
4025           fhNCellEtaNLocMaxN[i][j]     = new TH2F(Form("hNCellEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4026                                                   Form("n cells vs E, %s, for NLM > 2",ptype[i].Data()),
4027                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
4028           fhNCellEtaNLocMaxN[i][j]   ->SetYTitle("#it{N} cells");
4029           fhNCellEtaNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4030           outputContainer->Add(fhNCellEtaNLocMaxN[i][j]) ;
4031           
4032         }
4033       }
4034       
4035       if(fFillIdConvHisto)
4036       {
4037         fhM02ConNLocMax1[i][j]    = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4038                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 1",ptype[i].Data()),
4039                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4040         fhM02ConNLocMax1[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4041         fhM02ConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4042         outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
4043         
4044         fhM02ConNLocMax2[i][j]    = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4045                                              Form("#lambda_{0}^{2} vs E, %s, for NLM = 2",ptype[i].Data()),
4046                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4047         fhM02ConNLocMax2[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4048         fhM02ConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4049         outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
4050         
4051         fhM02ConNLocMaxN[i][j]    = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4052                                              Form("#lambda_{0}^{2} vs E, %s, for NLM > 2",ptype[i].Data()),
4053                                              nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
4054         fhM02ConNLocMaxN[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4055         fhM02ConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4056         outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
4057         
4058         
4059         fhMassConNLocMax1[i][j]    = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4060                                               Form("Mass vs E, %s, for NLM = 1",ptype[i].Data()),
4061                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4062         fhMassConNLocMax1[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4063         fhMassConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4064         outputContainer->Add(fhMassConNLocMax1[i][j]) ;
4065         
4066         fhMassConNLocMax2[i][j]    = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4067                                               Form("Mass vs E, %s, for NLM = 2",ptype[i].Data()),
4068                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4069         fhMassConNLocMax2[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4070         fhMassConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4071         outputContainer->Add(fhMassConNLocMax2[i][j]) ;
4072         
4073         fhMassConNLocMaxN[i][j]    = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4074                                               Form("Mass vs E, %s, for NLM > 2",ptype[i].Data()),
4075                                               nptbins,ptmin,ptmax,mbins,mmin,mmax);
4076         fhMassConNLocMaxN[i][j]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4077         fhMassConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4078         outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
4079         
4080         fhAsyConNLocMax1[i][j]    = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4081                                              Form("Asymmetry vs E, %s, for NLM = 1",ptype[i].Data()),
4082                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4083         fhAsyConNLocMax1[i][j]   ->SetYTitle("#it{A}");
4084         fhAsyConNLocMax1[i][j]   ->SetXTitle("#it{E} (GeV)");
4085         outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
4086         
4087         fhAsyConNLocMax2[i][j]    = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4088                                              Form("Asymmetry vs E, %s, for NLM = 2",ptype[i].Data()),
4089                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4090         fhAsyConNLocMax2[i][j]   ->SetYTitle("#it{A}");
4091         fhAsyConNLocMax2[i][j]   ->SetXTitle("#it{E} (GeV)");
4092         outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
4093         
4094         fhAsyConNLocMaxN[i][j]    = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4095                                              Form("Asymmetry vs E, %s, for NLM > 2",ptype[i].Data()),
4096                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
4097         fhAsyConNLocMaxN[i][j]   ->SetYTitle("#it{A}");
4098         fhAsyConNLocMaxN[i][j]   ->SetXTitle("#it{E} (GeV)");
4099         outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
4100         
4101       }
4102       
4103     } // matched, not matched
4104     
4105     if(fFillEbinHisto)
4106     {
4107       for(Int_t j = 0; j < 4; j++)
4108       {
4109         
4110         fhMassSplitEFractionNLocMax1Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
4111                                                            Form("Invariant mass of 2 highest energy cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4112                                                            120,0,1.2,mbins,mmin,mmax);
4113         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4114         fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4115         outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
4116         
4117         fhMassSplitEFractionNLocMax2Ebin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
4118                                                            Form("Invariant mass of 2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4119                                                            120,0,1.2,mbins,mmin,mmax);
4120         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4121         fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4122         outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
4123         
4124         fhMassSplitEFractionNLocMaxNEbin[i][j]  = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
4125                                                            Form("Invariant mass of N>2 local maxima cells vs (#it{E}_{1}+#it{E}_{2})/Ecluster, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4126                                                            120,0,1.2,mbins,mmin,mmax);
4127         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4128         fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4129         outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
4130         
4131         if(i>0 && fFillMCHisto) // skip first entry in array, general case not filled
4132         {
4133           fhMCGenFracNLocMaxEbin[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
4134                                                    Form("NLM vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4135                                                    200,0,2,nMaxBins,0,nMaxBins);
4136           fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("#it{NLM}");
4137           fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4138           outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
4139           
4140           fhMCGenFracNLocMaxEbinMatched[i][j]  = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
4141                                                           Form("NLM vs E, %s, %s, matched to a track",ptype[i].Data(),sEBin[j].Data()),
4142                                                           200,0,2,nMaxBins,0,nMaxBins);
4143           fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("#it{NLM}");
4144           fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4145           outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
4146           
4147           fhMassMCGenFracNLocMax1Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4148                                                         Form("Invariant mass of 2 highest energy cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4149                                                         200,0,2,mbins,mmin,mmax);
4150           fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4151           fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4152           outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
4153           
4154           fhMassMCGenFracNLocMax2Ebin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4155                                                         Form("Invariant mass of 2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4156                                                         200,0,2,mbins,mmin,mmax);
4157           fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4158           fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4159           outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
4160           
4161           fhMassMCGenFracNLocMaxNEbin[i][j]  = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4162                                                         Form("Invariant mass of N>2 local maxima cells vs E, %s, %s",ptype[i].Data(),sEBin[j].Data()),
4163                                                         200,0,2,mbins,mmin,mmax);
4164           fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4165           fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4166           outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
4167           
4168           fhM02MCGenFracNLocMax1Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
4169                                                           Form("#lambda_{0}^{2} vs E for N max  = 1 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4170                                                           200,0,2,ssbins,ssmin,ssmax);
4171           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4172           fhM02MCGenFracNLocMax1Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4173           outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
4174           
4175           fhM02MCGenFracNLocMax2Ebin[i][j]     = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
4176                                                           Form("#lambda_{0}^{2} vs E for N max  = 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4177                                                           200,0,2,ssbins,ssmin,ssmax);
4178           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4179           fhM02MCGenFracNLocMax2Ebin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4180           outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
4181           
4182           fhM02MCGenFracNLocMaxNEbin[i][j]    = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
4183                                                          Form("#lambda_{0}^{2} vs E for N max  > 2 %s, %s",ptype[i].Data(),sEBin[j].Data()),
4184                                                          200,0,2,ssbins,ssmin,ssmax);
4185           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetYTitle("#lambda_{0}^{2}");
4186           fhM02MCGenFracNLocMaxNEbin[i][j]   ->SetXTitle("#it{E}_{gen} / #it{E}_{reco}");
4187           outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
4188         }
4189       }
4190     }
4191   } // MC particle list
4192   
4193   if(fFillHighMultHisto)
4194   {
4195     // E vs centrality
4196
4197     fhCentralityPi0NLocMax1  = new TH2F("hCentralityPi0NLocMax1",
4198                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4199                                         nptbins,ptmin,ptmax,100,0,100);
4200     fhCentralityPi0NLocMax1->SetYTitle("#it{Centrality}");
4201     fhCentralityPi0NLocMax1->SetXTitle("#it{E} (GeV)");
4202     outputContainer->Add(fhCentralityPi0NLocMax1) ;
4203     
4204     fhCentralityPi0NLocMax2  = new TH2F("hCentralityPi0NLocMax2",
4205                                         "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4206                                         nptbins,ptmin,ptmax,100,0,100);
4207     fhCentralityPi0NLocMax2->SetYTitle("#it{Centrality}");
4208     fhCentralityPi0NLocMax2->SetXTitle("#it{E} (GeV)");
4209     outputContainer->Add(fhCentralityPi0NLocMax2) ;
4210     
4211     fhCentralityPi0NLocMaxN  = new TH2F("hCentralityPi0NLocMaxN",
4212                                         "E vs Centrality, selected pi0 cluster with NLM>1",
4213                                         nptbins,ptmin,ptmax,100,0,100);
4214     fhCentralityPi0NLocMaxN->SetYTitle("#it{Centrality}");
4215     fhCentralityPi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4216     outputContainer->Add(fhCentralityPi0NLocMaxN) ;
4217     
4218     if(fFillIdEtaHisto)
4219     {
4220       fhCentralityEtaNLocMax1  = new TH2F("hCentralityEtaNLocMax1",
4221                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=1",
4222                                           nptbins,ptmin,ptmax,100,0,100);
4223       fhCentralityEtaNLocMax1->SetYTitle("#it{Centrality}");
4224       fhCentralityEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4225       outputContainer->Add(fhCentralityEtaNLocMax1) ;
4226       
4227       fhCentralityEtaNLocMax2  = new TH2F("hCentralityEtaNLocMax2",
4228                                           "E vs Centrality, selected pi0 cluster with #it{NLM}=2",
4229                                           nptbins,ptmin,ptmax,100,0,100);
4230       fhCentralityEtaNLocMax2->SetYTitle("#it{Centrality}");
4231       fhCentralityEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4232       outputContainer->Add(fhCentralityEtaNLocMax2) ;
4233       
4234       fhCentralityEtaNLocMaxN  = new TH2F("hCentralityEtaNLocMaxN",
4235                                           "E vs Centrality, selected pi0 cluster with NLM>1",
4236                                           nptbins,ptmin,ptmax,100,0,100);
4237       fhCentralityEtaNLocMaxN->SetYTitle("#it{Centrality}");
4238       fhCentralityEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4239       outputContainer->Add(fhCentralityEtaNLocMaxN) ;
4240     }
4241     
4242     // E vs Event plane angle
4243     
4244     fhEventPlanePi0NLocMax1  = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4245                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4246     fhEventPlanePi0NLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4247     fhEventPlanePi0NLocMax1->SetXTitle("#it{E} (GeV)");
4248     outputContainer->Add(fhEventPlanePi0NLocMax1) ;
4249     
4250     fhEventPlanePi0NLocMax2  = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4251                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4252     fhEventPlanePi0NLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4253     fhEventPlanePi0NLocMax2->SetXTitle("#it{E} (GeV)");
4254     outputContainer->Add(fhEventPlanePi0NLocMax2) ;
4255     
4256     fhEventPlanePi0NLocMaxN  = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4257                                         nptbins,ptmin,ptmax,100,0,TMath::Pi());
4258     fhEventPlanePi0NLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4259     fhEventPlanePi0NLocMaxN->SetXTitle("#it{E} (GeV)");
4260     outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
4261     
4262     if(fFillIdEtaHisto)
4263     {
4264       fhEventPlaneEtaNLocMax1  = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=1",
4265                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4266       fhEventPlaneEtaNLocMax1->SetYTitle("#it{Event Plane Angle} (rad)");
4267       fhEventPlaneEtaNLocMax1->SetXTitle("#it{E} (GeV)");
4268       outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
4269       
4270       fhEventPlaneEtaNLocMax2  = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with #it{NLM}=2",
4271                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4272       fhEventPlaneEtaNLocMax2->SetYTitle("#it{Event Plane Angle} (rad)");
4273       fhEventPlaneEtaNLocMax2->SetXTitle("#it{E} (GeV)");
4274       outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
4275       
4276       fhEventPlaneEtaNLocMaxN  = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
4277                                           nptbins,ptmin,ptmax,100,0,TMath::Pi());
4278       fhEventPlaneEtaNLocMaxN->SetYTitle("#it{Event Plane Angle} (rad)");
4279       fhEventPlaneEtaNLocMaxN->SetXTitle("#it{E} (GeV)");
4280       outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
4281     }
4282   }
4283   
4284   if(fFillEbinHisto)
4285   {
4286     for(Int_t i = 0; i < 4; i++)
4287     {
4288       fhMassM02NLocMax1Ebin[i]  = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
4289                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4290                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4291       fhMassM02NLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4292       fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4293       outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;   
4294       
4295       fhMassM02NLocMax2Ebin[i]  = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
4296                                            Form("Invariant mass of split clusters vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4297                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4298       fhMassM02NLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4299       fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4300       outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;   
4301       
4302       fhMassM02NLocMaxNEbin[i]  = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
4303                                            Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4304                                            ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4305       fhMassM02NLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4306       fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
4307       outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ; 
4308       
4309       
4310       fhMassAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
4311                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=1, %s",sEBin[i].Data()),
4312                                            200,-1,1,mbins,mmin,mmax);
4313       fhMassAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4314       fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
4315       outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
4316       
4317       fhMassAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
4318                                            Form("Invariant mass of split clusters vs split asymmetry, #it{NLM}=2, %s",sEBin[i].Data()),
4319                                            200,-1,1,mbins,mmin,mmax);
4320       fhMassAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4321       fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
4322       outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
4323       
4324       fhMassAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
4325                                            Form("Invariant mass of split clusters vs split asymmetry, NLM>2, %s",sEBin[i].Data()),
4326                                            200,-1,1,mbins,mmin,mmax);
4327       fhMassAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4328       fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
4329       outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
4330       
4331       
4332       if(IsDataMC() && fFillMCHisto)
4333       {
4334         fhMCAsymM02NLocMax1MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
4335                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=1, %s",sEBin[i].Data()),
4336                                                     ssbins,ssmin,ssmax,100,0,1);
4337         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4338         fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4339         outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
4340         
4341         fhMCAsymM02NLocMax2MCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
4342                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, #it{NLM}=2, %s",sEBin[i].Data()),
4343                                                     ssbins,ssmin,ssmax,100,0,1);
4344         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4345         fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4346         outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
4347         
4348         fhMCAsymM02NLocMaxNMCPi0Ebin[i]  = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
4349                                                     Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, %s",sEBin[i].Data()),
4350                                                     ssbins,ssmin,ssmax,100,0,1);
4351         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
4352         fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
4353         outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;    
4354         
4355         
4356         fhAsyMCGenRecoNLocMax1EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
4357                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=1, %s",sEBin[i].Data()),
4358                                                      200,-1,1,200,-1,1);
4359         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4360         fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("#it{A}");
4361         outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
4362         
4363         fhAsyMCGenRecoNLocMax2EbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
4364                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, #it{NLM}=2, %s",sEBin[i].Data()),
4365                                                      200,-1,1,200,-1,1);
4366         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4367         fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("#it{A}");
4368         outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
4369         
4370         fhAsyMCGenRecoNLocMaxNEbinPi0[i]  = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
4371                                                      Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, %s",sEBin[i].Data()),
4372                                                      200,-1,1,200,-1,1);
4373         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4374         fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("#it{A}");
4375         outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
4376       }
4377       
4378       if(fFillSSExtraHisto)
4379       {
4380         fhMassDispEtaNLocMax1Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
4381                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4382                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4383         fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4384         fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4385         outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;   
4386         
4387         fhMassDispEtaNLocMax2Ebin[i]  = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
4388                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4389                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4390         fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4391         fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4392         outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;   
4393         
4394         fhMassDispEtaNLocMaxNEbin[i]  = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
4395                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s",sEBin[i].Data()),
4396                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4397         fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4398         fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
4399         outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;   
4400         
4401         fhMassDispPhiNLocMax1Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
4402                                                  Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4403                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4404         fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4405         fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4406         outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;   
4407         
4408         fhMassDispPhiNLocMax2Ebin[i]  = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
4409                                                  Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4410                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4411         fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4412         fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4413         outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;   
4414         
4415         fhMassDispPhiNLocMaxNEbin[i]  = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
4416                                                  Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s",sEBin[i].Data()),
4417                                                  ssbins,ssmin,ssmax,mbins,mmin,mmax); 
4418         fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4419         fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
4420         outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;   
4421         
4422         fhMassDispAsyNLocMax1Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
4423                                                  Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4424                                                  200,-1,1,mbins,mmin,mmax); 
4425         fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4426         fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4427         outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;   
4428         
4429         fhMassDispAsyNLocMax2Ebin[i]  = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
4430                                                  Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4431                                                  200,-1,1,mbins,mmin,mmax); 
4432         fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4433         fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4434         outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;   
4435         
4436         fhMassDispAsyNLocMaxNEbin[i]  = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
4437                                                  Form("Invariant mass of N>2 local maxima cells vs A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), %s",sEBin[i].Data()),
4438                                                  200,-1,1,mbins,mmin,mmax); 
4439         fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
4440         fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("#it{A} = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
4441         outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;   
4442       }
4443     }
4444   }
4445   
4446   if(IsDataMC() && fFillMCHisto && (asyOn || m02On))
4447   {
4448     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
4449                                                            "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 1 MC Pi0, after M02 and Asym cut",
4450                                                            nptbins,ptmin,ptmax,200,0,2);
4451     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4452     fhMCGenSplitEFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4453     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
4454     
4455     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
4456                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  = 2 MC Pi0, after M02 and Asym cut",
4457                                                           nptbins,ptmin,ptmax,200,0,2);
4458     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4459     fhMCGenSplitEFracAfterCutsNLocMax2MCPi0  ->SetXTitle("#it{E} (GeV)");
4460     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
4461     
4462     
4463     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0    = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
4464                                                           "#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split}) vs E for N max  > 2 MC Pi0, after M02 and Asym cut",
4465                                                           nptbins,ptmin,ptmax,200,0,2);
4466     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetYTitle("#it{E}_{gen} / (#it{E}_{1 split}+#it{E}_{2 split})");
4467     fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0  ->SetXTitle("#it{E} (GeV)");
4468     outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
4469     
4470     fhMCGenFracAfterCutsNLocMax1MCPi0     = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
4471                                                      "#it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 1 MC Pi0, after M02 and Asym cut",
4472                                                      nptbins,ptmin,ptmax,200,0,2);
4473     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4474     fhMCGenFracAfterCutsNLocMax1MCPi0   ->SetXTitle("#it{E} (GeV)");
4475     outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
4476     
4477     fhMCGenFracAfterCutsNLocMax2MCPi0    = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
4478                                                     " #it{E}_{gen} / #it{E}_{reco} vs #it{E}_{reco} for N max  = 2 MC Pi0, after M02 and Asym cut",
4479                                                     nptbins,ptmin,ptmax,200,0,2);
4480     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4481     fhMCGenFracAfterCutsNLocMax2MCPi0   ->SetXTitle("#it{E} (GeV)");
4482     outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
4483     
4484     
4485     fhMCGenFracAfterCutsNLocMaxNMCPi0   = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
4486                                                    " #it{E}_{gen} / #it{E}_{reco}  vs #it{E}_{reco} for N max  > 2 MC Pi0, after M02 and Asym cut",
4487                                                    nptbins,ptmin,ptmax,200,0,2);
4488     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetYTitle("#it{E}_{gen} / #it{E}_{reco}");
4489     fhMCGenFracAfterCutsNLocMaxNMCPi0   ->SetXTitle("#it{E} (GeV)");
4490     outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
4491     
4492   }
4493   
4494   if(fFillTMResidualHisto && fFillTMHisto)
4495   {
4496     for(Int_t i = 0; i < n; i++)
4497     {  
4498       
4499       fhTrackMatchedDEtaNLocMax1[i]  = new TH2F
4500       (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
4501        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4502        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4503       fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
4504       fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4505       
4506       fhTrackMatchedDPhiNLocMax1[i]  = new TH2F
4507       (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
4508        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4509        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4510       fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
4511       fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4512       
4513       outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ; 
4514       outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
4515       
4516       fhTrackMatchedDEtaNLocMax2[i]  = new TH2F
4517       (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
4518        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4519        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4520       fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
4521       fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4522       
4523       fhTrackMatchedDPhiNLocMax2[i]  = new TH2F
4524       (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
4525        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4526        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4527       fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
4528       fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4529       
4530       outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ; 
4531       outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
4532       
4533       fhTrackMatchedDEtaNLocMaxN[i]  = new TH2F
4534       (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
4535        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4536        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); 
4537       fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
4538       fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4539       
4540       fhTrackMatchedDPhiNLocMaxN[i]  = new TH2F
4541       (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
4542        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4543        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); 
4544       fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
4545       fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4546       
4547       outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ; 
4548       outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
4549       
4550       fhTrackMatchedDEtaNLocMax1Pos[i]  = new TH2F
4551       (Form("hTrackMatchedDEtaNLocMax1Pos%s",pname[i].Data()),
4552        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4553        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4554       fhTrackMatchedDEtaNLocMax1Pos[i]->SetYTitle("d#eta");
4555       fhTrackMatchedDEtaNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4556       
4557       fhTrackMatchedDPhiNLocMax1Pos[i]  = new TH2F
4558       (Form("hTrackMatchedDPhiNLocMax1Pos%s",pname[i].Data()),
4559        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4560        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4561       fhTrackMatchedDPhiNLocMax1Pos[i]->SetYTitle("d#phi (rad)");
4562       fhTrackMatchedDPhiNLocMax1Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4563       
4564       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Pos[i]) ;
4565       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Pos[i]) ;
4566       
4567       fhTrackMatchedDEtaNLocMax2Pos[i]  = new TH2F
4568       (Form("hTrackMatchedDEtaNLocMax2Pos%s",pname[i].Data()),
4569        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4570        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4571       fhTrackMatchedDEtaNLocMax2Pos[i]->SetYTitle("d#eta");
4572       fhTrackMatchedDEtaNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4573       
4574       fhTrackMatchedDPhiNLocMax2Pos[i]  = new TH2F
4575       (Form("hTrackMatchedDPhiNLocMax2Pos%s",pname[i].Data()),
4576        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4577        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4578       fhTrackMatchedDPhiNLocMax2Pos[i]->SetYTitle("d#phi (rad)");
4579       fhTrackMatchedDPhiNLocMax2Pos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4580       
4581       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Pos[i]) ;
4582       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Pos[i]) ;
4583       
4584       fhTrackMatchedDEtaNLocMaxNPos[i]  = new TH2F
4585       (Form("hTrackMatchedDEtaNLocMaxNPos%s",pname[i].Data()),
4586        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4587        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4588       fhTrackMatchedDEtaNLocMaxNPos[i]->SetYTitle("d#eta");
4589       fhTrackMatchedDEtaNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4590       
4591       fhTrackMatchedDPhiNLocMaxNPos[i]  = new TH2F
4592       (Form("hTrackMatchedDPhiNLocMaxNPos%s",pname[i].Data()),
4593        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4594        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4595       fhTrackMatchedDPhiNLocMaxNPos[i]->SetYTitle("d#phi (rad)");
4596       fhTrackMatchedDPhiNLocMaxNPos[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4597       
4598       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNPos[i]) ;
4599       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNPos[i]) ;
4600       
4601       fhTrackMatchedDEtaNLocMax1Neg[i]  = new TH2F
4602       (Form("hTrackMatchedDEtaNLocMax1Neg%s",pname[i].Data()),
4603        Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4604        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4605       fhTrackMatchedDEtaNLocMax1Neg[i]->SetYTitle("d#eta");
4606       fhTrackMatchedDEtaNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4607       
4608       fhTrackMatchedDPhiNLocMax1Neg[i]  = new TH2F
4609       (Form("hTrackMatchedDPhiNLocMax1Neg%s",pname[i].Data()),
4610        Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
4611        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4612       fhTrackMatchedDPhiNLocMax1Neg[i]->SetYTitle("d#phi (rad)");
4613       fhTrackMatchedDPhiNLocMax1Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4614       
4615       outputContainer->Add(fhTrackMatchedDEtaNLocMax1Neg[i]) ;
4616       outputContainer->Add(fhTrackMatchedDPhiNLocMax1Neg[i]) ;
4617       
4618       fhTrackMatchedDEtaNLocMax2Neg[i]  = new TH2F
4619       (Form("hTrackMatchedDEtaNLocMax2Neg%s",pname[i].Data()),
4620        Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4621        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4622       fhTrackMatchedDEtaNLocMax2Neg[i]->SetYTitle("d#eta");
4623       fhTrackMatchedDEtaNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4624       
4625       fhTrackMatchedDPhiNLocMax2Neg[i]  = new TH2F
4626       (Form("hTrackMatchedDPhiNLocMax2Neg%s",pname[i].Data()),
4627        Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
4628        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4629       fhTrackMatchedDPhiNLocMax2Neg[i]->SetYTitle("d#phi (rad)");
4630       fhTrackMatchedDPhiNLocMax2Neg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4631       
4632       outputContainer->Add(fhTrackMatchedDEtaNLocMax2Neg[i]) ;
4633       outputContainer->Add(fhTrackMatchedDPhiNLocMax2Neg[i]) ;
4634       
4635       fhTrackMatchedDEtaNLocMaxNNeg[i]  = new TH2F
4636       (Form("hTrackMatchedDEtaNLocMaxNNeg%s",pname[i].Data()),
4637        Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4638        nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
4639       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetYTitle("d#eta");
4640       fhTrackMatchedDEtaNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4641       
4642       fhTrackMatchedDPhiNLocMaxNNeg[i]  = new TH2F
4643       (Form("hTrackMatchedDPhiNLocMaxNNeg%s",pname[i].Data()),
4644        Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
4645        nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
4646       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetYTitle("d#phi (rad)");
4647       fhTrackMatchedDPhiNLocMaxNNeg[i]->SetXTitle("#it{E}_{cluster} (GeV)");
4648       
4649       outputContainer->Add(fhTrackMatchedDEtaNLocMaxNNeg[i]) ;
4650       outputContainer->Add(fhTrackMatchedDPhiNLocMaxNNeg[i]) ;
4651       
4652     }
4653   }
4654   
4655   if(fFillAngleHisto)
4656   {
4657     for(Int_t i = 0; i < n; i++)
4658     {
4659       for(Int_t j = 0; j < nMatched; j++)
4660       {
4661         
4662         fhAnglePairNLocMax1[i][j]  = new TH2F(Form("hAnglePairNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4663                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4664                                            nptbins,ptmin,ptmax,200,0,0.2);
4665         fhAnglePairNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4666         fhAnglePairNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4667         outputContainer->Add(fhAnglePairNLocMax1[i][j]) ;
4668         
4669         fhAnglePairNLocMax2[i][j]  = new TH2F(Form("hAnglePairNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4670                                            Form("Opening angle split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4671                                            nptbins,ptmin,ptmax,200,0,0.2);
4672         fhAnglePairNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4673         fhAnglePairNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4674         outputContainer->Add(fhAnglePairNLocMax2[i][j]) ;
4675         
4676         fhAnglePairNLocMaxN[i][j]  = new TH2F(Form("hAnglePairNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4677                                            Form("Opening angle split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4678                                            nptbins,ptmin,ptmax,200,0,0.2);
4679         fhAnglePairNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4680         fhAnglePairNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4681         outputContainer->Add(fhAnglePairNLocMaxN[i][j]) ;
4682         
4683         if(asyOn || m02On)
4684         {
4685           fhAnglePairAfterCutsNLocMax1[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4686                                                 Form("Opening angle split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4687                                                 nptbins,ptmin,ptmax,200,0,0.2);
4688           fhAnglePairAfterCutsNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4689           fhAnglePairAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4690           outputContainer->Add(fhAnglePairAfterCutsNLocMax1[i][j]) ;
4691           
4692           fhAnglePairAfterCutsNLocMax2[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4693                                                 Form("Opening angle split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4694                                                 nptbins,ptmin,ptmax,200,0,0.2);
4695           fhAnglePairAfterCutsNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4696           fhAnglePairAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4697           outputContainer->Add(fhAnglePairAfterCutsNLocMax2[i][j]) ;
4698           
4699           fhAnglePairAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hAnglePairAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4700                                                 Form("Opening angle split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4701                                                 nptbins,ptmin,ptmax,200,0,0.2);
4702           fhAnglePairAfterCutsNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4703           fhAnglePairAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4704           outputContainer->Add(fhAnglePairAfterCutsNLocMaxN[i][j]) ;
4705
4706         }
4707         
4708         fhAnglePairPi0NLocMax1[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4709                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4710                                               nptbins,ptmin,ptmax,200,0,0.2);
4711         fhAnglePairPi0NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4712         fhAnglePairPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4713         outputContainer->Add(fhAnglePairPi0NLocMax1[i][j]) ;
4714         
4715         fhAnglePairPi0NLocMax2[i][j]  = new TH2F(Form("hAnglePairPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4716                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4717                                               nptbins,ptmin,ptmax,200,0,0.2);
4718         fhAnglePairPi0NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4719         fhAnglePairPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4720         outputContainer->Add(fhAnglePairPi0NLocMax2[i][j]) ;
4721         
4722         fhAnglePairPi0NLocMaxN[i][j]  = new TH2F(Form("hAnglePairPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4723                                               Form("Opening angle split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4724                                               nptbins,ptmin,ptmax,200,0,0.2);
4725         fhAnglePairPi0NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4726         fhAnglePairPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4727         outputContainer->Add(fhAnglePairPi0NLocMaxN[i][j]) ;
4728         
4729         fhAnglePairMassNLocMax1[i][j]  = new TH2F(Form("hAnglePairMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4730                                                Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4731                                                mbins,mmin,mmax,200,0,0.2);
4732         fhAnglePairMassNLocMax1[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4733         fhAnglePairMassNLocMax1[i][j]->SetYTitle("#alpha (rad)");
4734         outputContainer->Add(fhAnglePairMassNLocMax1[i][j]) ;
4735         
4736         
4737         fhAnglePairMassNLocMax2[i][j]  = new TH2F(Form("hAnglePairMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4738                                                Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4739                                                mbins,mmin,mmax,200,0,0.2);
4740         fhAnglePairMassNLocMax2[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4741         fhAnglePairMassNLocMax2[i][j]->SetYTitle("#alpha (rad)");
4742         outputContainer->Add(fhAnglePairMassNLocMax2[i][j]) ;
4743         
4744         fhAnglePairMassNLocMaxN[i][j]  = new TH2F(Form("hAnglePairMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4745                                                Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4746                                                mbins,mmin,mmax,200,0,0.2);
4747         fhAnglePairMassNLocMaxN[i][j]->SetXTitle("#it{M} (GeV/#it{c}^{2})");
4748         fhAnglePairMassNLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4749         outputContainer->Add(fhAnglePairMassNLocMaxN[i][j]) ;  
4750
4751         
4752         fhAnglePairM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4753                                                   Form("Opening angle split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs Mass for E > 15 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4754                                                   ssbins,ssmin,ssmax,200,0,0.2);
4755         fhAnglePairM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
4756         fhAnglePairM02NLocMax1[i][j]->SetYTitle("#alpha (rad)");
4757         outputContainer->Add(fhAnglePairM02NLocMax1[i][j]) ;
4758         
4759         
4760         fhAnglePairM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4761                                                   Form("Opening angle split sub-clusters of cluster #it{NLM}=2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4762                                                   ssbins,ssmin,ssmax,200,0,0.2);
4763         fhAnglePairM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
4764         fhAnglePairM02NLocMax2[i][j]->SetYTitle("#alpha (rad)");
4765         outputContainer->Add(fhAnglePairM02NLocMax2[i][j]) ;
4766         
4767         fhAnglePairM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4768                                                   Form("Opening angle split sub-clusters of cluster NLM>2 vs Mass for E > 12 GeV, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4769                                                   ssbins,ssmin,ssmax,200,0,0.2);
4770         fhAnglePairM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
4771         fhAnglePairM02NLocMaxN[i][j]->SetYTitle("#alpha (rad)");
4772         outputContainer->Add(fhAnglePairM02NLocMaxN[i][j]) ;
4773
4774         fhAnglePairOverM02NLocMax1[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4775                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4776                                               nptbins,ptmin,ptmax,200,0,0.2);
4777         fhAnglePairOverM02NLocMax1[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4778         fhAnglePairOverM02NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4779         outputContainer->Add(fhAnglePairOverM02NLocMax1[i][j]) ;
4780         
4781         fhAnglePairOverM02NLocMax2[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4782                                               Form("Opening angle split sub-clusters  / M02 of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4783                                               nptbins,ptmin,ptmax,200,0,0.2);
4784         fhAnglePairOverM02NLocMax2[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4785         fhAnglePairOverM02NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4786         outputContainer->Add(fhAnglePairOverM02NLocMax2[i][j]) ;
4787         
4788         fhAnglePairOverM02NLocMaxN[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4789                                               Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4790                                               nptbins,ptmin,ptmax,200,0,0.2);
4791         fhAnglePairOverM02NLocMaxN[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4792         fhAnglePairOverM02NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4793         outputContainer->Add(fhAnglePairOverM02NLocMaxN[i][j]) ;
4794
4795         
4796         fhAnglePairOverM02NLocMax1Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax1Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4797                                                      Form("Opening angle split sub-clusters  / M02  of cluster #it{NLM}=1 vs pair Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4798                                                      nptbins,ptmin,ptmax,200,0,0.2);
4799         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4800         fhAnglePairOverM02NLocMax1Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4801         outputContainer->Add(fhAnglePairOverM02NLocMax1Overlap0[i][j]) ;
4802         
4803         fhAnglePairOverM02NLocMax2Overlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMax2Overlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4804                                                      Form("Opening angle split sub-clusters / M02 of cluster #it{NLM}=2 cells vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4805                                                      nptbins,ptmin,ptmax,200,0,0.2);
4806         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4807         fhAnglePairOverM02NLocMax2Overlap0[i][j]->SetXTitle("#it{E} (GeV)");
4808         outputContainer->Add(fhAnglePairOverM02NLocMax2Overlap0[i][j]) ;
4809         
4810         fhAnglePairOverM02NLocMaxNOverlap0[i][j]  = new TH2F(Form("hAnglePairOverM02NLocMaxNOverlap0%s%s",pname[i].Data(),sMatched[j].Data()),
4811                                                      Form("Opening angle split sub-clusters  / M02  of cluster NLM>2 vs Energy, no overlap, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4812                                                      nptbins,ptmin,ptmax,200,0,0.2);
4813         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetYTitle("#alpha / #lambda_{0}^{2}");
4814         fhAnglePairOverM02NLocMaxNOverlap0[i][j]->SetXTitle("#it{E} (GeV)");
4815         outputContainer->Add(fhAnglePairOverM02NLocMaxNOverlap0[i][j]) ;
4816
4817         
4818       }
4819     }
4820     
4821     if(IsDataMC())
4822     {
4823       fhAnglePairPrimPi0RecoNLocMax1  = new TH2F("fhAnglePairPrimPi0RecoNLocMax1",
4824                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=1",
4825                                                  nptbins,ptmin,ptmax,300,0,3);
4826       fhAnglePairPrimPi0RecoNLocMax1->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4827       fhAnglePairPrimPi0RecoNLocMax1->SetXTitle("#it{E} (GeV)");
4828       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax1) ;
4829
4830       fhAnglePairPrimPi0RecoNLocMax2  = new TH2F("fhAnglePairPrimPi0RecoNLocMax2",
4831                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, #it{NLM}=2",
4832                                                  nptbins,ptmin,ptmax,300,0,3);
4833       fhAnglePairPrimPi0RecoNLocMax2->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4834       fhAnglePairPrimPi0RecoNLocMax2->SetXTitle("#it{E} (GeV)");
4835       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMax2) ;
4836
4837       fhAnglePairPrimPi0RecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0RecoNLocMaxN",
4838                                                  "Opening angle split neutral sub-clusters reconstructed / generated #pi^{0} vs pair Energy, NLM>2",
4839                                                  nptbins,ptmin,ptmax,300,0,3);
4840       fhAnglePairPrimPi0RecoNLocMaxN->SetYTitle("#alpha_{reco} / #alpha_{gen}");
4841       fhAnglePairPrimPi0RecoNLocMaxN->SetXTitle("#it{E} (GeV)");
4842       outputContainer->Add(fhAnglePairPrimPi0RecoNLocMaxN) ;
4843
4844       
4845       fhAnglePairPrimPi0vsRecoNLocMax1  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax1",
4846                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 15 GeV, #it{NLM}=1",
4847                                                    200,0,0.2,200,0,0.2);
4848       fhAnglePairPrimPi0vsRecoNLocMax1->SetYTitle("#alpha_{reco} (rad)");
4849       fhAnglePairPrimPi0vsRecoNLocMax1->SetXTitle("#alpha_{gen} (rad)");
4850       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax1) ;
4851
4852       fhAnglePairPrimPi0vsRecoNLocMax2  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMax2",
4853                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4854                                                    200,0,0.2,200,0,0.2);
4855       fhAnglePairPrimPi0vsRecoNLocMax2->SetYTitle("#alpha_{reco} (rad)");
4856       fhAnglePairPrimPi0vsRecoNLocMax2->SetXTitle("#alpha_{gen} (rad)");
4857       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMax2) ;
4858
4859       fhAnglePairPrimPi0vsRecoNLocMaxN  = new TH2F("fhAnglePairPrimPi0vsRecoNLocMaxN",
4860                                                    "Opening angle split neutral sub-clusters reconstructed vs generated #pi^{0} for E > 10 GeV, #it{NLM}=2",
4861                                                    200,0,0.2,200,0,0.2);
4862       fhAnglePairPrimPi0vsRecoNLocMaxN->SetYTitle("#alpha_{reco} (rad)");
4863       fhAnglePairPrimPi0vsRecoNLocMaxN->SetXTitle("#alpha_{gen} (rad)");
4864       outputContainer->Add(fhAnglePairPrimPi0vsRecoNLocMaxN) ;
4865       
4866       
4867       fhAnglePairPrimPi0OverM02NLocMax1  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax1",
4868                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=1",
4869                                                  nptbins,ptmin,ptmax,200,0,0.2);
4870       fhAnglePairPrimPi0OverM02NLocMax1->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4871       fhAnglePairPrimPi0OverM02NLocMax1->SetXTitle("#it{E} (GeV)");
4872       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax1) ;
4873       
4874       fhAnglePairPrimPi0OverM02NLocMax2  = new TH2F("fhAnglePairPrimPi0OverM02NLocMax2",
4875                                                  "Primary Opening angle split neutral sub-clusters reconstructed / Over vs cluster Energy, #it{NLM}=2",
4876                                                  nptbins,ptmin,ptmax,200,0,0.2);
4877       fhAnglePairPrimPi0OverM02NLocMax2->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4878       fhAnglePairPrimPi0OverM02NLocMax2->SetXTitle("#it{E} (GeV)");
4879       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMax2) ;
4880       
4881       fhAnglePairPrimPi0OverM02NLocMaxN  = new TH2F("fhAnglePairPrimPi0OverM02NLocMaxN",
4882                                                  "Primary Opening angle split neutral sub-clusters reconstructed / M02 vs cluster Energy, NLM>2",
4883                                                  nptbins,ptmin,ptmax,200,0,0.2);
4884       fhAnglePairPrimPi0OverM02NLocMaxN->SetYTitle("#alpha_{gen} / #lambda_{0}^{2}");
4885       fhAnglePairPrimPi0OverM02NLocMaxN->SetXTitle("#it{E} (GeV)");
4886       outputContainer->Add(fhAnglePairPrimPi0OverM02NLocMaxN) ;
4887
4888     }
4889   }
4890  
4891   // Same as asymmetry ...
4892   if(fFillThetaStarHisto)
4893   {
4894     for(Int_t i = 0; i < n; i++)
4895     {
4896       for(Int_t j = 0; j < nMatched; j++)
4897       {
4898         
4899         fhCosThStarNLocMax1[i][j]  = new TH2F(Form("hCosThStarNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4900                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4901                                               nptbins,ptmin,ptmax,200,-1,1);
4902         fhCosThStarNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4903         fhCosThStarNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4904         outputContainer->Add(fhCosThStarNLocMax1[i][j]) ;
4905         
4906         fhCosThStarNLocMax2[i][j]  = new TH2F(Form("hCosThStarNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4907                                               Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4908                                               nptbins,ptmin,ptmax,200,-1,1);
4909         fhCosThStarNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4910         fhCosThStarNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4911         outputContainer->Add(fhCosThStarNLocMax2[i][j]) ;
4912         
4913         fhCosThStarNLocMaxN[i][j]  = new TH2F(Form("hCosThStarNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4914                                               Form("cos(#theta^{*}) split sub-clusters of cluster NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4915                                               nptbins,ptmin,ptmax,200,-1,1);
4916         fhCosThStarNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4917         fhCosThStarNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4918         outputContainer->Add(fhCosThStarNLocMaxN[i][j]) ;
4919         
4920         if(asyOn || m02On)
4921         {
4922           fhCosThStarAfterCutsNLocMax1[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4923                                                          Form("cos(#theta^{*}) split sub-clusters of cluster #it{NLM}=1, after cuts, vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4924                                                          nptbins,ptmin,ptmax,200,-1,1);
4925           fhCosThStarAfterCutsNLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4926           fhCosThStarAfterCutsNLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4927           outputContainer->Add(fhCosThStarAfterCutsNLocMax1[i][j]) ;
4928           
4929           fhCosThStarAfterCutsNLocMax2[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4930                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4931                                                          nptbins,ptmin,ptmax,200,-1,1);
4932           fhCosThStarAfterCutsNLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4933           fhCosThStarAfterCutsNLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4934           outputContainer->Add(fhCosThStarAfterCutsNLocMax2[i][j]) ;
4935           
4936           fhCosThStarAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hCosThStarAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4937                                                          Form("cos(#theta^{*}) split sub-clusters of cluster, after cuts, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4938                                                          nptbins,ptmin,ptmax,200,-1,1);
4939           fhCosThStarAfterCutsNLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4940           fhCosThStarAfterCutsNLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4941           outputContainer->Add(fhCosThStarAfterCutsNLocMaxN[i][j]) ;
4942           
4943         }
4944         
4945         fhCosThStarPi0NLocMax1[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
4946                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=1 vs pair Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4947                                                  nptbins,ptmin,ptmax,200,-1,1);
4948         fhCosThStarPi0NLocMax1[i][j]->SetYTitle("cos(#theta^{*})");
4949         fhCosThStarPi0NLocMax1[i][j]->SetXTitle("#it{E} (GeV)");
4950         outputContainer->Add(fhCosThStarPi0NLocMax1[i][j]) ;
4951         
4952         fhCosThStarPi0NLocMax2[i][j]  = new TH2F(Form("hCosThStarPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
4953                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, #it{NLM}=2 cells vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4954                                                  nptbins,ptmin,ptmax,200,-1,1);
4955         fhCosThStarPi0NLocMax2[i][j]->SetYTitle("cos(#theta^{*})");
4956         fhCosThStarPi0NLocMax2[i][j]->SetXTitle("#it{E} (GeV)");
4957         outputContainer->Add(fhCosThStarPi0NLocMax2[i][j]) ;
4958         
4959         fhCosThStarPi0NLocMaxN[i][j]  = new TH2F(Form("hCosThStarPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
4960                                                  Form("cos(#theta^{*}) split sub-clusters of cluster, Pi0 ID, NLM>2 vs Energy, %s, %s",ptype[i].Data(),sMatched[j].Data()),
4961                                                  nptbins,ptmin,ptmax,200,-1,1);
4962         fhCosThStarPi0NLocMaxN[i][j]->SetYTitle("cos(#theta^{*})");
4963         fhCosThStarPi0NLocMaxN[i][j]->SetXTitle("#it{E} (GeV)");
4964         outputContainer->Add(fhCosThStarPi0NLocMaxN[i][j]) ;
4965         
4966       }
4967     }
4968   }
4969
4970   
4971   for(Int_t j = 0; j < nMatched; j++)
4972   {
4973     fhSplitEFractionvsAsyNLocMax1[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
4974                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  = 1, E>12, %s",sMatched[j].Data()),
4975                                                     100,-1,1,120,0,1.2); 
4976     fhSplitEFractionvsAsyNLocMax1[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4977     fhSplitEFractionvsAsyNLocMax1[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4978     outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ; 
4979     
4980     fhSplitEFractionvsAsyNLocMax2[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
4981                                                     Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  = 2,E>12, %s",sMatched[j].Data()),
4982                                                     100,-1,1,120,0,1.2); 
4983     fhSplitEFractionvsAsyNLocMax2[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4984     fhSplitEFractionvsAsyNLocMax2[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4985     outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ; 
4986     
4987     fhSplitEFractionvsAsyNLocMaxN[j]    = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
4988                                                    Form("(#it{E}_{1}+#it{E}_{2})/#it{E}_{cluster} vs (#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2}) for N max  > 2, E>12, %s",sMatched[j].Data()),
4989                                                    100,-1,1,120,0,1.2); 
4990     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetXTitle("(#it{E}_{split1}-#it{E}_{split2})/(#it{E}_{split1}+#it{E}_{split2})");
4991     fhSplitEFractionvsAsyNLocMaxN[j]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
4992     outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ; 
4993   }
4994   
4995   
4996   fhClusterEtaPhiNLocMax1  = new TH2F
4997   ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
4998   fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
4999   fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
5000   outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
5001   
5002   fhClusterEtaPhiNLocMax2  = new TH2F
5003   ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5004   fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5005   fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
5006   outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
5007   
5008   fhClusterEtaPhiNLocMaxN  = new TH2F
5009   ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5010   fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5011   fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
5012   outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
5013   
5014   fhPi0EtaPhiNLocMax1  = new TH2F
5015   ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5016   fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
5017   fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
5018   outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
5019   
5020   fhPi0EtaPhiNLocMax2  = new TH2F
5021   ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5022   fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
5023   fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
5024   outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
5025   
5026   fhPi0EtaPhiNLocMaxN  = new TH2F
5027   ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5028   fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5029   fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
5030   outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
5031   
5032   if(fFillIdEtaHisto)
5033   {
5034     fhEtaEtaPhiNLocMax1  = new TH2F
5035     ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5036     fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
5037     fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
5038     outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
5039     
5040     fhEtaEtaPhiNLocMax2  = new TH2F
5041     ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5042     fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
5043     fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
5044     outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
5045     
5046     fhEtaEtaPhiNLocMaxN  = new TH2F
5047     ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
5048     fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
5049     fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
5050     outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
5051   }
5052   
5053   
5054   if(fFillSSWeightHisto)
5055   {
5056     for(Int_t nlm = 0; nlm < 3; nlm++)
5057     {
5058       fhPi0CellE[nlm]  = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
5059                                   Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
5060                                   nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
5061       fhPi0CellE[nlm]->SetYTitle("#it{E}_{cell}");
5062       fhPi0CellE[nlm]->SetXTitle("#it{E}_{cluster}");
5063       outputContainer->Add(fhPi0CellE[nlm]) ;
5064       
5065       fhPi0CellEFrac[nlm]  = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
5066                                       Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
5067                                       nptbins,ptmin,ptmax, 100,0,1);
5068       fhPi0CellEFrac[nlm]->SetYTitle("#it{E}_{cell} / #it{E}_{cluster}");
5069       fhPi0CellEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5070       outputContainer->Add(fhPi0CellEFrac[nlm]) ;
5071       
5072       fhPi0CellLogEFrac[nlm]  = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
5073                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
5074                                          nptbins,ptmin,ptmax, 100,-10,0);
5075       fhPi0CellLogEFrac[nlm]->SetYTitle("Log(#it{E}_{cell} / #it{E}_{cluster})");
5076       fhPi0CellLogEFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5077       outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
5078       
5079       
5080       fhPi0CellEMaxEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
5081                                               Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max.  E",snlm[nlm].Data()),
5082                                               nptbins,ptmin,ptmax, 100,0,1);
5083       fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{Loc Max 1}");
5084       fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5085       outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
5086       
5087       fhPi0CellEMaxClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
5088                                                 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
5089                                                 nptbins,ptmin,ptmax, 100,0,1);
5090       fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cluster}");
5091       fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5092       outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
5093       
5094       fhPi0CellEMax2ClusterFrac[nlm]  = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
5095                                                  Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
5096                                                  nptbins,ptmin,ptmax, 100,0,1);
5097       fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cluster}");
5098       fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5099       outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
5100       
5101       fhPi0CellEMaxFrac[nlm]  = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
5102                                          Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
5103                                          nptbins,ptmin,ptmax, 100,0,1);
5104       fhPi0CellEMaxFrac[nlm]->SetYTitle("#it{E}_{Loc Max 1} / #it{E}_{cell i}");
5105       fhPi0CellEMaxFrac[nlm]->SetXTitle("#it{E}_{cluster}");
5106       outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
5107       
5108       fhPi0CellEMax2Frac[nlm]  = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
5109                                           Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
5110                                           nptbins,ptmin,ptmax, 200,0,2);
5111       fhPi0CellEMax2Frac[nlm]->SetYTitle("#it{E}_{Loc Max 2} / #it{E}_{cell i}");
5112       fhPi0CellEMax2Frac[nlm]->SetXTitle("#it{E}_{cluster}");
5113       outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
5114       
5115       
5116       for(Int_t i = 0; i < fSSWeightN; i++)
5117       {
5118         fhM02WeightPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
5119                                               Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for NLM = %s", fSSWeight[i], snlm[nlm].Data()),
5120                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5121         fhM02WeightPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5122         fhM02WeightPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5123         outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
5124       }
5125       
5126       for(Int_t i = 0; i < fSSECellCutN; i++)
5127       {
5128         fhM02ECellCutPi0[nlm][i]     = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
5129                                                 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for NLM = %s", fSSECellCut[i], snlm[nlm].Data()),
5130                                                 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5131         fhM02ECellCutPi0[nlm][i]   ->SetYTitle("#lambda_{0}^{2}");
5132         fhM02ECellCutPi0[nlm][i]   ->SetXTitle("#it{E} (GeV)");
5133         outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
5134       }
5135       
5136     }
5137   }
5138   
5139   Int_t tdbins   = GetHistogramRanges()->GetHistoDiffTimeBins() ;    Float_t tdmax  = GetHistogramRanges()->GetHistoDiffTimeMax();     Float_t tdmin  = GetHistogramRanges()->GetHistoDiffTimeMin();
5140   
5141   fhPi0EPairDiffTimeNLM1 = new TH2F("hPi0EPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #pi, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5142   fhPi0EPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5143   fhPi0EPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5144   outputContainer->Add(fhPi0EPairDiffTimeNLM1);
5145   
5146   fhPi0EPairDiffTimeNLM2 = new TH2F("hPi0EPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #pi, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5147   fhPi0EPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5148   fhPi0EPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5149   outputContainer->Add(fhPi0EPairDiffTimeNLM2);
5150   
5151   fhPi0EPairDiffTimeNLMN = new TH2F("hPi0EPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #pi, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5152   fhPi0EPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5153   fhPi0EPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5154   outputContainer->Add(fhPi0EPairDiffTimeNLMN);
5155   
5156   if(fFillIdEtaHisto)
5157   {
5158     fhEtaEPairDiffTimeNLM1 = new TH2F("hEtaEPairDiffTimeNLocMax1","cluster pair time difference vs E, selected #eta, #it{NLM}=1",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5159     fhEtaEPairDiffTimeNLM1->SetXTitle("#it{E}_{pair} (GeV)");
5160     fhEtaEPairDiffTimeNLM1->SetYTitle("#Delta #it{t} (ns)");
5161     outputContainer->Add(fhEtaEPairDiffTimeNLM1);
5162     
5163     fhEtaEPairDiffTimeNLM2 = new TH2F("hEtaEPairDiffTimeNLocMax2","cluster pair time difference vs E, selected #eta, #it{NLM}=2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5164     fhEtaEPairDiffTimeNLM2->SetXTitle("#it{E}_{pair} (GeV)");
5165     fhEtaEPairDiffTimeNLM2->SetYTitle("#Delta #it{t} (ns)");
5166     outputContainer->Add(fhEtaEPairDiffTimeNLM2);
5167     
5168     fhEtaEPairDiffTimeNLMN = new TH2F("hEtaEPairDiffTimeNLocMaxN","cluster pair time difference vs E, selected #eta, NLM>2",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
5169     fhEtaEPairDiffTimeNLMN->SetXTitle("#it{E}_{pair} (GeV)");
5170     fhEtaEPairDiffTimeNLMN->SetYTitle("#Delta #it{t} (ns)");
5171     outputContainer->Add(fhEtaEPairDiffTimeNLMN);
5172   }
5173   
5174   if(fFillNCellHisto && IsDataMC())
5175   {
5176     
5177     fhNCellMassEHighNLocMax1MCPi0 = new TH2F("hNCellMassEHighNLocMax1MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5178     fhNCellMassEHighNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5179     fhNCellMassEHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5180     outputContainer->Add(fhNCellMassEHighNLocMax1MCPi0) ;
5181     
5182     fhNCellMassELowNLocMax1MCPi0 = new TH2F("hNCellMassELowNLocMax1MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5183     fhNCellMassELowNLocMax1MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5184     fhNCellMassELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5185     outputContainer->Add(fhNCellMassELowNLocMax1MCPi0) ;
5186     
5187     fhNCellM02EHighNLocMax1MCPi0 = new TH2F("hNCellM02EHighNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5188     fhNCellM02EHighNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5189     fhNCellM02EHighNLocMax1MCPi0->SetXTitle("#it{N} cells");
5190     outputContainer->Add(fhNCellM02EHighNLocMax1MCPi0) ;
5191     
5192     fhNCellM02ELowNLocMax1MCPi0 = new TH2F("hNCellM02ELowNLocMax1MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=1",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5193     fhNCellM02ELowNLocMax1MCPi0->SetYTitle("#lambda_{0}^{2}");
5194     fhNCellM02ELowNLocMax1MCPi0->SetXTitle("#it{N} cells");
5195     outputContainer->Add(fhNCellM02ELowNLocMax1MCPi0) ;
5196     
5197     fhNCellMassEHighNLocMax2MCPi0 = new TH2F("hNCellMassEHighNLocMax2MCPi0","n cells vs mass for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5198     fhNCellMassEHighNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5199     fhNCellMassEHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5200     outputContainer->Add(fhNCellMassEHighNLocMax2MCPi0) ;
5201     
5202     fhNCellMassELowNLocMax2MCPi0 = new TH2F("hNCellMassELowNLocMax2MCPi0","n cells vs mass for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5203     fhNCellMassELowNLocMax2MCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5204     fhNCellMassELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5205     outputContainer->Add(fhNCellMassELowNLocMax2MCPi0) ;
5206     
5207     fhNCellM02EHighNLocMax2MCPi0 = new TH2F("hNCellM02EHighNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5208     fhNCellM02EHighNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5209     fhNCellM02EHighNLocMax2MCPi0->SetXTitle("#it{N} cells");
5210     outputContainer->Add(fhNCellM02EHighNLocMax2MCPi0) ;
5211     
5212     fhNCellM02ELowNLocMax2MCPi0 = new TH2F("hNCellM02ELowNLocMax2MCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, #it{NLM}=2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5213     fhNCellM02ELowNLocMax2MCPi0->SetYTitle("#lambda_{0}^{2}");
5214     fhNCellM02ELowNLocMax2MCPi0->SetXTitle("#it{N} cells");
5215     outputContainer->Add(fhNCellM02ELowNLocMax2MCPi0) ;
5216     
5217     fhNCellMassEHighNLocMaxNMCPi0 = new TH2F("hNCellMassEHighNLocMaxNMCPi0","n cells vs mass for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5218     fhNCellMassEHighNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5219     fhNCellMassEHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5220     outputContainer->Add(fhNCellMassEHighNLocMaxNMCPi0) ;
5221     
5222     fhNCellMassELowNLocMaxNMCPi0 = new TH2F("hNCellMassELowNLocMaxNMCPi0","n cells vs mass for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,mbins,mmin,mmax);
5223     fhNCellMassELowNLocMaxNMCPi0->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5224     fhNCellMassELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5225     outputContainer->Add(fhNCellMassELowNLocMaxNMCPi0) ;
5226     
5227     fhNCellM02EHighNLocMaxNMCPi0 = new TH2F("hNCellM02EHighNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, high energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5228     fhNCellM02EHighNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5229     fhNCellM02EHighNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5230     outputContainer->Add(fhNCellM02EHighNLocMaxNMCPi0) ;
5231     
5232     fhNCellM02ELowNLocMaxNMCPi0 = new TH2F("hNCellM02ELowNLocMaxNMCPi0","n cells vs #lambda_{0}^{2} for MC pi0, low energy, NLM>2",ncbins,ncmin,ncmax,ssbins,ssmin,ssmax);
5233     fhNCellM02ELowNLocMaxNMCPi0->SetYTitle("#lambda_{0}^{2}");
5234     fhNCellM02ELowNLocMaxNMCPi0->SetXTitle("#it{N} cells");
5235     outputContainer->Add(fhNCellM02ELowNLocMaxNMCPi0) ;
5236     
5237   }
5238   
5239   if(IsDataMC() && fFillMCOverlapHisto)
5240   {
5241     for(Int_t i = 1; i < n; i++)
5242     {
5243       for(Int_t j = 0; j < 3; j++)
5244       {
5245         fhMCENOverlaps[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5246                                             Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5247                                             nptbins,ptmin,ptmax,10,0,10);
5248         fhMCENOverlaps[j][i]   ->SetYTitle("# overlaps");
5249         fhMCENOverlaps[j][i]   ->SetXTitle("#it{E} (GeV)");
5250         outputContainer->Add(fhMCENOverlaps[j][i]) ;
5251         
5252         fhMCEM02Overlap0[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5253                                               Form("Overlap 0, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5254                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5255         fhMCEM02Overlap0[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5256         fhMCEM02Overlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5257         outputContainer->Add(fhMCEM02Overlap0[j][i]) ;
5258         
5259         fhMCEM02Overlap1[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5260                                               Form("Overlap 1, #lambda_{0}^{2} vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5261                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5262         fhMCEM02Overlap1[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5263         fhMCEM02Overlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5264         outputContainer->Add(fhMCEM02Overlap1[j][i]) ;
5265         
5266         fhMCEM02OverlapN[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5267                                               Form("Overlap N, #lambda_{0}^{2} vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5268                                               nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5269         fhMCEM02OverlapN[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5270         fhMCEM02OverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5271         outputContainer->Add(fhMCEM02OverlapN[j][i]) ;
5272         
5273         fhMCEMassOverlap0[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5274                                                Form("Overlap 0, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5275                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5276         fhMCEMassOverlap0[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5277         fhMCEMassOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5278         outputContainer->Add(fhMCEMassOverlap0[j][i]) ;
5279         
5280         fhMCEMassOverlap1[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5281                                                Form("Overalap 1, Mass vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5282                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5283         fhMCEMassOverlap1[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5284         fhMCEMassOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5285         outputContainer->Add(fhMCEMassOverlap1[j][i]) ;
5286         
5287         fhMCEMassOverlapN[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5288                                                Form("Overlap N, Mass vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5289                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5290         fhMCEMassOverlapN[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5291         fhMCEMassOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5292         outputContainer->Add(fhMCEMassOverlapN[j][i]) ;
5293         
5294         fhMCEAsymOverlap0[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5295                                                Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5296                                                nptbins,ptmin,ptmax,100,0,1);
5297         fhMCEAsymOverlap0[j][i]   ->SetYTitle("|A|");
5298         fhMCEAsymOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5299         outputContainer->Add(fhMCEAsymOverlap0[j][i]) ;
5300         
5301         fhMCEAsymOverlap1[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5302                                                Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5303                                                nptbins,ptmin,ptmax,100,0,1);
5304         fhMCEAsymOverlap1[j][i]   ->SetYTitle("|A|");
5305         fhMCEAsymOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5306         outputContainer->Add(fhMCEAsymOverlap1[j][i]) ;
5307         
5308         fhMCEAsymOverlapN[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5309                                                Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5310                                                nptbins,ptmin,ptmax,100,0,1);
5311         fhMCEAsymOverlapN[j][i]   ->SetYTitle("|A|");
5312         fhMCEAsymOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5313         outputContainer->Add(fhMCEAsymOverlapN[j][i]) ;
5314
5315         
5316         if(fFillNCellHisto)
5317         {
5318           fhMCENCellOverlap0[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5319                                                   Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5320                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5321           fhMCENCellOverlap0[j][i]   ->SetYTitle("#it{N} cells");
5322           fhMCENCellOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5323           outputContainer->Add(fhMCENCellOverlap0[j][i]) ;
5324           
5325           fhMCENCellOverlap1[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5326                                                   Form("Overalap 1, n cells vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5327                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5328           fhMCENCellOverlap1[j][i]   ->SetYTitle("#it{N} cells");
5329           fhMCENCellOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5330           outputContainer->Add(fhMCENCellOverlap1[j][i]) ;
5331           
5332           fhMCENCellOverlapN[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5333                                                   Form("Overlap N, n cells vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5334                                                   nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5335           fhMCENCellOverlapN[j][i]   ->SetYTitle("#it{N} cells");
5336           fhMCENCellOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5337           outputContainer->Add(fhMCENCellOverlapN[j][i]) ;
5338         }
5339         
5340         fhMCEEpriOverlap0[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5341                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5342                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5343         fhMCEEpriOverlap0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5344         fhMCEEpriOverlap0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5345         outputContainer->Add(fhMCEEpriOverlap0[j][i]) ;
5346         
5347         fhMCEEpriOverlap1[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5348                                                Form("Overalap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5349                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5350         fhMCEEpriOverlap1[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5351         fhMCEEpriOverlap1[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5352         outputContainer->Add(fhMCEEpriOverlap1[j][i]) ;
5353         
5354         fhMCEEpriOverlapN[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5355                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5356                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5357         fhMCEEpriOverlapN[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5358         fhMCEEpriOverlapN[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5359         outputContainer->Add(fhMCEEpriOverlapN[j][i]) ;
5360         
5361         
5362         fhMCEEpriOverlap0IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap0IdPi0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5363                                                Form("Overlap 0, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5364                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5365         fhMCEEpriOverlap0IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5366         fhMCEEpriOverlap0IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5367         outputContainer->Add(fhMCEEpriOverlap0IdPi0[j][i]) ;
5368         
5369         fhMCEEpriOverlap1IdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlap1IdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5370                                                Form("Overlap 1, E reco vs E prim for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5371                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5372         fhMCEEpriOverlap1IdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5373         fhMCEEpriOverlap1IdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5374         outputContainer->Add(fhMCEEpriOverlap1IdPi0[j][i]) ;
5375         
5376         fhMCEEpriOverlapNIdPi0[j][i]     = new TH2F(Form("hMCEEpriOverlapNIdPi0NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5377                                                Form("Overlap N, E reco vs E prim for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5378                                                nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5379         fhMCEEpriOverlapNIdPi0[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5380         fhMCEEpriOverlapNIdPi0[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5381         outputContainer->Add(fhMCEEpriOverlapNIdPi0[j][i]) ;
5382
5383         
5384         fhMCESplitEFracOverlap0[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%s",snlm[j].Data(),pname[i].Data()),
5385                                                      Form("Overlap 0, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5386                                                      nptbins,ptmin,ptmax,120,0,1.2);
5387         fhMCESplitEFracOverlap0[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5388         fhMCESplitEFracOverlap0[j][i]   ->SetXTitle("#it{E} (GeV)");
5389         outputContainer->Add(fhMCESplitEFracOverlap0[j][i]) ;
5390         
5391         fhMCESplitEFracOverlap1[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5392                                                      Form("Overalap 1, SplitEFrac vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5393                                                      nptbins,ptmin,ptmax,120,0,1.2);
5394         fhMCESplitEFracOverlap1[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5395         fhMCESplitEFracOverlap1[j][i]   ->SetXTitle("#it{E} (GeV)");
5396         outputContainer->Add(fhMCESplitEFracOverlap1[j][i]) ;
5397         
5398         fhMCESplitEFracOverlapN[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%s",snlm[j].Data(), pname[i].Data()),
5399                                                      Form("Overlap N, SplitEFrac vs E for #it{NLM}=%s %s",snlm[j].Data(),ptype[i].Data()),
5400                                                      nptbins,ptmin,ptmax,120,0,1.2);
5401         fhMCESplitEFracOverlapN[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5402         fhMCESplitEFracOverlapN[j][i]   ->SetXTitle("#it{E} (GeV)");
5403         outputContainer->Add(fhMCESplitEFracOverlapN[j][i]) ;
5404         
5405         if(i < 5)
5406         {
5407           fhMCPi0MassM02Overlap0[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%d",snlm[j].Data(),i-1),
5408                                                      Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5409                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5410           fhMCPi0MassM02Overlap0[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5411           fhMCPi0MassM02Overlap0[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5412           outputContainer->Add(fhMCPi0MassM02Overlap0[j][i-1]) ;
5413           
5414           fhMCPi0MassM02Overlap1[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%d",snlm[j].Data(),i-1),
5415                                                      Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5416                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5417           fhMCPi0MassM02Overlap1[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5418           fhMCPi0MassM02Overlap1[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5419           outputContainer->Add(fhMCPi0MassM02Overlap1[j][i-1]) ;
5420           
5421           fhMCPi0MassM02OverlapN[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%d",snlm[j].Data(),i-1),
5422                                                      Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s",snlm[j].Data(),sEBin[i-1].Data()),
5423                                                      ssbins,ssmin,ssmax,mbins,mmin,mmax);
5424           fhMCPi0MassM02OverlapN[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5425           fhMCPi0MassM02OverlapN[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5426           outputContainer->Add(fhMCPi0MassM02OverlapN[j][i-1]) ;
5427         }
5428         
5429         if(fFillTMHisto)
5430         {
5431           fhMCENOverlapsMatch[j][i]     = new TH2F(Form("hMCENOverlapsNLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5432                                                    Form("# overlaps vs E for #it{NLM}=%s, %s",snlm[j].Data(),ptype[i].Data()),
5433                                                    nptbins,ptmin,ptmax,10,0,10);
5434           fhMCENOverlapsMatch[j][i]   ->SetYTitle("# overlaps");
5435           fhMCENOverlapsMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5436           outputContainer->Add(fhMCENOverlapsMatch[j][i]) ;
5437           
5438           fhMCEM02Overlap0Match[j][i]     = new TH2F(Form("hMCEM02Overlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5439                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5440                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5441           fhMCEM02Overlap0Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5442           fhMCEM02Overlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5443           outputContainer->Add(fhMCEM02Overlap0Match[j][i]) ;
5444           
5445           fhMCEM02Overlap1Match[j][i]     = new TH2F(Form("hMCEM02Overlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5446                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5447                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5448           fhMCEM02Overlap1Match[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5449           fhMCEM02Overlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5450           outputContainer->Add(fhMCEM02Overlap1Match[j][i]) ;
5451           
5452           fhMCEM02OverlapNMatch[j][i]     = new TH2F(Form("hMCEM02OverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5453                                                      Form("#lambda_{0}^{2} vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5454                                                      nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
5455           fhMCEM02OverlapNMatch[j][i]   ->SetYTitle("#lambda_{0}^{2}");
5456           fhMCEM02OverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5457           outputContainer->Add(fhMCEM02OverlapNMatch[j][i]) ;
5458           
5459           fhMCEMassOverlap0Match[j][i]     = new TH2F(Form("hMCEMassOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5460                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5461                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5462           fhMCEMassOverlap0Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5463           fhMCEMassOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5464           outputContainer->Add(fhMCEMassOverlap0Match[j][i]) ;
5465           
5466           fhMCEMassOverlap1Match[j][i]     = new TH2F(Form("hMCEMassOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5467                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5468                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5469           fhMCEMassOverlap1Match[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5470           fhMCEMassOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5471           outputContainer->Add(fhMCEMassOverlap1Match[j][i]) ;
5472           
5473           fhMCEMassOverlapNMatch[j][i]     = new TH2F(Form("hMCEMassOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5474                                                       Form("Mass vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5475                                                       nptbins,ptmin,ptmax,mbins,mmin,mmax);
5476           fhMCEMassOverlapNMatch[j][i]   ->SetYTitle("#it{M} (GeV/#it{c}^{2}");
5477           fhMCEMassOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5478           outputContainer->Add(fhMCEMassOverlapNMatch[j][i]) ;
5479           
5480           
5481           fhMCEAsymOverlap0Match[j][i]     = new TH2F(Form("hMCEAsymOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5482                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5483                                                       nptbins,ptmin,ptmax,100,0,1);
5484           fhMCEAsymOverlap0Match[j][i]   ->SetYTitle("|#it{A}|");
5485           fhMCEAsymOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5486           outputContainer->Add(fhMCEAsymOverlap0Match[j][i]) ;
5487           
5488           fhMCEAsymOverlap1Match[j][i]     = new TH2F(Form("hMCEAsymOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5489                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5490                                                       nptbins,ptmin,ptmax,100,0,1);
5491           fhMCEAsymOverlap1Match[j][i]   ->SetYTitle("|#it{A}|");
5492           fhMCEAsymOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5493           outputContainer->Add(fhMCEAsymOverlap1Match[j][i]) ;
5494           
5495           fhMCEAsymOverlapNMatch[j][i]     = new TH2F(Form("hMCEAsymOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5496                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5497                                                       nptbins,ptmin,ptmax,100,0,1);
5498           fhMCEAsymOverlapNMatch[j][i]   ->SetYTitle("|#it{A}|");
5499           fhMCEAsymOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5500           outputContainer->Add(fhMCEAsymOverlapNMatch[j][i]) ;
5501
5502           
5503           fhMCENCellOverlap0Match[j][i]     = new TH2F(Form("hMCENCellOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5504                                                       Form("Overlap 0, n cells vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5505                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5506           fhMCENCellOverlap0Match[j][i]   ->SetYTitle("#it{N} cells");
5507           fhMCENCellOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5508           outputContainer->Add(fhMCENCellOverlap0Match[j][i]) ;
5509           
5510           fhMCENCellOverlap1Match[j][i]     = new TH2F(Form("hMCENCellOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5511                                                       Form("Overalap 1, n cell vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5512                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5513           fhMCENCellOverlap1Match[j][i]   ->SetYTitle("#it{N} cells");
5514           fhMCENCellOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5515           outputContainer->Add(fhMCENCellOverlap1Match[j][i]) ;
5516           
5517           fhMCENCellOverlapNMatch[j][i]     = new TH2F(Form("hMCENCellOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5518                                                       Form("Overlap N, n cell vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5519                                                       nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
5520           fhMCENCellOverlapNMatch[j][i]   ->SetYTitle("#it{N} cells");
5521           fhMCENCellOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5522           outputContainer->Add(fhMCENCellOverlapNMatch[j][i]) ;
5523
5524           fhMCEEpriOverlap0Match[j][i]     = new TH2F(Form("hMCEEpriOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5525                                                       Form("Overlap 0, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5526                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5527           fhMCEEpriOverlap0Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5528           fhMCEEpriOverlap0Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5529           outputContainer->Add(fhMCEEpriOverlap0Match[j][i]) ;
5530           
5531           fhMCEEpriOverlap1Match[j][i]     = new TH2F(Form("hMCEEpriOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5532                                                       Form("Overalap 1, Asymmetry vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5533                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5534           fhMCEEpriOverlap1Match[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5535           fhMCEEpriOverlap1Match[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5536           outputContainer->Add(fhMCEEpriOverlap1Match[j][i]) ;
5537           
5538           fhMCEEpriOverlapNMatch[j][i]     = new TH2F(Form("hMCEEpriOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5539                                                       Form("Overlap N, Asymmetry vs E for #it{NLM}=%s %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5540                                                       nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
5541           fhMCEEpriOverlapNMatch[j][i]   ->SetYTitle("#it{E}_{gen} (GeV)");
5542           fhMCEEpriOverlapNMatch[j][i]   ->SetXTitle("#it{E}_{reco} (GeV)");
5543           outputContainer->Add(fhMCEEpriOverlapNMatch[j][i]) ;
5544           
5545           
5546           fhMCESplitEFracOverlap0Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap0NLocMax%s%sMatched",snlm[j].Data(),pname[i].Data()),
5547                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5548                                                             nptbins,ptmin,ptmax,120,0,1.2);
5549           fhMCESplitEFracOverlap0Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5550           fhMCESplitEFracOverlap0Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5551           outputContainer->Add(fhMCESplitEFracOverlap0Match[j][i]) ;
5552           
5553           fhMCESplitEFracOverlap1Match[j][i]     = new TH2F(Form("hMCESplitEFracOverlap1NLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5554                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5555                                                             nptbins,ptmin,ptmax,120,0,1.2);
5556           fhMCESplitEFracOverlap1Match[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5557           fhMCESplitEFracOverlap1Match[j][i]   ->SetXTitle("#it{E} (GeV)");
5558           outputContainer->Add(fhMCESplitEFracOverlap1Match[j][i]) ;
5559           
5560           fhMCESplitEFracOverlapNMatch[j][i]     = new TH2F(Form("hMCESplitEFracOverlapNNLocMax%s%sMatched",snlm[j].Data(), pname[i].Data()),
5561                                                             Form("SplitEFrac vs E for #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),ptype[i].Data()),
5562                                                             nptbins,ptmin,ptmax,120,0,1.2);
5563           fhMCESplitEFracOverlapNMatch[j][i]   ->SetYTitle("(#it{E}_{split1}+#it{E}_{split2})/#it{E}_{cluster}");
5564           fhMCESplitEFracOverlapNMatch[j][i]   ->SetXTitle("#it{E} (GeV)");
5565           outputContainer->Add(fhMCESplitEFracOverlapNMatch[j][i]) ;
5566           
5567           
5568           if(i < 5)
5569           {
5570             fhMCPi0MassM02Overlap0Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap0NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5571                                                             Form("Overlap 0, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5572                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5573             fhMCPi0MassM02Overlap0Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5574             fhMCPi0MassM02Overlap0Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5575             outputContainer->Add(fhMCPi0MassM02Overlap0Match[j][i-1]) ;
5576             
5577             fhMCPi0MassM02Overlap1Match[j][i-1]  = new TH2F(Form("hMCPi0MassM02Overlap1NLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5578                                                             Form("Overlap 1, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5579                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5580             fhMCPi0MassM02Overlap1Match[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5581             fhMCPi0MassM02Overlap1Match[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5582             outputContainer->Add(fhMCPi0MassM02Overlap1Match[j][i-1]) ;
5583             
5584             fhMCPi0MassM02OverlapNMatch[j][i-1]  = new TH2F(Form("hMCPi0MassM02OverlapNNLocMax%sEbin%dMatched",snlm[j].Data(),i-1),
5585                                                             Form("Overlap N, Mass vs #lambda_{0}^{2}, #it{NLM}=%s, %s, Track Matched",snlm[j].Data(),sEBin[i-1].Data()),
5586                                                             ssbins,ssmin,ssmax,mbins,mmin,mmax);
5587             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5588             fhMCPi0MassM02OverlapNMatch[j][i-1]->SetXTitle("#lambda_{0}^{2}");
5589             outputContainer->Add(fhMCPi0MassM02OverlapNMatch[j][i-1]) ;
5590             
5591           }
5592           
5593         }
5594       }
5595     }
5596     
5597     fhMCPi0HighNLMPair    = new TH2F("hMCPi0HighNLMPair","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5598                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5599     fhMCPi0HighNLMPair   ->SetYTitle("#it{N} maxima");
5600     fhMCPi0HighNLMPair   ->SetXTitle("#it{E} (GeV)");
5601     outputContainer->Add(fhMCPi0HighNLMPair) ;
5602     
5603     fhMCPi0LowNLMPair     = new TH2F("hMCPi0LowNLMPair","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5604                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5605     fhMCPi0LowNLMPair   ->SetYTitle("#it{N} maxima");
5606     fhMCPi0LowNLMPair   ->SetXTitle("#it{E} (GeV)");
5607     outputContainer->Add(fhMCPi0LowNLMPair) ;
5608     
5609     fhMCPi0AnyNLMPair     = new TH2F("hMCPi0AnyNLMPair","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5610                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5611     fhMCPi0AnyNLMPair   ->SetYTitle("#it{N} maxima");
5612     fhMCPi0AnyNLMPair   ->SetXTitle("#it{E} (GeV)");
5613     outputContainer->Add(fhMCPi0AnyNLMPair) ;
5614     
5615     fhMCPi0NoneNLMPair     = new TH2F("hMCPi0NoneNLMPair","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5616                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5617     fhMCPi0NoneNLMPair   ->SetYTitle("#it{N} maxima");
5618     fhMCPi0NoneNLMPair   ->SetXTitle("#it{E} (GeV)");
5619     outputContainer->Add(fhMCPi0NoneNLMPair) ;
5620     
5621     
5622     fhMCPi0HighNLMPairNoMCMatch    = new TH2F("hMCPi0HighNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5623                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5624     fhMCPi0HighNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5625     fhMCPi0HighNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5626     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatch) ;
5627     
5628     fhMCPi0LowNLMPairNoMCMatch     = new TH2F("hMCPi0LowNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5629                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5630     fhMCPi0LowNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5631     fhMCPi0LowNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5632     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatch) ;
5633     
5634     fhMCPi0AnyNLMPairNoMCMatch     = new TH2F("hMCPi0AnyNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5635                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5636     fhMCPi0AnyNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5637     fhMCPi0AnyNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5638     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatch) ;
5639     
5640     fhMCPi0NoneNLMPairNoMCMatch     = new TH2F("hMCPi0NoneNLMPairNoMCMatch","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5641                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5642     fhMCPi0NoneNLMPairNoMCMatch   ->SetYTitle("#it{N} maxima");
5643     fhMCPi0NoneNLMPairNoMCMatch   ->SetXTitle("#it{E} (GeV)");
5644     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatch) ;
5645     
5646     
5647     fhMCPi0HighNLMPairOverlap    = new TH2F("hMCPi0HighNLMPairOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5648                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5649     fhMCPi0HighNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5650     fhMCPi0HighNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5651     outputContainer->Add(fhMCPi0HighNLMPairOverlap) ;
5652     
5653     fhMCPi0LowNLMPairOverlap     = new TH2F("hMCPi0LowNLMPairOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5654                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5655     fhMCPi0LowNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5656     fhMCPi0LowNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5657     outputContainer->Add(fhMCPi0LowNLMPairOverlap) ;
5658     
5659     fhMCPi0AnyNLMPairOverlap     = new TH2F("hMCPi0AnyNLMPairOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5660                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5661     fhMCPi0AnyNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5662     fhMCPi0AnyNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5663     outputContainer->Add(fhMCPi0AnyNLMPairOverlap) ;
5664     
5665     fhMCPi0NoneNLMPairOverlap     = new TH2F("hMCPi0NoneNLMPairOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5666                                              nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5667     fhMCPi0NoneNLMPairOverlap   ->SetYTitle("#it{N} maxima");
5668     fhMCPi0NoneNLMPairOverlap   ->SetXTitle("#it{E} (GeV)");
5669     outputContainer->Add(fhMCPi0NoneNLMPairOverlap) ;
5670     
5671     fhMCPi0HighNLMPairNoMCMatchOverlap    = new TH2F("hMCPi0HighNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, high energy NLM pair are decays",
5672                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5673     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5674     fhMCPi0HighNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5675     outputContainer->Add(fhMCPi0HighNLMPairNoMCMatchOverlap) ;
5676     
5677     fhMCPi0LowNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0LowNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, lower energy NLM pair are decays",
5678                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5679     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5680     fhMCPi0LowNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5681     outputContainer->Add(fhMCPi0LowNLMPairNoMCMatchOverlap) ;
5682     
5683     fhMCPi0AnyNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0AnyNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, both high and other energy NLM pair are decays",
5684                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5685     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5686     fhMCPi0AnyNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5687     outputContainer->Add(fhMCPi0AnyNLMPairNoMCMatchOverlap) ;
5688     
5689     fhMCPi0NoneNLMPairNoMCMatchOverlap     = new TH2F("hMCPi0NoneNLMPairNoMCMatchOverlap","NLM vs E for merged pi0 cluster, no NLM pair are decays",
5690                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5691     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetYTitle("#it{N} maxima");
5692     fhMCPi0NoneNLMPairNoMCMatchOverlap   ->SetXTitle("#it{E} (GeV)");
5693     outputContainer->Add(fhMCPi0NoneNLMPairNoMCMatchOverlap) ;
5694   
5695     
5696     fhMCPi0DecayPhotonHitHighLM    = new TH2F("hMCPi0DecayPhotonHitHighLM","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima",
5697                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5698     fhMCPi0DecayPhotonHitHighLM    ->SetYTitle("#it{N} maxima");
5699     fhMCPi0DecayPhotonHitHighLM    ->SetXTitle("#it{E} (GeV)");
5700     outputContainer->Add(fhMCPi0DecayPhotonHitHighLM ) ;
5701     
5702     fhMCPi0DecayPhotonAdjHighLM    = new TH2F("hMCPi0DecayPhotonAdjHighLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima",
5703                                               nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5704     fhMCPi0DecayPhotonAdjHighLM    ->SetYTitle("#it{N} maxima");
5705     fhMCPi0DecayPhotonAdjHighLM    ->SetXTitle("#it{E} (GeV)");
5706     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLM ) ;
5707     
5708     fhMCPi0DecayPhotonHitOtherLM    = new TH2F("hMCPi0DecayPhotonHitOtherLM","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima",
5709                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5710     fhMCPi0DecayPhotonHitOtherLM    ->SetYTitle("#it{N} maxima");
5711     fhMCPi0DecayPhotonHitOtherLM    ->SetXTitle("#it{E} (GeV)");
5712     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLM ) ;
5713     
5714     fhMCPi0DecayPhotonAdjOtherLM    = new TH2F("hMCPi0DecayPhotonAdjOtherLM","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima",
5715                                                nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5716     fhMCPi0DecayPhotonAdjOtherLM    ->SetYTitle("#it{N} maxima");
5717     fhMCPi0DecayPhotonAdjOtherLM    ->SetXTitle("#it{E} (GeV)");
5718     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLM ) ;
5719     
5720     fhMCPi0DecayPhotonAdjacent   = new TH2F("hMCPi0DecayPhotonAdjacent","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells",
5721                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5722     fhMCPi0DecayPhotonAdjacent    ->SetYTitle("#it{N} maxima");
5723     fhMCPi0DecayPhotonAdjacent    ->SetXTitle("#it{E} (GeV)");
5724     outputContainer->Add(fhMCPi0DecayPhotonAdjacent ) ;
5725     
5726     fhMCPi0DecayPhotonHitNoLM    = new TH2F("hMCPi0DecayPhotonHitNoLM","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima",
5727                                             nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5728     fhMCPi0DecayPhotonHitNoLM    ->SetYTitle("#it{N} maxima");
5729     fhMCPi0DecayPhotonHitNoLM    ->SetXTitle("#it{E} (GeV)");
5730     outputContainer->Add(fhMCPi0DecayPhotonHitNoLM ) ;
5731     
5732     
5733     fhMCPi0DecayPhotonHitHighLMOverlap    = new TH2F("hMCPi0DecayPhotonHitHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit High Local Maxima, there was an overlap",
5734                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5735     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetYTitle("#it{N} maxima");
5736     fhMCPi0DecayPhotonHitHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5737     outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlap ) ;
5738     
5739     fhMCPi0DecayPhotonAdjHighLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjHighLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to High Local Maxima, there was an overlap",
5740                                                      nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5741     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetYTitle("#it{N} maxima");
5742     fhMCPi0DecayPhotonAdjHighLMOverlap    ->SetXTitle("#it{E} (GeV)");
5743     outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlap ) ;
5744     
5745     fhMCPi0DecayPhotonHitOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonHitOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit Other Local Maxima, there was an overlap",
5746                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5747     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5748     fhMCPi0DecayPhotonHitOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5749     outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlap ) ;
5750     
5751     fhMCPi0DecayPhotonAdjOtherLMOverlap    = new TH2F("hMCPi0DecayPhotonAdjOtherLMOverlap","NLM vs E for merged pi0 cluster, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",
5752                                                       nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5753     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetYTitle("#it{N} maxima");
5754     fhMCPi0DecayPhotonAdjOtherLMOverlap    ->SetXTitle("#it{E} (GeV)");
5755     outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlap ) ;
5756     
5757     fhMCPi0DecayPhotonAdjacentOverlap   = new TH2F("hMCPi0DecayPhotonAdjacentOverlap","NLM vs E for merged pi0 cluster, decay photon hit adjacent cells, there was an overlap",
5758                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5759     fhMCPi0DecayPhotonAdjacentOverlap    ->SetYTitle("#it{N} maxima");
5760     fhMCPi0DecayPhotonAdjacentOverlap    ->SetXTitle("#it{E} (GeV)");
5761     outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlap ) ;
5762     
5763     fhMCPi0DecayPhotonHitNoLMOverlap    = new TH2F("hMCPi0DecayPhotonHitNoLMOverlap","NLM vs E for merged pi0 cluster, decay photon do not hit Local Maxima, there was an overlap",
5764                                                    nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
5765     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetYTitle("#it{N} maxima");
5766     fhMCPi0DecayPhotonHitNoLMOverlap    ->SetXTitle("#it{E} (GeV)");
5767     outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlap ) ;
5768     
5769     
5770     for(Int_t nlm = 0; nlm < 3; nlm++)
5771     {
5772       fhMCPi0DecayPhotonHitHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sMass",snlm[nlm].Data()),
5773                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5774                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5775       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5776       fhMCPi0DecayPhotonHitHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5777       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMMass[nlm] ) ;
5778       
5779       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sMass",snlm[nlm].Data()),
5780                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5781                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5782       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5783       fhMCPi0DecayPhotonAdjHighLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5784       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMMass[nlm] ) ;
5785       
5786       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sMass",snlm[nlm].Data()),
5787                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5788                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5789       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5790       fhMCPi0DecayPhotonHitOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5791       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMMass[nlm] ) ;
5792       
5793       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sMass",snlm[nlm].Data()),
5794                                                         Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5795                                                         nptbins,ptmin,ptmax,mbins,mmin,mmax);
5796       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5797       fhMCPi0DecayPhotonAdjOtherLMMass[nlm]  ->SetXTitle("#it{E} (GeV)");
5798       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMMass[nlm] ) ;
5799       
5800       fhMCPi0DecayPhotonAdjacentMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sMass",snlm[nlm].Data()),
5801                                                        Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells",snlm[nlm].Data()),
5802                                                        nptbins,ptmin,ptmax,mbins,mmin,mmax);
5803       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5804       fhMCPi0DecayPhotonAdjacentMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5805       outputContainer->Add(fhMCPi0DecayPhotonAdjacentMass[nlm] ) ;
5806       
5807       fhMCPi0DecayPhotonHitNoLMMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sMass",snlm[nlm].Data()),
5808                                                      Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima",snlm[nlm].Data()),
5809                                                      nptbins,ptmin,ptmax,mbins,mmin,mmax);
5810       fhMCPi0DecayPhotonHitNoLMMass[nlm]  ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5811       fhMCPi0DecayPhotonHitNoLMMass[nlm]    ->SetXTitle("#it{E} (GeV)");
5812       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMMass[nlm] ) ;
5813       
5814       
5815       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapMass",snlm[nlm].Data()),
5816                                                                Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5817                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5818       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5819       fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5820       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapMass[nlm]) ;
5821       
5822       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapMass",snlm[nlm].Data()),
5823                                                                Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5824                                                                nptbins,ptmin,ptmax,mbins,mmin,mmax);
5825       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5826       fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5827       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapMass[nlm]) ;
5828       
5829       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapMass",snlm[nlm].Data()),
5830                                                                 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5831                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5832       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5833       fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5834       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapMass[nlm]) ;
5835       
5836       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapMass",snlm[nlm].Data()),
5837                                                                 Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5838                                                                 nptbins,ptmin,ptmax,mbins,mmin,mmax);
5839       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5840       fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5841       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapMass[nlm]) ;
5842       
5843       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjacentLM%sOverlapMass",snlm[nlm].Data()),
5844                                                              Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit adjacent cells, there was an overlap",snlm[nlm].Data()),
5845                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5846       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5847       fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5848       outputContainer->Add(fhMCPi0DecayPhotonAdjacentOverlapMass[nlm]) ;
5849       
5850       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitNoLM%sOverlapMass",snlm[nlm].Data()),
5851                                                              Form("Mass vs E for merged pi0 cluster, #it{NLM}=%s, decay photon do not hit Local Maxima, there was an overlap",snlm[nlm].Data()),
5852                                                              nptbins,ptmin,ptmax,mbins,mmin,mmax);
5853       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetYTitle("#it{M} (GeV/#it{c}^{2})");
5854       fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]   ->SetXTitle("#it{E} (GeV)");
5855       outputContainer->Add(fhMCPi0DecayPhotonHitNoLMOverlapMass[nlm]) ;
5856       
5857       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1",snlm[nlm].Data()),
5858                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E pi0 for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5859                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5860       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5861       fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5862       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1[nlm] ) ;
5863       
5864       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1",snlm[nlm].Data()),
5865                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5866                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5867       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5868       fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm]  ->SetXTitle("E pi0 (GeV)");
5869       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1[nlm] ) ;
5870       
5871       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1",snlm[nlm].Data()),
5872                                                             Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5873                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5874       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5875       fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5876       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1[nlm] ) ;
5877       
5878       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1",snlm[nlm].Data()),
5879                                                             Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5880                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5881       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5882       fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5883       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1[nlm] ) ;
5884       
5885       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5886                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5887                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5888       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5889       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5890       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1[nlm]) ;
5891       
5892       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1",snlm[nlm].Data()),
5893                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5894                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5895       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5896       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5897       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1[nlm]) ;
5898       
5899       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5900                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5901                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5902       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5903       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5904       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1[nlm]) ;
5905       
5906       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1",snlm[nlm].Data()),
5907                                                                     Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5908                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5909       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5910       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5911       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1[nlm]) ;
5912       
5913       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2",snlm[nlm].Data()),
5914                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5915                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5916       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5917       fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5918       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2[nlm] ) ;
5919       
5920       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2",snlm[nlm].Data()),
5921                                                            Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5922                                                            nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5923       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5924       fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5925       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2[nlm] ) ;
5926       
5927       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2",snlm[nlm].Data()),
5928                                                             Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5929                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5930       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5931       fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5932       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2[nlm] ) ;
5933       
5934       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2",snlm[nlm].Data()),
5935                                                             Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5936                                                             nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5937       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5938       fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm]  ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5939       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2[nlm] ) ;
5940       
5941       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5942                                                                    Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
5943                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5944       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5945       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5946       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2[nlm]) ;
5947       
5948       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2",snlm[nlm].Data()),
5949                                                                    Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
5950                                                                    nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5951       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5952       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5953       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2[nlm]) ;
5954       
5955       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5956                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5957                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5958       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5959       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5960       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2[nlm]) ;
5961       
5962       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2",snlm[nlm].Data()),
5963                                                                     Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{pi0 reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
5964                                                                     nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5965       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5966       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]   ->SetXTitle("#it{E}_{pi0 reco} (GeV)");
5967       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2[nlm]) ;
5968       
5969       
5970       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5971                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs E for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
5972                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5973       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5974       fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5975       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM1vsELM1[nlm] ) ;
5976       
5977       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5978                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
5979                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5980       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5981       fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E} (GeV)");
5982       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM1vsELM1[nlm] ) ;
5983       
5984       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5985                                                                   Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
5986                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5987       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5988       fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5989       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM1vsELM1[nlm] ) ;
5990       
5991       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM1vsELM1",snlm[nlm].Data()),
5992                                                                   Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
5993                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
5994       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
5995       fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
5996       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM1vsELM1[nlm] ) ;
5997       
5998       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
5999                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6000                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6001       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6002       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6003       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM1vsELM1[nlm]) ;
6004       
6005       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6006                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6007                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6008       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6009       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6010       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM1vsELM1[nlm]) ;
6011       
6012       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6013                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6014                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6015       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6016       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6017       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6018       
6019       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM1vsELM1",snlm[nlm].Data()),
6020                                                                           Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6021                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6022       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6023       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6024       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM1vsELM1[nlm]) ;
6025       
6026       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6027                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima",snlm[nlm].Data()),
6028                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6029       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6030       fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6031       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMDiffELM2vsELM2[nlm] ) ;
6032       
6033       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6034                                                                  Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima",snlm[nlm].Data()),
6035                                                                  nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6036       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6037       fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6038       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMDiffELM2vsELM2[nlm] ) ;
6039       
6040       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6041                                                                   Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima",snlm[nlm].Data()),
6042                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6043       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6044       fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6045       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMDiffELM2vsELM2[nlm] ) ;
6046       
6047       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sDiffELM2vsELM2",snlm[nlm].Data()),
6048                                                                   Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima",snlm[nlm].Data()),
6049                                                                   nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6050       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6051       fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm]  ->SetXTitle("#it{E}_{reco} (GeV)");
6052       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMDiffELM2vsELM2[nlm] ) ;
6053       
6054       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6055                                                                          Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit High Local Maxima, there was an overlap",snlm[nlm].Data()),
6056                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6057       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6058       fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6059       outputContainer->Add(fhMCPi0DecayPhotonHitHighLMOverlapDiffELM2vsELM2[nlm]) ;
6060       
6061       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjHighLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6062                                                                          Form("#it{E}_{reco}-#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to High Local Maxima, there was an overlap",snlm[nlm].Data()),
6063                                                                          nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6064       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6065       fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6066       outputContainer->Add(fhMCPi0DecayPhotonAdjHighLMOverlapDiffELM2vsELM2[nlm]) ;
6067       
6068       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonHitOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6069                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6070                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6071       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6072       fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6073       outputContainer->Add(fhMCPi0DecayPhotonHitOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6074       
6075       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   = new TH2F(Form("hMCPi0DecayPhotonAdjOtherLM%sOverlapDiffELM2vsELM2",snlm[nlm].Data()),
6076                                                                           Form("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen} vs #it{E}_{reco} for merged pi0 cluster, #it{NLM}=%s, decay photon hit cells adjacent to Other Local Maxima, there was an overlap",snlm[nlm].Data()),
6077                                                                           nptbins,ptmin,ptmax,200,-2,2);//nptbins,-ptmax/4,ptmax/4);
6078       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetYTitle("(#it{E}_{reco}-#it{E}_{gen})/#it{E}_{gen}");
6079       fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]   ->SetXTitle("#it{E}_{reco} (GeV)");
6080       outputContainer->Add(fhMCPi0DecayPhotonAdjOtherLMOverlapDiffELM2vsELM2[nlm]) ;
6081       
6082     }
6083     
6084     fhMCEOverlapType = new TH2F("hMCEOverlapType","Kind of overlap particle, neutral clusters",
6085                                 nptbins,ptmin,ptmax,5,0,5);
6086     //fhMCEOverlapType   ->SetYTitle("Overlap Type");
6087     fhMCEOverlapType->GetYaxis()->SetBinLabel(1 ,"#gamma");
6088     fhMCEOverlapType->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6089     fhMCEOverlapType->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6090     fhMCEOverlapType->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6091     fhMCEOverlapType->GetYaxis()->SetBinLabel(5 ,"??");
6092     fhMCEOverlapType->SetXTitle("Cluster #it{E} (GeV)");
6093     outputContainer->Add(fhMCEOverlapType) ;
6094     
6095     fhMCEOverlapTypeMatch = new TH2F("hMCEOverlapTypeMatched","Kind of overlap particle, charged clusters",
6096                                      nptbins,ptmin,ptmax,5,0,5);
6097     //fhMCEOverlapTypeMatch   ->SetYTitle("Overlap Type");
6098     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(1 ,"#gamma");
6099     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(2 ,"e^{#pm}");
6100     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(3 ,"hadron^{#pm}");
6101     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(4 ,"hadron^{0}");
6102     fhMCEOverlapTypeMatch->GetYaxis()->SetBinLabel(5 ,"??");
6103     fhMCEOverlapTypeMatch->SetXTitle("Cluster #it{E} (GeV)");
6104     outputContainer->Add(fhMCEOverlapTypeMatch) ;
6105     
6106   }// MC analysis, check overlaps
6107   
6108   
6109   if(IsDataMC())
6110   {
6111     for(Int_t inlm = 0; inlm < 3; inlm++)
6112     {
6113       fhAsyMCGenRecoDiffMCPi0[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0",snlm[inlm].Data()),
6114                                                 Form("Reconstructed - Generated asymmetry with #it{NLM}=%d vs E, MC Pi0",inlm),
6115                                                 nptbins,ptmin,ptmax,200,-1,1);
6116       fhAsyMCGenRecoDiffMCPi0[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6117       fhAsyMCGenRecoDiffMCPi0[inlm]->SetXTitle("#it{E} (GeV)");
6118       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0[inlm]) ;
6119       
6120       fhAsyMCGenRecoDiffMCPi0Conv[inlm]  = new TH2F(Form("hAsyMCGenRecoFracNLocMax%sMCPi0Conv",snlm[inlm].Data()),
6121                                                 Form("Reconstructed - Generated asymmetry  with #it{NLM}=%d vs E, MC Pi0Conv",inlm),
6122                                                 nptbins,ptmin,ptmax,200,-1,1);
6123       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetYTitle("#it{A}_{reco} - #it{A}_{gen}");
6124       fhAsyMCGenRecoDiffMCPi0Conv[inlm]->SetXTitle("#it{E} (GeV)");
6125       outputContainer->Add(fhAsyMCGenRecoDiffMCPi0Conv[inlm]) ;
6126     }
6127   }
6128   
6129   if(fFillArmenterosHisto)
6130   {
6131     Int_t narmbins = 400;
6132     Float_t armmin = 0;
6133     Float_t armmax = 0.4;
6134     
6135     for(Int_t i = 0; i < 7; i++) // MC bin
6136     {
6137       for(Int_t j = 0; j < 4; j++) // E bin
6138       {
6139         fhArmNLocMax1[i][j]  = new TH2F(Form("hArmNLocMax1EBin%d%s",j,pname[i].Data()),
6140                                          Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6141                                          200, -1, 1, narmbins,armmin,armmax);
6142         fhArmNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6143         fhArmNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6144         outputContainer->Add(fhArmNLocMax1[i][j]) ;
6145         
6146         fhArmNLocMax2[i][j]  = new TH2F(Form("hArmNLocMax2EBin%d%s",j,pname[i].Data()),
6147                                          Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6148                                          200, -1, 1, narmbins,armmin,armmax);
6149         fhArmNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6150         fhArmNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6151         outputContainer->Add(fhArmNLocMax2[i][j]) ;
6152         
6153         fhArmNLocMaxN[i][j]  = new TH2F(Form("hArmNLocMaxNEBin%d%s",j,pname[i].Data()),
6154                                          Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6155                                          200, -1, 1, narmbins,armmin,armmax);
6156         fhArmNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6157         fhArmNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6158         outputContainer->Add(fhArmNLocMaxN[i][j]) ;
6159         
6160         if(asyOn || m02On)
6161         {
6162           fhArmAfterCutsNLocMax1[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax1EBin%d%s",j,pname[i].Data()),
6163                                           Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6164                                           200, -1, 1, narmbins,armmin,armmax);
6165           fhArmAfterCutsNLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6166           fhArmAfterCutsNLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6167           outputContainer->Add(fhArmAfterCutsNLocMax1[i][j]) ;
6168           
6169           fhArmAfterCutsNLocMax2[i][j]  = new TH2F(Form("hArmAfterCutsNLocMax2EBin%d%s",j,pname[i].Data()),
6170                                           Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6171                                           200, -1, 1, narmbins,armmin,armmax);
6172           fhArmAfterCutsNLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6173           fhArmAfterCutsNLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6174           outputContainer->Add(fhArmAfterCutsNLocMax2[i][j]) ;
6175           
6176           fhArmAfterCutsNLocMaxN[i][j]  = new TH2F(Form("hArmAfterCutsNLocMaxNEBin%d%s",j,pname[i].Data()),
6177                                           Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6178                                           200, -1, 1, narmbins,armmin,armmax);
6179           fhArmAfterCutsNLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6180           fhArmAfterCutsNLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6181           outputContainer->Add(fhArmAfterCutsNLocMaxN[i][j]) ;
6182         }
6183
6184         fhArmPi0NLocMax1[i][j]  = new TH2F(Form("hArmPi0NLocMax1EBin%d%s",j,pname[i].Data()),
6185                                                  Form("Armenteros of splitted cluster with #it{NLM}=1, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6186                                                  200, -1, 1, narmbins,armmin,armmax);
6187         fhArmPi0NLocMax1[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6188         fhArmPi0NLocMax1[i][j]->SetXTitle("#alpha^{Arm}");
6189         outputContainer->Add(fhArmPi0NLocMax1[i][j]) ;
6190         
6191         fhArmPi0NLocMax2[i][j]  = new TH2F(Form("hArmPi0NLocMax2EBin%d%s",j,pname[i].Data()),
6192                                                  Form("Armenteros of splitted cluster with #it{NLM}=2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6193                                                  200, -1, 1, narmbins,armmin,armmax);
6194         fhArmPi0NLocMax2[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6195         fhArmPi0NLocMax2[i][j]->SetXTitle("#alpha^{Arm}");
6196         outputContainer->Add(fhArmPi0NLocMax2[i][j]) ;
6197         
6198         fhArmPi0NLocMaxN[i][j]  = new TH2F(Form("hArmPi0NLocMaxNEBin%d%s",j,pname[i].Data()),
6199                                                  Form("Armenteros of splitted cluster with NLM>2, %s, %s",sEBin[j].Data(),ptype[i].Data()),
6200                                                  200, -1, 1, narmbins,armmin,armmax);
6201         fhArmPi0NLocMaxN[i][j]->SetYTitle("#it{p}_{T}^{Arm}");
6202         fhArmPi0NLocMaxN[i][j]->SetXTitle("#alpha^{Arm}");
6203         outputContainer->Add(fhArmPi0NLocMaxN[i][j]) ;
6204  
6205       }
6206     }
6207   }
6208   
6209   return outputContainer ;
6210   
6211 }
6212
6213 //_____________________________________________________________________________
6214 void AliAnaInsideClusterInvariantMass::GetMCIndex(AliVCluster* cluster,
6215                                                   Int_t & mcindex, Int_t & tag)
6216 {
6217   
6218   // Assign mc index depending on MC bit set, to be used in histograms arrays
6219     
6220   tag   = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(),fCalorimeter);
6221   
6222   if      ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
6223            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
6224   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)  )      mcindex = kmcPi0Conv;
6225   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta)  )      mcindex = kmcEta;
6226   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6227            !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
6228   else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
6229             GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
6230   else if (!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)  ) mcindex = kmcHadron;
6231  
6232   //printf("MC index %d\n",mcindex);
6233   
6234 }
6235
6236 //____________________________________________________________________________________________
6237 void AliAnaInsideClusterInvariantMass::GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex,
6238                                                         Int_t mctag, Bool_t matched,
6239                                                         Float_t & eprim, Float_t & asymGen,
6240                                                         Float_t & angleGen, Int_t & noverlaps )
6241 {
6242   // Check origin of the candidates, get primary kinematics if overlapped meson decay
6243   
6244   Bool_t ok      = kFALSE;
6245   Int_t  mcLabel = cluster->GetLabel();
6246   
6247   TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
6248   eprim = primary.E();
6249   
6250   Int_t mesonLabel = -1;
6251   
6252   if(mcindex == kmcPi0 || mcindex == kmcEta || mcindex == kmcPi0Conv)
6253   {
6254     if(mcindex == kmcPi0 || mcindex == kmcPi0Conv)
6255     {
6256       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,111,GetReader(),asymGen,angleGen,ok);
6257       asymGen = TMath::Abs(asymGen);
6258       TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok,mesonLabel);
6259       if(grandmom.E() > 0 && ok) eprim =  grandmom.E();
6260     }
6261     else
6262     {
6263       GetMCAnalysisUtils()->GetMCDecayAsymmetryAngleForPDG(mcLabel,221,GetReader(),asymGen,angleGen,ok);
6264       asymGen = TMath::Abs(asymGen);
6265       TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok,mesonLabel);
6266       if(grandmom.E() > 0 && ok) eprim =  grandmom.E();
6267     }
6268   }
6269   
6270   if(!fFillMCOverlapHisto) return;
6271     
6272   const UInt_t nlabels = cluster->GetNLabels();
6273   Int_t overpdg[nlabels];
6274   noverlaps = GetMCAnalysisUtils()->GetNOverlaps(cluster->GetLabels(), nlabels,mctag,mesonLabel,GetReader(),overpdg);
6275
6276   for(Int_t iover = 0; iover < noverlaps; iover++)
6277   {
6278     Float_t histobin = -1;
6279     Int_t   mpdg     = overpdg[iover];
6280     
6281     if     (mpdg==22)      histobin = 0.5;
6282     else if(TMath::Abs(mpdg)==11) histobin = 1.5;
6283     else if(mpdg==-999999) histobin = 4.5;
6284     else
6285     {
6286       Double_t charge = TDatabasePDG::Instance()->GetParticle(mpdg)->Charge();
6287       if(TMath::Abs(charge) > 0 ) histobin = 2.5;
6288       else                        histobin = 3.5;
6289       //printf("charge %f\n",charge);
6290     }
6291     
6292     //printf("\t pdg = %d, histobin %2.1f\n",mpdg,histobin);
6293     if(histobin > 0)
6294     {
6295       if(matched)fhMCEOverlapType     ->Fill(cluster->E(),histobin);
6296       else       fhMCEOverlapTypeMatch->Fill(cluster->E(),histobin);
6297     }
6298   }
6299 }
6300
6301 //___________________________________________
6302 void AliAnaInsideClusterInvariantMass::Init()
6303 {
6304   //Init
6305   //Do some checks
6306   
6307   if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
6308   {
6309     AliFatal("!!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
6310   }
6311   else  if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
6312   {
6313     AliFatal("!!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
6314   }
6315   
6316   if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
6317   {
6318     AliFatal("!!STOP: You want to use pure MC data!!\n");
6319   }
6320   
6321 }
6322
6323 //_____________________________________________________
6324 void AliAnaInsideClusterInvariantMass::InitParameters()
6325 {
6326   //Initialize the parameters of the analysis.  
6327   AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
6328   
6329   fCalorimeter = "EMCAL" ;
6330
6331   fMinNCells   = 4 ;
6332   fMinBadDist  = 2 ;
6333   
6334   fHistoECut   = 8 ;
6335   
6336   fSSWeightN    = 10;
6337   fSSWeight [0] = 4.00;  fSSWeight [1] = 4.10; fSSWeight [2] = 4.20; fSSWeight [3] = 4.30; fSSWeight [4] = 4.35;
6338   fSSWeight [5] = 4.40;  fSSWeight [6] = 4.45; fSSWeight [7] = 4.50; fSSWeight [8] = 4.55; fSSWeight [9] = 4.60;
6339   fSSWeight[10] = 4.70;  fSSWeight[11] = 4.80; fSSWeight[12] = 4.90; fSSWeight[13] = 5.00; fSSWeight[14] = 5.10;
6340   fSSWeight[15] = 5.20;  fSSWeight[16] = 5.50; fSSWeight[17] = 5.75; fSSWeight[18] = 6.00; fSSWeight[19] = 7.00;
6341   
6342   fSSECellCutN    = 10;
6343   fSSECellCut [0] = 0.05;  fSSECellCut [1] = 0.06;  fSSECellCut [2] = 0.07; fSSECellCut [3] = 0.08; fSSECellCut [4] = 0.09;
6344   fSSECellCut [5] = 0.10;  fSSECellCut [6] = 0.11;  fSSECellCut [7] = 0.12; fSSECellCut [8] = 0.13; fSSECellCut [9] = 0.14;
6345   fSSECellCut[10] = 0.15;  fSSECellCut[11] = 0.16;  fSSECellCut[12] = 0.17; fSSECellCut[13] = 0.18; fSSECellCut[14] = 0.19;
6346   fSSECellCut[15] = 0.20;  fSSECellCut[16] = 0.21;  fSSECellCut[17] = 0.22; fSSECellCut[18] = 0.23; fSSECellCut[19] = 0.24;
6347
6348   fNLMSettingN = 5;
6349   fNLMMinE   [0] = 0.10; fNLMMinE   [1] = 0.20; fNLMMinE   [2] = 0.35; fNLMMinE   [3] = 0.50; fNLMMinE   [4] = 1.00;
6350   fNLMMinDiff[0] = 0.03; fNLMMinDiff[1] = 0.05; fNLMMinDiff[2] = 0.10; fNLMMinDiff[3] = 0.15; fNLMMinDiff[4] = 0.20;
6351   
6352   fWSimu[0] = 1; // Default, do not correct, change to 1.05-1.1
6353   fWSimu[1] = 0; // Default, do not correct, change to 0.07
6354
6355 }
6356
6357
6358 //__________________________________________________________________
6359 void  AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() 
6360 {
6361   //Search for pi0 in fCalorimeter with shower shape analysis 
6362   
6363   TObjArray * pl       = 0x0; 
6364   AliVCaloCells* cells = 0x0;
6365
6366   //Select the Calorimeter of the photon
6367   if(fCalorimeter == "PHOS")
6368   {
6369     pl    = GetPHOSClusters();
6370     cells = GetPHOSCells();
6371   }
6372   else if (fCalorimeter == "EMCAL")
6373   {
6374     pl    = GetEMCALClusters();
6375     cells = GetEMCALCells();
6376   }
6377   
6378   if(!pl || !cells) 
6379   {
6380     Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
6381     return;
6382   }  
6383   
6384         if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
6385
6386   for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
6387   {
6388     AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));  
6389
6390     //-------------------------------------------
6391     // Get cluster parameters, do some rejection
6392     //-------------------------------------------
6393     
6394     Float_t en = cluster->E();
6395     Float_t l0 = cluster->GetM02();
6396     Int_t   nc = cluster->GetNCells();
6397     Float_t bd = cluster->GetDistanceToBadChannel() ; 
6398     
6399     //If too small or big E or low number of cells, or close to a bad channel skip it
6400     
6401     if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
6402     
6403     //printf("en %2.3f  GetMinEnergy() %2.3f, GetMaxEnergy() %2.3f , nc %d fMinNCells %d\n",en, GetMinEnergy(),GetMaxEnergy(),nc ,fMinNCells);
6404     
6405     // Track-cluster matching
6406     
6407     Bool_t  matched   = IsTrackMatched(cluster,GetReader()->GetInputEvent());
6408     if(!fFillTMHisto && matched) continue ;
6409
6410     // Get cluster angles
6411     
6412     TLorentzVector lv;
6413     cluster->GetMomentum(lv, GetVertex(0));
6414     Float_t eta = lv.Eta();
6415     Float_t phi = lv.Phi();
6416     if(phi<0) phi=+TMath::TwoPi();
6417     
6418     //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d,  bd %2.2f, fMinBadDist %2.2f\n",
6419     //       en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
6420     
6421     if(fFillNLMDiffCutHisto)
6422     {
6423       FillNLMDiffCutHistograms(cluster,cells,matched);
6424       return;
6425     }
6426     
6427     // Get PID, N local maximum, *** split cluster ***
6428     
6429     Int_t    nMax = 0;
6430     Double_t mass = 0., angle = 0.;
6431     TLorentzVector    lv1, lv2;
6432     Int_t    absId1   =-1; Int_t   absId2   =-1;
6433     Float_t  distbad1 =-1; Float_t distbad2 =-1;
6434     Bool_t   fidcut1  = 0; Bool_t  fidcut2  = 0;
6435     
6436     Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
6437                                                                                GetVertex(0), nMax, mass, angle,
6438                                                                                lv1,lv2,absId1,absId2,
6439                                                                                distbad1,distbad2,fidcut1,fidcut2);
6440     if (nMax <= 0) 
6441     {
6442       if(GetDebug() > 0 )
6443         Info("MakeAnalysisFillHistograms","No local maximum found! It did not pass CaloPID selection criteria \n");
6444       
6445       continue;
6446     }
6447     
6448     // Set some index for array histograms
6449     
6450     Int_t inlm = -1;
6451     if     (nMax == 1) inlm = 0;
6452     else if(nMax == 2) inlm = 1;
6453     else if(nMax >  2) inlm = 2;
6454     else Info("MakeAnalysisFillHistograms","Wrong N local maximum -> %d, n cells in cluster %d \n",nMax,nc);
6455
6456     // Skip events where one of the new clusters (lowest energy) is close to an EMCal border or a bad channel
6457     if( (fCheckSplitDistToBad) &&
6458         (!fidcut2 || !fidcut1 || distbad1 < fMinBadDist || distbad2 < fMinBadDist))
6459     {
6460       if(GetDebug() > 1)
6461         Info("MakeAnalysisFillHistograms","Dist to bad channel cl1 %f, cl2 %f; fid cl1 %d, cl2 %d \n",
6462                                  distbad1,distbad2, fidcut1,fidcut2);
6463       
6464       if(distbad1 < fMinBadDist || distbad2 < fMinBadDist)
6465       {
6466         fhMassBadDistClose[inlm]->Fill(en,mass);
6467         fhM02BadDistClose [inlm]->Fill(en,l0  );
6468       }
6469       
6470       if(!fidcut1 || !fidcut2)
6471       {
6472         fhMassOnBorder[inlm]->Fill(en,mass);
6473         fhM02OnBorder [inlm]->Fill(en,l0  );
6474       }
6475       
6476       continue ;
6477     }
6478
6479     // Get sub-cluster parameters
6480     
6481     Float_t e1 = lv1.Energy();
6482     Float_t e2 = lv2.Energy();
6483     
6484     Double_t tof1  = cells->GetCellTime(absId1);
6485     GetCaloUtils()->RecalibrateCellTime(tof1, fCalorimeter, absId1,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6486     tof1*=1.e9;
6487     
6488     Double_t tof2  = cells->GetCellTime(absId2);
6489     GetCaloUtils()->RecalibrateCellTime(tof2, fCalorimeter, absId2,GetReader()->GetInputEvent()->GetBunchCrossNumber());
6490     tof2*=1.e9;
6491     
6492     Double_t t12diff = tof1-tof2;
6493     
6494     Float_t splitFrac = (e1+e2)/en;
6495
6496     Float_t asym = -10;
6497     if(e1+e2>0) asym = (e1-e2)/(e1+e2);
6498     
6499     //
6500     
6501     Int_t ebin = -1;
6502     if(en > 8  && en <= 12) ebin = 0;
6503     if(en > 12 && en <= 16) ebin = 1;
6504     if(en > 16 && en <= 20) ebin = 2;
6505     if(en > 20)             ebin = 3;
6506     
6507     // MC data histograms and some related calculations
6508     // mc tag, n overlaps, asym of generated mesons
6509     
6510     Int_t   mcindex   = -1;
6511     Int_t   mctag     = -1;
6512     Float_t eprim     = -1;
6513     Float_t asymGen   = -2;
6514     Float_t angleGen  =  2000;
6515     Int_t   noverlaps =  0;
6516     
6517     if(IsDataMC())
6518     {
6519       // MC indexes
6520
6521       GetMCIndex(cluster,mcindex,mctag);
6522       
6523       // MC primary kine, generation fractions
6524
6525       GetMCPrimaryKine(cluster,mcindex,mctag,matched,eprim,asymGen,angleGen,noverlaps);
6526         
6527       // For cluster with MC pi0 and more than 1 maxima
6528       
6529      }
6530     
6531     //
6532     
6533     FillHistograms1(en, e1, e2, nMax, mass, l0, eta, phi, matched, mcindex);
6534
6535     //
6536     
6537     if(fFillNCellHisto)
6538       FillNCellHistograms(nc,en, nMax,matched, mcindex,mass,l0);
6539     
6540     //
6541     
6542     if(fFillSSExtraHisto)
6543       FillSSExtraHistograms(cluster, nMax, matched,mcindex,mass,ebin)  ;
6544     
6545     //
6546
6547     if(!matched && ebin >= 0 && fFillEbinHisto)
6548       FillEBinHistograms(ebin,nMax,mcindex,splitFrac,mass,asym,l0);
6549
6550     //
6551     
6552     if(fFillAngleHisto)
6553       FillAngleHistograms(nMax,matched,mcindex,en,e1,e2,angle,mass,angleGen,l0, asym,pidTag,noverlaps);
6554
6555     if(fFillArmenterosHisto && ebin >= 0)
6556       FillArmenterosHistograms(nMax, ebin, mcindex, en, lv1, lv2, l0, pidTag);
6557
6558     if(fFillThetaStarHisto)
6559       FillThetaStarHistograms(nMax,matched,mcindex, en, lv1, lv2, l0, pidTag);
6560
6561     
6562     //---------------------------------------------------------------------
6563     // From here start applying some cuts
6564     //---------------------------------------------------------------------
6565     
6566     // If set, check just on MC clusters when SS cut is applied
6567     if( IsDataMC() && mcindex > 0 && mcindex < 7 && GetCaloPID()->IsInM02Range(l0) )
6568     {
6569       // For cluster with MC pi0 and more than 1 maxima
6570       
6571       if(fFillMCOverlapHisto)
6572         CheckLocalMaximaMCOrigin(cluster, mcindex,noverlaps,e1,e2,mass);
6573       //l0, l1, l2);
6574       
6575       //
6576       
6577       if(fFillMCHisto)
6578         FillMCHistograms(en,e1,e2,ebin,mcindex,noverlaps,l0,mass,
6579                          nMax,matched,splitFrac, asym, eprim,asymGen);
6580       
6581       //
6582       
6583       if(fFillMCOverlapHisto)
6584         FillMCOverlapHistograms(en,eprim,nc,mass,l0,asym,splitFrac,inlm,ebin,matched,mcindex,noverlaps);
6585       
6586     }
6587     
6588     // Fill few histograms, some still without cuts
6589     FillHistograms2(en, eprim, e1, e2, nMax, mass, l0, matched, mcindex);
6590     
6591     if(pidTag==AliCaloPID::kPi0)
6592     {
6593       FillIdPi0Histograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6594       
6595       if(fFillSSWeightHisto && !matched)
6596         FillSSWeightHistograms(cluster, inlm, absId1, absId2);
6597       
6598       if(fFillTMHisto && fFillTMResidualHisto)
6599         FillTrackMatchingHistograms(cluster,nMax,mcindex);
6600       
6601       if(fFillMCOverlapHisto && IsDataMC() && mcindex > 0 && mcindex < 7 && !matched)
6602       {
6603         if     (noverlaps == 0) fhMCEEpriOverlap0IdPi0 [inlm][mcindex]->Fill(en, eprim);
6604         else if(noverlaps == 1) fhMCEEpriOverlap1IdPi0 [inlm][mcindex]->Fill(en, eprim);
6605         else if(noverlaps  > 1) fhMCEEpriOverlapNIdPi0 [inlm][mcindex]->Fill(en, eprim);
6606       }
6607     }
6608     else if(fFillIdEtaHisto && pidTag==AliCaloPID::kEta)
6609     {
6610       FillIdEtaHistograms(en, e1, e2, nc, nMax, t12diff, mass, l0, eta, phi, matched, mcindex);
6611     }
6612     else if(fFillIdConvHisto && pidTag==AliCaloPID::kPhoton)
6613     {
6614       FillIdConvHistograms(en, nMax, asym, mass, l0, matched, mcindex);
6615     }
6616     
6617   }//loop
6618   
6619   if(GetDebug() > 1) Info("MakeAnalysisFillHistograms","END \n");
6620
6621 }
6622
6623 //______________________________________________________________________
6624 void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
6625 {
6626   //Print some relevant parameters set for the analysis
6627   if(! opt)
6628     return;
6629   
6630   printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
6631   AliAnaCaloTrackCorrBaseClass::Print("");
6632   printf("Calorimeter     =     %s\n",  fCalorimeter.Data()) ;
6633   if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n",       GetCaloUtils()->GetLocalMaximaCutE());
6634   if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n",  GetCaloUtils()->GetLocalMaximaCutEDiff());
6635   printf("Min. N Cells =%d \n",         fMinNCells) ;
6636   printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
6637   if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
6638
6639   printf("    \n") ;
6640   
6641
6642
6643 //___________________________________________________________________________________________________________________
6644 void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
6645                                                                                           AliVCaloCells* cells,
6646                                                                                           AliVCluster * cluster,
6647                                                                                           Float_t & l0,   Float_t & l1,
6648                                                                                           Float_t & disp, Float_t & dEta, Float_t & dPhi,
6649                                                                                           Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
6650                                                                                           Float_t eCellMin)
6651 {
6652   // Calculates new center of gravity in the local EMCAL-module coordinates
6653   // and tranfers into global ALICE coordinates
6654   // Calculates Dispersion and main axis
6655   
6656   if(!cluster)
6657   {
6658     AliInfo("Cluster pointer null!");
6659     return;
6660   }
6661   
6662   Double_t eCell       = 0.;
6663   Float_t  fraction    = 1.;
6664   Float_t  recalFactor = 1.;
6665   
6666   Int_t    iSupMod = -1;
6667   Int_t    iTower  = -1;
6668   Int_t    iIphi   = -1;
6669   Int_t    iIeta   = -1;
6670   Int_t    iphi    = -1;
6671   Int_t    ieta    = -1;
6672   Double_t etai    = -1.;
6673   Double_t phii    = -1.;
6674   
6675   Int_t    nstat   = 0 ;
6676   Float_t  wtot    = 0.;
6677   Double_t w       = 0.;
6678   Double_t etaMean = 0.;
6679   Double_t phiMean = 0.;
6680     
6681   Bool_t  shared = GetCaloUtils()-> IsClusterSharedByTwoSuperModules(geom,cluster);
6682
6683   Float_t energy = GetCaloUtils()->RecalibrateClusterEnergy(cluster, cells);
6684   
6685   Float_t simuTotWeight = 0;
6686   if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6687   {
6688     simuTotWeight =  GetCaloUtils()->RecalibrateClusterEnergyWeightCell(cluster, cells,energy);
6689     simuTotWeight/= energy;
6690   }
6691   
6692   //Loop on cells, get weighted parameters
6693   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6694   {
6695     //Get from the absid the supermodule, tower and eta/phi numbers
6696     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6697     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6698     
6699     //Get the cell energy, if recalibration is on, apply factors
6700     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6701     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6702     
6703     if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6704     {
6705       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6706     }
6707     
6708     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6709     
6710     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6711     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6712     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6713     
6714     if(energy > 0 && eCell > eCellMin)
6715     {
6716       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6717         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6718       
6719       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6720
6721       //correct weight, ONLY in simulation
6722       w *= (fWSimu[0] - fWSimu[1] * w );
6723
6724       etai=(Double_t)ieta;
6725       phii=(Double_t)iphi;
6726       
6727       if(w > 0.0)
6728       {
6729         wtot += w ;
6730         nstat++;
6731         //Shower shape
6732         sEta     += w * etai * etai ;
6733         etaMean  += w * etai ;
6734         sPhi     += w * phii * phii ;
6735         phiMean  += w * phii ;
6736         sEtaPhi  += w * etai * phii ;
6737       }
6738     }
6739     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6740     
6741   }//cell loop
6742   
6743   //Normalize to the weight
6744   if (wtot > 0)
6745   {
6746     etaMean /= wtot ;
6747     phiMean /= wtot ;
6748   }
6749   else
6750     AliError(Form("Wrong weight %f\n", wtot));
6751   
6752   //Calculate dispersion
6753   for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
6754   {
6755     //Get from the absid the supermodule, tower and eta/phi numbers
6756     geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
6757     geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
6758     
6759     //Get the cell energy, if recalibration is on, apply factors
6760     fraction  = cluster->GetCellAmplitudeFraction(iDigit);
6761     if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
6762     if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
6763     {
6764       recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
6765     }
6766     
6767     eCell  = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
6768     
6769     // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
6770     // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
6771     if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
6772     
6773     if(energy > 0 && eCell > eCellMin)
6774     {
6775       if(GetCaloUtils()->IsMCECellClusFracCorrectionOn())
6776         eCell*=GetCaloUtils()->GetMCECellClusFracCorrection(eCell,energy)/simuTotWeight;
6777       
6778       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
6779       
6780       //correct weight, ONLY in simulation
6781       w *= (fWSimu[0] - fWSimu[1] * w );
6782
6783       etai=(Double_t)ieta;
6784       phii=(Double_t)iphi;
6785       if(w > 0.0)
6786       {
6787         disp +=  w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
6788         dEta +=  w * (etai-etaMean)*(etai-etaMean) ;
6789         dPhi +=  w * (phii-phiMean)*(phii-phiMean) ;
6790       }
6791     }
6792     else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
6793   }// cell loop
6794   
6795   //Normalize to the weigth and set shower shape parameters
6796   if (wtot > 0 && nstat > 1)
6797   {
6798     disp    /= wtot ;
6799     dEta    /= wtot ;
6800     dPhi    /= wtot ;
6801     sEta    /= wtot ;
6802     sPhi    /= wtot ;
6803     sEtaPhi /= wtot ;
6804     
6805     sEta    -= etaMean * etaMean ;
6806     sPhi    -= phiMean * phiMean ;
6807     sEtaPhi -= etaMean * phiMean ;
6808     
6809     l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6810     l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
6811   }
6812   else
6813   {
6814     l0   = 0. ;
6815     l1   = 0. ;
6816     dEta = 0. ; dPhi = 0. ; disp    = 0. ;
6817     sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;
6818   }
6819   
6820 }
6821
6822