]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
Added -x flag to the executable command to allow root exiting with the correct error...
[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),
883411b2 58 fFillAngleHisto(kFALSE),
8e81c2cf 59 fFillTMResidualHisto(kFALSE),
2a77f6f4 60 fFillSSExtraHisto(kFALSE),
61 fFillMCFractionHisto(kFALSE),
62 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
63 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0)
992b14a7 64{
65 //default ctor
66
67 // Init array of histograms
5c46c992 68 for(Int_t i = 0; i < 7; i++)
69 {
70 for(Int_t j = 0; j < 2; j++)
71 {
5c46c992 72 fhMassNLocMax1[i][j] = 0;
73 fhMassNLocMax2[i][j] = 0;
74 fhMassNLocMaxN[i][j] = 0;
75 fhNLocMax[i][j] = 0;
5c46c992 76 fhNLocMaxM02Cut[i][j] = 0;
77 fhM02NLocMax1[i][j] = 0;
78 fhM02NLocMax2[i][j] = 0;
79 fhM02NLocMaxN[i][j] = 0;
80 fhNCellNLocMax1[i][j] = 0;
81 fhNCellNLocMax2[i][j] = 0;
82 fhNCellNLocMaxN[i][j] = 0;
83 fhM02Pi0LocMax1[i][j] = 0;
84 fhM02EtaLocMax1[i][j] = 0;
85 fhM02ConLocMax1[i][j] = 0;
86 fhM02Pi0LocMax2[i][j] = 0;
87 fhM02EtaLocMax2[i][j] = 0;
88 fhM02ConLocMax2[i][j] = 0;
89 fhM02Pi0LocMaxN[i][j] = 0;
90 fhM02EtaLocMaxN[i][j] = 0;
91 fhM02ConLocMaxN[i][j] = 0;
bb2d339b 92
93 fhMassPi0LocMax1[i][j] = 0;
94 fhMassEtaLocMax1[i][j] = 0;
95 fhMassConLocMax1[i][j] = 0;
96 fhMassPi0LocMax2[i][j] = 0;
97 fhMassEtaLocMax2[i][j] = 0;
98 fhMassConLocMax2[i][j] = 0;
99 fhMassPi0LocMaxN[i][j] = 0;
100 fhMassEtaLocMaxN[i][j] = 0;
101 fhMassConLocMaxN[i][j] = 0;
5c46c992 102
0137016b 103 fhMassM02NLocMax1[i][j]= 0;
104 fhMassM02NLocMax2[i][j]= 0;
d2655d46 105 fhMassM02NLocMaxN[i][j]= 0;
106 fhMassDispEtaNLocMax1[i][j]= 0;
107 fhMassDispEtaNLocMax2[i][j]= 0;
108 fhMassDispEtaNLocMaxN[i][j]= 0;
109 fhMassDispPhiNLocMax1[i][j]= 0;
110 fhMassDispPhiNLocMax2[i][j]= 0;
111 fhMassDispPhiNLocMaxN[i][j]= 0;
112 fhMassDispAsyNLocMax1[i][j]= 0;
113 fhMassDispAsyNLocMax2[i][j]= 0;
114 fhMassDispAsyNLocMaxN[i][j]= 0;
8e81c2cf 115
fc01318e 116 fhSplitEFractionNLocMax1[i][j]=0;
117 fhSplitEFractionNLocMax2[i][j]=0;
118 fhSplitEFractionNLocMaxN[i][j]=0;
119
8e81c2cf 120 fhMCGenFracNLocMax1[i][j]= 0;
121 fhMCGenFracNLocMax2[i][j]= 0;
122 fhMCGenFracNLocMaxN[i][j]= 0;
5094c724 123
124 fhMCGenSplitEFracNLocMax1[i][j]= 0;
125 fhMCGenSplitEFracNLocMax2[i][j]= 0;
bb2d339b 126 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
127
128 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
129 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
130 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
131
132 fhMCGenEvsSplitENLocMax1[i][j]= 0;
133 fhMCGenEvsSplitENLocMax2[i][j]= 0;
134 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
8e81c2cf 135 }
136
137 for(Int_t jj = 0; jj < 4; jj++)
138 {
53f2c382 139 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
140 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
141 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
8e81c2cf 142
143 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
144 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
145 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
53f2c382 146
fc01318e 147 fhMCGenFracNLocMaxEbin[i][jj] = 0;
53f2c382 148 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
fc01318e 149
150 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
151 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
152 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
5c46c992 153 }
154
155 fhTrackMatchedDEtaLocMax1[i] = 0;
156 fhTrackMatchedDPhiLocMax1[i] = 0;
157 fhTrackMatchedDEtaLocMax2[i] = 0;
158 fhTrackMatchedDPhiLocMax2[i] = 0;
159 fhTrackMatchedDEtaLocMaxN[i] = 0;
160 fhTrackMatchedDPhiLocMaxN[i] = 0;
243c2909 161
992b14a7 162 }
163
5c46c992 164 for(Int_t i = 0; i < 2; i++)
165 {
166 fhAnglePairLocMax1 [i] = 0;
167 fhAnglePairLocMax2 [i] = 0;
168 fhAnglePairLocMaxN [i] = 0;
169 fhAnglePairMassLocMax1[i] = 0;
170 fhAnglePairMassLocMax2[i] = 0;
171 fhAnglePairMassLocMaxN[i] = 0;
2a77f6f4 172 fhAsymNLocMax1 [i] = 0;
173 fhAsymNLocMax2 [i] = 0;
174 fhAsymNLocMaxN [i] = 0;
5c46c992 175 }
176
7b686344 177 for(Int_t i = 0; i < 4; i++)
178 {
179 fhMassM02NLocMax1Ebin[i] = 0 ;
180 fhMassM02NLocMax2Ebin[i] = 0 ;
181 fhMassM02NLocMaxNEbin[i] = 0 ;
d2655d46 182
183 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
184 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
185 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
186
187 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
188 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
189 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
190
191 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
192 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
193 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
8e81c2cf 194
195 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
196 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
197 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
7b686344 198 }
199
992b14a7 200 InitParameters();
201
202}
203
204//_______________________________________________________________
205TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
206{
207 //Save parameters used for analysis
208 TString parList ; //this will be list of parameters used for this analysis.
209 const Int_t buffersize = 255;
210 char onePar[buffersize] ;
211
212 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
213 parList+=onePar ;
214
243c2909 215 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
992b14a7 216 parList+=onePar ;
dbba06ca 217 snprintf(onePar,buffersize,"fLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
29ca9cad 218 parList+=onePar ;
dbba06ca 219 snprintf(onePar,buffersize,"fLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
29ca9cad 220 parList+=onePar ;
71e3889f 221 snprintf(onePar,buffersize,"%2.2f< M02 < %2.2f \n", fM02MinCut, fM02MaxCut) ;
992b14a7 222 parList+=onePar ;
e23a0471 223 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2cb134fb 224 parList+=onePar ;
3c1d9afb 225 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
992b14a7 226 parList+=onePar ;
243c2909 227
992b14a7 228 return new TObjString(parList) ;
229
230}
231
992b14a7 232//________________________________________________________________
233TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
234{
235 // Create histograms to be saved in output file and
236 // store them in outputContainer
237 TList * outputContainer = new TList() ;
238 outputContainer->SetName("InsideClusterHistos") ;
239
745913ae 240 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
241 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
242 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
243 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
992b14a7 244
5c46c992 245 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
246 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
247 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
248 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
249 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
250 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
251
992b14a7 252 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron"};
253 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron"};
254
255 Int_t n = 1;
256
257 if(IsDataMC()) n = 7;
258
243c2909 259 Int_t nMaxBins = 10;
260
5c46c992 261 TString sMatched[] = {"","Matched"};
262
2a77f6f4 263
264 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E",
265 nptbins,ptmin,ptmax,mbins,mmin,mmax);
266 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
267 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
268 outputContainer->Add(fhMassSplitECutNLocMax1) ;
269
270 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E",
271 nptbins,ptmin,ptmax,mbins,mmin,mmax);
272 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
273 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
274 outputContainer->Add(fhMassSplitECutNLocMax2) ;
275
276 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E",
277 nptbins,ptmin,ptmax,mbins,mmin,mmax);
278 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
279 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
280 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
281
282 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E",
283 nptbins,ptmin,ptmax,mbins,mmin,mmax);
284 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
285 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
286 outputContainer->Add(fhMassM02CutNLocMax1) ;
287
288 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E",
289 nptbins,ptmin,ptmax,mbins,mmin,mmax);
290 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
291 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
292 outputContainer->Add(fhMassM02CutNLocMax2) ;
293
294 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E",
295 nptbins,ptmin,ptmax,mbins,mmin,mmax);
296 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
297 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
298 outputContainer->Add(fhMassM02CutNLocMaxN) ;
299
5c46c992 300 for(Int_t i = 0; i < n; i++)
301 {
5c46c992 302 for(Int_t j = 0; j < 2; j++)
303 {
304
305 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 306 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 307 nptbins,ptmin,ptmax,mbins,mmin,mmax);
308 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
309 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
310 outputContainer->Add(fhMassNLocMax1[i][j]) ;
311
312 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 313 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 314 nptbins,ptmin,ptmax,mbins,mmin,mmax);
315 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
316 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
317 outputContainer->Add(fhMassNLocMax2[i][j]) ;
318
319 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 320 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 321 nptbins,ptmin,ptmax,mbins,mmin,mmax);
322 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
323 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
324 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
325
0137016b 326 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 327 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 328 ssbins,ssmin,ssmax,mbins,mmin,mmax);
329 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
330 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
331 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
332
333 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 334 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 335 ssbins,ssmin,ssmax,mbins,mmin,mmax);
336 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
337 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
338 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
339
340 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 341 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 342 ssbins,ssmin,ssmax,mbins,mmin,mmax);
343 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
344 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
345 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
346
8e81c2cf 347 if(fFillSSExtraHisto)
348 {
349 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 350 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 351 ssbins,ssmin,ssmax,mbins,mmin,mmax);
352 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
353 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
354 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
355
356 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 357 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 358 ssbins,ssmin,ssmax,mbins,mmin,mmax);
359 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
360 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
361 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
362
363 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 364 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 365 ssbins,ssmin,ssmax,mbins,mmin,mmax);
366 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
367 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
368 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
369
370 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
371 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 7 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
372 ssbins,ssmin,ssmax,mbins,mmin,mmax);
373 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
374 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
375 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
376
377 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
378 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 7 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
379 ssbins,ssmin,ssmax,mbins,mmin,mmax);
380 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
381 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
382 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
383
384 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
385 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
386 ssbins,ssmin,ssmax,mbins,mmin,mmax);
387 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
388 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
389 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
390
391 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
392 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()),
393 200,-1,1,mbins,mmin,mmax);
394 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
395 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
396 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
397
398 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
399 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()),
400 200,-1,1,mbins,mmin,mmax);
401 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
402 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
403 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
404
405 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
406 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()),
407 200,-1,1,mbins,mmin,mmax);
408 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
409 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
410 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
411 }
d2655d46 412
5c46c992 413 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
414 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
415 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
416 fhNLocMax[i][j] ->SetYTitle("N maxima");
417 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
418 outputContainer->Add(fhNLocMax[i][j]) ;
3c1d9afb 419
5c46c992 420 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
71e3889f 421 Form("Number of local maxima in cluster %s for %2.2f < M02 < %2.2f",ptype[i].Data(),fM02MinCut,fM02MaxCut),
5c46c992 422 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
423 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
424 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
425 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
426
427
428 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
429 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
430 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
431 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
432 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
433 outputContainer->Add(fhM02NLocMax1[i][j]) ;
434
435 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
436 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
437 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
438 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
439 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
440 outputContainer->Add(fhM02NLocMax2[i][j]) ;
441
5c46c992 442 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
443 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
444 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
445 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
446 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
447 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
448
fc01318e 449
450 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
451 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
452 nptbins,ptmin,ptmax,120,0,1.2);
453 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
454 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
455 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
456
457 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
458 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
459 nptbins,ptmin,ptmax,120,0,1.2);
460 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
461 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
462 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
463
464 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
465 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
466 nptbins,ptmin,ptmax,120,0,1.2);
467 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
468 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
469 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
470
471
2a77f6f4 472 if(i > 0 && fFillMCFractionHisto) // skip first entry in array, general case not filled
883411b2 473 {
474 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
475 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
476 nptbins,ptmin,ptmax,200,0,2);
fb51265c 477 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 478 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
479 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
480
481 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
482 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
483 nptbins,ptmin,ptmax,200,0,2);
fb51265c 484 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 485 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
486 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
487
488
489 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
490 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
491 nptbins,ptmin,ptmax,200,0,2);
fb51265c 492 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 493 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
494 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
5094c724 495
496 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 497 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 498 nptbins,ptmin,ptmax,200,0,2);
499 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
500 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
501 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
502
503 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 504 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 505 nptbins,ptmin,ptmax,200,0,2);
506 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
507 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
508 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
509
510
511 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 512 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 513 nptbins,ptmin,ptmax,200,0,2);
514 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
515 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
516 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
bb2d339b 517
518 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
519 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
520 200,0,2,200,0,2);
521 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
522 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
523 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
524
525 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
526 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
527 200,0,2,200,0,2);
528 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
529 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
530 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
531
532
533 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
534 Form("(E_{1 split}+E_{2 split})/E_{reco} vs E_{gen} / E_{reco} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
535 200,0,2,200,0,2);
536 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
537 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
538 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
539
540
541 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
542 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
543 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
544 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
545 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
546 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
547
548 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
549 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
550 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
551 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
552 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
553 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
554
555
556 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
557 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
558 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
559 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
560 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
561 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
562
883411b2 563 }
5c46c992 564
8e81c2cf 565 if(fFillSSExtraHisto)
566 {
567 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
568 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
569 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
570 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
571 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
572 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
573
574 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
575 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
576 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
577 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
578 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
579 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
580
581
582 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
583 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
584 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
585 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
586 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
587 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
588 }
5c46c992 589
590 fhM02Pi0LocMax1[i][j] = new TH2F(Form("hM02Pi0LocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 591 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 1",
592 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 593 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
594 fhM02Pi0LocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
595 fhM02Pi0LocMax1[i][j] ->SetXTitle("E (GeV)");
596 outputContainer->Add(fhM02Pi0LocMax1[i][j]) ;
597
598 fhM02EtaLocMax1[i][j] = new TH2F(Form("hM02EtaLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 599 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
600 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 601 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
602 fhM02EtaLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
603 fhM02EtaLocMax1[i][j] ->SetXTitle("E (GeV)");
604 outputContainer->Add(fhM02EtaLocMax1[i][j]) ;
605
606 fhM02ConLocMax1[i][j] = new TH2F(Form("hM02ConLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 607 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
608 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 609 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
610 fhM02ConLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
611 fhM02ConLocMax1[i][j] ->SetXTitle("E (GeV)");
612 outputContainer->Add(fhM02ConLocMax1[i][j]) ;
613
614 fhM02Pi0LocMax2[i][j] = new TH2F(Form("hM02Pi0LocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 615 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 2",
616 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 617 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
618 fhM02Pi0LocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
619 fhM02Pi0LocMax2[i][j] ->SetXTitle("E (GeV)");
620 outputContainer->Add(fhM02Pi0LocMax2[i][j]) ;
621
622 fhM02EtaLocMax2[i][j] = new TH2F(Form("hM02EtaLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 623 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
624 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 625 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
626 fhM02EtaLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
627 fhM02EtaLocMax2[i][j] ->SetXTitle("E (GeV)");
628 outputContainer->Add(fhM02EtaLocMax2[i][j]) ;
629
630 fhM02ConLocMax2[i][j] = new TH2F(Form("hM02ConLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 631 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
632 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 633 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
634 fhM02ConLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
635 fhM02ConLocMax2[i][j] ->SetXTitle("E (GeV)");
636 outputContainer->Add(fhM02ConLocMax2[i][j]) ;
637
638 fhM02Pi0LocMaxN[i][j] = new TH2F(Form("hM02Pi0LocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 639 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max > 2",
640 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 641 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
642 fhM02Pi0LocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
643 fhM02Pi0LocMaxN[i][j] ->SetXTitle("E (GeV)");
644 outputContainer->Add(fhM02Pi0LocMaxN[i][j]) ;
645
646 fhM02EtaLocMaxN[i][j] = new TH2F(Form("hM02EtaLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 647 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max > 2",
648 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 649 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
650 fhM02EtaLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
651 fhM02EtaLocMaxN[i][j] ->SetXTitle("E (GeV)");
652 outputContainer->Add(fhM02EtaLocMaxN[i][j]) ;
653
654 fhM02ConLocMaxN[i][j] = new TH2F(Form("hM02ConLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 655 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
656 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 657 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
658 fhM02ConLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
659 fhM02ConLocMaxN[i][j] ->SetXTitle("E (GeV)");
660 outputContainer->Add(fhM02ConLocMaxN[i][j]) ;
bb2d339b 661
662
663 fhMassPi0LocMax1[i][j] = new TH2F(Form("hMassPi0LocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
664 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 1",
665 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
666 nptbins,ptmin,ptmax,mbins,mmin,mmax);
667 fhMassPi0LocMax1[i][j] ->SetYTitle("Mass (MeV/c^{2})");
668 fhMassPi0LocMax1[i][j] ->SetXTitle("E (GeV)");
669 outputContainer->Add(fhMassPi0LocMax1[i][j]) ;
670
671 fhMassEtaLocMax1[i][j] = new TH2F(Form("hMassEtaLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
672 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
673 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
674 nptbins,ptmin,ptmax,mbins,mmin,mmax);
675 fhMassEtaLocMax1[i][j] ->SetYTitle("Mass (MeV/c^{2})");
676 fhMassEtaLocMax1[i][j] ->SetXTitle("E (GeV)");
677 outputContainer->Add(fhMassEtaLocMax1[i][j]) ;
678
679 fhMassConLocMax1[i][j] = new TH2F(Form("hMassConLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
680 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 1",
681 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
682 nptbins,ptmin,ptmax,mbins,mmin,mmax);
683 fhMassConLocMax1[i][j] ->SetYTitle("Mass (MeV/c^{2})");
684 fhMassConLocMax1[i][j] ->SetXTitle("E (GeV)");
685 outputContainer->Add(fhMassConLocMax1[i][j]) ;
686
687 fhMassPi0LocMax2[i][j] = new TH2F(Form("hMassPi0LocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
688 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max = 2",
689 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
690 nptbins,ptmin,ptmax,mbins,mmin,mmax);
691 fhMassPi0LocMax2[i][j] ->SetYTitle("Mass (MeV/c^{2})");
692 fhMassPi0LocMax2[i][j] ->SetXTitle("E (GeV)");
693 outputContainer->Add(fhMassPi0LocMax2[i][j]) ;
694
695 fhMassEtaLocMax2[i][j] = new TH2F(Form("hMassEtaLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
696 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
697 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
698 nptbins,ptmin,ptmax,mbins,mmin,mmax);
699 fhMassEtaLocMax2[i][j] ->SetYTitle("Mass (MeV/c^{2})");
700 fhMassEtaLocMax2[i][j] ->SetXTitle("E (GeV)");
701 outputContainer->Add(fhMassEtaLocMax2[i][j]) ;
702
703 fhMassConLocMax2[i][j] = new TH2F(Form("hMassConLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
704 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max = 2",
705 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
706 nptbins,ptmin,ptmax,mbins,mmin,mmax);
707 fhMassConLocMax2[i][j] ->SetYTitle("Mass (MeV/c^{2})");
708 fhMassConLocMax2[i][j] ->SetXTitle("E (GeV)");
709 outputContainer->Add(fhMassConLocMax2[i][j]) ;
710
711 fhMassPi0LocMaxN[i][j] = new TH2F(Form("hMassPi0LocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
712 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2} %s, for N Local max > 2",
713 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
714 nptbins,ptmin,ptmax,mbins,mmin,mmax);
715 fhMassPi0LocMaxN[i][j] ->SetYTitle("Mass (MeV/c^{2})");
716 fhMassPi0LocMaxN[i][j] ->SetXTitle("E (GeV)");
717 outputContainer->Add(fhMassPi0LocMaxN[i][j]) ;
718
719 fhMassEtaLocMaxN[i][j] = new TH2F(Form("hMassEtaLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
720 Form("Mass vs E for mass range [%2.2f-%2.2f] MeV/c^{2}, %s, for N Local max > 2",
721 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
722 nptbins,ptmin,ptmax,mbins,mmin,mmax);
723 fhMassEtaLocMaxN[i][j] ->SetYTitle("Mass (MeV/c^{2})");
724 fhMassEtaLocMaxN[i][j] ->SetXTitle("E (GeV)");
725 outputContainer->Add(fhMassEtaLocMaxN[i][j]) ;
726
727 fhMassConLocMaxN[i][j] = new TH2F(Form("hMassConLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
728 Form("Mass vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
729 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
730 nptbins,ptmin,ptmax,mbins,mmin,mmax);
731 fhMassConLocMaxN[i][j] ->SetYTitle("Mass (MeV/c^{2})");
732 fhMassConLocMaxN[i][j] ->SetXTitle("E (GeV)");
733 outputContainer->Add(fhMassConLocMaxN[i][j]) ;
5c46c992 734
735 } // matched, not matched
736
883411b2 737 for(Int_t j = 0; j < 4; j++)
738 {
53f2c382 739
fc01318e 740 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
741 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
742 120,0,1.2,mbins,mmin,mmax);
743 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
744 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
745 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
883411b2 746
fc01318e 747 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
748 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
749 120,0,1.2,mbins,mmin,mmax);
750 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
751 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
752 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
883411b2 753
fc01318e 754 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
755 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
756 120,0,1.2,mbins,mmin,mmax);
757 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
758 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
759 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
883411b2 760
2a77f6f4 761 if(i>0 && fFillMCFractionHisto) // skip first entry in array, general case not filled
fc01318e 762 {
763 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
764 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
765 200,0,2,nMaxBins,0,nMaxBins);
766 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
fb51265c 767 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
fc01318e 768 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
769
770 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
771 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
772 200,0,2,nMaxBins,0,nMaxBins);
773 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
fb51265c 774 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
fc01318e 775 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
776
777 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
778 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
779 200,0,2,mbins,mmin,mmax);
780 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 781 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
fc01318e 782 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
783
784 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
785 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
786 200,0,2,mbins,mmin,mmax);
787 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 788 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
fc01318e 789 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
790
791 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
792 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
793 200,0,2,mbins,mmin,mmax);
794 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 795 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
fc01318e 796 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
797
798 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
799 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
800 200,0,2,ssbins,ssmin,ssmax);
801 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 802 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
fc01318e 803 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
804
805 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
806 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
807 200,0,2,ssbins,ssmin,ssmax);
808 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 809 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
fc01318e 810 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
811
812 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
813 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
814 200,0,2,ssbins,ssmin,ssmax);
815 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 816 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
fc01318e 817 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
818 }
883411b2 819 }
5c46c992 820 } // MC particle list
821
7b686344 822 for(Int_t i = 0; i < 4; i++)
823 {
8e81c2cf 824
825 if(IsDataMC())
826 {
827 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
828 Form("Asymmetry of MC #pi^{0} of 2 highest energy cells #lambda_{0}^{2}, E bin %d",i),
883411b2 829 ssbins,ssmin,ssmax,100,0,1);
8e81c2cf 830 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
831 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
832 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
833
834 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
835 Form("Asymmetry of MC #pi^{0} of 2 local maxima cells #lambda_{0}^{2}, E bin %d",i),
883411b2 836 ssbins,ssmin,ssmax,100,0,1);
8e81c2cf 837 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
838 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
839 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
840
841 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
842 Form("Asymmetry of MC #pi^{0} of N>2 local maxima cells vs #lambda_{0}^{2}, E bin %d",i),
883411b2 843 ssbins,ssmin,ssmax,100,0,1);
8e81c2cf 844 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
845 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
846 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
847 }
848
7b686344 849 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
850 Form("Invariant mass of 2 highest energy cells #lambda_{0}^{2}, E bin %d",i),
851 ssbins,ssmin,ssmax,mbins,mmin,mmax);
852 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
853 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
854 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
855
856 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
857 Form("Invariant mass of 2 local maxima cells #lambda_{0}^{2}, E bin %d",i),
858 ssbins,ssmin,ssmax,mbins,mmin,mmax);
859 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
860 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
861 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
862
863 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
864 Form("Invariant mass of N>2 local maxima cells vs #lambda_{0}^{2}, E bin %d",i),
865 ssbins,ssmin,ssmax,mbins,mmin,mmax);
866 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
867 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
d2655d46 868 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
869
8e81c2cf 870 if(fFillSSExtraHisto)
871 {
872 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
873 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
874 ssbins,ssmin,ssmax,mbins,mmin,mmax);
875 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
876 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
877 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
878
879 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
880 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
881 ssbins,ssmin,ssmax,mbins,mmin,mmax);
882 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
883 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
884 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
885
886 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
887 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
888 ssbins,ssmin,ssmax,mbins,mmin,mmax);
889 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
890 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
891 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
892
893 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
894 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
895 ssbins,ssmin,ssmax,mbins,mmin,mmax);
896 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
897 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
898 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
899
900 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
901 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
902 ssbins,ssmin,ssmax,mbins,mmin,mmax);
903 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
904 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
905 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
906
907 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
908 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
909 ssbins,ssmin,ssmax,mbins,mmin,mmax);
910 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
911 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
912 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
913
914 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
915 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),
916 200,-1,1,mbins,mmin,mmax);
917 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
918 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
919 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
920
921 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
922 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),
923 200,-1,1,mbins,mmin,mmax);
924 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
925 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
926 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
927
928 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
929 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),
930 200,-1,1,mbins,mmin,mmax);
931 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
932 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
933 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
934 }
7b686344 935 }
936
8e81c2cf 937 if(fFillTMResidualHisto)
938 {
939 for(Int_t i = 0; i < n; i++)
940 {
941
942 fhTrackMatchedDEtaLocMax1[i] = new TH2F
943 (Form("hTrackMatchedDEtaLocMax1%s",pname[i].Data()),
944 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
945 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
946 fhTrackMatchedDEtaLocMax1[i]->SetYTitle("d#eta");
947 fhTrackMatchedDEtaLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
948
949 fhTrackMatchedDPhiLocMax1[i] = new TH2F
950 (Form("hTrackMatchedDPhiLocMax1%s",pname[i].Data()),
951 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
952 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
953 fhTrackMatchedDPhiLocMax1[i]->SetYTitle("d#phi (rad)");
954 fhTrackMatchedDPhiLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
955
956 outputContainer->Add(fhTrackMatchedDEtaLocMax1[i]) ;
957 outputContainer->Add(fhTrackMatchedDPhiLocMax1[i]) ;
958
959 fhTrackMatchedDEtaLocMax2[i] = new TH2F
960 (Form("hTrackMatchedDEtaLocMax2%s",pname[i].Data()),
961 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
962 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
963 fhTrackMatchedDEtaLocMax2[i]->SetYTitle("d#eta");
964 fhTrackMatchedDEtaLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
965
966 fhTrackMatchedDPhiLocMax2[i] = new TH2F
967 (Form("hTrackMatchedDPhiLocMax2%s",pname[i].Data()),
968 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
969 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
970 fhTrackMatchedDPhiLocMax2[i]->SetYTitle("d#phi (rad)");
971 fhTrackMatchedDPhiLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
972
973 outputContainer->Add(fhTrackMatchedDEtaLocMax2[i]) ;
974 outputContainer->Add(fhTrackMatchedDPhiLocMax2[i]) ;
975
976 fhTrackMatchedDEtaLocMaxN[i] = new TH2F
977 (Form("hTrackMatchedDEtaLocMaxN%s",pname[i].Data()),
978 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
979 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
980 fhTrackMatchedDEtaLocMaxN[i]->SetYTitle("d#eta");
981 fhTrackMatchedDEtaLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
982
983 fhTrackMatchedDPhiLocMaxN[i] = new TH2F
984 (Form("hTrackMatchedDPhiLocMaxN%s",pname[i].Data()),
985 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
986 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
987 fhTrackMatchedDPhiLocMaxN[i]->SetYTitle("d#phi (rad)");
988 fhTrackMatchedDPhiLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
989
990 outputContainer->Add(fhTrackMatchedDEtaLocMaxN[i]) ;
991 outputContainer->Add(fhTrackMatchedDPhiLocMaxN[i]) ;
992 }
5c46c992 993 }
2a77f6f4 994 //Asymmetry histo
995 for(Int_t j = 0; j < 2; j++)
996 {
997 fhAsymNLocMax1[j] = new TH2F(Form("hAsymNLocMax1%s",sMatched[j].Data()),
998 Form("Asymmetry of NLM=1 vs cluster Energy, %s",sMatched[j].Data()),
999 nptbins,ptmin,ptmax,200,-1,1);
1000 fhAsymNLocMax1[j]->SetYTitle("#alpha (rad)");
1001 fhAsymNLocMax1[j]->SetXTitle("E (GeV)");
1002 outputContainer->Add(fhAsymNLocMax1[j]) ;
1003
1004 fhAsymNLocMax2[j] = new TH2F(Form("hAsymNLocMax2%s",sMatched[j].Data()),
1005 Form("Asymmetry of NLM=2 vs cluster Energy, %s",sMatched[j].Data()),
1006 nptbins,ptmin,ptmax,200,-1,1);
1007 fhAsymNLocMax2[j]->SetYTitle("#alpha (rad)");
1008 fhAsymNLocMax2[j]->SetXTitle("E (GeV)");
1009 outputContainer->Add(fhAsymNLocMax2[j]) ;
1010
1011 fhAsymNLocMaxN[j] = new TH2F(Form("hAsymNLocMaxN%s",sMatched[j].Data()),
1012 Form("Asymmetry of NLM>2 vs cluster Energy, %s",sMatched[j].Data()),
1013 nptbins,ptmin,ptmax,200,-1,1);
1014 fhAsymNLocMaxN[j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
1015 fhAsymNLocMaxN[j]->SetXTitle("E (GeV)");
1016 outputContainer->Add(fhAsymNLocMaxN[j]) ;
1017 }
5c46c992 1018
883411b2 1019 if(fFillAngleHisto)
1020 {
1021 for(Int_t j = 0; j < 2; j++)
1022 {
1023
1024 fhAnglePairLocMax1[j] = new TH2F(Form("hAnglePairLocMax1%s",sMatched[j].Data()),
1025 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
1026 nptbins,ptmin,ptmax,200,0,0.2);
1027 fhAnglePairLocMax1[j]->SetYTitle("#alpha (rad)");
1028 fhAnglePairLocMax1[j]->SetXTitle("E (GeV)");
1029 outputContainer->Add(fhAnglePairLocMax1[j]) ;
1030
1031 fhAnglePairLocMax2[j] = new TH2F(Form("hAnglePairLocMax2%s",sMatched[j].Data()),
1032 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
1033 nptbins,ptmin,ptmax,200,0,0.2);
1034 fhAnglePairLocMax2[j]->SetYTitle("#alpha (rad)");
1035 fhAnglePairLocMax2[j]->SetXTitle("E (GeV)");
1036 outputContainer->Add(fhAnglePairLocMax2[j]) ;
1037
1038 fhAnglePairLocMaxN[j] = new TH2F(Form("hAnglePairLocMaxN%s",sMatched[j].Data()),
1039 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
1040 nptbins,ptmin,ptmax,200,0,0.2);
1041 fhAnglePairLocMaxN[j]->SetYTitle("#alpha (rad)");
1042 fhAnglePairLocMaxN[j]->SetXTitle("E (GeV)");
1043 outputContainer->Add(fhAnglePairLocMaxN[j]) ;
1044
1045 fhAnglePairMassLocMax1[j] = new TH2F(Form("hAnglePairMassLocMax1%s",sMatched[j].Data()),
1046 Form("Opening angle of 2 highest energy cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
1047 mbins,mmin,mmax,200,0,0.2);
1048 fhAnglePairMassLocMax1[j]->SetXTitle("M (GeV/c^{2})");
1049 fhAnglePairMassLocMax1[j]->SetYTitle("#alpha (rad)");
1050 outputContainer->Add(fhAnglePairMassLocMax1[j]) ;
1051
1052 fhAnglePairMassLocMax2[j] = new TH2F(Form("hAnglePairMassLocMax2%s",sMatched[j].Data()),
1053 Form("Opening angle of 2 local maxima cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
1054 mbins,mmin,mmax,200,0,0.2);
1055 fhAnglePairMassLocMax2[j]->SetXTitle("M (GeV/c^{2})");
1056 fhAnglePairMassLocMax2[j]->SetYTitle("#alpha (rad)");
1057 outputContainer->Add(fhAnglePairMassLocMax2[j]) ;
1058
1059 fhAnglePairMassLocMaxN[j] = new TH2F(Form("hAnglePairMassLocMaxN%s",sMatched[j].Data()),
1060 Form("Opening angle of N>2 local maxima cells vs Mass for E > 7 GeV, %s",sMatched[j].Data()),
1061 mbins,mmin,mmax,200,0,0.2);
1062 fhAnglePairMassLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
1063 fhAnglePairMassLocMaxN[j]->SetYTitle("#alpha (rad)");
1064 outputContainer->Add(fhAnglePairMassLocMaxN[j]) ;
1065
1066 }
992b14a7 1067 }
1068
1069 return outputContainer ;
1070
1071}
1072
992b14a7 1073//___________________________________________
1074void AliAnaInsideClusterInvariantMass::Init()
1075{
1076 //Init
1077 //Do some checks
3c1d9afb 1078 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
1079 {
992b14a7 1080 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
1081 abort();
1082 }
3c1d9afb 1083 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
1084 {
992b14a7 1085 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
1086 abort();
1087 }
1088
3c1d9afb 1089 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
1090 {
992b14a7 1091 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
1092 abort();
1093
1094 }
1095
1096}
1097
1098//_____________________________________________________
1099void AliAnaInsideClusterInvariantMass::InitParameters()
1100{
1101 //Initialize the parameters of the analysis.
1102 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
1103
1104 fCalorimeter = "EMCAL" ;
29ca9cad 1105
71e3889f 1106 fM02MinCut = 0.26 ;
1107 fM02MaxCut = 10 ;
1108
992b14a7 1109 fMinNCells = 4 ;
2cb134fb 1110 fMinBadDist = 2 ;
3c1d9afb 1111
992b14a7 1112}
1113
1114
1115//__________________________________________________________________
1116void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
1117{
1118 //Search for pi0 in fCalorimeter with shower shape analysis
1119
1120 TObjArray * pl = 0x0;
1121 AliVCaloCells* cells = 0x0;
1122
1123 //Select the Calorimeter of the photon
2cb134fb 1124 if(fCalorimeter == "PHOS")
1125 {
992b14a7 1126 pl = GetPHOSClusters();
1127 cells = GetPHOSCells();
1128 }
2cb134fb 1129 else if (fCalorimeter == "EMCAL")
1130 {
992b14a7 1131 pl = GetEMCALClusters();
1132 cells = GetEMCALCells();
1133 }
1134
3c1d9afb 1135 if(!pl || !cells)
1136 {
992b14a7 1137 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
1138 return;
1139 }
1140
1141 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
1142
2cb134fb 1143 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
1144 {
992b14a7 1145 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
1146
1147 // Study clusters with large shape parameter
1148 Float_t en = cluster->E();
1149 Float_t l0 = cluster->GetM02();
1150 Int_t nc = cluster->GetNCells();
2cb134fb 1151 Float_t bd = cluster->GetDistanceToBadChannel() ;
243c2909 1152
d2655d46 1153
2cb134fb 1154 //If too small or big E or low number of cells, or close to a bad channel skip it
1155 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
1156
1157 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
1158 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
1159
d2655d46 1160 // Get more Shower Shape parameters
1161 Float_t ll0 = 0., ll1 = 0.;
1162 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
1163 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1164
1165 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
1166 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
1167
1168 Float_t dispAsy = -1;
1169 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
1170
3c1d9afb 1171 Int_t nMax = 0;
bfdcf7fb 1172 Double_t mass = 0., angle = 0.;
1173 Double_t e1 = 0., e2 = 0.;
3c1d9afb 1174 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
fc01318e 1175 GetVertex(0), nMax, mass, angle,e1,e2);
5c46c992 1176 if (nMax <= 0)
1177 {
de454976 1178 if(GetDebug() > 0 )
1179 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5c46c992 1180
992b14a7 1181 return;
1182 }
1183
fc01318e 1184 Float_t splitFrac = (e1+e2)/en;
fc01318e 1185
1186 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
cfc19369 1187
3c1d9afb 1188 fhNLocMax[0][matched]->Fill(en,nMax);
29ca9cad 1189
2a77f6f4 1190 if ( nMax == 1 )
1191 {
1192 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1193 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
1194 if(fFillSSExtraHisto) fhNCellNLocMax1[0][matched]->Fill(en,nc) ;
1195 }
1196 else if( nMax == 2 )
1197 {
1198 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1199 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
1200 if(fFillSSExtraHisto) fhNCellNLocMax2[0][matched]->Fill(en,nc) ; }
1201 else if( nMax >= 3 )
1202 {
1203 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1204 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
1205 if(fFillSSExtraHisto) fhNCellNLocMaxN[0][matched]->Fill(en,nc) ;
1206 }
992b14a7 1207 else printf("N max smaller than 1 -> %d \n",nMax);
5c46c992 1208
2a77f6f4 1209
5c46c992 1210 Float_t dZ = cluster->GetTrackDz();
1211 Float_t dR = cluster->GetTrackDx();
1212
1213 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1214 {
1215 dR = 2000., dZ = 2000.;
1216 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1217 }
1218 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
1219
8e81c2cf 1220 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 1221 {
1222 if ( nMax == 1 ) { fhTrackMatchedDEtaLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMax1[0]->Fill(en,dR); }
1223 else if( nMax == 2 ) { fhTrackMatchedDEtaLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMax2[0]->Fill(en,dR); }
1224 else if( nMax >= 3 ) { fhTrackMatchedDEtaLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiLocMaxN[0]->Fill(en,dR); }
1225 }
fc01318e 1226
992b14a7 1227 // Play with the MC stack if available
1228 // Check origin of the candidates
8e81c2cf 1229 Int_t mcindex = -1;
1230 Float_t eprim = 0;
1231 Float_t asymGen = -2;
53f2c382 1232 Int_t mcLabel = cluster->GetLabel();
3c1d9afb 1233 if(IsDataMC())
1234 {
992b14a7 1235 Int_t tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader(), 0);
1236
c5693f62 1237 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0;
1238 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
992b14a7 1239 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 1240 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
992b14a7 1241 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 1242 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
1243 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
1244 else mcindex = kmcHadron;
71e3889f 1245
5c46c992 1246 fhNLocMax[mcindex][matched]->Fill(en,nMax);
3c1d9afb 1247
fc01318e 1248 if (nMax == 1 ) { fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ; fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ; if(fFillSSExtraHisto) fhNCellNLocMax1[mcindex][matched]->Fill(en,nc) ; }
1249 else if(nMax == 2 ) { fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ; fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ; if(fFillSSExtraHisto) fhNCellNLocMax2[mcindex][matched]->Fill(en,nc) ; }
1250 else if(nMax >= 3 ) { fhM02NLocMaxN[mcindex][matched]->Fill(en,l0) ; fhSplitEFractionNLocMaxN[mcindex][matched]->Fill(en,splitFrac) ; if(fFillSSExtraHisto) fhNCellNLocMaxN[mcindex][matched]->Fill(en,nc) ; }
5c46c992 1251
8e81c2cf 1252 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 1253 {
1254 if ( nMax == 1 ) { fhTrackMatchedDEtaLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMax1[mcindex]->Fill(en,dR); }
1255 else if( nMax == 2 ) { fhTrackMatchedDEtaLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMax2[mcindex]->Fill(en,dR); }
1256 else if( nMax >= 3 ) { fhTrackMatchedDEtaLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiLocMaxN[mcindex]->Fill(en,dR); }
29ca9cad 1257 }
992b14a7 1258
8e81c2cf 1259 Bool_t ok = kFALSE;
53f2c382 1260 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
8e81c2cf 1261 eprim = primary.E();
1262
883411b2 1263 if(mcindex == kmcPi0 || mcindex == kmcEta)
8e81c2cf 1264 {
53f2c382 1265 if(mcindex == kmcPi0)
1266 {
1267 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
1268 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok);
1269 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
1270 }
1271 else
1272 {
1273 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
1274 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok);
1275 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
1276 }
8e81c2cf 1277 }
d2655d46 1278 }
1279
5094c724 1280 Float_t efrac = eprim/en;
bb2d339b 1281 Float_t efracSplit = 0;
1282 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
5094c724 1283
bb2d339b 1284 //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",
1285 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
1286
d2655d46 1287 Int_t ebin = -1;
8e81c2cf 1288 if(en > 8 && en <= 12) ebin = 0;
1289 if(en > 12 && en <= 16) ebin = 1;
1290 if(en > 16 && en <= 20) ebin = 2;
d2655d46 1291 if(en > 20) ebin = 3;
1292
2a77f6f4 1293 if(ebin >= 0 && IsDataMC() && fFillMCFractionHisto)
53f2c382 1294 {
1295 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
1296 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
1297 }
1298
26680f06 1299 if (nMax==1)
1300 {
1301 if( en > 7 )
1302 {
d2655d46 1303 fhMassM02NLocMax1 [0][matched]->Fill(l0 , mass );
8e81c2cf 1304 if(fFillSSExtraHisto)
1305 {
1306 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
1307 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
1308 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
1309 }
1310
a700f620 1311 if(IsDataMC())
d2655d46 1312 {
8e81c2cf 1313 fhMassM02NLocMax1 [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 1314 if(fFillMCFractionHisto)
1315 {
1316 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
1317 fhMCGenSplitEFracNLocMax1 [mcindex][matched]->Fill(en , efracSplit );
1318 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
1319 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
1320 }
1321
8e81c2cf 1322 if(!matched && ebin >= 0)
1323 {
2a77f6f4 1324 if(fFillMCFractionHisto)
1325 {
1326 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
1327 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
1328 }
8e81c2cf 1329 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1330 }
1331
1332 if(fFillSSExtraHisto)
1333 {
1334 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
1335 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
1336 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
1337 }
d2655d46 1338 }
26680f06 1339 }
1340
d2655d46 1341 if(!matched && ebin >= 0)
26680f06 1342 {
fc01318e 1343 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
1344 if(IsDataMC())fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1345
8e81c2cf 1346 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
1347 if(fFillSSExtraHisto)
1348 {
1349 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
1350 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
1351 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
1352 }
26680f06 1353 }
1354 }
1355 else if(nMax==2)
1356 {
d2655d46 1357 if( en > 7 )
1358 {
1359 fhMassM02NLocMax2 [0][matched]->Fill(l0 , mass );
8e81c2cf 1360 if(fFillSSExtraHisto)
1361 {
1362 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
1363 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
1364 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
1365 }
d2655d46 1366
a700f620 1367 if(IsDataMC())
d2655d46 1368 {
5094c724 1369 fhMassM02NLocMax2 [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 1370 if(fFillMCFractionHisto)
1371 {
1372 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
1373 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
1374 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
1375 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
1376 }
1377
8e81c2cf 1378 if(!matched && ebin >= 0)
1379 {
2a77f6f4 1380 if(fFillMCFractionHisto)
1381 {
1382 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
1383 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
1384 }
8e81c2cf 1385 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
1386
1387 }
1388 if(fFillSSExtraHisto)
1389 {
1390 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
1391 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
1392 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
1393 }
d2655d46 1394 }
26680f06 1395 }
1396
d2655d46 1397 if(!matched && ebin >= 0)
26680f06 1398 {
fc01318e 1399 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
1400 if(IsDataMC())fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
1401
d2655d46 1402 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
8e81c2cf 1403 if(fFillSSExtraHisto)
1404 {
1405 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
1406 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
1407 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
1408 }
d2655d46 1409 }
26680f06 1410 }
8e81c2cf 1411 else if(nMax > 2 )
26680f06 1412 {
1413 if( en > 7 )
1414 {
d2655d46 1415 fhMassM02NLocMaxN [0][matched]->Fill(l0 , mass );
8e81c2cf 1416 if(fFillSSExtraHisto)
1417 {
1418 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
1419 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
1420 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
1421 }
d2655d46 1422
a700f620 1423 if(IsDataMC())
d2655d46 1424 {
5094c724 1425 fhMassM02NLocMaxN [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 1426 if(fFillMCFractionHisto)
1427 {
1428 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
1429 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
1430 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
1431 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac, splitFrac );
1432 }
1433
8e81c2cf 1434 if(!matched && ebin >= 0)
1435 {
2a77f6f4 1436 if(fFillMCFractionHisto)
1437 {
1438 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
1439 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
1440 }
8e81c2cf 1441 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen);
1442 }
1443 if(fFillSSExtraHisto)
1444 {
1445 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
1446 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
1447 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
1448 }
d2655d46 1449 }
26680f06 1450 }
1451
d2655d46 1452 if(!matched && ebin >= 0)
26680f06 1453 {
fc01318e 1454 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
1455 if(IsDataMC())fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
1456
d2655d46 1457 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
8e81c2cf 1458 if(fFillSSExtraHisto)
1459 {
1460 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
1461 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
1462 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
1463 }
26680f06 1464 }
1465 }
1466
26680f06 1467 //---------------------------------------------------------------------
1468 // From here only if M02 is large but not too large, fill histograms
1469 //---------------------------------------------------------------------
1470
3c1d9afb 1471 if( l0 < fM02MinCut || l0 > fM02MaxCut ) continue ;
26680f06 1472
1473 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
1474 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
1475
2a77f6f4 1476 Float_t asym = -10;
1477 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
1478
243c2909 1479 if (nMax==1)
1480 {
2a77f6f4 1481 fhMassNLocMax1[0][matched]->Fill(en,mass );
1482 fhAsymNLocMax1 [matched]->Fill(en,asym );
1483 // Effect of cuts in mass histograms
1484 if(splitFrac > 0.85 && !matched)
1485 {
1486 fhMassSplitECutNLocMax1->Fill(en,mass );
1487 if(GetCaloPID()->IsInSplitM02Range(en,l0,nMax))fhMassM02CutNLocMax1->Fill(en,mass);
1488 }
26680f06 1489
883411b2 1490 if(fFillAngleHisto)
1491 {
1492 fhAnglePairLocMax1[matched]->Fill(en,angle);
0137016b 1493 if( en > 7 )
5c46c992 1494 fhAnglePairMassLocMax1[matched]->Fill(mass,angle);
0137016b 1495 }
5c46c992 1496
bb2d339b 1497 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMax1[0][matched]->Fill(en,l0); fhMassConLocMax1[0][matched]->Fill(en,mass); }
1498 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMax1[0][matched]->Fill(en,l0); fhMassPi0LocMax1[0][matched]->Fill(en,mass); }
1499 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMax1[0][matched]->Fill(en,l0); fhMassEtaLocMax1[0][matched]->Fill(en,mass); }
243c2909 1500 }
5c46c992 1501 else if(nMax==2)
1502 {
2a77f6f4 1503 fhMassNLocMax2[0][matched]->Fill(en,mass );
1504 fhAsymNLocMax2 [matched]->Fill(en,asym );
1505 // Effect of cuts in mass histograms
1506 if(splitFrac > 0.85 && !matched)
1507 {
1508 fhMassSplitECutNLocMax2->Fill(en,mass);
1509 if(GetCaloPID()->IsInSplitM02Range(en,l0,nMax))fhMassM02CutNLocMax2->Fill(en,mass);
1510 }
26680f06 1511
883411b2 1512 if(fFillAngleHisto)
0137016b 1513 {
883411b2 1514 fhAnglePairLocMax2[matched]->Fill(en,angle);
1515 if( en > 7 )
1516 fhAnglePairMassLocMax2[matched]->Fill(mass,angle);
0137016b 1517 }
5c46c992 1518
bb2d339b 1519 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMax2[0][matched]->Fill(en,l0); fhMassConLocMax2[0][matched]->Fill(en,mass); }
1520 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMax2[0][matched]->Fill(en,l0); fhMassPi0LocMax2[0][matched]->Fill(en,mass); }
1521 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMax2[0][matched]->Fill(en,l0); fhMassEtaLocMax2[0][matched]->Fill(en,mass); }
243c2909 1522 }
5c46c992 1523 else if(nMax >2)
1524 {
2a77f6f4 1525 fhMassNLocMaxN[0][matched]->Fill(en,mass);
1526 fhAsymNLocMaxN [matched]->Fill(en,asym);
1527 // Effect of cuts in mass histograms
1528 if(splitFrac > 0.85 && !matched)
1529 {
1530 fhMassSplitECutNLocMaxN->Fill(en,mass );
1531 if(GetCaloPID()->IsInSplitM02Range(en,l0,nMax))fhMassM02CutNLocMaxN->Fill(en,mass);
1532 }
26680f06 1533
883411b2 1534 if(fFillAngleHisto)
1535 {
1536 fhAnglePairLocMaxN[matched]->Fill(en,angle);
1537 if( en > 7 )
1538 fhAnglePairMassLocMaxN[matched]->Fill(mass,angle);
0137016b 1539 }
5c46c992 1540
bb2d339b 1541 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMaxN[0][matched]->Fill(en,l0); fhMassConLocMaxN[0][matched]->Fill(en,mass); }
1542 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMaxN[0][matched]->Fill(en,l0); fhMassPi0LocMaxN[0][matched]->Fill(en,mass); }
1543 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMaxN[0][matched]->Fill(en,l0); fhMassEtaLocMaxN[0][matched]->Fill(en,mass); }
243c2909 1544 }
1545
26680f06 1546
3c1d9afb 1547 if(IsDataMC())
1548 {
243c2909 1549 if (nMax==1)
1550 {
5c46c992 1551 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
bb2d339b 1552 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMax1[mcindex][matched]->Fill(en,l0); fhMassConLocMax1[mcindex][matched]->Fill(en,mass); }
1553 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMax1[mcindex][matched]->Fill(en,l0); fhMassPi0LocMax1[mcindex][matched]->Fill(en,mass); }
1554 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMax1[mcindex][matched]->Fill(en,l0); fhMassEtaLocMax1[mcindex][matched]->Fill(en,mass); }
243c2909 1555 }
0137016b 1556 else if(nMax==2)
1557 {
5c46c992 1558 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
bb2d339b 1559 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMax2[mcindex][matched]->Fill(en,l0); fhMassConLocMax2[mcindex][matched]->Fill(en,mass); }
1560 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMax2[mcindex][matched]->Fill(en,l0); fhMassPi0LocMax2[mcindex][matched]->Fill(en,mass); }
1561 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMax2[mcindex][matched]->Fill(en,l0); fhMassEtaLocMax2[mcindex][matched]->Fill(en,mass); }
1562
243c2909 1563 }
0137016b 1564 else if(nMax >2)
1565 {
5c46c992 1566 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
bb2d339b 1567 if (pidTag==AliCaloPID::kPhoton) { fhM02ConLocMaxN[mcindex][matched]->Fill(en,l0); fhMassConLocMaxN[mcindex][matched]->Fill(en,mass); }
1568 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0LocMaxN[mcindex][matched]->Fill(en,l0); fhMassPi0LocMaxN[mcindex][matched]->Fill(en,mass); }
1569 else if(pidTag==AliCaloPID::kEta) { fhM02EtaLocMaxN[mcindex][matched]->Fill(en,l0); fhMassEtaLocMaxN[mcindex][matched]->Fill(en,mass); }
243c2909 1570 }
992b14a7 1571
1572 }//Work with MC truth first
5c46c992 1573
992b14a7 1574 }//loop
1575
1576 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
e23a0471 1577
992b14a7 1578}
1579
1580//______________________________________________________________________
1581void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
1582{
1583 //Print some relevant parameters set for the analysis
1584 if(! opt)
1585 return;
1586
1587 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 1588 AliAnaCaloTrackCorrBaseClass::Print("");
243c2909 1589 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
dbba06ca 1590 printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
1591 printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
cfc19369 1592 printf("Min. N Cells =%d \n", fMinNCells) ;
1593 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
71e3889f 1594 printf("%2.2f < lambda_0^2 <%2.2f \n",fM02MinCut,fM02MaxCut);
3c1d9afb 1595
992b14a7 1596 printf(" \n") ;
1597
1598}
1599
dbba06ca 1600
992b14a7 1601