]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
MCUtils: Add method to get assymetry in energy of decay pi0 or eta
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaInsideClusterInvariantMass.cxx
CommitLineData
992b14a7 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>
3c1d9afb 32#include <TH2F.h>
992b14a7 33
34// --- Analysis system ---
35#include "AliAnaInsideClusterInvariantMass.h"
36#include "AliCaloTrackReader.h"
37#include "AliMCAnalysisUtils.h"
38#include "AliStack.h"
39#include "AliFiducialCut.h"
40#include "TParticle.h"
41#include "AliVCluster.h"
42#include "AliAODEvent.h"
43#include "AliAODMCParticle.h"
44#include "AliEMCALGeoParams.h"
45
c5693f62 46// --- Detectors ---
47//#include "AliPHOSGeoUtils.h"
48#include "AliEMCALGeometry.h"
49
992b14a7 50ClassImp(AliAnaInsideClusterInvariantMass)
51
52//__________________________________________________________________
53AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
745913ae 54 AliAnaCaloTrackCorrBaseClass(),
29ca9cad 55 fCalorimeter(""),
71e3889f 56 fM02MaxCut(0), fM02MinCut(0),
8e81c2cf 57 fMinNCells(0), fMinBadDist(0),
58 fFillTMResidualHisto(kFALSE),
59 fFillSSExtraHisto(kFALSE)
992b14a7 60{
61 //default ctor
62
63 // Init array of histograms
5c46c992 64 for(Int_t i = 0; i < 7; i++)
65 {
66 for(Int_t j = 0; j < 2; j++)
67 {
5c46c992 68 fhMassNLocMax1[i][j] = 0;
69 fhMassNLocMax2[i][j] = 0;
70 fhMassNLocMaxN[i][j] = 0;
71 fhNLocMax[i][j] = 0;
5c46c992 72 fhNLocMaxM02Cut[i][j] = 0;
73 fhM02NLocMax1[i][j] = 0;
74 fhM02NLocMax2[i][j] = 0;
75 fhM02NLocMaxN[i][j] = 0;
76 fhNCellNLocMax1[i][j] = 0;
77 fhNCellNLocMax2[i][j] = 0;
78 fhNCellNLocMaxN[i][j] = 0;
79 fhM02Pi0LocMax1[i][j] = 0;
80 fhM02EtaLocMax1[i][j] = 0;
81 fhM02ConLocMax1[i][j] = 0;
82 fhM02Pi0LocMax2[i][j] = 0;
83 fhM02EtaLocMax2[i][j] = 0;
84 fhM02ConLocMax2[i][j] = 0;
85 fhM02Pi0LocMaxN[i][j] = 0;
86 fhM02EtaLocMaxN[i][j] = 0;
87 fhM02ConLocMaxN[i][j] = 0;
88
0137016b 89 fhMassM02NLocMax1[i][j]= 0;
90 fhMassM02NLocMax2[i][j]= 0;
d2655d46 91 fhMassM02NLocMaxN[i][j]= 0;
92 fhMassDispEtaNLocMax1[i][j]= 0;
93 fhMassDispEtaNLocMax2[i][j]= 0;
94 fhMassDispEtaNLocMaxN[i][j]= 0;
95 fhMassDispPhiNLocMax1[i][j]= 0;
96 fhMassDispPhiNLocMax2[i][j]= 0;
97 fhMassDispPhiNLocMaxN[i][j]= 0;
98 fhMassDispAsyNLocMax1[i][j]= 0;
99 fhMassDispAsyNLocMax2[i][j]= 0;
100 fhMassDispAsyNLocMaxN[i][j]= 0;
8e81c2cf 101
102 fhMCGenFracNLocMax1[i][j]= 0;
103 fhMCGenFracNLocMax2[i][j]= 0;
104 fhMCGenFracNLocMaxN[i][j]= 0;
105 }
106
107 for(Int_t jj = 0; jj < 4; jj++)
108 {
109 fhM02MCGenFracNLocMax1Ebin[i][jj]= 0;
110 fhM02MCGenFracNLocMax2Ebin[i][jj]= 0;
111 fhM02MCGenFracNLocMaxNEbin[i][jj]= 0;
112
113 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
114 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
115 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
5c46c992 116 }
117
118 fhTrackMatchedDEtaLocMax1[i] = 0;
119 fhTrackMatchedDPhiLocMax1[i] = 0;
120 fhTrackMatchedDEtaLocMax2[i] = 0;
121 fhTrackMatchedDPhiLocMax2[i] = 0;
122 fhTrackMatchedDEtaLocMaxN[i] = 0;
123 fhTrackMatchedDPhiLocMaxN[i] = 0;
243c2909 124
992b14a7 125 }
126
5c46c992 127 for(Int_t i = 0; i < 2; i++)
128 {
129 fhAnglePairLocMax1 [i] = 0;
130 fhAnglePairLocMax2 [i] = 0;
131 fhAnglePairLocMaxN [i] = 0;
132 fhAnglePairMassLocMax1[i] = 0;
133 fhAnglePairMassLocMax2[i] = 0;
134 fhAnglePairMassLocMaxN[i] = 0;
135 }
136
7b686344 137 for(Int_t i = 0; i < 4; i++)
138 {
139 fhMassM02NLocMax1Ebin[i] = 0 ;
140 fhMassM02NLocMax2Ebin[i] = 0 ;
141 fhMassM02NLocMaxNEbin[i] = 0 ;
d2655d46 142
143 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
144 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
145 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
146
147 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
148 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
149 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
150
151 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
152 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
153 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
8e81c2cf 154
155 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
156 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
157 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
7b686344 158 }
159
992b14a7 160 InitParameters();
161
162}
163
164//_______________________________________________________________
165TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
166{
167 //Save parameters used for analysis
168 TString parList ; //this will be list of parameters used for this analysis.
169 const Int_t buffersize = 255;
170 char onePar[buffersize] ;
171
172 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
173 parList+=onePar ;
174
243c2909 175 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
992b14a7 176 parList+=onePar ;
dbba06ca 177 snprintf(onePar,buffersize,"fLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
29ca9cad 178 parList+=onePar ;
dbba06ca 179 snprintf(onePar,buffersize,"fLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
29ca9cad 180 parList+=onePar ;
71e3889f 181 snprintf(onePar,buffersize,"%2.2f< M02 < %2.2f \n", fM02MinCut, fM02MaxCut) ;
992b14a7 182 parList+=onePar ;
e23a0471 183 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2cb134fb 184 parList+=onePar ;
3c1d9afb 185 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
992b14a7 186 parList+=onePar ;
243c2909 187
992b14a7 188 return new TObjString(parList) ;
189
190}
191
992b14a7 192//________________________________________________________________
193TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
194{
195 // Create histograms to be saved in output file and
196 // store them in outputContainer
197 TList * outputContainer = new TList() ;
198 outputContainer->SetName("InsideClusterHistos") ;
199
745913ae 200 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
201 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
202 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
203 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
992b14a7 204
5c46c992 205 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
206 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
207 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
208 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
209 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
210 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
211
992b14a7 212 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron"};
213 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron"};
214
215 Int_t n = 1;
216
217 if(IsDataMC()) n = 7;
218
243c2909 219 Int_t nMaxBins = 10;
220
5c46c992 221 TString sMatched[] = {"","Matched"};
222
223 for(Int_t i = 0; i < n; i++)
224 {
225
226 for(Int_t j = 0; j < 2; j++)
227 {
228
229 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
0137016b 230 Form("Invariant mass of 2 highest energy cells vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 231 nptbins,ptmin,ptmax,mbins,mmin,mmax);
232 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
233 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
234 outputContainer->Add(fhMassNLocMax1[i][j]) ;
235
236 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
0137016b 237 Form("Invariant mass of 2 local maxima cells vs E,%s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 238 nptbins,ptmin,ptmax,mbins,mmin,mmax);
239 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
240 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
241 outputContainer->Add(fhMassNLocMax2[i][j]) ;
242
243 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
0137016b 244 Form("Invariant mass of N>2 local maxima cells vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 245 nptbins,ptmin,ptmax,mbins,mmin,mmax);
246 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
247 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
248 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
249
0137016b 250 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
251 Form("Invariant mass of 2 highest energy cells #lambda_{0}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
252 ssbins,ssmin,ssmax,mbins,mmin,mmax);
253 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
254 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
255 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
256
257 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
258 Form("Invariant mass of 2 local maxima cells #lambda_{0}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
259 ssbins,ssmin,ssmax,mbins,mmin,mmax);
260 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
261 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
262 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
263
264 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
265 Form("Invariant mass of N>2 local maxima cells vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
266 ssbins,ssmin,ssmax,mbins,mmin,mmax);
267 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
268 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
269 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
270
8e81c2cf 271 if(fFillSSExtraHisto)
272 {
273 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
274 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
275 ssbins,ssmin,ssmax,mbins,mmin,mmax);
276 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
277 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
278 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
279
280 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
281 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
282 ssbins,ssmin,ssmax,mbins,mmin,mmax);
283 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
284 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
285 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
286
287 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
288 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
289 ssbins,ssmin,ssmax,mbins,mmin,mmax);
290 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
291 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
292 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
293
294 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
295 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
296 ssbins,ssmin,ssmax,mbins,mmin,mmax);
297 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
298 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
299 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
300
301 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
302 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
303 ssbins,ssmin,ssmax,mbins,mmin,mmax);
304 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
305 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
306 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
307
308 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
309 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
310 ssbins,ssmin,ssmax,mbins,mmin,mmax);
311 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
312 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
313 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
314
315 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
316 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 > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
317 200,-1,1,mbins,mmin,mmax);
318 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
319 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
320 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
321
322 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
323 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 > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
324 200,-1,1,mbins,mmin,mmax);
325 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
326 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
327 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
328
329 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
330 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()),
331 200,-1,1,mbins,mmin,mmax);
332 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
333 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
334 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
335 }
d2655d46 336
5c46c992 337 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
338 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
339 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
340 fhNLocMax[i][j] ->SetYTitle("N maxima");
341 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
342 outputContainer->Add(fhNLocMax[i][j]) ;
3c1d9afb 343
5c46c992 344 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
71e3889f 345 Form("Number of local maxima in cluster %s for %2.2f < M02 < %2.2f",ptype[i].Data(),fM02MinCut,fM02MaxCut),
5c46c992 346 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
347 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
348 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
349 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
350
351
352 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
353 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
354 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
355 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
356 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
357 outputContainer->Add(fhM02NLocMax1[i][j]) ;
358
359 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
360 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
361 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
362 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
363 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
364 outputContainer->Add(fhM02NLocMax2[i][j]) ;
365
5c46c992 366 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
367 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
368 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
369 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
370 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
371 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
372
8e81c2cf 373
374 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
375 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
376 nptbins,ptmin,ptmax,200,0,2);
377 fhMCGenFracNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
378 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
379 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
5c46c992 380
8e81c2cf 381 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
382 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
383 nptbins,ptmin,ptmax,200,0,2);
384 fhMCGenFracNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
385 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
386 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
5c46c992 387
388
8e81c2cf 389 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
390 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
391 nptbins,ptmin,ptmax,200,0,2);
392 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
393 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
394 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
5c46c992 395
8e81c2cf 396 if(fFillSSExtraHisto)
397 {
398 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
399 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
400 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
401 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
402 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
403 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
404
405 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
406 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
407 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
408 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
409 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
410 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
411
412
413 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
414 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
415 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
416 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
417 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
418 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
419 }
5c46c992 420
421 fhM02Pi0LocMax1[i][j] = new TH2F(Form("hM02Pi0LocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 422 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 1",
423 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 424 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
425 fhM02Pi0LocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
426 fhM02Pi0LocMax1[i][j] ->SetXTitle("E (GeV)");
427 outputContainer->Add(fhM02Pi0LocMax1[i][j]) ;
428
429 fhM02EtaLocMax1[i][j] = new TH2F(Form("hM02EtaLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 430 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
431 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 432 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
433 fhM02EtaLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
434 fhM02EtaLocMax1[i][j] ->SetXTitle("E (GeV)");
435 outputContainer->Add(fhM02EtaLocMax1[i][j]) ;
436
437 fhM02ConLocMax1[i][j] = new TH2F(Form("hM02ConLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 438 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
439 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 440 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
441 fhM02ConLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
442 fhM02ConLocMax1[i][j] ->SetXTitle("E (GeV)");
443 outputContainer->Add(fhM02ConLocMax1[i][j]) ;
444
445 fhM02Pi0LocMax2[i][j] = new TH2F(Form("hM02Pi0LocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 446 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 2",
447 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 448 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
449 fhM02Pi0LocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
450 fhM02Pi0LocMax2[i][j] ->SetXTitle("E (GeV)");
451 outputContainer->Add(fhM02Pi0LocMax2[i][j]) ;
452
453 fhM02EtaLocMax2[i][j] = new TH2F(Form("hM02EtaLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 454 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
455 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 456 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
457 fhM02EtaLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
458 fhM02EtaLocMax2[i][j] ->SetXTitle("E (GeV)");
459 outputContainer->Add(fhM02EtaLocMax2[i][j]) ;
460
461 fhM02ConLocMax2[i][j] = new TH2F(Form("hM02ConLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 462 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
463 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 464 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
465 fhM02ConLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
466 fhM02ConLocMax2[i][j] ->SetXTitle("E (GeV)");
467 outputContainer->Add(fhM02ConLocMax2[i][j]) ;
468
469 fhM02Pi0LocMaxN[i][j] = new TH2F(Form("hM02Pi0LocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 470 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max > 2",
471 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 472 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
473 fhM02Pi0LocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
474 fhM02Pi0LocMaxN[i][j] ->SetXTitle("E (GeV)");
475 outputContainer->Add(fhM02Pi0LocMaxN[i][j]) ;
476
477 fhM02EtaLocMaxN[i][j] = new TH2F(Form("hM02EtaLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 478 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max > 2",
479 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 480 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
481 fhM02EtaLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
482 fhM02EtaLocMaxN[i][j] ->SetXTitle("E (GeV)");
483 outputContainer->Add(fhM02EtaLocMaxN[i][j]) ;
484
485 fhM02ConLocMaxN[i][j] = new TH2F(Form("hM02ConLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 486 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
487 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 488 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
489 fhM02ConLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
490 fhM02ConLocMaxN[i][j] ->SetXTitle("E (GeV)");
491 outputContainer->Add(fhM02ConLocMaxN[i][j]) ;
492
493 } // matched, not matched
494
8e81c2cf 495 for(Int_t j = 0; j < 4; j++)
496 {
497 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
498 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
499 200,0,2,mbins,mmin,mmax);
500 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
501 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{reco} / E_{gen}");
502 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
503
504 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
505 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
506 200,0,2,mbins,mmin,mmax);
507 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
508 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{reco} / E_{gen}");
509 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
510
511 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
512 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
513 200,0,2,mbins,mmin,mmax);
514 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
515 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{reco} / E_{gen}");
516 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
517
518 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
519 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
520 200,0,2,ssbins,ssmin,ssmax);
521 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
522 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{reco} / E_{gen}");
523 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
524
525 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
526 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
527 200,0,2,ssbins,ssmin,ssmax);
528 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
529 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{reco} / E_{gen}");
530 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
531
532 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
533 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
534 200,0,2,ssbins,ssmin,ssmax);
535 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
536 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{reco} / E_{gen}");
537 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
538 }
5c46c992 539 } // MC particle list
540
7b686344 541 for(Int_t i = 0; i < 4; i++)
542 {
8e81c2cf 543
544 if(IsDataMC())
545 {
546 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
547 Form("Asymmetry of MC #pi^{0} of 2 highest energy cells #lambda_{0}^{2}, E bin %d",i),
548 ssbins,ssmin,ssmax,200,0,2);
549 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
550 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
551 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
552
553 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
554 Form("Asymmetry of MC #pi^{0} of 2 local maxima cells #lambda_{0}^{2}, E bin %d",i),
555 ssbins,ssmin,ssmax,200,0,2);
556 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
557 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
558 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
559
560 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
561 Form("Asymmetry of MC #pi^{0} of N>2 local maxima cells vs #lambda_{0}^{2}, E bin %d",i),
562 ssbins,ssmin,ssmax,200,0,2);
563 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
564 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
565 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
566 }
567
7b686344 568 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
569 Form("Invariant mass of 2 highest energy cells #lambda_{0}^{2}, E bin %d",i),
570 ssbins,ssmin,ssmax,mbins,mmin,mmax);
571 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
572 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
573 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
574
575 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
576 Form("Invariant mass of 2 local maxima cells #lambda_{0}^{2}, E bin %d",i),
577 ssbins,ssmin,ssmax,mbins,mmin,mmax);
578 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
579 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
580 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
581
582 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
583 Form("Invariant mass of N>2 local maxima cells vs #lambda_{0}^{2}, E bin %d",i),
584 ssbins,ssmin,ssmax,mbins,mmin,mmax);
585 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
586 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
d2655d46 587 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
588
8e81c2cf 589 if(fFillSSExtraHisto)
590 {
591 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
592 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
593 ssbins,ssmin,ssmax,mbins,mmin,mmax);
594 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
595 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
596 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
597
598 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
599 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
600 ssbins,ssmin,ssmax,mbins,mmin,mmax);
601 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
602 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
603 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
604
605 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
606 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
607 ssbins,ssmin,ssmax,mbins,mmin,mmax);
608 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
609 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
610 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
611
612 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
613 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
614 ssbins,ssmin,ssmax,mbins,mmin,mmax);
615 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
616 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
617 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
618
619 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
620 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
621 ssbins,ssmin,ssmax,mbins,mmin,mmax);
622 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
623 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
624 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
625
626 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
627 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
628 ssbins,ssmin,ssmax,mbins,mmin,mmax);
629 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
630 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
631 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
632
633 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
634 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
635 200,-1,1,mbins,mmin,mmax);
636 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
637 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
638 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
639
640 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
641 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
642 200,-1,1,mbins,mmin,mmax);
643 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
644 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
645 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
646
647 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
648 Form("Invariant mass of N>2 local maxima cells vs A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E bin %d",i),
649 200,-1,1,mbins,mmin,mmax);
650 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
651 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
652 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
653 }
7b686344 654 }
655
8e81c2cf 656 if(fFillTMResidualHisto)
657 {
658 for(Int_t i = 0; i < n; i++)
659 {
660
661 fhTrackMatchedDEtaLocMax1[i] = new TH2F
662 (Form("hTrackMatchedDEtaLocMax1%s",pname[i].Data()),
663 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
664 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
665 fhTrackMatchedDEtaLocMax1[i]->SetYTitle("d#eta");
666 fhTrackMatchedDEtaLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
667
668 fhTrackMatchedDPhiLocMax1[i] = new TH2F
669 (Form("hTrackMatchedDPhiLocMax1%s",pname[i].Data()),
670 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
671 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
672 fhTrackMatchedDPhiLocMax1[i]->SetYTitle("d#phi (rad)");
673 fhTrackMatchedDPhiLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
674
675 outputContainer->Add(fhTrackMatchedDEtaLocMax1[i]) ;
676 outputContainer->Add(fhTrackMatchedDPhiLocMax1[i]) ;
677
678 fhTrackMatchedDEtaLocMax2[i] = new TH2F
679 (Form("hTrackMatchedDEtaLocMax2%s",pname[i].Data()),
680 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
681 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
682 fhTrackMatchedDEtaLocMax2[i]->SetYTitle("d#eta");
683 fhTrackMatchedDEtaLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
684
685 fhTrackMatchedDPhiLocMax2[i] = new TH2F
686 (Form("hTrackMatchedDPhiLocMax2%s",pname[i].Data()),
687 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
688 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
689 fhTrackMatchedDPhiLocMax2[i]->SetYTitle("d#phi (rad)");
690 fhTrackMatchedDPhiLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
691
692 outputContainer->Add(fhTrackMatchedDEtaLocMax2[i]) ;
693 outputContainer->Add(fhTrackMatchedDPhiLocMax2[i]) ;
694
695 fhTrackMatchedDEtaLocMaxN[i] = new TH2F
696 (Form("hTrackMatchedDEtaLocMaxN%s",pname[i].Data()),
697 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
698 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
699 fhTrackMatchedDEtaLocMaxN[i]->SetYTitle("d#eta");
700 fhTrackMatchedDEtaLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
701
702 fhTrackMatchedDPhiLocMaxN[i] = new TH2F
703 (Form("hTrackMatchedDPhiLocMaxN%s",pname[i].Data()),
704 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
705 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
706 fhTrackMatchedDPhiLocMaxN[i]->SetYTitle("d#phi (rad)");
707 fhTrackMatchedDPhiLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
708
709 outputContainer->Add(fhTrackMatchedDEtaLocMaxN[i]) ;
710 outputContainer->Add(fhTrackMatchedDPhiLocMaxN[i]) ;
711 }
5c46c992 712 }
713
714 for(Int_t j = 0; j < 2; j++)
715 {
716
717 fhAnglePairLocMax1[j] = new TH2F(Form("hAnglePairLocMax1%s",sMatched[j].Data()),
718 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
719 nptbins,ptmin,ptmax,200,0,0.2);
720 fhAnglePairLocMax1[j]->SetYTitle("#alpha (rad)");
721 fhAnglePairLocMax1[j]->SetXTitle("E (GeV)");
722 outputContainer->Add(fhAnglePairLocMax1[j]) ;
723
724 fhAnglePairLocMax2[j] = new TH2F(Form("hAnglePairLocMax2%s",sMatched[j].Data()),
725 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
726 nptbins,ptmin,ptmax,200,0,0.2);
727 fhAnglePairLocMax2[j]->SetYTitle("#alpha (rad)");
728 fhAnglePairLocMax2[j]->SetXTitle("E (GeV)");
729 outputContainer->Add(fhAnglePairLocMax2[j]) ;
730
731 fhAnglePairLocMaxN[j] = new TH2F(Form("hAnglePairLocMaxN%s",sMatched[j].Data()),
732 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
733 nptbins,ptmin,ptmax,200,0,0.2);
734 fhAnglePairLocMaxN[j]->SetYTitle("#alpha (rad)");
735 fhAnglePairLocMaxN[j]->SetXTitle("E (GeV)");
736 outputContainer->Add(fhAnglePairLocMaxN[j]) ;
737
738 fhAnglePairMassLocMax1[j] = new TH2F(Form("hAnglePairMassLocMax1%s",sMatched[j].Data()),
0137016b 739 Form("Opening angle of 2 highest energy cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
5c46c992 740 mbins,mmin,mmax,200,0,0.2);
741 fhAnglePairMassLocMax1[j]->SetXTitle("M (GeV/c^{2})");
742 fhAnglePairMassLocMax1[j]->SetYTitle("#alpha (rad)");
743 outputContainer->Add(fhAnglePairMassLocMax1[j]) ;
744
745 fhAnglePairMassLocMax2[j] = new TH2F(Form("hAnglePairMassLocMax2%s",sMatched[j].Data()),
0137016b 746 Form("Opening angle of 2 local maxima cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
5c46c992 747 mbins,mmin,mmax,200,0,0.2);
748 fhAnglePairMassLocMax2[j]->SetXTitle("M (GeV/c^{2})");
749 fhAnglePairMassLocMax2[j]->SetYTitle("#alpha (rad)");
750 outputContainer->Add(fhAnglePairMassLocMax2[j]) ;
751
752 fhAnglePairMassLocMaxN[j] = new TH2F(Form("hAnglePairMassLocMaxN%s",sMatched[j].Data()),
0137016b 753 Form("Opening angle of N>2 local maxima cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
5c46c992 754 mbins,mmin,mmax,200,0,0.2);
755 fhAnglePairMassLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
756 fhAnglePairMassLocMaxN[j]->SetYTitle("#alpha (rad)");
757 outputContainer->Add(fhAnglePairMassLocMaxN[j]) ;
992b14a7 758
759 }
760
761 return outputContainer ;
762
763}
764
992b14a7 765//___________________________________________
766void AliAnaInsideClusterInvariantMass::Init()
767{
768 //Init
769 //Do some checks
3c1d9afb 770 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
771 {
992b14a7 772 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
773 abort();
774 }
3c1d9afb 775 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
776 {
992b14a7 777 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
778 abort();
779 }
780
3c1d9afb 781 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
782 {
992b14a7 783 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
784 abort();
785
786 }
787
788}
789
790//_____________________________________________________
791void AliAnaInsideClusterInvariantMass::InitParameters()
792{
793 //Initialize the parameters of the analysis.
794 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
795
796 fCalorimeter = "EMCAL" ;
29ca9cad 797
71e3889f 798 fM02MinCut = 0.26 ;
799 fM02MaxCut = 10 ;
800
992b14a7 801 fMinNCells = 4 ;
2cb134fb 802 fMinBadDist = 2 ;
3c1d9afb 803
992b14a7 804}
805
806
807//__________________________________________________________________
808void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
809{
810 //Search for pi0 in fCalorimeter with shower shape analysis
811
812 TObjArray * pl = 0x0;
813 AliVCaloCells* cells = 0x0;
814
815 //Select the Calorimeter of the photon
2cb134fb 816 if(fCalorimeter == "PHOS")
817 {
992b14a7 818 pl = GetPHOSClusters();
819 cells = GetPHOSCells();
820 }
2cb134fb 821 else if (fCalorimeter == "EMCAL")
822 {
992b14a7 823 pl = GetEMCALClusters();
824 cells = GetEMCALCells();
825 }
826
3c1d9afb 827 if(!pl || !cells)
828 {
992b14a7 829 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
830 return;
831 }
832
833 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
834
2cb134fb 835 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
836 {
992b14a7 837 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
838
839 // Study clusters with large shape parameter
840 Float_t en = cluster->E();
841 Float_t l0 = cluster->GetM02();
842 Int_t nc = cluster->GetNCells();
2cb134fb 843 Float_t bd = cluster->GetDistanceToBadChannel() ;
243c2909 844
d2655d46 845
2cb134fb 846 //If too small or big E or low number of cells, or close to a bad channel skip it
847 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
848
849 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
850 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
851
d2655d46 852 // Get more Shower Shape parameters
853 Float_t ll0 = 0., ll1 = 0.;
854 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
855 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
856
857 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
858 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
859
860 Float_t dispAsy = -1;
861 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
862
3c1d9afb 863 Int_t nMax = 0;
bfdcf7fb 864 Double_t mass = 0., angle = 0.;
865 Double_t e1 = 0., e2 = 0.;
3c1d9afb 866 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
bfdcf7fb 867 GetVertex(0), nMax, mass, angle,e1,e2);
3c1d9afb 868
5c46c992 869 if (nMax <= 0)
870 {
de454976 871 if(GetDebug() > 0 )
872 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5c46c992 873
992b14a7 874 return;
875 }
876
3c1d9afb 877 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
cfc19369 878
3c1d9afb 879 fhNLocMax[0][matched]->Fill(en,nMax);
29ca9cad 880
8e81c2cf 881 if ( nMax == 1 ) { fhM02NLocMax1[0][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMax1[0][matched]->Fill(en,nc) ; }
882 else if( nMax == 2 ) { fhM02NLocMax2[0][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMax2[0][matched]->Fill(en,nc) ; }
883 else if( nMax >= 3 ) { fhM02NLocMaxN[0][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMaxN[0][matched]->Fill(en,nc) ; }
992b14a7 884 else printf("N max smaller than 1 -> %d \n",nMax);
5c46c992 885
886 Float_t dZ = cluster->GetTrackDz();
887 Float_t dR = cluster->GetTrackDx();
888
889 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
890 {
891 dR = 2000., dZ = 2000.;
892 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
893 }
894 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
895
8e81c2cf 896 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 897 {
898 if ( nMax == 1 ) { fhTrackMatchedDEtaLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMax1[0]->Fill(en,dR); }
899 else if( nMax == 2 ) { fhTrackMatchedDEtaLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMax2[0]->Fill(en,dR); }
900 else if( nMax >= 3 ) { fhTrackMatchedDEtaLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMaxN[0]->Fill(en,dR); }
901 }
992b14a7 902
903 // Play with the MC stack if available
904 // Check origin of the candidates
8e81c2cf 905 Int_t mcindex = -1;
906 Float_t eprim = 0;
907 Float_t asymGen = -2;
3c1d9afb 908 if(IsDataMC())
909 {
992b14a7 910 Int_t tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(), 0);
911
c5693f62 912 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0;
913 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
992b14a7 914 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 915 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
992b14a7 916 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 917 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
918 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
919 else mcindex = kmcHadron;
71e3889f 920
5c46c992 921 fhNLocMax[mcindex][matched]->Fill(en,nMax);
3c1d9afb 922
8e81c2cf 923 if (nMax == 1 ) { fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMax1[mcindex][matched]->Fill(en,nc) ; }
924 else if(nMax == 2 ) { fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMax2[mcindex][matched]->Fill(en,nc) ; }
925 else if(nMax >= 3 ) { fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ; if(fFillSSExtraHisto) fhNCellNLocMaxN[mcindex][matched]->Fill(en,nc) ; }
5c46c992 926
8e81c2cf 927 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 928 {
929 if ( nMax == 1 ) { fhTrackMatchedDEtaLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMax1[mcindex]->Fill(en,dR); }
930 else if( nMax == 2 ) { fhTrackMatchedDEtaLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMax2[mcindex]->Fill(en,dR); }
931 else if( nMax >= 3 ) { fhTrackMatchedDEtaLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMaxN[mcindex]->Fill(en,dR); }
29ca9cad 932 }
992b14a7 933
8e81c2cf 934 Bool_t ok = kFALSE;
935 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(cluster->GetLabel(),GetReader(),ok);
936 eprim = primary.E();
937
938 if(mcindex == kmcPi0)
939 {
940 asymGen = GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(cluster->GetLabel(),111,GetReader(),ok);
941 }
942
d2655d46 943 }
944
8e81c2cf 945 Float_t efrac = eprim/en;
946
d2655d46 947 Int_t ebin = -1;
8e81c2cf 948 if(en > 8 && en <= 12) ebin = 0;
949 if(en > 12 && en <= 16) ebin = 1;
950 if(en > 16 && en <= 20) ebin = 2;
d2655d46 951 if(en > 20) ebin = 3;
952
26680f06 953 if (nMax==1)
954 {
955 if( en > 7 )
956 {
d2655d46 957 fhMassM02NLocMax1 [0][matched]->Fill(l0 , mass );
8e81c2cf 958 if(fFillSSExtraHisto)
959 {
960 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
961 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
962 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
963 }
964
a700f620 965 if(IsDataMC())
d2655d46 966 {
8e81c2cf 967 fhMassM02NLocMax1 [mcindex][matched]->Fill(l0 , mass );
968 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
969 if(!matched && ebin >= 0)
970 {
971 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
972 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
973 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
974 }
975
976 if(fFillSSExtraHisto)
977 {
978 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
979 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
980 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
981 }
d2655d46 982 }
26680f06 983 }
984
d2655d46 985 if(!matched && ebin >= 0)
26680f06 986 {
8e81c2cf 987 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
988 if(fFillSSExtraHisto)
989 {
990 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
991 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
992 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
993 }
26680f06 994 }
995 }
996 else if(nMax==2)
997 {
d2655d46 998 if( en > 7 )
999 {
1000 fhMassM02NLocMax2 [0][matched]->Fill(l0 , mass );
8e81c2cf 1001 if(fFillSSExtraHisto)
1002 {
1003 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
1004 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
1005 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
1006 }
d2655d46 1007
a700f620 1008 if(IsDataMC())
d2655d46 1009 {
1010 fhMassM02NLocMax2 [mcindex][matched]->Fill(l0 , mass );
8e81c2cf 1011 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1012 if(!matched && ebin >= 0)
1013 {
1014 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1015 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1016 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1017
1018 }
1019 if(fFillSSExtraHisto)
1020 {
1021 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
1022 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
1023 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
1024 }
d2655d46 1025 }
26680f06 1026 }
1027
d2655d46 1028 if(!matched && ebin >= 0)
26680f06 1029 {
d2655d46 1030 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
8e81c2cf 1031 if(fFillSSExtraHisto)
1032 {
1033 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
1034 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
1035 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
1036 }
d2655d46 1037 }
26680f06 1038 }
8e81c2cf 1039 else if(nMax > 2 )
26680f06 1040 {
1041 if( en > 7 )
1042 {
d2655d46 1043 fhMassM02NLocMaxN [0][matched]->Fill(l0 , mass );
8e81c2cf 1044 if(fFillSSExtraHisto)
1045 {
1046 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
1047 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
1048 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
1049 }
d2655d46 1050
a700f620 1051 if(IsDataMC())
d2655d46 1052 {
1053 fhMassM02NLocMaxN [mcindex][matched]->Fill(l0 , mass );
8e81c2cf 1054 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1055 if(!matched && ebin >= 0)
1056 {
1057 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1058 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1059 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen);
1060 }
1061 if(fFillSSExtraHisto)
1062 {
1063 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
1064 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
1065 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
1066 }
d2655d46 1067 }
26680f06 1068 }
1069
d2655d46 1070 if(!matched && ebin >= 0)
26680f06 1071 {
d2655d46 1072 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
8e81c2cf 1073 if(fFillSSExtraHisto)
1074 {
1075 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
1076 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
1077 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
1078 }
26680f06 1079 }
1080 }
1081
26680f06 1082 //---------------------------------------------------------------------
1083 // From here only if M02 is large but not too large, fill histograms
1084 //---------------------------------------------------------------------
1085
3c1d9afb 1086 if( l0 < fM02MinCut || l0 > fM02MaxCut ) continue ;
26680f06 1087
1088 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1089 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1090
243c2909 1091 if (nMax==1)
1092 {
5c46c992 1093 fhAnglePairLocMax1[matched]->Fill(en,angle);
0137016b 1094 fhMassNLocMax1[0][matched] ->Fill(en,mass );
26680f06 1095
0137016b 1096 if( en > 7 )
1097 {
5c46c992 1098 fhAnglePairMassLocMax1[matched]->Fill(mass,angle);
0137016b 1099 }
5c46c992 1100
3c1d9afb 1101 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMax1[0][matched]->Fill(en,l0);
1102 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMax1[0][matched]->Fill(en,l0);
1103 else if(pidTag==AliCaloPID::kEta) fhM02EtaLocMax1[0][matched]->Fill(en,l0);
243c2909 1104 }
5c46c992 1105 else if(nMax==2)
1106 {
1107 fhAnglePairLocMax2[matched]->Fill(en,angle);
0137016b 1108 fhMassNLocMax2[0] [matched]->Fill(en,mass );
26680f06 1109
0137016b 1110 if( en > 7 )
1111 {
26680f06 1112 fhAnglePairMassLocMax2[matched]->Fill(mass,angle);
0137016b 1113 }
5c46c992 1114
3c1d9afb 1115 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMax2[0][matched]->Fill(en,l0);
1116 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMax2[0][matched]->Fill(en,l0);
1117 else if(pidTag==AliCaloPID::kEta) fhM02EtaLocMax2[0][matched]->Fill(en,l0);
243c2909 1118 }
5c46c992 1119 else if(nMax >2)
1120 {
1121 fhAnglePairLocMaxN[matched]->Fill(en,angle);
0137016b 1122 fhMassNLocMaxN[0] [matched]->Fill(en,mass );
26680f06 1123
0137016b 1124 if( en > 7 )
1125 {
5c46c992 1126 fhAnglePairMassLocMaxN[matched]->Fill(mass,angle);
0137016b 1127 }
5c46c992 1128
3c1d9afb 1129 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMaxN[0][matched]->Fill(en,l0);
1130 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMaxN[0][matched]->Fill(en,l0);
1131 else if(pidTag==AliCaloPID::kEta ) fhM02EtaLocMaxN[0][matched]->Fill(en,l0);
243c2909 1132 }
1133
26680f06 1134
3c1d9afb 1135 if(IsDataMC())
1136 {
243c2909 1137 if (nMax==1)
1138 {
5c46c992 1139 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
3c1d9afb 1140 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMax1[mcindex][matched]->Fill(en,l0);
8e81c2cf 1141 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMax1[mcindex][matched]->Fill(en,l0);
1142 else if(pidTag==AliCaloPID::kEta ) fhM02EtaLocMax1[mcindex][matched]->Fill(en,l0);
243c2909 1143 }
0137016b 1144 else if(nMax==2)
1145 {
5c46c992 1146 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
3c1d9afb 1147 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMax2[mcindex][matched]->Fill(en,l0);
1148 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMax2[mcindex][matched]->Fill(en,l0);
1149 else if(pidTag==AliCaloPID::kEta ) fhM02EtaLocMax2[mcindex][matched]->Fill(en,l0);
243c2909 1150 }
0137016b 1151 else if(nMax >2)
1152 {
5c46c992 1153 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
3c1d9afb 1154 if (pidTag==AliCaloPID::kPhoton) fhM02ConLocMaxN[mcindex][matched]->Fill(en,l0);
1155 else if(pidTag==AliCaloPID::kPi0 ) fhM02Pi0LocMaxN[mcindex][matched]->Fill(en,l0);
8e81c2cf 1156 else if(pidTag==AliCaloPID::kEta ) fhM02EtaLocMaxN[mcindex][matched]->Fill(en,l0);
243c2909 1157 }
992b14a7 1158
1159 }//Work with MC truth first
5c46c992 1160
992b14a7 1161 }//loop
1162
1163 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
e23a0471 1164
992b14a7 1165}
1166
1167//______________________________________________________________________
1168void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
1169{
1170 //Print some relevant parameters set for the analysis
1171 if(! opt)
1172 return;
1173
1174 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 1175 AliAnaCaloTrackCorrBaseClass::Print("");
243c2909 1176 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
dbba06ca 1177 printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
1178 printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
cfc19369 1179 printf("Min. N Cells =%d \n", fMinNCells) ;
1180 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
71e3889f 1181 printf("%2.2f < lambda_0^2 <%2.2f \n",fM02MinCut,fM02MaxCut);
3c1d9afb 1182
992b14a7 1183 printf(" \n") ;
1184
1185}
1186
dbba06ca 1187
992b14a7 1188