]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
correcting cone exess
[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),
8edbd100 59 fFillTMHisto(kFALSE),
8e81c2cf 60 fFillTMResidualHisto(kFALSE),
2a77f6f4 61 fFillSSExtraHisto(kFALSE),
62 fFillMCFractionHisto(kFALSE),
dbe09c26 63 fFillSSWeightHisto(kFALSE),
19391b8c 64 fFillEbinHisto(0),
65 fSSWeightN(0), fSSECellCutN(0),
8edbd100 66 fWSimu(0),
2a77f6f4 67 fhMassM02CutNLocMax1(0), fhMassM02CutNLocMax2(0), fhMassM02CutNLocMaxN(0),
77cadd95 68 fhAsymM02CutNLocMax1(0), fhAsymM02CutNLocMax2(0), fhAsymM02CutNLocMaxN(0),
e671adc2 69 fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
667432ef 70 fhMCGenFracAfterCutsNLocMax1MCPi0(0),
71 fhMCGenFracAfterCutsNLocMax2MCPi0(0),
72 fhMCGenFracAfterCutsNLocMaxNMCPi0(0),
73 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0(0),
74 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0(0),
75 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0(0),
c8710850 76 fhEventPlanePi0NLocMax1(0), fhEventPlaneEtaNLocMax1(0),
77 fhEventPlanePi0NLocMax2(0), fhEventPlaneEtaNLocMax2(0),
9554fc65 78 fhEventPlanePi0NLocMaxN(0), fhEventPlaneEtaNLocMaxN(0),
79 fhClusterEtaPhiNLocMax1(0), fhClusterEtaPhiNLocMax2(0), fhClusterEtaPhiNLocMaxN(0),
80 fhPi0EtaPhiNLocMax1(0), fhPi0EtaPhiNLocMax2(0), fhPi0EtaPhiNLocMaxN(0),
81 fhEtaEtaPhiNLocMax1(0), fhEtaEtaPhiNLocMax2(0), fhEtaEtaPhiNLocMaxN(0)
992b14a7 82{
83 //default ctor
84
85 // Init array of histograms
de7d73e6 86 for(Int_t i = 0; i < 8; i++)
5c46c992 87 {
88 for(Int_t j = 0; j < 2; j++)
89 {
5c46c992 90 fhMassNLocMax1[i][j] = 0;
91 fhMassNLocMax2[i][j] = 0;
92 fhMassNLocMaxN[i][j] = 0;
93 fhNLocMax[i][j] = 0;
5c46c992 94 fhNLocMaxM02Cut[i][j] = 0;
95 fhM02NLocMax1[i][j] = 0;
96 fhM02NLocMax2[i][j] = 0;
97 fhM02NLocMaxN[i][j] = 0;
98 fhNCellNLocMax1[i][j] = 0;
99 fhNCellNLocMax2[i][j] = 0;
100 fhNCellNLocMaxN[i][j] = 0;
c8710850 101 fhM02Pi0NLocMax1[i][j] = 0;
102 fhM02EtaNLocMax1[i][j] = 0;
103 fhM02ConNLocMax1[i][j] = 0;
104 fhM02Pi0NLocMax2[i][j] = 0;
105 fhM02EtaNLocMax2[i][j] = 0;
106 fhM02ConNLocMax2[i][j] = 0;
107 fhM02Pi0NLocMaxN[i][j] = 0;
108 fhM02EtaNLocMaxN[i][j] = 0;
109 fhM02ConNLocMaxN[i][j] = 0;
110
111 fhMassPi0NLocMax1[i][j] = 0;
112 fhMassEtaNLocMax1[i][j] = 0;
113 fhMassConNLocMax1[i][j] = 0;
114 fhMassPi0NLocMax2[i][j] = 0;
115 fhMassEtaNLocMax2[i][j] = 0;
116 fhMassConNLocMax2[i][j] = 0;
117 fhMassPi0NLocMaxN[i][j] = 0;
118 fhMassEtaNLocMaxN[i][j] = 0;
119 fhMassConNLocMaxN[i][j] = 0;
120
121
122 fhAsyPi0NLocMax1[i][j] = 0;
123 fhAsyEtaNLocMax1[i][j] = 0;
124 fhAsyConNLocMax1[i][j] = 0;
125 fhAsyPi0NLocMax2[i][j] = 0;
126 fhAsyEtaNLocMax2[i][j] = 0;
127 fhAsyConNLocMax2[i][j] = 0;
128 fhAsyPi0NLocMaxN[i][j] = 0;
129 fhAsyEtaNLocMaxN[i][j] = 0;
130 fhAsyConNLocMaxN[i][j] = 0;
e671adc2 131
0137016b 132 fhMassM02NLocMax1[i][j]= 0;
133 fhMassM02NLocMax2[i][j]= 0;
d2655d46 134 fhMassM02NLocMaxN[i][j]= 0;
135 fhMassDispEtaNLocMax1[i][j]= 0;
136 fhMassDispEtaNLocMax2[i][j]= 0;
137 fhMassDispEtaNLocMaxN[i][j]= 0;
138 fhMassDispPhiNLocMax1[i][j]= 0;
139 fhMassDispPhiNLocMax2[i][j]= 0;
140 fhMassDispPhiNLocMaxN[i][j]= 0;
141 fhMassDispAsyNLocMax1[i][j]= 0;
142 fhMassDispAsyNLocMax2[i][j]= 0;
143 fhMassDispAsyNLocMaxN[i][j]= 0;
8e81c2cf 144
fc01318e 145 fhSplitEFractionNLocMax1[i][j]=0;
146 fhSplitEFractionNLocMax2[i][j]=0;
147 fhSplitEFractionNLocMaxN[i][j]=0;
148
8e81c2cf 149 fhMCGenFracNLocMax1[i][j]= 0;
150 fhMCGenFracNLocMax2[i][j]= 0;
151 fhMCGenFracNLocMaxN[i][j]= 0;
5094c724 152
153 fhMCGenSplitEFracNLocMax1[i][j]= 0;
154 fhMCGenSplitEFracNLocMax2[i][j]= 0;
bb2d339b 155 fhMCGenSplitEFracNLocMaxN[i][j]= 0;
156
157 fhMCGenEFracvsSplitEFracNLocMax1[i][j]= 0;
158 fhMCGenEFracvsSplitEFracNLocMax2[i][j]= 0;
159 fhMCGenEFracvsSplitEFracNLocMaxN[i][j]= 0;
160
161 fhMCGenEvsSplitENLocMax1[i][j]= 0;
162 fhMCGenEvsSplitENLocMax2[i][j]= 0;
e671adc2 163 fhMCGenEvsSplitENLocMaxN[i][j]= 0;
164
165 fhAsymNLocMax1 [i][j] = 0;
166 fhAsymNLocMax2 [i][j] = 0;
167 fhAsymNLocMaxN [i][j] = 0;
74858845 168
169 fhMassAfterCutsNLocMax1[i][j] = 0;
170 fhMassAfterCutsNLocMax2[i][j] = 0;
171 fhMassAfterCutsNLocMaxN[i][j] = 0;
172
173 fhSplitEFractionAfterCutsNLocMax1[i][j] = 0 ;
174 fhSplitEFractionAfterCutsNLocMax2[i][j] = 0 ;
175 fhSplitEFractionAfterCutsNLocMaxN[i][j] = 0 ;
17f5b4b6 176
177 fhCentralityPi0NLocMax1[i][j] = 0 ;
178 fhCentralityEtaNLocMax1[i][j] = 0 ;
179
180 fhCentralityPi0NLocMax2[i][j] = 0 ;
181 fhCentralityEtaNLocMax2[i][j] = 0 ;
182
183 fhCentralityPi0NLocMaxN[i][j] = 0 ;
184 fhCentralityEtaNLocMaxN[i][j] = 0 ;
8e81c2cf 185 }
19391b8c 186
8e81c2cf 187 for(Int_t jj = 0; jj < 4; jj++)
188 {
53f2c382 189 fhM02MCGenFracNLocMax1Ebin[i][jj] = 0;
190 fhM02MCGenFracNLocMax2Ebin[i][jj] = 0;
191 fhM02MCGenFracNLocMaxNEbin[i][jj] = 0;
8e81c2cf 192
193 fhMassMCGenFracNLocMax1Ebin[i][jj]= 0;
194 fhMassMCGenFracNLocMax2Ebin[i][jj]= 0;
195 fhMassMCGenFracNLocMaxNEbin[i][jj]= 0;
53f2c382 196
fc01318e 197 fhMCGenFracNLocMaxEbin[i][jj] = 0;
53f2c382 198 fhMCGenFracNLocMaxEbinMatched[i][jj]= 0;
fc01318e 199
200 fhMassSplitEFractionNLocMax1Ebin[i][jj] = 0;
201 fhMassSplitEFractionNLocMax2Ebin[i][jj] = 0;
202 fhMassSplitEFractionNLocMaxNEbin[i][jj] = 0;
5c46c992 203 }
204
c8710850 205 fhTrackMatchedDEtaNLocMax1[i] = 0;
206 fhTrackMatchedDPhiNLocMax1[i] = 0;
207 fhTrackMatchedDEtaNLocMax2[i] = 0;
208 fhTrackMatchedDPhiNLocMax2[i] = 0;
209 fhTrackMatchedDEtaNLocMaxN[i] = 0;
210 fhTrackMatchedDPhiNLocMaxN[i] = 0;
243c2909 211
992b14a7 212 }
213
5c46c992 214 for(Int_t i = 0; i < 2; i++)
215 {
c8710850 216 fhAnglePairNLocMax1 [i] = 0;
217 fhAnglePairNLocMax2 [i] = 0;
218 fhAnglePairNLocMaxN [i] = 0;
219 fhAnglePairMassNLocMax1[i] = 0;
220 fhAnglePairMassNLocMax2[i] = 0;
221 fhAnglePairMassNLocMaxN[i] = 0;
e671adc2 222 fhSplitEFractionvsAsyNLocMax1[i] = 0;
223 fhSplitEFractionvsAsyNLocMax2[i] = 0;
224 fhSplitEFractionvsAsyNLocMaxN[i] = 0;
5c46c992 225 }
226
7b686344 227 for(Int_t i = 0; i < 4; i++)
228 {
229 fhMassM02NLocMax1Ebin[i] = 0 ;
230 fhMassM02NLocMax2Ebin[i] = 0 ;
231 fhMassM02NLocMaxNEbin[i] = 0 ;
b8eb40fc 232
233 fhMassAsyNLocMax1Ebin[i] = 0 ;
234 fhMassAsyNLocMax2Ebin[i] = 0 ;
235 fhMassAsyNLocMaxNEbin[i] = 0 ;
236
237 fhAsyMCGenRecoNLocMax1EbinPi0[i] = 0 ;
238 fhAsyMCGenRecoNLocMax2EbinPi0[i] = 0 ;
239 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = 0 ;
d2655d46 240
241 fhMassDispEtaNLocMax1Ebin[i] = 0 ;
242 fhMassDispEtaNLocMax2Ebin[i] = 0 ;
243 fhMassDispEtaNLocMaxNEbin[i] = 0 ;
244
245 fhMassDispPhiNLocMax1Ebin[i] = 0 ;
246 fhMassDispPhiNLocMax2Ebin[i] = 0 ;
247 fhMassDispPhiNLocMaxNEbin[i] = 0 ;
248
249 fhMassDispAsyNLocMax1Ebin[i] = 0 ;
250 fhMassDispAsyNLocMax2Ebin[i] = 0 ;
251 fhMassDispAsyNLocMaxNEbin[i] = 0 ;
8e81c2cf 252
253 fhMCAsymM02NLocMax1MCPi0Ebin[i] = 0 ;
254 fhMCAsymM02NLocMax2MCPi0Ebin[i] = 0 ;
255 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = 0 ;
7b686344 256 }
257
dbe09c26 258
259 for(Int_t nlm = 0; nlm < 3; nlm++)
260 {
261 fhPi0CellE [nlm] = 0 ;
262 fhPi0CellEFrac [nlm] = 0 ;
263 fhPi0CellLogEFrac[nlm] = 0 ;
264
19391b8c 265 fhPi0CellEMaxEMax2Frac [nlm] = 0 ;
266 fhPi0CellEMaxClusterFrac [nlm] = 0 ;
267 fhPi0CellEMax2ClusterFrac[nlm] = 0 ;
268
269 fhPi0CellEMaxFrac [nlm] = 0 ;
270 fhPi0CellEMax2Frac[nlm] = 0 ;
271
dbe09c26 272 for(Int_t i = 0; i < 10; i++)
19391b8c 273 {
274 fhM02WeightPi0 [nlm][i] = 0;
275 fhM02ECellCutPi0[nlm][i] = 0;
276 }
dbe09c26 277 }
278
992b14a7 279 InitParameters();
19391b8c 280
992b14a7 281}
282
19391b8c 283//__________________________________________________________________________________________________
284void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus, const Int_t nlm,
285 const Int_t absId1, const Int_t absId2)
dbe09c26 286{
287 // Calculate weights and fill histograms
288
289 if(!fFillSSWeightHisto) return;
290
291 AliVCaloCells* cells = 0;
292 if(fCalorimeter == "EMCAL") cells = GetEMCALCells();
293 else cells = GetPHOSCells();
294
295 // First recalculate energy in case non linearity was applied
296 Float_t energy = 0;
297 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
298 {
299
300 Int_t id = clus->GetCellsAbsId()[ipos];
301
302 //Recalibrate cell energy if needed
303 Float_t amp = cells->GetCellAmplitude(id);
304 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
305
306 energy += amp;
307
308 } // energy loop
309
310 if(energy <=0 )
311 {
312 printf("AliAnaInsideClusterInvatiantMass::WeightHistograms()- Wrong calculated energy %f\n",energy);
313 return;
314 }
315
19391b8c 316 //Get amplitude of main local maxima, recalibrate if needed
317 Float_t amp1 = cells->GetCellAmplitude(absId1);
318 GetCaloUtils()->RecalibrateCellAmplitude(amp1,fCalorimeter, absId1);
319 Float_t amp2 = cells->GetCellAmplitude(absId2);
320 GetCaloUtils()->RecalibrateCellAmplitude(amp2,fCalorimeter, absId2);
321
322 if(amp1 < amp2) printf("Bad local maxima E ordering : id1 E %f, id2 E %f\n ",amp1,amp2);
323 if(amp1==0 || amp2==0) printf("Null E local maxima : id1 E %f, id2 E %f\n " ,amp1,amp2);
324
325 if(amp1>0)fhPi0CellEMaxEMax2Frac [nlm]->Fill(energy,amp2/amp1);
326 fhPi0CellEMaxClusterFrac [nlm]->Fill(energy,amp1/energy);
327 fhPi0CellEMax2ClusterFrac[nlm]->Fill(energy,amp2/energy);
328
dbe09c26 329 //Get the ratio and log ratio to all cells in cluster
330 for (Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
331 {
332 Int_t id = clus->GetCellsAbsId()[ipos];
333
334 //Recalibrate cell energy if needed
335 Float_t amp = cells->GetCellAmplitude(id);
336 GetCaloUtils()->RecalibrateCellAmplitude(amp,fCalorimeter, id);
337
19391b8c 338 if(amp > 0)fhPi0CellE [nlm]->Fill(energy,amp);
dbe09c26 339 fhPi0CellEFrac [nlm]->Fill(energy,amp/energy);
340 fhPi0CellLogEFrac[nlm]->Fill(energy,TMath::Log(amp/energy));
19391b8c 341
342 if (id!=absId1 && id!=absId2)
343 {
344 if(amp1>0)fhPi0CellEMaxFrac [nlm]->Fill(energy,amp/amp1);
345 if(amp2>0)fhPi0CellEMax2Frac[nlm]->Fill(energy,amp/amp2);
346 }
347
dbe09c26 348 }
349
350 //Recalculate shower shape for different W0
351 if(fCalorimeter=="EMCAL")
352 {
353 Float_t l0org = clus->GetM02();
354 Float_t l1org = clus->GetM20();
355 Float_t dorg = clus->GetDispersion();
19391b8c 356 Float_t w0org = GetCaloUtils()->GetEMCALRecoUtils()->GetW0();
dbe09c26 357
358 for(Int_t iw = 0; iw < fSSWeightN; iw++)
359 {
360 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
8edbd100 361 //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
362
363 Float_t l0 = 0., l1 = 0.;
364 Float_t disp = 0., dEta = 0., dPhi = 0.;
365 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
366
367 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
368 dEta, dPhi, sEta, sPhi, sEtaPhi,0);
369
dbe09c26 370
371 fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
372
373 } // w0 loop
374
375 // Set the original values back
376 clus->SetM02(l0org);
377 clus->SetM20(l1org);
378 clus->SetDispersion(dorg);
19391b8c 379 GetCaloUtils()->GetEMCALRecoUtils()->SetW0(w0org);
380
381 for(Int_t iec = 0; iec < fSSECellCutN; iec++)
382 {
383 Float_t l0 = 0., l1 = 0.;
384 Float_t disp = 0., dEta = 0., dPhi = 0.;
385 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
19391b8c 386
3ae72bd8 387 RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
388 dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
389
c0779373 390 //printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
19391b8c 391 fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
392
393 } // w0 loop
3ae72bd8 394
dbe09c26 395 }// EMCAL
396}
397
398
992b14a7 399//_______________________________________________________________
400TObjString * AliAnaInsideClusterInvariantMass::GetAnalysisCuts()
401{
402 //Save parameters used for analysis
403 TString parList ; //this will be list of parameters used for this analysis.
404 const Int_t buffersize = 255;
405 char onePar[buffersize] ;
406
407 snprintf(onePar,buffersize,"--- AliAnaInsideClusterInvariantMass ---\n") ;
408 parList+=onePar ;
409
243c2909 410 snprintf(onePar,buffersize,"Calorimeter: %s\n", fCalorimeter.Data()) ;
992b14a7 411 parList+=onePar ;
c8710850 412 snprintf(onePar,buffersize,"fNLocMaxCutE =%2.2f \n", GetCaloUtils()->GetLocalMaximaCutE()) ;
29ca9cad 413 parList+=onePar ;
c8710850 414 snprintf(onePar,buffersize,"fNLocMaxCutEDiff =%2.2f \n",GetCaloUtils()->GetLocalMaximaCutEDiff()) ;
29ca9cad 415 parList+=onePar ;
71e3889f 416 snprintf(onePar,buffersize,"%2.2f< M02 < %2.2f \n", fM02MinCut, fM02MaxCut) ;
992b14a7 417 parList+=onePar ;
e23a0471 418 snprintf(onePar,buffersize,"fMinNCells =%d \n", fMinNCells) ;
2cb134fb 419 parList+=onePar ;
3c1d9afb 420 snprintf(onePar,buffersize,"fMinBadDist =%1.1f \n", fMinBadDist) ;
992b14a7 421 parList+=onePar ;
19391b8c 422 if(fFillSSWeightHisto)
423 {
424 snprintf(onePar,buffersize," N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
425 parList+=onePar ;
426 }
427
992b14a7 428 return new TObjString(parList) ;
429
430}
431
992b14a7 432//________________________________________________________________
433TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
434{
435 // Create histograms to be saved in output file and
436 // store them in outputContainer
437 TList * outputContainer = new TList() ;
667432ef 438 outputContainer->SetName("InsideClusterHistos") ;
992b14a7 439
745913ae 440 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
441 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
442 Int_t mbins = GetHistogramRanges()->GetHistoMassBins(); Float_t mmax = GetHistogramRanges()->GetHistoMassMax(); Float_t mmin = GetHistogramRanges()->GetHistoMassMin();
443 Int_t ncbins = GetHistogramRanges()->GetHistoNClusterCellBins(); Int_t ncmax = GetHistogramRanges()->GetHistoNClusterCellMax(); Int_t ncmin = GetHistogramRanges()->GetHistoNClusterCellMin();
9554fc65 444 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
445 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
992b14a7 446
5c46c992 447 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
448 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
449 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
450 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
451 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
452 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
453
de7d73e6 454 TString ptype[] ={"","#gamma","#gamma->e^{#pm}","#pi^{0}","#eta","e^{#pm}", "hadron","#pi^{0} (#gamma->e^{#pm})"};
455 TString pname[] ={"","Photon","Conversion", "Pi0", "Eta", "Electron","Hadron","Pi0Conv"};
992b14a7 456
457 Int_t n = 1;
458
de7d73e6 459 if(IsDataMC()) n = 8;
992b14a7 460
243c2909 461 Int_t nMaxBins = 10;
462
5c46c992 463 TString sMatched[] = {"","Matched"};
464
8edbd100 465 Int_t nMatched = 2;
466 if(!fFillTMHisto) nMatched = 1;
aa12888f 467
5c46c992 468 for(Int_t i = 0; i < n; i++)
667432ef 469 {
8edbd100 470 for(Int_t j = 0; j < nMatched; j++)
667432ef 471 {
5c46c992 472
473 fhMassNLocMax1[i][j] = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 474 Form("Invariant mass of splitted cluster with NLM=1 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 475 nptbins,ptmin,ptmax,mbins,mmin,mmax);
476 fhMassNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
477 fhMassNLocMax1[i][j]->SetXTitle("E (GeV)");
478 outputContainer->Add(fhMassNLocMax1[i][j]) ;
479
480 fhMassNLocMax2[i][j] = new TH2F(Form("hMassNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 481 Form("Invariant mass of splitted cluster with NLM=2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 482 nptbins,ptmin,ptmax,mbins,mmin,mmax);
483 fhMassNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
484 fhMassNLocMax2[i][j]->SetXTitle("E (GeV)");
485 outputContainer->Add(fhMassNLocMax2[i][j]) ;
486
487 fhMassNLocMaxN[i][j] = new TH2F(Form("hMassNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 488 Form("Invariant mass of splitted cluster with NLM>2 vs E, %s %s",ptype[i].Data(),sMatched[j].Data()),
5c46c992 489 nptbins,ptmin,ptmax,mbins,mmin,mmax);
490 fhMassNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
491 fhMassNLocMaxN[i][j]->SetXTitle("E (GeV)");
667432ef 492 outputContainer->Add(fhMassNLocMaxN[i][j]) ;
493
aa12888f 494 if(i==0 && j==0)
495 {
496 fhMassSplitECutNLocMax1 = new TH2F("hMassSplitECutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, (E1+E2)/E cut, no TM",
497 nptbins,ptmin,ptmax,mbins,mmin,mmax);
498 fhMassSplitECutNLocMax1->SetYTitle("M (GeV/c^{2})");
499 fhMassSplitECutNLocMax1->SetXTitle("E (GeV)");
500 outputContainer->Add(fhMassSplitECutNLocMax1) ;
501
502 fhMassSplitECutNLocMax2 = new TH2F("hMassSplitECutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, (E1+E2)/E cut, no TM",
503 nptbins,ptmin,ptmax,mbins,mmin,mmax);
504 fhMassSplitECutNLocMax2->SetYTitle("M (GeV/c^{2})");
505 fhMassSplitECutNLocMax2->SetXTitle("E (GeV)");
506 outputContainer->Add(fhMassSplitECutNLocMax2) ;
507
508 fhMassSplitECutNLocMaxN = new TH2F("hMassSplitECutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, (E1+E2)/E cut, no TM",
509 nptbins,ptmin,ptmax,mbins,mmin,mmax);
510 fhMassSplitECutNLocMaxN->SetYTitle("M (GeV/c^{2})");
511 fhMassSplitECutNLocMaxN->SetXTitle("E (GeV)");
512 outputContainer->Add(fhMassSplitECutNLocMaxN) ;
513
514 fhMassM02CutNLocMax1 = new TH2F("hMassM02CutNLocMax1","Invariant mass of splitted cluster with NLM=1 vs E, M02 cut, no TM",
515 nptbins,ptmin,ptmax,mbins,mmin,mmax);
516 fhMassM02CutNLocMax1->SetYTitle("M (GeV/c^{2})");
517 fhMassM02CutNLocMax1->SetXTitle("E (GeV)");
518 outputContainer->Add(fhMassM02CutNLocMax1) ;
519
520 fhMassM02CutNLocMax2 = new TH2F("hMassM02CutNLocMax2","Invariant mass of splitted cluster with NLM=2 vs E, M02 cut, no TM",
521 nptbins,ptmin,ptmax,mbins,mmin,mmax);
522 fhMassM02CutNLocMax2->SetYTitle("M (GeV/c^{2})");
523 fhMassM02CutNLocMax2->SetXTitle("E (GeV)");
524 outputContainer->Add(fhMassM02CutNLocMax2) ;
525
526 fhMassM02CutNLocMaxN = new TH2F("hMassM02CutNLocMaxN","Invariant mass of splitted cluster with NLM>2 vs E, M02 cut, no TM",
527 nptbins,ptmin,ptmax,mbins,mmin,mmax);
528 fhMassM02CutNLocMaxN->SetYTitle("M (GeV/c^{2})");
529 fhMassM02CutNLocMaxN->SetXTitle("E (GeV)");
530 outputContainer->Add(fhMassM02CutNLocMaxN) ;
531
532 }
533
74858845 534 fhMassAfterCutsNLocMax1[i][j] = new TH2F(Form("hMassAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
535 Form("Mass vs E, %s %s, for N Local max = 1, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
536 nptbins,ptmin,ptmax,mbins,mmin,mmax);
537 fhMassAfterCutsNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
538 fhMassAfterCutsNLocMax1[i][j] ->SetXTitle("E (GeV)");
539 outputContainer->Add(fhMassAfterCutsNLocMax1[i][j]) ;
540
541 fhMassAfterCutsNLocMax2[i][j] = new TH2F(Form("hMassAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
542 Form("Mass vs E, %s %s, for N Local max = 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
543 nptbins,ptmin,ptmax,mbins,mmin,mmax);
544 fhMassAfterCutsNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
545 fhMassAfterCutsNLocMax2[i][j] ->SetXTitle("E (GeV)");
546 outputContainer->Add(fhMassAfterCutsNLocMax2[i][j]) ;
547
548
549 fhMassAfterCutsNLocMaxN[i][j] = new TH2F(Form("hMassAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
550 Form("Mass vs E, %s %s, for N Local max > 2, M02 and asy cut",ptype[i].Data(),sMatched[j].Data()),
551 nptbins,ptmin,ptmax,mbins,mmin,mmax);
552 fhMassAfterCutsNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
553 fhMassAfterCutsNLocMaxN[i][j] ->SetXTitle("E (GeV)");
554 outputContainer->Add(fhMassAfterCutsNLocMaxN[i][j]) ;
aa12888f 555
74858845 556 fhSplitEFractionAfterCutsNLocMax1[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
557 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
558 nptbins,ptmin,ptmax,120,0,1.2);
559 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
560 fhSplitEFractionAfterCutsNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
561 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax1[i][j]) ;
562
563 fhSplitEFractionAfterCutsNLocMax2[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
564 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
565 nptbins,ptmin,ptmax,120,0,1.2);
566 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
567 fhSplitEFractionAfterCutsNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
568 outputContainer->Add(fhSplitEFractionAfterCutsNLocMax2[i][j]) ;
569
570 fhSplitEFractionAfterCutsNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionAfterCutsNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
571 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2, M02 and Asy cut on, %s %s",ptype[i].Data(),sMatched[j].Data()),
572 nptbins,ptmin,ptmax,120,0,1.2);
573 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
574 fhSplitEFractionAfterCutsNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
575 outputContainer->Add(fhSplitEFractionAfterCutsNLocMaxN[i][j]) ;
576
5c46c992 577
0137016b 578 fhMassM02NLocMax1[i][j] = new TH2F(Form("hMassM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 579 Form("Invariant mass of splitted cluster with NLM=1, #lambda_{0}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 580 ssbins,ssmin,ssmax,mbins,mmin,mmax);
581 fhMassM02NLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
582 fhMassM02NLocMax1[i][j]->SetXTitle("#lambda_{0}^{2}");
583 outputContainer->Add(fhMassM02NLocMax1[i][j]) ;
584
585 fhMassM02NLocMax2[i][j] = new TH2F(Form("hMassM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 586 Form("Invariant mass of splitted cluster with NLM=2, #lambda_{0}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 587 ssbins,ssmin,ssmax,mbins,mmin,mmax);
588 fhMassM02NLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
589 fhMassM02NLocMax2[i][j]->SetXTitle("#lambda_{0}^{2}");
590 outputContainer->Add(fhMassM02NLocMax2[i][j]) ;
591
592 fhMassM02NLocMaxN[i][j] = new TH2F(Form("hMassM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 593 Form("Invariant mass of splitted cluster with NLM>2, vs #lambda_{0}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
0137016b 594 ssbins,ssmin,ssmax,mbins,mmin,mmax);
595 fhMassM02NLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
596 fhMassM02NLocMaxN[i][j]->SetXTitle("#lambda_{0}^{2}");
597 outputContainer->Add(fhMassM02NLocMaxN[i][j]) ;
598
e671adc2 599
600 fhAsymNLocMax1[i][j] = new TH2F(Form("hAsymNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
601 Form("Asymmetry of NLM=1 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
602 nptbins,ptmin,ptmax,200,-1,1);
acd56ca4 603 fhAsymNLocMax1[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
e671adc2 604 fhAsymNLocMax1[i][j]->SetXTitle("E (GeV)");
605 outputContainer->Add(fhAsymNLocMax1[i][j]) ;
606
607 fhAsymNLocMax2[i][j] = new TH2F(Form("hAsymNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
608 Form("Asymmetry of NLM=2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
609 nptbins,ptmin,ptmax,200,-1,1);
acd56ca4 610 fhAsymNLocMax2[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
e671adc2 611 fhAsymNLocMax2[i][j]->SetXTitle("E (GeV)");
612 outputContainer->Add(fhAsymNLocMax2[i][j]) ;
613
614 fhAsymNLocMaxN[i][j] = new TH2F(Form("hAsymNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
615 Form("Asymmetry of NLM>2 vs cluster Energy, %s %s",ptype[i].Data(),sMatched[j].Data()),
616 nptbins,ptmin,ptmax,200,-1,1);
617 fhAsymNLocMaxN[i][j]->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
618 fhAsymNLocMaxN[i][j]->SetXTitle("E (GeV)");
619 outputContainer->Add(fhAsymNLocMaxN[i][j]) ;
620
aa12888f 621 if(i==0 && j==0)
622 {
623 fhAsymM02CutNLocMax1 = new TH2F("hAsymM02CutNLocMax1","Asymmetry of NLM=1 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
624 fhAsymM02CutNLocMax1->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
625 fhAsymM02CutNLocMax1->SetXTitle("E (GeV)");
626 outputContainer->Add(fhAsymM02CutNLocMax1) ;
627
628 fhAsymM02CutNLocMax2 = new TH2F("hAsymM02CutNLocMax2","Asymmetry of NLM=2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
629 fhAsymM02CutNLocMax2->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
630 fhAsymM02CutNLocMax2->SetXTitle("E (GeV)");
631 outputContainer->Add(fhAsymM02CutNLocMax2) ;
632
633 fhAsymM02CutNLocMaxN = new TH2F("hAsymM02CutNLocMaxN","Asymmetry of NLM>2 vs cluster Energy, M02Cut, no TM", nptbins,ptmin,ptmax,200,-1,1);
634 fhAsymM02CutNLocMaxN->SetYTitle("(E_{1}-E_{2})/(E_{1}+E_{2})");
635 fhAsymM02CutNLocMaxN->SetXTitle("E (GeV)");
636 outputContainer->Add(fhAsymM02CutNLocMaxN) ;
637 }
e671adc2 638
8e81c2cf 639 if(fFillSSExtraHisto)
640 {
641 fhMassDispEtaNLocMax1[i][j] = new TH2F(Form("hMassDispEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 642 Form("Invariant mass of splitted cluster with NLM=1, #sigma_{#eta #eta}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 643 ssbins,ssmin,ssmax,mbins,mmin,mmax);
644 fhMassDispEtaNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
645 fhMassDispEtaNLocMax1[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
646 outputContainer->Add(fhMassDispEtaNLocMax1[i][j]) ;
647
648 fhMassDispEtaNLocMax2[i][j] = new TH2F(Form("hMassDispEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 649 Form("Invariant mass of splitted cluster with NLM=2 #sigma_{#eta #eta}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 650 ssbins,ssmin,ssmax,mbins,mmin,mmax);
651 fhMassDispEtaNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
652 fhMassDispEtaNLocMax2[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
653 outputContainer->Add(fhMassDispEtaNLocMax2[i][j]) ;
654
655 fhMassDispEtaNLocMaxN[i][j] = new TH2F(Form("hMassDispEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
2a77f6f4 656 Form("Invariant mass of splitted cluster with NLM>2, #sigma_{#eta #eta}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 657 ssbins,ssmin,ssmax,mbins,mmin,mmax);
658 fhMassDispEtaNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
659 fhMassDispEtaNLocMaxN[i][j]->SetXTitle("#sigma_{#eta #eta}^{2}");
660 outputContainer->Add(fhMassDispEtaNLocMaxN[i][j]) ;
661
662 fhMassDispPhiNLocMax1[i][j] = new TH2F(Form("hMassDispPhiNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 663 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 664 ssbins,ssmin,ssmax,mbins,mmin,mmax);
665 fhMassDispPhiNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
666 fhMassDispPhiNLocMax1[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
667 outputContainer->Add(fhMassDispPhiNLocMax1[i][j]) ;
668
669 fhMassDispPhiNLocMax2[i][j] = new TH2F(Form("hMassDispPhiNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 670 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 671 ssbins,ssmin,ssmax,mbins,mmin,mmax);
672 fhMassDispPhiNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
673 fhMassDispPhiNLocMax2[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
674 outputContainer->Add(fhMassDispPhiNLocMax2[i][j]) ;
675
676 fhMassDispPhiNLocMaxN[i][j] = new TH2F(Form("hMassDispPhiNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
677 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, %s %s",ptype[i].Data(),sMatched[j].Data()),
678 ssbins,ssmin,ssmax,mbins,mmin,mmax);
679 fhMassDispPhiNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
680 fhMassDispPhiNLocMaxN[i][j]->SetXTitle("#sigma_{#phi #phi}^{2}");
681 outputContainer->Add(fhMassDispPhiNLocMaxN[i][j]) ;
682
683 fhMassDispAsyNLocMax1[i][j] = new TH2F(Form("hMassDispAsyNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 684 Form("Invariant mass of 2 highest energy cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV,%s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 685 200,-1,1,mbins,mmin,mmax);
686 fhMassDispAsyNLocMax1[i][j]->SetYTitle("M (GeV/c^{2})");
687 fhMassDispAsyNLocMax1[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
688 outputContainer->Add(fhMassDispAsyNLocMax1[i][j]) ;
689
690 fhMassDispAsyNLocMax2[i][j] = new TH2F(Form("hMassDispAsyNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
c8710850 691 Form("Invariant mass of 2 local maxima cells A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2}), E > 12 GeV, %s %s",ptype[i].Data(),sMatched[j].Data()),
8e81c2cf 692 200,-1,1,mbins,mmin,mmax);
693 fhMassDispAsyNLocMax2[i][j]->SetYTitle("M (GeV/c^{2})");
694 fhMassDispAsyNLocMax2[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
695 outputContainer->Add(fhMassDispAsyNLocMax2[i][j]) ;
696
697 fhMassDispAsyNLocMaxN[i][j] = new TH2F(Form("hMassDispAsyNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
698 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()),
699 200,-1,1,mbins,mmin,mmax);
700 fhMassDispAsyNLocMaxN[i][j]->SetYTitle("M (GeV/c^{2})");
701 fhMassDispAsyNLocMaxN[i][j]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
702 outputContainer->Add(fhMassDispAsyNLocMaxN[i][j]) ;
703 }
d2655d46 704
5c46c992 705 fhNLocMax[i][j] = new TH2F(Form("hNLocMax%s%s",pname[i].Data(),sMatched[j].Data()),
706 Form("Number of local maxima in cluster %s %s",ptype[i].Data(),sMatched[j].Data()),
707 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
708 fhNLocMax[i][j] ->SetYTitle("N maxima");
709 fhNLocMax[i][j] ->SetXTitle("E (GeV)");
710 outputContainer->Add(fhNLocMax[i][j]) ;
3c1d9afb 711
5c46c992 712 fhNLocMaxM02Cut[i][j] = new TH2F(Form("hNLocMaxM02Cut%s%s",pname[i].Data(),sMatched[j].Data()),
71e3889f 713 Form("Number of local maxima in cluster %s for %2.2f < M02 < %2.2f",ptype[i].Data(),fM02MinCut,fM02MaxCut),
5c46c992 714 nptbins,ptmin,ptmax,nMaxBins,0,nMaxBins);
715 fhNLocMaxM02Cut[i][j]->SetYTitle("N maxima");
716 fhNLocMaxM02Cut[i][j]->SetXTitle("E (GeV)");
717 outputContainer->Add(fhNLocMaxM02Cut[i][j]) ;
718
719
720 fhM02NLocMax1[i][j] = new TH2F(Form("hM02NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
721 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
722 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
723 fhM02NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
724 fhM02NLocMax1[i][j] ->SetXTitle("E (GeV)");
725 outputContainer->Add(fhM02NLocMax1[i][j]) ;
726
727 fhM02NLocMax2[i][j] = new TH2F(Form("hM02NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
728 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
729 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
730 fhM02NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
731 fhM02NLocMax2[i][j] ->SetXTitle("E (GeV)");
732 outputContainer->Add(fhM02NLocMax2[i][j]) ;
733
5c46c992 734 fhM02NLocMaxN[i][j] = new TH2F(Form("hM02NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
735 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
736 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
737 fhM02NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
738 fhM02NLocMaxN[i][j] ->SetXTitle("E (GeV)");
739 outputContainer->Add(fhM02NLocMaxN[i][j]) ;
740
fc01318e 741
742 fhSplitEFractionNLocMax1[i][j] = new TH2F(Form("hSplitEFractionNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
743 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
744 nptbins,ptmin,ptmax,120,0,1.2);
745 fhSplitEFractionNLocMax1[i][j] ->SetXTitle("E_{cluster} (GeV)");
746 fhSplitEFractionNLocMax1[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
747 outputContainer->Add(fhSplitEFractionNLocMax1[i][j]) ;
748
749 fhSplitEFractionNLocMax2[i][j] = new TH2F(Form("hSplitEFractionNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
750 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
751 nptbins,ptmin,ptmax,120,0,1.2);
752 fhSplitEFractionNLocMax2[i][j] ->SetXTitle("E_{cluster} (GeV)");
753 fhSplitEFractionNLocMax2[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
754 outputContainer->Add(fhSplitEFractionNLocMax2[i][j]) ;
755
756 fhSplitEFractionNLocMaxN[i][j] = new TH2F(Form("hSplitEFractionNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
757 Form("(E1+E2)/E_{cluster} vs E_{cluster} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
758 nptbins,ptmin,ptmax,120,0,1.2);
759 fhSplitEFractionNLocMaxN[i][j] ->SetXTitle("E_{cluster} (GeV)");
760 fhSplitEFractionNLocMaxN[i][j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
761 outputContainer->Add(fhSplitEFractionNLocMaxN[i][j]) ;
762
763
2a77f6f4 764 if(i > 0 && fFillMCFractionHisto) // skip first entry in array, general case not filled
883411b2 765 {
766 fhMCGenFracNLocMax1[i][j] = new TH2F(Form("hMCGenFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
767 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
768 nptbins,ptmin,ptmax,200,0,2);
fb51265c 769 fhMCGenFracNLocMax1[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 770 fhMCGenFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
771 outputContainer->Add(fhMCGenFracNLocMax1[i][j]) ;
772
773 fhMCGenFracNLocMax2[i][j] = new TH2F(Form("hMCGenFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
774 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
775 nptbins,ptmin,ptmax,200,0,2);
fb51265c 776 fhMCGenFracNLocMax2[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 777 fhMCGenFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
778 outputContainer->Add(fhMCGenFracNLocMax2[i][j]) ;
779
780
781 fhMCGenFracNLocMaxN[i][j] = new TH2F(Form("hMCGenFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
782 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
783 nptbins,ptmin,ptmax,200,0,2);
fb51265c 784 fhMCGenFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / E_{reco}");
883411b2 785 fhMCGenFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
786 outputContainer->Add(fhMCGenFracNLocMaxN[i][j]) ;
5094c724 787
788 fhMCGenSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 789 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 790 nptbins,ptmin,ptmax,200,0,2);
791 fhMCGenSplitEFracNLocMax1[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
792 fhMCGenSplitEFracNLocMax1[i][j] ->SetXTitle("E (GeV)");
793 outputContainer->Add(fhMCGenSplitEFracNLocMax1[i][j]) ;
794
795 fhMCGenSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 796 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 797 nptbins,ptmin,ptmax,200,0,2);
798 fhMCGenSplitEFracNLocMax2[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
799 fhMCGenSplitEFracNLocMax2[i][j] ->SetXTitle("E (GeV)");
800 outputContainer->Add(fhMCGenSplitEFracNLocMax2[i][j]) ;
801
802
803 fhMCGenSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 804 Form("E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
5094c724 805 nptbins,ptmin,ptmax,200,0,2);
806 fhMCGenSplitEFracNLocMaxN[i][j] ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
807 fhMCGenSplitEFracNLocMaxN[i][j] ->SetXTitle("E (GeV)");
808 outputContainer->Add(fhMCGenSplitEFracNLocMaxN[i][j]) ;
bb2d339b 809
810 fhMCGenEFracvsSplitEFracNLocMax1[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
811 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()),
812 200,0,2,200,0,2);
813 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
814 fhMCGenEFracvsSplitEFracNLocMax1[i][j] ->SetXTitle("E_{gen} / E_{reco}");
815 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax1[i][j]) ;
816
817 fhMCGenEFracvsSplitEFracNLocMax2[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
818 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()),
819 200,0,2,200,0,2);
820 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
821 fhMCGenEFracvsSplitEFracNLocMax2[i][j] ->SetXTitle("E_{gen} / E_{reco}");
822 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMax2[i][j]) ;
823
824
825 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] = new TH2F(Form("hMCGenEFracvsSplitEFracNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
826 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()),
827 200,0,2,200,0,2);
828 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetYTitle("(E_{1 split}+E_{2 split})/E_{reco}");
829 fhMCGenEFracvsSplitEFracNLocMaxN[i][j] ->SetXTitle("E_{gen} / E_{reco}");
830 outputContainer->Add(fhMCGenEFracvsSplitEFracNLocMaxN[i][j]) ;
831
832
833 fhMCGenEvsSplitENLocMax1[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
834 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
835 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
836 fhMCGenEvsSplitENLocMax1[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
837 fhMCGenEvsSplitENLocMax1[i][j] ->SetXTitle("E_{gen} (GeV)");
838 outputContainer->Add(fhMCGenEvsSplitENLocMax1[i][j]) ;
839
840 fhMCGenEvsSplitENLocMax2[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
841 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
842 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
843 fhMCGenEvsSplitENLocMax2[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
844 fhMCGenEvsSplitENLocMax2[i][j] ->SetXTitle("E_{gen} (GeV)");
845 outputContainer->Add(fhMCGenEvsSplitENLocMax2[i][j]) ;
846
847
848 fhMCGenEvsSplitENLocMaxN[i][j] = new TH2F(Form("hMCGenEvsSplitENLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
849 Form("E_{1 split}+E_{2 split} vs E_{gen} for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
850 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
851 fhMCGenEvsSplitENLocMaxN[i][j] ->SetYTitle("E_{1 split}+E_{2 split} (GeV)");
852 fhMCGenEvsSplitENLocMaxN[i][j] ->SetXTitle("E_{gen} (GeV)");
853 outputContainer->Add(fhMCGenEvsSplitENLocMaxN[i][j]) ;
854
883411b2 855 }
5c46c992 856
8e81c2cf 857 if(fFillSSExtraHisto)
858 {
859 fhNCellNLocMax1[i][j] = new TH2F(Form("hNCellNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
860 Form("#lambda_{0}^{2} vs E for N max = 1 %s %s",ptype[i].Data(),sMatched[j].Data()),
861 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
862 fhNCellNLocMax1[i][j] ->SetYTitle("N cells");
863 fhNCellNLocMax1[i][j] ->SetXTitle("E (GeV)");
864 outputContainer->Add(fhNCellNLocMax1[i][j]) ;
865
866 fhNCellNLocMax2[i][j] = new TH2F(Form("hNCellNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
867 Form("#lambda_{0}^{2} vs E for N max = 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
868 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
869 fhNCellNLocMax2[i][j] ->SetYTitle("N cells");
870 fhNCellNLocMax2[i][j] ->SetXTitle("E (GeV)");
871 outputContainer->Add(fhNCellNLocMax2[i][j]) ;
872
873
874 fhNCellNLocMaxN[i][j] = new TH2F(Form("hNCellNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
875 Form("#lambda_{0}^{2} vs E for N max > 2 %s %s",ptype[i].Data(),sMatched[j].Data()),
876 nptbins,ptmin,ptmax,ncbins,ncmin,ncmax);
877 fhNCellNLocMaxN[i][j] ->SetYTitle("N cells");
878 fhNCellNLocMaxN[i][j] ->SetXTitle("E (GeV)");
879 outputContainer->Add(fhNCellNLocMaxN[i][j]) ;
880 }
5c46c992 881
17f5b4b6 882
883 // E vs centrality
884
885 fhCentralityPi0NLocMax1[i][j] = new TH2F(Form("hCentralityPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
886 Form("E vs Centrality, selected pi0 cluster with NLM=1, %s",ptype[i].Data()),
887 nptbins,ptmin,ptmax,100,0,100);
888 fhCentralityPi0NLocMax1[i][j]->SetYTitle("Centrality");
889 fhCentralityPi0NLocMax1[i][j]->SetXTitle("E (GeV)");
890 outputContainer->Add(fhCentralityPi0NLocMax1[i][j]) ;
891
892 fhCentralityPi0NLocMax2[i][j] = new TH2F(Form("hCentralityPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
893 Form("E vs Centrality, selected pi0 cluster with NLM=2, %s",ptype[i].Data()),
894 nptbins,ptmin,ptmax,100,0,100);
895 fhCentralityPi0NLocMax2[i][j]->SetYTitle("Centrality");
896 fhCentralityPi0NLocMax2[i][j]->SetXTitle("E (GeV)");
897 outputContainer->Add(fhCentralityPi0NLocMax2[i][j]) ;
898
899 fhCentralityPi0NLocMaxN[i][j] = new TH2F(Form("hCentralityPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
900 Form("E vs Centrality, selected pi0 cluster with NLM>1, %s",ptype[i].Data()),
901 nptbins,ptmin,ptmax,100,0,100);
902 fhCentralityPi0NLocMaxN[i][j]->SetYTitle("Centrality");
903 fhCentralityPi0NLocMaxN[i][j]->SetXTitle("E (GeV)");
904 outputContainer->Add(fhCentralityPi0NLocMaxN[i][j]) ;
905
906 fhCentralityEtaNLocMax1[i][j] = new TH2F(Form("hCentralityEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
907 Form("E vs Centrality, selected pi0 cluster with NLM=1, %s",ptype[i].Data()),
908 nptbins,ptmin,ptmax,100,0,100);
909 fhCentralityEtaNLocMax1[i][j]->SetYTitle("Centrality");
910 fhCentralityEtaNLocMax1[i][j]->SetXTitle("E (GeV)");
911 outputContainer->Add(fhCentralityEtaNLocMax1[i][j]) ;
912
913 fhCentralityEtaNLocMax2[i][j] = new TH2F(Form("hCentralityEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
914 Form("E vs Centrality, selected pi0 cluster with NLM=2, %s",ptype[i].Data()),
915 nptbins,ptmin,ptmax,100,0,100);
916 fhCentralityEtaNLocMax2[i][j]->SetYTitle("Centrality");
917 fhCentralityEtaNLocMax2[i][j]->SetXTitle("E (GeV)");
918 outputContainer->Add(fhCentralityEtaNLocMax2[i][j]) ;
919
920 fhCentralityEtaNLocMaxN[i][j] = new TH2F(Form("hCentralityEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
921 Form("E vs Centrality, selected pi0 cluster with NLM>1, %s",ptype[i].Data()),
922 nptbins,ptmin,ptmax,100,0,100);
923 fhCentralityEtaNLocMaxN[i][j]->SetYTitle("Centrality");
924 fhCentralityEtaNLocMaxN[i][j]->SetXTitle("E (GeV)");
925 outputContainer->Add(fhCentralityEtaNLocMaxN[i][j]) ;
926
927
c8710850 928 fhM02Pi0NLocMax1[i][j] = new TH2F(Form("hM02Pi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 929 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 1",
3c1d9afb 930 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
17f5b4b6 931 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 932 fhM02Pi0NLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
933 fhM02Pi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
17f5b4b6 934 outputContainer->Add(fhM02Pi0NLocMax1[i][j]) ;
5c46c992 935
c8710850 936 fhM02EtaNLocMax1[i][j] = new TH2F(Form("hM02EtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 937 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
3c1d9afb 938 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
17f5b4b6 939 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 940 fhM02EtaNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
941 fhM02EtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
17f5b4b6 942 outputContainer->Add(fhM02EtaNLocMax1[i][j]) ;
5c46c992 943
c8710850 944 fhM02ConNLocMax1[i][j] = new TH2F(Form("hM02ConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 945 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
3c1d9afb 946 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 947 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 948 fhM02ConNLocMax1[i][j] ->SetYTitle("#lambda_{0}^{2}");
949 fhM02ConNLocMax1[i][j] ->SetXTitle("E (GeV)");
950 outputContainer->Add(fhM02ConNLocMax1[i][j]) ;
5c46c992 951
c8710850 952 fhM02Pi0NLocMax2[i][j] = new TH2F(Form("hM02Pi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 953 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 2",
3c1d9afb 954 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 955 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 956 fhM02Pi0NLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
957 fhM02Pi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
958 outputContainer->Add(fhM02Pi0NLocMax2[i][j]) ;
5c46c992 959
c8710850 960 fhM02EtaNLocMax2[i][j] = new TH2F(Form("hM02EtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 961 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
3c1d9afb 962 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 963 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 964 fhM02EtaNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
965 fhM02EtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
966 outputContainer->Add(fhM02EtaNLocMax2[i][j]) ;
5c46c992 967
c8710850 968 fhM02ConNLocMax2[i][j] = new TH2F(Form("hM02ConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 969 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
3c1d9afb 970 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 971 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 972 fhM02ConNLocMax2[i][j] ->SetYTitle("#lambda_{0}^{2}");
973 fhM02ConNLocMax2[i][j] ->SetXTitle("E (GeV)");
974 outputContainer->Add(fhM02ConNLocMax2[i][j]) ;
5c46c992 975
c8710850 976 fhM02Pi0NLocMaxN[i][j] = new TH2F(Form("hM02Pi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 977 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max > 2",
3c1d9afb 978 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
5c46c992 979 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 980 fhM02Pi0NLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
981 fhM02Pi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
982 outputContainer->Add(fhM02Pi0NLocMaxN[i][j]) ;
5c46c992 983
c8710850 984 fhM02EtaNLocMaxN[i][j] = new TH2F(Form("hM02EtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 985 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max > 2",
3c1d9afb 986 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
5c46c992 987 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 988 fhM02EtaNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
989 fhM02EtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
990 outputContainer->Add(fhM02EtaNLocMaxN[i][j]) ;
5c46c992 991
c8710850 992 fhM02ConNLocMaxN[i][j] = new TH2F(Form("hM02ConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
3c1d9afb 993 Form("#lambda_{0}^{2} vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
994 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
5c46c992 995 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
c8710850 996 fhM02ConNLocMaxN[i][j] ->SetYTitle("#lambda_{0}^{2}");
997 fhM02ConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
998 outputContainer->Add(fhM02ConNLocMaxN[i][j]) ;
bb2d339b 999
1000
c8710850 1001 fhMassPi0NLocMax1[i][j] = new TH2F(Form("hMassPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1002 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 1",
bb2d339b 1003 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1004 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1005 fhMassPi0NLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1006 fhMassPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
1007 outputContainer->Add(fhMassPi0NLocMax1[i][j]) ;
167f2534 1008
1009
c8710850 1010 fhMassEtaNLocMax1[i][j] = new TH2F(Form("hMassEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1011 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
bb2d339b 1012 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1013 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1014 fhMassEtaNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1015 fhMassEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
1016 outputContainer->Add(fhMassEtaNLocMax1[i][j]) ;
bb2d339b 1017
c8710850 1018 fhMassConNLocMax1[i][j] = new TH2F(Form("hMassConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1019 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
bb2d339b 1020 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1021 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1022 fhMassConNLocMax1[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1023 fhMassConNLocMax1[i][j] ->SetXTitle("E (GeV)");
1024 outputContainer->Add(fhMassConNLocMax1[i][j]) ;
bb2d339b 1025
c8710850 1026 fhMassPi0NLocMax2[i][j] = new TH2F(Form("hMassPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1027 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 2",
bb2d339b 1028 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1029 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1030 fhMassPi0NLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1031 fhMassPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
1032 outputContainer->Add(fhMassPi0NLocMax2[i][j]) ;
bb2d339b 1033
167f2534 1034
c8710850 1035 fhMassEtaNLocMax2[i][j] = new TH2F(Form("hMassEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1036 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
bb2d339b 1037 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1038 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1039 fhMassEtaNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1040 fhMassEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
1041 outputContainer->Add(fhMassEtaNLocMax2[i][j]) ;
bb2d339b 1042
c8710850 1043 fhMassConNLocMax2[i][j] = new TH2F(Form("hMassConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1044 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
bb2d339b 1045 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1046 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1047 fhMassConNLocMax2[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1048 fhMassConNLocMax2[i][j] ->SetXTitle("E (GeV)");
1049 outputContainer->Add(fhMassConNLocMax2[i][j]) ;
bb2d339b 1050
c8710850 1051 fhMassPi0NLocMaxN[i][j] = new TH2F(Form("hMassPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1052 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max > 2",
bb2d339b 1053 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1054 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1055 fhMassPi0NLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1056 fhMassPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
1057 outputContainer->Add(fhMassPi0NLocMaxN[i][j]) ;
bb2d339b 1058
c8710850 1059 fhMassEtaNLocMaxN[i][j] = new TH2F(Form("hMassEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1060 Form("Mass vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max > 2",
bb2d339b 1061 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1062 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1063 fhMassEtaNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1064 fhMassEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
1065 outputContainer->Add(fhMassEtaNLocMaxN[i][j]) ;
bb2d339b 1066
c8710850 1067 fhMassConNLocMaxN[i][j] = new TH2F(Form("hMassConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
bb2d339b 1068 Form("Mass vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
1069 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1070 nptbins,ptmin,ptmax,mbins,mmin,mmax);
74858845 1071 fhMassConNLocMaxN[i][j] ->SetYTitle("Mass (GeV/c^{2})");
c8710850 1072 fhMassConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
1073 outputContainer->Add(fhMassConNLocMaxN[i][j]) ;
5c46c992 1074
e671adc2 1075
c8710850 1076 fhAsyPi0NLocMax1[i][j] = new TH2F(Form("hAsyPi0NLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1077 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 1",
e671adc2 1078 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1079 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1080 fhAsyPi0NLocMax1[i][j] ->SetYTitle("Asymmetry");
1081 fhAsyPi0NLocMax1[i][j] ->SetXTitle("E (GeV)");
1082 outputContainer->Add(fhAsyPi0NLocMax1[i][j]) ;
e671adc2 1083
c8710850 1084 fhAsyEtaNLocMax1[i][j] = new TH2F(Form("hAsyEtaNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1085 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
e671adc2 1086 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1087 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1088 fhAsyEtaNLocMax1[i][j] ->SetYTitle("Asymmetry");
1089 fhAsyEtaNLocMax1[i][j] ->SetXTitle("E (GeV)");
1090 outputContainer->Add(fhAsyEtaNLocMax1[i][j]) ;
e671adc2 1091
c8710850 1092 fhAsyConNLocMax1[i][j] = new TH2F(Form("hAsyConNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1093 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 1",
e671adc2 1094 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1095 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1096 fhAsyConNLocMax1[i][j] ->SetYTitle("Asymmetry");
1097 fhAsyConNLocMax1[i][j] ->SetXTitle("E (GeV)");
1098 outputContainer->Add(fhAsyConNLocMax1[i][j]) ;
e671adc2 1099
c8710850 1100 fhAsyPi0NLocMax2[i][j] = new TH2F(Form("hAsyPi0NLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1101 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max = 2",
e671adc2 1102 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1103 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1104 fhAsyPi0NLocMax2[i][j] ->SetYTitle("Asymmetry");
1105 fhAsyPi0NLocMax2[i][j] ->SetXTitle("E (GeV)");
1106 outputContainer->Add(fhAsyPi0NLocMax2[i][j]) ;
e671adc2 1107
c8710850 1108 fhAsyEtaNLocMax2[i][j] = new TH2F(Form("hAsyEtaNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1109 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
e671adc2 1110 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1111 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1112 fhAsyEtaNLocMax2[i][j] ->SetYTitle("Asymmetry");
1113 fhAsyEtaNLocMax2[i][j] ->SetXTitle("E (GeV)");
1114 outputContainer->Add(fhAsyEtaNLocMax2[i][j]) ;
e671adc2 1115
c8710850 1116 fhAsyConNLocMax2[i][j] = new TH2F(Form("hAsyConNLocMax2%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1117 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max = 2",
e671adc2 1118 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1119 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1120 fhAsyConNLocMax2[i][j] ->SetYTitle("Asymmetry");
1121 fhAsyConNLocMax2[i][j] ->SetXTitle("E (GeV)");
1122 outputContainer->Add(fhAsyConNLocMax2[i][j]) ;
e671adc2 1123
c8710850 1124 fhAsyPi0NLocMaxN[i][j] = new TH2F(Form("hAsyPi0NLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1125 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2} %s, for N Local max > 2",
e671adc2 1126 GetCaloPID()->GetPi0MinMass(),GetCaloPID()->GetPi0MaxMass(),ptype[i].Data()),
1127 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1128 fhAsyPi0NLocMaxN[i][j] ->SetYTitle("Asymmetry");
1129 fhAsyPi0NLocMaxN[i][j] ->SetXTitle("E (GeV)");
1130 outputContainer->Add(fhAsyPi0NLocMaxN[i][j]) ;
e671adc2 1131
c8710850 1132 fhAsyEtaNLocMaxN[i][j] = new TH2F(Form("hAsyEtaNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
74858845 1133 Form("Asymmetry vs E for mass range [%2.2f-%2.2f] GeV/c^{2}, %s, for N Local max > 2",
e671adc2 1134 GetCaloPID()->GetEtaMinMass(),GetCaloPID()->GetEtaMaxMass(),ptype[i].Data()),
1135 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1136 fhAsyEtaNLocMaxN[i][j] ->SetYTitle("Asymmetry");
1137 fhAsyEtaNLocMaxN[i][j] ->SetXTitle("E (GeV)");
1138 outputContainer->Add(fhAsyEtaNLocMaxN[i][j]) ;
e671adc2 1139
c8710850 1140 fhAsyConNLocMaxN[i][j] = new TH2F(Form("hAsyConNLocMaxN%s%s",pname[i].Data(),sMatched[j].Data()),
e671adc2 1141 Form("Asymmetry vs E for mass range [%2.2f-%2.2f], %s, for N Local max > 2",
1142 GetCaloPID()->GetPhotonMinMass(),GetCaloPID()->GetPhotonMaxMass(),ptype[i].Data()),
1143 nptbins,ptmin,ptmax,mbins,mmin,mmax);
c8710850 1144 fhAsyConNLocMaxN[i][j] ->SetYTitle("Asymmetry");
1145 fhAsyConNLocMaxN[i][j] ->SetXTitle("E (GeV)");
1146 outputContainer->Add(fhAsyConNLocMaxN[i][j]) ;
e671adc2 1147
5c46c992 1148 } // matched, not matched
1149
19391b8c 1150 if(fFillEbinHisto)
1151 {
883411b2 1152 for(Int_t j = 0; j < 4; j++)
19391b8c 1153 {
53f2c382 1154
fc01318e 1155 fhMassSplitEFractionNLocMax1Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax1%sEbin%d",pname[i].Data(),j),
1156 Form("Invariant mass of 2 highest energy cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1157 120,0,1.2,mbins,mmin,mmax);
fc01318e 1158 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
1159 fhMassSplitEFractionNLocMax1Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 1160 outputContainer->Add(fhMassSplitEFractionNLocMax1Ebin[i][j]) ;
883411b2 1161
fc01318e 1162 fhMassSplitEFractionNLocMax2Ebin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMax2%sEbin%d",pname[i].Data(),j),
1163 Form("Invariant mass of 2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1164 120,0,1.2,mbins,mmin,mmax);
fc01318e 1165 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
1166 fhMassSplitEFractionNLocMax2Ebin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 1167 outputContainer->Add(fhMassSplitEFractionNLocMax2Ebin[i][j]) ;
883411b2 1168
fc01318e 1169 fhMassSplitEFractionNLocMaxNEbin[i][j] = new TH2F(Form("hMassSplitEFractionNLocMaxN%sEbin%d",pname[i].Data(),j),
1170 Form("Invariant mass of N>2 local maxima cells vs (E1+E2)/Ecluster, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1171 120,0,1.2,mbins,mmin,mmax);
fc01318e 1172 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
1173 fhMassSplitEFractionNLocMaxNEbin[i][j]->SetXTitle("(E_{split1}+E_{split2})/E_{cluster}");
19391b8c 1174 outputContainer->Add(fhMassSplitEFractionNLocMaxNEbin[i][j]) ;
883411b2 1175
2a77f6f4 1176 if(i>0 && fFillMCFractionHisto) // skip first entry in array, general case not filled
fc01318e 1177 {
1178 fhMCGenFracNLocMaxEbin[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%d",pname[i].Data(),j),
1179 Form("NLM vs E, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1180 200,0,2,nMaxBins,0,nMaxBins);
fc01318e 1181 fhMCGenFracNLocMaxEbin[i][j]->SetYTitle("NLM");
fb51265c 1182 fhMCGenFracNLocMaxEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1183 outputContainer->Add(fhMCGenFracNLocMaxEbin[i][j]) ;
fc01318e 1184
1185 fhMCGenFracNLocMaxEbinMatched[i][j] = new TH2F(Form("hMCGenFracNLocMax%sEbin%dMatched",pname[i].Data(),j),
1186 Form("NLM vs E, %s, E bin %d, matched to a track",ptype[i].Data(),j),
19391b8c 1187 200,0,2,nMaxBins,0,nMaxBins);
fc01318e 1188 fhMCGenFracNLocMaxEbinMatched[i][j]->SetYTitle("NLM");
fb51265c 1189 fhMCGenFracNLocMaxEbinMatched[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1190 outputContainer->Add(fhMCGenFracNLocMaxEbinMatched[i][j]) ;
fc01318e 1191
1192 fhMassMCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
1193 Form("Invariant mass of 2 highest energy cells vs E, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1194 200,0,2,mbins,mmin,mmax);
fc01318e 1195 fhMassMCGenFracNLocMax1Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 1196 fhMassMCGenFracNLocMax1Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1197 outputContainer->Add(fhMassMCGenFracNLocMax1Ebin[i][j]) ;
fc01318e 1198
1199 fhMassMCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hMassMCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
1200 Form("Invariant mass of 2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1201 200,0,2,mbins,mmin,mmax);
fc01318e 1202 fhMassMCGenFracNLocMax2Ebin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 1203 fhMassMCGenFracNLocMax2Ebin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1204 outputContainer->Add(fhMassMCGenFracNLocMax2Ebin[i][j]) ;
fc01318e 1205
1206 fhMassMCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hMassMCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
1207 Form("Invariant mass of N>2 local maxima cells vs E, %s, E bin %d",ptype[i].Data(),j),
19391b8c 1208 200,0,2,mbins,mmin,mmax);
fc01318e 1209 fhMassMCGenFracNLocMaxNEbin[i][j]->SetYTitle("M (GeV/c^{2})");
fb51265c 1210 fhMassMCGenFracNLocMaxNEbin[i][j]->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1211 outputContainer->Add(fhMassMCGenFracNLocMaxNEbin[i][j]) ;
fc01318e 1212
1213 fhM02MCGenFracNLocMax1Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax1%sEbin%d",pname[i].Data(),j),
1214 Form("#lambda_{0}^{2} vs E for N max = 1 %s, E bin %d",ptype[i].Data(), j),
19391b8c 1215 200,0,2,ssbins,ssmin,ssmax);
fc01318e 1216 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 1217 fhM02MCGenFracNLocMax1Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1218 outputContainer->Add(fhM02MCGenFracNLocMax1Ebin[i][j]) ;
fc01318e 1219
1220 fhM02MCGenFracNLocMax2Ebin[i][j] = new TH2F(Form("hM02MCGenFracNLocMax2%sEbin%d",pname[i].Data(),j),
1221 Form("#lambda_{0}^{2} vs E for N max = 2 %s, E bin %d",ptype[i].Data(),j),
19391b8c 1222 200,0,2,ssbins,ssmin,ssmax);
fc01318e 1223 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 1224 fhM02MCGenFracNLocMax2Ebin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1225 outputContainer->Add(fhM02MCGenFracNLocMax2Ebin[i][j]) ;
fc01318e 1226
1227 fhM02MCGenFracNLocMaxNEbin[i][j] = new TH2F(Form("hM02MCGenFracNLocMaxN%sEbin%d",pname[i].Data(),j),
1228 Form("#lambda_{0}^{2} vs E for N max > 2 %s, E bin %d",ptype[i].Data(),j),
19391b8c 1229 200,0,2,ssbins,ssmin,ssmax);
fc01318e 1230 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetYTitle("#lambda_{0}^{2}");
fb51265c 1231 fhM02MCGenFracNLocMaxNEbin[i][j] ->SetXTitle("E_{gen} / E_{reco}");
19391b8c 1232 outputContainer->Add(fhM02MCGenFracNLocMaxNEbin[i][j]) ;
fc01318e 1233 }
883411b2 1234 }
19391b8c 1235 }
5c46c992 1236 } // MC particle list
1237
17f5b4b6 1238 // E vs Event plane angle
1239
1240 fhEventPlanePi0NLocMax1 = new TH2F("hEventPlanePi0NLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
1241 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1242 fhEventPlanePi0NLocMax1->SetYTitle("Event Plane Angle (rad)");
1243 fhEventPlanePi0NLocMax1->SetXTitle("E (GeV)");
1244 outputContainer->Add(fhEventPlanePi0NLocMax1) ;
1245
1246 fhEventPlanePi0NLocMax2 = new TH2F("hEventPlanePi0NLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
1247 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1248 fhEventPlanePi0NLocMax2->SetYTitle("Event Plane Angle (rad)");
1249 fhEventPlanePi0NLocMax2->SetXTitle("E (GeV)");
1250 outputContainer->Add(fhEventPlanePi0NLocMax2) ;
1251
1252 fhEventPlanePi0NLocMaxN = new TH2F("hEventPlanePi0NLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
1253 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1254 fhEventPlanePi0NLocMaxN->SetYTitle("Event Plane Angle (rad)");
1255 fhEventPlanePi0NLocMaxN->SetXTitle("E (GeV)");
1256 outputContainer->Add(fhEventPlanePi0NLocMaxN) ;
1257
1258 fhEventPlaneEtaNLocMax1 = new TH2F("hEventPlaneEtaNLocMax1","E vs Event Plane Angle, selected pi0 cluster with NLM=1",
1259 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1260 fhEventPlaneEtaNLocMax1->SetYTitle("Event Plane Angle (rad)");
1261 fhEventPlaneEtaNLocMax1->SetXTitle("E (GeV)");
1262 outputContainer->Add(fhEventPlaneEtaNLocMax1) ;
1263
1264 fhEventPlaneEtaNLocMax2 = new TH2F("hEventPlaneEtaNLocMax2","E vs Event Plane Angle, selected pi0 cluster with NLM=2",
1265 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1266 fhEventPlaneEtaNLocMax2->SetYTitle("Event Plane Angle (rad)");
1267 fhEventPlaneEtaNLocMax2->SetXTitle("E (GeV)");
1268 outputContainer->Add(fhEventPlaneEtaNLocMax2) ;
1269
1270 fhEventPlaneEtaNLocMaxN = new TH2F("hEventPlaneEtaNLocMaxN","E vs Event Plane Angle, selected pi0 cluster with NLM>1",
1271 nptbins,ptmin,ptmax,100,0,TMath::Pi());
1272 fhEventPlaneEtaNLocMaxN->SetYTitle("Event Plane Angle (rad)");
1273 fhEventPlaneEtaNLocMaxN->SetXTitle("E (GeV)");
1274 outputContainer->Add(fhEventPlaneEtaNLocMaxN) ;
1275
19391b8c 1276 if(fFillEbinHisto)
1277 {
1278 for(Int_t i = 0; i < 4; i++)
8e81c2cf 1279 {
19391b8c 1280 fhMassM02NLocMax1Ebin[i] = new TH2F(Form("hMassM02NLocMax1Ebin%d",i),
1281 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
1282 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1283 fhMassM02NLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
1284 fhMassM02NLocMax1Ebin[i]->SetXTitle("#lambda_{0}^{2}");
1285 outputContainer->Add(fhMassM02NLocMax1Ebin[i]) ;
1286
1287 fhMassM02NLocMax2Ebin[i] = new TH2F(Form("hMassM02NLocMax2Ebin%d",i),
1288 Form("Invariant mass of split clusters vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
1289 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1290 fhMassM02NLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
1291 fhMassM02NLocMax2Ebin[i]->SetXTitle("#lambda_{0}^{2}");
1292 outputContainer->Add(fhMassM02NLocMax2Ebin[i]) ;
1293
1294 fhMassM02NLocMaxNEbin[i] = new TH2F(Form("hMassM02NLocMaxNEbin%d",i),
1295 Form("Invariant mass of split clusters vs vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
1296 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1297 fhMassM02NLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
1298 fhMassM02NLocMaxNEbin[i]->SetXTitle("#lambda_{0}^{2}");
1299 outputContainer->Add(fhMassM02NLocMaxNEbin[i]) ;
1300
1301
1302 fhMassAsyNLocMax1Ebin[i] = new TH2F(Form("hMassAsyNLocMax1Ebin%d",i),
1303 Form("Invariant mass of split clusters vs split asymmetry, NLM=1, E bin %d",i),
1304 200,-1,1,mbins,mmin,mmax);
1305 fhMassAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
1306 fhMassAsyNLocMax1Ebin[i]->SetXTitle("asymmetry");
1307 outputContainer->Add(fhMassAsyNLocMax1Ebin[i]) ;
1308
1309 fhMassAsyNLocMax2Ebin[i] = new TH2F(Form("hMassAsyNLocMax2Ebin%d",i),
1310 Form("Invariant mass of split clusters vs split asymmetry, NLM=2, E bin %d",i),
1311 200,-1,1,mbins,mmin,mmax);
1312 fhMassAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
1313 fhMassAsyNLocMax2Ebin[i]->SetXTitle("asymmetry");
1314 outputContainer->Add(fhMassAsyNLocMax2Ebin[i]) ;
1315
1316 fhMassAsyNLocMaxNEbin[i] = new TH2F(Form("hMassAsyNLocMaxNEbin%d",i),
1317 Form("Invariant mass of split clusters vs split asymmetry, NLM>2, E bin %d",i),
1318 200,-1,1,mbins,mmin,mmax);
1319 fhMassAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
1320 fhMassAsyNLocMaxNEbin[i]->SetXTitle("asymmetry");
1321 outputContainer->Add(fhMassAsyNLocMaxNEbin[i]) ;
1322
1323
1324 if(IsDataMC())
1325 {
1326 fhMCAsymM02NLocMax1MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax1MCPi0Ebin%d",i),
1327 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=1, E bin %d",i),
1328 ssbins,ssmin,ssmax,100,0,1);
1329 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
1330 fhMCAsymM02NLocMax1MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
1331 outputContainer->Add(fhMCAsymM02NLocMax1MCPi0Ebin[i]) ;
1332
1333 fhMCAsymM02NLocMax2MCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMax2MCPi0Ebin%d",i),
1334 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM=2, E bin %d",i),
1335 ssbins,ssmin,ssmax,100,0,1);
1336 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetYTitle("Decay asymmetry");
1337 fhMCAsymM02NLocMax2MCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
1338 outputContainer->Add(fhMCAsymM02NLocMax2MCPi0Ebin[i]) ;
1339
1340 fhMCAsymM02NLocMaxNMCPi0Ebin[i] = new TH2F(Form("hMCAsymM02NLocMaxNMCPi0Ebin%d",i),
1341 Form("Asymmetry of MC #pi^{0} vs #lambda_{0}^{2}, NLM>2, E bin %d",i),
1342 ssbins,ssmin,ssmax,100,0,1);
1343 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetYTitle("Decay asymmetry");
1344 fhMCAsymM02NLocMaxNMCPi0Ebin[i]->SetXTitle("#lambda_{0}^{2}");
1345 outputContainer->Add(fhMCAsymM02NLocMaxNMCPi0Ebin[i]) ;
1346
1347
1348 fhAsyMCGenRecoNLocMax1EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax1Ebin%dPi0",i),
1349 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=1, E bin %d",i),
1350 200,-1,1,200,-1,1);
1351 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
1352 fhAsyMCGenRecoNLocMax1EbinPi0[i]->SetXTitle("asymmetry");
1353 outputContainer->Add(fhAsyMCGenRecoNLocMax1EbinPi0[i]) ;
1354
1355 fhAsyMCGenRecoNLocMax2EbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMax2Ebin%dPi0",i),
1356 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM=2, E bin %d",i),
1357 200,-1,1,200,-1,1);
1358 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetYTitle("M (GeV/c^{2})");
1359 fhAsyMCGenRecoNLocMax2EbinPi0[i]->SetXTitle("asymmetry");
1360 outputContainer->Add(fhAsyMCGenRecoNLocMax2EbinPi0[i]) ;
1361
1362 fhAsyMCGenRecoNLocMaxNEbinPi0[i] = new TH2F(Form("hAsyMCGenRecoNLocMaxNEbin%dPi0",i),
1363 Form("Generated vs reconstructed asymmetry of split clusters from pi0, NLM>2, E bin %d",i),
1364 200,-1,1,200,-1,1);
1365 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetYTitle("M (GeV/c^{2})");
1366 fhAsyMCGenRecoNLocMaxNEbinPi0[i]->SetXTitle("asymmetry");
1367 outputContainer->Add(fhAsyMCGenRecoNLocMaxNEbinPi0[i]) ;
1368 }
1369
1370 if(fFillSSExtraHisto)
1371 {
1372 fhMassDispEtaNLocMax1Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax1Ebin%d",i),
1373 Form("Invariant mass of 2 highest energy cells #sigma_{#eta #eta}^{2}, E bin %d",i),
1374 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1375 fhMassDispEtaNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
1376 fhMassDispEtaNLocMax1Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
1377 outputContainer->Add(fhMassDispEtaNLocMax1Ebin[i]) ;
1378
1379 fhMassDispEtaNLocMax2Ebin[i] = new TH2F(Form("hMassDispEtaNLocMax2Ebin%d",i),
1380 Form("Invariant mass of 2 local maxima cells #sigma_{#eta #eta}^{2}, E bin %d",i),
1381 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1382 fhMassDispEtaNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
1383 fhMassDispEtaNLocMax2Ebin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
1384 outputContainer->Add(fhMassDispEtaNLocMax2Ebin[i]) ;
1385
1386 fhMassDispEtaNLocMaxNEbin[i] = new TH2F(Form("hMassDispEtaNLocMaxNEbin%d",i),
1387 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#eta #eta}^{2}, E bin %d",i),
1388 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1389 fhMassDispEtaNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
1390 fhMassDispEtaNLocMaxNEbin[i]->SetXTitle("#sigma_{#eta #eta}^{2}");
1391 outputContainer->Add(fhMassDispEtaNLocMaxNEbin[i]) ;
1392
1393 fhMassDispPhiNLocMax1Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax1Ebin%d",i),
1394 Form("Invariant mass of 2 highest energy cells #sigma_{#phi #phi}^{2}, E bin %d",i),
1395 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1396 fhMassDispPhiNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
1397 fhMassDispPhiNLocMax1Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
1398 outputContainer->Add(fhMassDispPhiNLocMax1Ebin[i]) ;
1399
1400 fhMassDispPhiNLocMax2Ebin[i] = new TH2F(Form("hMassDispPhiNLocMax2Ebin%d",i),
1401 Form("Invariant mass of 2 local maxima cells #sigma_{#phi #phi}^{2}, E bin %d",i),
1402 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1403 fhMassDispPhiNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
1404 fhMassDispPhiNLocMax2Ebin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
1405 outputContainer->Add(fhMassDispPhiNLocMax2Ebin[i]) ;
1406
1407 fhMassDispPhiNLocMaxNEbin[i] = new TH2F(Form("hMassDispPhiNLocMaxNEbin%d",i),
1408 Form("Invariant mass of N>2 local maxima cells vs #sigma_{#phi #phi}^{2}, E bin %d",i),
1409 ssbins,ssmin,ssmax,mbins,mmin,mmax);
1410 fhMassDispPhiNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
1411 fhMassDispPhiNLocMaxNEbin[i]->SetXTitle("#sigma_{#phi #phi}^{2}");
1412 outputContainer->Add(fhMassDispPhiNLocMaxNEbin[i]) ;
1413
1414 fhMassDispAsyNLocMax1Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax1Ebin%d",i),
1415 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),
1416 200,-1,1,mbins,mmin,mmax);
1417 fhMassDispAsyNLocMax1Ebin[i]->SetYTitle("M (GeV/c^{2})");
1418 fhMassDispAsyNLocMax1Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
1419 outputContainer->Add(fhMassDispAsyNLocMax1Ebin[i]) ;
1420
1421 fhMassDispAsyNLocMax2Ebin[i] = new TH2F(Form("hMassDispAsyNLocMax2Ebin%d",i),
1422 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),
1423 200,-1,1,mbins,mmin,mmax);
1424 fhMassDispAsyNLocMax2Ebin[i]->SetYTitle("M (GeV/c^{2})");
1425 fhMassDispAsyNLocMax2Ebin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
1426 outputContainer->Add(fhMassDispAsyNLocMax2Ebin[i]) ;
1427
1428 fhMassDispAsyNLocMaxNEbin[i] = new TH2F(Form("hMassDispAsyNLocMaxNEbin%d",i),
1429 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),
1430 200,-1,1,mbins,mmin,mmax);
1431 fhMassDispAsyNLocMaxNEbin[i]->SetYTitle("M (GeV/c^{2})");
1432 fhMassDispAsyNLocMaxNEbin[i]->SetXTitle("A = (#sigma_{#phi #phi}^{2} - #sigma_{#eta #eta}^{2}) / (#sigma_{#phi #phi}^{2} + #sigma_{#eta #eta}^{2})");
1433 outputContainer->Add(fhMassDispAsyNLocMaxNEbin[i]) ;
1434 }
8e81c2cf 1435 }
19391b8c 1436 }
aa12888f 1437
c8710850 1438 if(IsDataMC() && fFillMCFractionHisto)
1439 {
1440 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax1MCPi0",
1441 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 1 MC Pi0, after M02 and Asym cut",
1442 nptbins,ptmin,ptmax,200,0,2);
1443 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
1444 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
1445 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax1MCPi0) ;
1446
1447 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMax2MCPi0",
1448 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max = 2 MC Pi0, after M02 and Asym cut",
1449 nptbins,ptmin,ptmax,200,0,2);
1450 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
1451 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
1452 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMax2MCPi0) ;
1453
1454
1455 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenSplitEFracAfterCutsNLocMaxNMCPi0",
1456 "E_{gen} / (E_{1 split}+E_{2 split}) vs E for N max > 2 MC Pi0, after M02 and Asym cut",
1457 nptbins,ptmin,ptmax,200,0,2);
1458 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / (E_{1 split}+E_{2 split})");
1459 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
1460 outputContainer->Add(fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0) ;
1461
1462 fhMCGenFracAfterCutsNLocMax1MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax1MCPi0",
1463 "E_{gen} / E_{reco} vs E_{reco} for N max = 1 MC Pi0, after M02 and Asym cut",
1464 nptbins,ptmin,ptmax,200,0,2);
1465 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
1466 fhMCGenFracAfterCutsNLocMax1MCPi0 ->SetXTitle("E (GeV)");
1467 outputContainer->Add(fhMCGenFracAfterCutsNLocMax1MCPi0) ;
1468
1469 fhMCGenFracAfterCutsNLocMax2MCPi0 = new TH2F("hMCGenFracAfterCutsNLocMax2MCPi0",
1470 " E_{gen} / E_{reco} vs E_{reco} for N max = 2 MC Pi0, after M02 and Asym cut",
1471 nptbins,ptmin,ptmax,200,0,2);
1472 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetYTitle("E_{gen} / E_{reco}");
1473 fhMCGenFracAfterCutsNLocMax2MCPi0 ->SetXTitle("E (GeV)");
1474 outputContainer->Add(fhMCGenFracAfterCutsNLocMax2MCPi0) ;
1475
1476
1477 fhMCGenFracAfterCutsNLocMaxNMCPi0 = new TH2F("hMCGenFracAfterCutsNLocMaxNMCPi0",
1478 " E_{gen} / E_{reco} vs E_{reco} for N max > 2 MC Pi0, after M02 and Asym cut",
1479 nptbins,ptmin,ptmax,200,0,2);
1480 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetYTitle("E_{gen} / E_{reco}");
1481 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->SetXTitle("E (GeV)");
1482 outputContainer->Add(fhMCGenFracAfterCutsNLocMaxNMCPi0) ;
1483
1484 }
1485
8edbd100 1486 if(fFillTMResidualHisto && fFillTMHisto)
8e81c2cf 1487 {
1488 for(Int_t i = 0; i < n; i++)
1489 {
1490
c8710850 1491 fhTrackMatchedDEtaNLocMax1[i] = new TH2F
1492 (Form("hTrackMatchedDEtaNLocMax1%s",pname[i].Data()),
8e81c2cf 1493 Form("d#eta of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
1494 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 1495 fhTrackMatchedDEtaNLocMax1[i]->SetYTitle("d#eta");
1496 fhTrackMatchedDEtaNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1497
c8710850 1498 fhTrackMatchedDPhiNLocMax1[i] = new TH2F
1499 (Form("hTrackMatchedDPhiNLocMax1%s",pname[i].Data()),
8e81c2cf 1500 Form("d#phi of cluster-track vs cluster energy, 1 Local Maxima, %s",ptype[i].Data()),
1501 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 1502 fhTrackMatchedDPhiNLocMax1[i]->SetYTitle("d#phi (rad)");
1503 fhTrackMatchedDPhiNLocMax1[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1504
c8710850 1505 outputContainer->Add(fhTrackMatchedDEtaNLocMax1[i]) ;
1506 outputContainer->Add(fhTrackMatchedDPhiNLocMax1[i]) ;
8e81c2cf 1507
c8710850 1508 fhTrackMatchedDEtaNLocMax2[i] = new TH2F
1509 (Form("hTrackMatchedDEtaNLocMax2%s",pname[i].Data()),
8e81c2cf 1510 Form("d#eta of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
1511 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 1512 fhTrackMatchedDEtaNLocMax2[i]->SetYTitle("d#eta");
1513 fhTrackMatchedDEtaNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1514
c8710850 1515 fhTrackMatchedDPhiNLocMax2[i] = new TH2F
1516 (Form("hTrackMatchedDPhiNLocMax2%s",pname[i].Data()),
8e81c2cf 1517 Form("d#phi of cluster-track vs cluster energy, 2 Local Maxima, %s",ptype[i].Data()),
1518 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 1519 fhTrackMatchedDPhiNLocMax2[i]->SetYTitle("d#phi (rad)");
1520 fhTrackMatchedDPhiNLocMax2[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1521
c8710850 1522 outputContainer->Add(fhTrackMatchedDEtaNLocMax2[i]) ;
1523 outputContainer->Add(fhTrackMatchedDPhiNLocMax2[i]) ;
8e81c2cf 1524
c8710850 1525 fhTrackMatchedDEtaNLocMaxN[i] = new TH2F
1526 (Form("hTrackMatchedDEtaNLocMaxN%s",pname[i].Data()),
8e81c2cf 1527 Form("d#eta of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
1528 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
c8710850 1529 fhTrackMatchedDEtaNLocMaxN[i]->SetYTitle("d#eta");
1530 fhTrackMatchedDEtaNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1531
c8710850 1532 fhTrackMatchedDPhiNLocMaxN[i] = new TH2F
1533 (Form("hTrackMatchedDPhiNLocMaxN%s",pname[i].Data()),
8e81c2cf 1534 Form("d#phi of cluster-track vs cluster energy, N>2 Local Maxima, %s",ptype[i].Data()),
1535 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
c8710850 1536 fhTrackMatchedDPhiNLocMaxN[i]->SetYTitle("d#phi (rad)");
1537 fhTrackMatchedDPhiNLocMaxN[i]->SetXTitle("E_{cluster} (GeV)");
8e81c2cf 1538
c8710850 1539 outputContainer->Add(fhTrackMatchedDEtaNLocMaxN[i]) ;
1540 outputContainer->Add(fhTrackMatchedDPhiNLocMaxN[i]) ;
8e81c2cf 1541 }
5c46c992 1542 }
1543
883411b2 1544 if(fFillAngleHisto)
1545 {
8edbd100 1546 for(Int_t j = 0; j < nMatched; j++)
883411b2 1547 {
1548
c8710850 1549 fhAnglePairNLocMax1[j] = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
883411b2 1550 Form("Opening angle of 2 highest energy cells vs pair Energy, %s",sMatched[j].Data()),
1551 nptbins,ptmin,ptmax,200,0,0.2);
c8710850 1552 fhAnglePairNLocMax1[j]->SetYTitle("#alpha (rad)");
1553 fhAnglePairNLocMax1[j]->SetXTitle("E (GeV)");
1554 outputContainer->Add(fhAnglePairNLocMax1[j]) ;
883411b2 1555
c8710850 1556 fhAnglePairNLocMax2[j] = new TH2F(Form("hAnglePairNLocMax2%s",sMatched[j].Data()),
883411b2 1557 Form("Opening angle of 2 local maxima cells vs Energy, %s",sMatched[j].Data()),
1558 nptbins,ptmin,ptmax,200,0,0.2);
c8710850 1559 fhAnglePairNLocMax2[j]->SetYTitle("#alpha (rad)");
1560 fhAnglePairNLocMax2[j]->SetXTitle("E (GeV)");
1561 outputContainer->Add(fhAnglePairNLocMax2[j]) ;
883411b2 1562
c8710850 1563 fhAnglePairNLocMaxN[j] = new TH2F(Form("hAnglePairNLocMaxN%s",sMatched[j].Data()),
883411b2 1564 Form("Opening angle of N>2 local maxima cells vs Energy, %s",sMatched[j].Data()),
1565 nptbins,ptmin,ptmax,200,0,0.2);
c8710850 1566 fhAnglePairNLocMaxN[j]->SetYTitle("#alpha (rad)");
1567 fhAnglePairNLocMaxN[j]->SetXTitle("E (GeV)");
1568 outputContainer->Add(fhAnglePairNLocMaxN[j]) ;
883411b2 1569
c8710850 1570 fhAnglePairMassNLocMax1[j] = new TH2F(Form("hAnglePairMassNLocMax1%s",sMatched[j].Data()),
1571 Form("Opening angle of 2 highest energy cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
883411b2 1572 mbins,mmin,mmax,200,0,0.2);
c8710850 1573 fhAnglePairMassNLocMax1[j]->SetXTitle("M (GeV/c^{2})");
1574 fhAnglePairMassNLocMax1[j]->SetYTitle("#alpha (rad)");
1575 outputContainer->Add(fhAnglePairMassNLocMax1[j]) ;
883411b2 1576
c8710850 1577 fhAnglePairMassNLocMax2[j] = new TH2F(Form("hAnglePairMassNLocMax2%s",sMatched[j].Data()),
1578 Form("Opening angle of 2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
883411b2 1579 mbins,mmin,mmax,200,0,0.2);
c8710850 1580 fhAnglePairMassNLocMax2[j]->SetXTitle("M (GeV/c^{2})");
1581 fhAnglePairMassNLocMax2[j]->SetYTitle("#alpha (rad)");
1582 outputContainer->Add(fhAnglePairMassNLocMax2[j]) ;
883411b2 1583
c8710850 1584 fhAnglePairMassNLocMaxN[j] = new TH2F(Form("hAnglePairMassNLocMaxN%s",sMatched[j].Data()),
1585 Form("Opening angle of N>2 local maxima cells vs Mass for E > 12 GeV, %s",sMatched[j].Data()),
883411b2 1586 mbins,mmin,mmax,200,0,0.2);
c8710850 1587 fhAnglePairMassNLocMaxN[j]->SetXTitle("M (GeV/c^{2})");
1588 fhAnglePairMassNLocMaxN[j]->SetYTitle("#alpha (rad)");
1589 outputContainer->Add(fhAnglePairMassNLocMaxN[j]) ;
883411b2 1590
1591 }
992b14a7 1592 }
1593
8edbd100 1594 for(Int_t j = 0; j < nMatched; j++)
17f5b4b6 1595 {
1596 fhSplitEFractionvsAsyNLocMax1[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
1597 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 1, E>12, %s",sMatched[j].Data()),
1598 100,-1,1,120,0,1.2);
1599 fhSplitEFractionvsAsyNLocMax1[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
1600 fhSplitEFractionvsAsyNLocMax1[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
1601 outputContainer->Add(fhSplitEFractionvsAsyNLocMax1[j]) ;
1602
1603 fhSplitEFractionvsAsyNLocMax2[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMax2%s",sMatched[j].Data()),
1604 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max = 2,E>12, %s",sMatched[j].Data()),
1605 100,-1,1,120,0,1.2);
1606 fhSplitEFractionvsAsyNLocMax2[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
1607 fhSplitEFractionvsAsyNLocMax2[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
1608 outputContainer->Add(fhSplitEFractionvsAsyNLocMax2[j]) ;
1609
1610 fhSplitEFractionvsAsyNLocMaxN[j] = new TH2F(Form("hSplitEFractionvsAsyNLocMaxN%s",sMatched[j].Data()),
1611 Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max > 2, E>12, %s",sMatched[j].Data()),
1612 100,-1,1,120,0,1.2);
1613 fhSplitEFractionvsAsyNLocMaxN[j] ->SetXTitle("(E_{split1}-E_{split2})/(E_{split1}+E_{split2})");
1614 fhSplitEFractionvsAsyNLocMaxN[j] ->SetYTitle("(E_{split1}+E_{split2})/E_{cluster}");
1615 outputContainer->Add(fhSplitEFractionvsAsyNLocMaxN[j]) ;
e671adc2 1616 }
9554fc65 1617
1618
1619 fhClusterEtaPhiNLocMax1 = new TH2F
1620 ("hClusterEtaPhiNLocMax1","Neutral Clusters with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1621 fhClusterEtaPhiNLocMax1->SetYTitle("#phi (rad)");
1622 fhClusterEtaPhiNLocMax1->SetXTitle("#eta");
1623 outputContainer->Add(fhClusterEtaPhiNLocMax1) ;
1624
1625 fhClusterEtaPhiNLocMax2 = new TH2F
1626 ("hClusterEtaPhiNLocMax2","Neutral Clusters with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1627 fhClusterEtaPhiNLocMax2->SetYTitle("#phi (rad)");
1628 fhClusterEtaPhiNLocMax2->SetXTitle("#eta");
1629 outputContainer->Add(fhClusterEtaPhiNLocMax2) ;
1630
1631 fhClusterEtaPhiNLocMaxN = new TH2F
1632 ("hClusterEtaPhiNLocMaxN","Neutral Clusters with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1633 fhClusterEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
1634 fhClusterEtaPhiNLocMaxN->SetXTitle("#eta");
1635 outputContainer->Add(fhClusterEtaPhiNLocMaxN) ;
1636
1637 fhPi0EtaPhiNLocMax1 = new TH2F
1638 ("hPi0EtaPhiNLocMax1","Selected #pi^{0}'s with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1639 fhPi0EtaPhiNLocMax1->SetYTitle("#phi (rad)");
1640 fhPi0EtaPhiNLocMax1->SetXTitle("#eta");
1641 outputContainer->Add(fhPi0EtaPhiNLocMax1) ;
1642
1643 fhPi0EtaPhiNLocMax2 = new TH2F
1644 ("hPi0EtaPhiNLocMax2","Selected #pi^{0}'s with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1645 fhPi0EtaPhiNLocMax2->SetYTitle("#phi (rad)");
1646 fhPi0EtaPhiNLocMax2->SetXTitle("#eta");
1647 outputContainer->Add(fhPi0EtaPhiNLocMax2) ;
1648
1649 fhPi0EtaPhiNLocMaxN = new TH2F
1650 ("hPi0EtaPhiNLocMaxN","Selected #pi^{0}'s with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1651 fhPi0EtaPhiNLocMaxN->SetYTitle("#phi (rad)");
1652 fhPi0EtaPhiNLocMaxN->SetXTitle("#eta");
1653 outputContainer->Add(fhPi0EtaPhiNLocMaxN) ;
1654
1655 fhEtaEtaPhiNLocMax1 = new TH2F
1656 ("hEtaEtaPhiNLocMax1","Selected #eta's with E > 8 GeV, NLM = 1: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1657 fhEtaEtaPhiNLocMax1->SetYTitle("#phi (rad)");
1658 fhEtaEtaPhiNLocMax1->SetXTitle("#eta");
1659 outputContainer->Add(fhEtaEtaPhiNLocMax1) ;
1660
1661 fhEtaEtaPhiNLocMax2 = new TH2F
1662 ("hEtaEtaPhiNLocMax2","Selected #eta's with E > 8 GeV, NLM = 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1663 fhEtaEtaPhiNLocMax2->SetYTitle("#phi (rad)");
1664 fhEtaEtaPhiNLocMax2->SetXTitle("#eta");
1665 outputContainer->Add(fhEtaEtaPhiNLocMax2) ;
1666
1667 fhEtaEtaPhiNLocMaxN = new TH2F
1668 ("hEtaEtaPhiNLocMaxN","Selected #eta's with E > 8 GeV, NLM > 2: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1669 fhEtaEtaPhiNLocMaxN->SetYTitle("#phi (rad)");
1670 fhEtaEtaPhiNLocMaxN->SetXTitle("#eta");
1671 outputContainer->Add(fhEtaEtaPhiNLocMaxN) ;
1672
e671adc2 1673
dbe09c26 1674 if(fFillSSWeightHisto)
1675 {
1676 TString snlm[] = {"1","2","N"};
1677 for(Int_t nlm = 0; nlm < 3; nlm++)
1678 {
1679 fhPi0CellE[nlm] = new TH2F(Form("hPi0CellENLocMax%s",snlm[nlm].Data()),
1680 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E",snlm[nlm].Data()),
1681 nptbins,ptmin,ptmax, nptbins,ptmin,ptmax);
1682 fhPi0CellE[nlm]->SetYTitle("E_{cell}");
1683 fhPi0CellE[nlm]->SetXTitle("E_{cluster}");
1684 outputContainer->Add(fhPi0CellE[nlm]) ;
1685
1686 fhPi0CellEFrac[nlm] = new TH2F(Form("hPi0CellEFracNLocMax%s",snlm[nlm].Data()),
1687 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs cell E / cluster E",snlm[nlm].Data()),
1688 nptbins,ptmin,ptmax, 100,0,1);
1689 fhPi0CellEFrac[nlm]->SetYTitle("E_{cell} / E_{cluster}");
1690 fhPi0CellEFrac[nlm]->SetXTitle("E_{cluster}");
1691 outputContainer->Add(fhPi0CellEFrac[nlm]) ;
1692
1693 fhPi0CellLogEFrac[nlm] = new TH2F(Form("hPi0CellLogEFracNLocMax%s",snlm[nlm].Data()),
1694 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs Log(cell E / cluster E)",snlm[nlm].Data()),
1695 nptbins,ptmin,ptmax, 100,-10,0);
1696 fhPi0CellLogEFrac[nlm]->SetYTitle("Log(E_{cell} / E_{cluster})");
1697 fhPi0CellLogEFrac[nlm]->SetXTitle("E_{cluster}");
1698 outputContainer->Add(fhPi0CellLogEFrac[nlm]) ;
1699
1700
19391b8c 1701 fhPi0CellEMaxEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMaxEMax2FracNLocMax%s",snlm[nlm].Data()),
1702 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / 1st loc. max. E",snlm[nlm].Data()),
1703 nptbins,ptmin,ptmax, 100,0,1);
1704 fhPi0CellEMaxEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{Loc Max 1}");
1705 fhPi0CellEMaxEMax2Frac[nlm]->SetXTitle("E_{cluster}");
1706 outputContainer->Add(fhPi0CellEMaxEMax2Frac[nlm]) ;
1707
1708 fhPi0CellEMaxClusterFrac[nlm] = new TH2F(Form("hPi0CellEMaxClusterFracNLocMax%s",snlm[nlm].Data()),
1709 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cluster",snlm[nlm].Data()),
1710 nptbins,ptmin,ptmax, 100,0,1);
1711 fhPi0CellEMaxClusterFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cluster}");
1712 fhPi0CellEMaxClusterFrac[nlm]->SetXTitle("E_{cluster}");
1713 outputContainer->Add(fhPi0CellEMaxClusterFrac[nlm]) ;
1714
1715 fhPi0CellEMax2ClusterFrac[nlm] = new TH2F(Form("hPi0CellEMax2ClusterFracNLocMax%s",snlm[nlm].Data()),
1716 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cluster",snlm[nlm].Data()),
1717 nptbins,ptmin,ptmax, 100,0,1);
1718 fhPi0CellEMax2ClusterFrac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cluster}");
1719 fhPi0CellEMax2ClusterFrac[nlm]->SetXTitle("E_{cluster}");
1720 outputContainer->Add(fhPi0CellEMax2ClusterFrac[nlm]) ;
1721
1722 fhPi0CellEMaxFrac[nlm] = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
1723 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
1724 nptbins,ptmin,ptmax, 100,0,1);
8edbd100 1725 fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
19391b8c 1726 fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
1727 outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
1728
1729 fhPi0CellEMax2Frac[nlm] = new TH2F(Form("hPi0CellEMax2FracNLocMax%s",snlm[nlm].Data()),
1730 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 2nd loc. max. E / E cell i",snlm[nlm].Data()),
1731 nptbins,ptmin,ptmax, 200,0,2);
1732 fhPi0CellEMax2Frac[nlm]->SetYTitle("E_{Loc Max 2} / E_{cell i}");
1733 fhPi0CellEMax2Frac[nlm]->SetXTitle("E_{cluster}");
1734 outputContainer->Add(fhPi0CellEMax2Frac[nlm]) ;
1735
1736
dbe09c26 1737 for(Int_t i = 0; i < fSSWeightN; i++)
1738 {
1739 fhM02WeightPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_W%d",snlm[nlm].Data(),i),
1740 Form("#lambda_{0}^{2} vs E, with W0 = %2.2f, for N Local max = %s", fSSWeight[i], snlm[nlm].Data()),
1741 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1742 fhM02WeightPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
1743 fhM02WeightPi0[nlm][i] ->SetXTitle("E (GeV)");
1744 outputContainer->Add(fhM02WeightPi0[nlm][i]) ;
1745 }
19391b8c 1746
1747 for(Int_t i = 0; i < fSSECellCutN; i++)
1748 {
1749 fhM02ECellCutPi0[nlm][i] = new TH2F(Form("hM02Pi0NLocMax%s_Ecell%d",snlm[nlm].Data(),i),
1750 Form("#lambda_{0}^{2} vs E, with Ecell > %2.2f, for N Local max = %s", fSSECellCut[i], snlm[nlm].Data()),
1751 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1752 fhM02ECellCutPi0[nlm][i] ->SetYTitle("#lambda_{0}^{2}");
1753 fhM02ECellCutPi0[nlm][i] ->SetXTitle("E (GeV)");
1754 outputContainer->Add(fhM02ECellCutPi0[nlm][i]) ;
1755 }
1756
dbe09c26 1757 }
1758 }
1759
992b14a7 1760 return outputContainer ;
1761
1762}
1763
992b14a7 1764//___________________________________________
1765void AliAnaInsideClusterInvariantMass::Init()
1766{
1767 //Init
1768 //Do some checks
3c1d9afb 1769 if(fCalorimeter == "PHOS" && !GetReader()->IsPHOSSwitchedOn() && NewOutputAOD())
1770 {
992b14a7 1771 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!\n");
1772 abort();
1773 }
3c1d9afb 1774 else if(fCalorimeter == "EMCAL" && !GetReader()->IsEMCALSwitchedOn() && NewOutputAOD())
1775 {
992b14a7 1776 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!\n");
1777 abort();
1778 }
1779
3c1d9afb 1780 if( GetReader()->GetDataType() == AliCaloTrackReader::kMC )
1781 {
992b14a7 1782 printf("AliAnaInsideClusterInvariantMass::Init() - !!STOP: You want to use pure MC data!!\n");
1783 abort();
1784
1785 }
1786
1787}
1788
1789//_____________________________________________________
1790void AliAnaInsideClusterInvariantMass::InitParameters()
1791{
1792 //Initialize the parameters of the analysis.
1793 AddToHistogramsName("AnaPi0InsideClusterInvariantMass_");
1794
1795 fCalorimeter = "EMCAL" ;
29ca9cad 1796
71e3889f 1797 fM02MinCut = 0.26 ;
1798 fM02MaxCut = 10 ;
1799
992b14a7 1800 fMinNCells = 4 ;
2cb134fb 1801 fMinBadDist = 2 ;
dbe09c26 1802
1803 fSSWeightN = 5;
1804 fSSWeight[0] = 4.6; fSSWeight[1] = 4.7; fSSWeight[2] = 4.8; fSSWeight[3] = 4.9; fSSWeight[4] = 5.0;
1805 fSSWeight[5] = 5.1; fSSWeight[6] = 5.2; fSSWeight[7] = 5.3; fSSWeight[8] = 5.4; fSSWeight[9] = 5.5;
19391b8c 1806
1807 fSSECellCutN = 10;
1808 fSSECellCut[0] = 0.16; fSSECellCut[1] = 0.18; fSSECellCut[2] = 0.2; fSSECellCut[3] = 0.22; fSSECellCut[4] = 0.24;
1809 fSSECellCut[5] = 0.26; fSSECellCut[6] = 0.28; fSSECellCut[7] = 0.3; fSSECellCut[8] = 0.32; fSSECellCut[9] = 0.34;
1810
992b14a7 1811}
1812
1813
1814//__________________________________________________________________
1815void AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
1816{
1817 //Search for pi0 in fCalorimeter with shower shape analysis
1818
1819 TObjArray * pl = 0x0;
1820 AliVCaloCells* cells = 0x0;
1821
1822 //Select the Calorimeter of the photon
2cb134fb 1823 if(fCalorimeter == "PHOS")
1824 {
992b14a7 1825 pl = GetPHOSClusters();
1826 cells = GetPHOSCells();
1827 }
2cb134fb 1828 else if (fCalorimeter == "EMCAL")
1829 {
992b14a7 1830 pl = GetEMCALClusters();
1831 cells = GetEMCALCells();
1832 }
1833
17f5b4b6 1834 const Float_t ecut = 8.; // Fixed cut for some histograms
e671adc2 1835
3c1d9afb 1836 if(!pl || !cells)
1837 {
992b14a7 1838 Info("MakeAnalysisFillHistograms","TObjArray with %s clusters is NULL!\n",fCalorimeter.Data());
1839 return;
1840 }
1841
1842 if(fCalorimeter == "PHOS") return; // Not implemented for PHOS yet
1843
2cb134fb 1844 for(Int_t icluster = 0; icluster < pl->GetEntriesFast(); icluster++)
1845 {
992b14a7 1846 AliVCluster * cluster = (AliVCluster*) (pl->At(icluster));
1847
8edbd100 1848 Bool_t matched = IsTrackMatched(cluster,GetReader()->GetInputEvent());
aa12888f 1849 if(!fFillTMHisto && matched) continue ;
8edbd100 1850
992b14a7 1851 // Study clusters with large shape parameter
1852 Float_t en = cluster->E();
1853 Float_t l0 = cluster->GetM02();
1854 Int_t nc = cluster->GetNCells();
2cb134fb 1855 Float_t bd = cluster->GetDistanceToBadChannel() ;
d2655d46 1856
2cb134fb 1857 //If too small or big E or low number of cells, or close to a bad channel skip it
8edbd100 1858 if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
2cb134fb 1859
9554fc65 1860 TLorentzVector lv;
1861 cluster->GetMomentum(lv, GetVertex(0));
1862 Float_t eta = lv.Eta();
1863 Float_t phi = lv.Phi();
1864 if(phi<0) phi=+TMath::TwoPi();
1865
2cb134fb 1866 //printf("en %2.2f, GetMinEnergy() %2.2f, GetMaxEnergy() %2.2f, nc %d, fMinNCells %d, bd %2.2f, fMinBadDist %2.2f\n",
1867 // en,GetMinEnergy(), GetMaxEnergy(), nc, fMinNCells, bd, fMinBadDist);
1868
d2655d46 1869 // Get more Shower Shape parameters
1870 Float_t ll0 = 0., ll1 = 0.;
1871 Float_t disp= 0., dispEta = 0., dispPhi = 0.;
1872 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
1873
1874 GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), GetReader()->GetInputEvent()->GetEMCALCells(), cluster,
1875 ll0, ll1, disp, dispEta, dispPhi, sEta, sPhi, sEtaPhi);
1876
1877 Float_t dispAsy = -1;
1878 if(dispEta+dispPhi >0 ) dispAsy = (dispPhi-dispEta) / (dispPhi+dispEta);
1879
3c1d9afb 1880 Int_t nMax = 0;
bfdcf7fb 1881 Double_t mass = 0., angle = 0.;
1882 Double_t e1 = 0., e2 = 0.;
19391b8c 1883 Int_t absId1 = -1; Int_t absId2 = -1;
1884
3c1d9afb 1885 Int_t pidTag = GetCaloPID()->GetIdentifiedParticleTypeFromClusterSplitting(cluster,cells,GetCaloUtils(),
19391b8c 1886 GetVertex(0), nMax, mass, angle,
1887 e1,e2,absId1,absId2);
5c46c992 1888 if (nMax <= 0)
1889 {
de454976 1890 if(GetDebug() > 0 )
1891 printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - No local maximum found! It did not pass CaloPID selection criteria \n");
5c46c992 1892
992b14a7 1893 return;
1894 }
1895
fc01318e 1896 Float_t splitFrac = (e1+e2)/en;
e671adc2 1897 Float_t asym = -10;
1898 if(e1+e2>0) asym = (e1-e2)/(e1+e2);
8edbd100 1899
3c1d9afb 1900 fhNLocMax[0][matched]->Fill(en,nMax);
29ca9cad 1901
4d97a954 1902 Int_t inlm = -1;
1903 if (nMax == 1) inlm = 0;
1904 else if(nMax == 2) inlm = 1;
1905 else if(nMax > 2 ) inlm = 2;
1906
2a77f6f4 1907 if ( nMax == 1 )
1908 {
1909 fhM02NLocMax1[0][matched]->Fill(en,l0) ;
1910 fhSplitEFractionNLocMax1[0][matched]->Fill(en,splitFrac) ;
9554fc65 1911 if(en > ecut)
1912 {
1913 fhSplitEFractionvsAsyNLocMax1[matched]->Fill(asym,splitFrac) ;
1914 if(!matched)fhClusterEtaPhiNLocMax1->Fill(eta,phi);
1915 }
2a77f6f4 1916 if(fFillSSExtraHisto) fhNCellNLocMax1[0][matched]->Fill(en,nc) ;
1917 }
1918 else if( nMax == 2 )
1919 {
1920 fhM02NLocMax2[0][matched]->Fill(en,l0) ;
1921 fhSplitEFractionNLocMax2[0][matched]->Fill(en,splitFrac) ;
9554fc65 1922 if(en > ecut)
1923 {
1924 fhSplitEFractionvsAsyNLocMax2[matched]->Fill(asym,splitFrac) ;
1925 if(!matched)fhClusterEtaPhiNLocMax2->Fill(eta,phi);
1926 }
2a77f6f4 1927 if(fFillSSExtraHisto) fhNCellNLocMax2[0][matched]->Fill(en,nc) ; }
1928 else if( nMax >= 3 )
1929 {
1930 fhM02NLocMaxN[0][matched]->Fill(en,l0) ;
1931 fhSplitEFractionNLocMaxN[0][matched]->Fill(en,splitFrac) ;
9554fc65 1932 if(en > ecut)
1933 {
1934 fhSplitEFractionvsAsyNLocMaxN[matched]->Fill(asym,splitFrac) ;
1935 if(!matched)fhClusterEtaPhiNLocMaxN->Fill(eta,phi);
1936 }
1937 if(fFillSSExtraHisto) fhNCellNLocMaxN[0][matched]->Fill(en,nc) ;
2a77f6f4 1938 }
992b14a7 1939 else printf("N max smaller than 1 -> %d \n",nMax);
5c46c992 1940
2a77f6f4 1941
5c46c992 1942 Float_t dZ = cluster->GetTrackDz();
1943 Float_t dR = cluster->GetTrackDx();
1944
1945 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1946 {
1947 dR = 2000., dZ = 2000.;
1948 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1949 }
1950 //printf("Pi0EbE: dPhi %f, dEta %f\n",dR,dZ);
1951
8e81c2cf 1952 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 1953 {
c8710850 1954 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[0]->Fill(en,dR); }
1955 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[0]->Fill(en,dR); }
1956 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[0]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[0]->Fill(en,dR); }
5c46c992 1957 }
fc01318e 1958
992b14a7 1959 // Play with the MC stack if available
1960 // Check origin of the candidates
8e81c2cf 1961 Int_t mcindex = -1;
1962 Float_t eprim = 0;
1963 Float_t asymGen = -2;
53f2c382 1964 Int_t mcLabel = cluster->GetLabel();
3c1d9afb 1965 if(IsDataMC())
1966 {
2644ead9 1967 Int_t tag = GetMCAnalysisUtils()->CheckOrigin(cluster->GetLabels(),cluster->GetNLabels(), GetReader());
992b14a7 1968
de7d73e6 1969 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) &&
1970 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPi0;
1971 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) ) mcindex = kmcPi0Conv;
c5693f62 1972 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mcindex = kmcEta;
992b14a7 1973 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 1974 !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcPhoton;
992b14a7 1975 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) &&
c5693f62 1976 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) mcindex = kmcConversion;
1977 else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) mcindex = kmcElectron;
1978 else mcindex = kmcHadron;
71e3889f 1979
5c46c992 1980 fhNLocMax[mcindex][matched]->Fill(en,nMax);
3c1d9afb 1981
fc01318e 1982 if (nMax == 1 ) { fhM02NLocMax1[mcindex][matched]->Fill(en,l0) ; fhSplitEFractionNLocMax1[mcindex][matched]->Fill(en,splitFrac) ; if(fFillSSExtraHisto) fhNCellNLocMax1[mcindex][matched]->Fill(en,nc) ; }
1983 else if(nMax == 2 ) { fhM02NLocMax2[mcindex][matched]->Fill(en,l0) ; fhSplitEFractionNLocMax2[mcindex][matched]->Fill(en,splitFrac) ; if(fFillSSExtraHisto) fhNCellNLocMax2[mcindex][matched]->Fill(en,nc) ; }
1984 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 1985
8e81c2cf 1986 if(TMath::Abs(dR) < 999 && fFillTMResidualHisto)
5c46c992 1987 {
c8710850 1988 if ( nMax == 1 ) { fhTrackMatchedDEtaNLocMax1[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax1[mcindex]->Fill(en,dR); }
1989 else if( nMax == 2 ) { fhTrackMatchedDEtaNLocMax2[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMax2[mcindex]->Fill(en,dR); }
1990 else if( nMax >= 3 ) { fhTrackMatchedDEtaNLocMaxN[mcindex]->Fill(en,dZ); fhTrackMatchedDPhiNLocMaxN[mcindex]->Fill(en,dR); }
29ca9cad 1991 }
992b14a7 1992
8e81c2cf 1993 Bool_t ok = kFALSE;
53f2c382 1994 TLorentzVector primary = GetMCAnalysisUtils()->GetMother(mcLabel,GetReader(),ok);
8e81c2cf 1995 eprim = primary.E();
1996
883411b2 1997 if(mcindex == kmcPi0 || mcindex == kmcEta)
8e81c2cf 1998 {
53f2c382 1999 if(mcindex == kmcPi0)
2000 {
2001 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,111,GetReader(),ok));
2002 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,111,GetReader(),ok);
2003 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
2004 }
2005 else
2006 {
2007 asymGen = TMath::Abs(GetMCAnalysisUtils()->GetMCDecayAsymmetryForPDG(mcLabel,221,GetReader(),ok));
2008 TLorentzVector grandmom = GetMCAnalysisUtils()->GetMotherWithPDG(mcLabel,221,GetReader(),ok);
2009 if(grandmom.E() > 0 && ok) eprim = grandmom.E();
2010 }
8e81c2cf 2011 }
d2655d46 2012 }
2013
5094c724 2014 Float_t efrac = eprim/en;
bb2d339b 2015 Float_t efracSplit = 0;
2016 if(e1+e2 > 0) efracSplit = eprim/(e1+e2);
5094c724 2017
bb2d339b 2018 //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",
2019 // e1,e2,eprim,en,splitFrac,efrac,efracSplit);
2020
d2655d46 2021 Int_t ebin = -1;
8e81c2cf 2022 if(en > 8 && en <= 12) ebin = 0;
2023 if(en > 12 && en <= 16) ebin = 1;
2024 if(en > 16 && en <= 20) ebin = 2;
d2655d46 2025 if(en > 20) ebin = 3;
2026
19391b8c 2027 if(fFillEbinHisto && ebin >= 0 && IsDataMC() && fFillMCFractionHisto)
53f2c382 2028 {
2029 if( !matched ) fhMCGenFracNLocMaxEbin [mcindex][ebin]->Fill(efrac,nMax);
2030 else fhMCGenFracNLocMaxEbinMatched[mcindex][ebin]->Fill(efrac,nMax);
2031 }
2032
26680f06 2033 if (nMax==1)
2034 {
e671adc2 2035 if( en > ecut )
26680f06 2036 {
d2655d46 2037 fhMassM02NLocMax1 [0][matched]->Fill(l0 , mass );
8e81c2cf 2038 if(fFillSSExtraHisto)
2039 {
2040 fhMassDispEtaNLocMax1[0][matched]->Fill(dispEta, mass );
2041 fhMassDispPhiNLocMax1[0][matched]->Fill(dispPhi, mass );
2042 fhMassDispAsyNLocMax1[0][matched]->Fill(dispAsy, mass );
2043 }
2044
a700f620 2045 if(IsDataMC())
d2655d46 2046 {
8e81c2cf 2047 fhMassM02NLocMax1 [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 2048 if(fFillMCFractionHisto)
2049 {
2050 fhMCGenFracNLocMax1 [mcindex][matched]->Fill(en , efrac );
2051 fhMCGenSplitEFracNLocMax1 [mcindex][matched]->Fill(en , efracSplit );
2052 fhMCGenEvsSplitENLocMax1 [mcindex][matched]->Fill(eprim , e1+e2);
2053 fhMCGenEFracvsSplitEFracNLocMax1[mcindex][matched]->Fill(efrac,splitFrac );
2054 }
2055
19391b8c 2056 if(!matched && ebin >= 0 && fFillEbinHisto)
8e81c2cf 2057 {
2a77f6f4 2058 if(fFillMCFractionHisto)
2059 {
2060 fhM02MCGenFracNLocMax1Ebin [mcindex][ebin]->Fill(efrac , l0 );
2061 fhMassMCGenFracNLocMax1Ebin[mcindex][ebin]->Fill(efrac , mass );
2062 }
b8eb40fc 2063 fhMCAsymM02NLocMax1MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2064 fhAsyMCGenRecoNLocMax1EbinPi0[ebin]->Fill(asym, asymGen );
8e81c2cf 2065 }
2066
2067 if(fFillSSExtraHisto)
2068 {
2069 fhMassDispEtaNLocMax1[mcindex][matched]->Fill(dispEta, mass );
2070 fhMassDispPhiNLocMax1[mcindex][matched]->Fill(dispPhi, mass );
2071 fhMassDispAsyNLocMax1[mcindex][matched]->Fill(dispAsy, mass );
2072 }
d2655d46 2073 }
26680f06 2074 }
2075
19391b8c 2076 if(!matched && ebin >= 0 && fFillEbinHisto)
26680f06 2077 {
fc01318e 2078 fhMassSplitEFractionNLocMax1Ebin[0][ebin]->Fill(splitFrac, mass);
2079 if(IsDataMC())fhMassSplitEFractionNLocMax1Ebin[mcindex][ebin]->Fill(splitFrac, mass);
2080
b8eb40fc 2081 fhMassM02NLocMax1Ebin [ebin]->Fill(l0 , mass );
2082 fhMassAsyNLocMax1Ebin [ebin]->Fill(asym, mass );
2083
8e81c2cf 2084 if(fFillSSExtraHisto)
2085 {
2086 fhMassDispEtaNLocMax1Ebin[ebin]->Fill(dispEta, mass );
2087 fhMassDispPhiNLocMax1Ebin[ebin]->Fill(dispPhi, mass );
2088 fhMassDispAsyNLocMax1Ebin[ebin]->Fill(dispAsy, mass );
2089 }
26680f06 2090 }
2091 }
2092 else if(nMax==2)
2093 {
e671adc2 2094 if( en > ecut )
d2655d46 2095 {
2096 fhMassM02NLocMax2 [0][matched]->Fill(l0 , mass );
8e81c2cf 2097 if(fFillSSExtraHisto)
2098 {
2099 fhMassDispEtaNLocMax2[0][matched]->Fill(dispEta, mass );
2100 fhMassDispPhiNLocMax2[0][matched]->Fill(dispPhi, mass );
2101 fhMassDispAsyNLocMax2[0][matched]->Fill(dispAsy, mass );
2102 }
d2655d46 2103
a700f620 2104 if(IsDataMC())
d2655d46 2105 {
5094c724 2106 fhMassM02NLocMax2 [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 2107 if(fFillMCFractionHisto)
2108 {
2109 fhMCGenFracNLocMax2 [mcindex][matched]->Fill(en , efrac );
2110 fhMCGenSplitEFracNLocMax2[mcindex][matched]->Fill(en , efracSplit );
2111 fhMCGenEvsSplitENLocMax2 [mcindex][matched]->Fill(eprim , e1+e2);
2112 fhMCGenEFracvsSplitEFracNLocMax2[mcindex][matched]->Fill(efrac,splitFrac );
2113 }
2114
19391b8c 2115 if(!matched && ebin >= 0 && fFillEbinHisto )
8e81c2cf 2116 {
2a77f6f4 2117 if(fFillMCFractionHisto)
2118 {
2119 fhM02MCGenFracNLocMax2Ebin [mcindex][ebin]->Fill(efrac , l0 );
2120 fhMassMCGenFracNLocMax2Ebin[mcindex][ebin]->Fill(efrac , mass );
2121 }
b8eb40fc 2122 fhMCAsymM02NLocMax2MCPi0Ebin [ebin]->Fill(l0 , asymGen );
2123 fhAsyMCGenRecoNLocMax2EbinPi0[ebin]->Fill(asym, asymGen );
8e81c2cf 2124 }
19391b8c 2125
8e81c2cf 2126 if(fFillSSExtraHisto)
2127 {
2128 fhMassDispEtaNLocMax2[mcindex][matched]->Fill(dispEta, mass );
2129 fhMassDispPhiNLocMax2[mcindex][matched]->Fill(dispPhi, mass );
2130 fhMassDispAsyNLocMax2[mcindex][matched]->Fill(dispAsy, mass );
2131 }
d2655d46 2132 }
26680f06 2133 }
2134
19391b8c 2135 if(!matched && ebin >= 0 && fFillEbinHisto)
26680f06 2136 {
fc01318e 2137 fhMassSplitEFractionNLocMax2Ebin[0][ebin]->Fill(splitFrac, mass);
2138 if(IsDataMC())fhMassSplitEFractionNLocMax2Ebin[mcindex][ebin]->Fill(splitFrac, mass);
2139
b8eb40fc 2140 fhMassM02NLocMax2Ebin [ebin]->Fill(l0 , mass );
2141 fhMassAsyNLocMax2Ebin [ebin]->Fill(asym, mass );
2142
8e81c2cf 2143 if(fFillSSExtraHisto)
2144 {
2145 fhMassDispEtaNLocMax2Ebin[ebin]->Fill(dispEta, mass );
2146 fhMassDispPhiNLocMax2Ebin[ebin]->Fill(dispPhi, mass );
2147 fhMassDispAsyNLocMax2Ebin[ebin]->Fill(dispAsy, mass );
2148 }
d2655d46 2149 }
26680f06 2150 }
8e81c2cf 2151 else if(nMax > 2 )
26680f06 2152 {
e671adc2 2153 if( en > ecut )
26680f06 2154 {
d2655d46 2155 fhMassM02NLocMaxN [0][matched]->Fill(l0 , mass );
8e81c2cf 2156 if(fFillSSExtraHisto)
2157 {
2158 fhMassDispEtaNLocMaxN[0][matched]->Fill(dispEta, mass );
2159 fhMassDispPhiNLocMaxN[0][matched]->Fill(dispPhi, mass );
2160 fhMassDispAsyNLocMaxN[0][matched]->Fill(dispAsy, mass );
2161 }
d2655d46 2162
a700f620 2163 if(IsDataMC())
d2655d46 2164 {
5094c724 2165 fhMassM02NLocMaxN [mcindex][matched]->Fill(l0 , mass );
2a77f6f4 2166 if(fFillMCFractionHisto)
2167 {
2168 fhMCGenFracNLocMaxN [mcindex][matched]->Fill(en , efrac );
2169 fhMCGenSplitEFracNLocMaxN[mcindex][matched]->Fill(en , efracSplit );
2170 fhMCGenEvsSplitENLocMaxN [mcindex][matched]->Fill(eprim , e1+e2);
2171 fhMCGenEFracvsSplitEFracNLocMaxN[mcindex][matched]->Fill(efrac, splitFrac );
2172 }
2173
19391b8c 2174 if(!matched && ebin >= 0 && fFillEbinHisto)
8e81c2cf 2175 {
2a77f6f4 2176 if(fFillMCFractionHisto)
2177 {
2178 fhM02MCGenFracNLocMaxNEbin [mcindex][ebin]->Fill(efrac , l0 );
2179 fhMassMCGenFracNLocMaxNEbin[mcindex][ebin]->Fill(efrac , mass );
2180 }
b8eb40fc 2181 fhMCAsymM02NLocMaxNMCPi0Ebin [ebin]->Fill(l0 , asymGen );
2182 fhAsyMCGenRecoNLocMaxNEbinPi0[ebin]->Fill(asym, asymGen );
8e81c2cf 2183 }
2184 if(fFillSSExtraHisto)
2185 {
2186 fhMassDispEtaNLocMaxN[mcindex][matched]->Fill(dispEta, mass );
2187 fhMassDispPhiNLocMaxN[mcindex][matched]->Fill(dispPhi, mass );
2188 fhMassDispAsyNLocMaxN[mcindex][matched]->Fill(dispAsy, mass );
2189 }
d2655d46 2190 }
26680f06 2191 }
2192
19391b8c 2193 if(!matched && ebin >= 0 && fFillEbinHisto)
26680f06 2194 {
fc01318e 2195 fhMassSplitEFractionNLocMaxNEbin[0][ebin]->Fill(splitFrac, mass);
2196 if(IsDataMC())fhMassSplitEFractionNLocMaxNEbin[mcindex][ebin]->Fill(splitFrac, mass);
2197
b8eb40fc 2198 fhMassM02NLocMaxNEbin [ebin]->Fill(l0 , mass );
2199 fhMassAsyNLocMaxNEbin [ebin]->Fill(asym, mass );
2200
8e81c2cf 2201 if(fFillSSExtraHisto)
2202 {
2203 fhMassDispEtaNLocMaxNEbin[ebin]->Fill(dispEta, mass );
2204 fhMassDispPhiNLocMaxNEbin[ebin]->Fill(dispPhi, mass );
2205 fhMassDispAsyNLocMaxNEbin[ebin]->Fill(dispAsy, mass );
2206 }
26680f06 2207 }
2208 }
2209
26680f06 2210 //---------------------------------------------------------------------
2211 // From here only if M02 is large but not too large, fill histograms
2212 //---------------------------------------------------------------------
2213
3c1d9afb 2214 if( l0 < fM02MinCut || l0 > fM02MaxCut ) continue ;
26680f06 2215
b8eb40fc 2216 Bool_t m02OK = GetCaloPID()->IsInPi0M02Range(en,l0,nMax);
167f2534 2217 Bool_t asyOK = GetCaloPID()->IsInPi0SplitAsymmetryRange(en,asym,nMax);
2218
c8710850 2219 Float_t cent = GetEventCentrality();
2220 Float_t evp = GetEventPlaneAngle();
2221
26680f06 2222 fhNLocMaxM02Cut[0][matched]->Fill(en,nMax);
2223 if(IsDataMC()) fhNLocMaxM02Cut[mcindex][matched]->Fill(en,nMax);
4d97a954 2224
2225 Float_t splitFracMin = GetCaloPID()->GetSplitEnergyFractionMinimum(inlm) ;
2226
243c2909 2227 if (nMax==1)
2228 {
2a77f6f4 2229 fhMassNLocMax1[0][matched]->Fill(en,mass );
667432ef 2230 fhAsymNLocMax1[0][matched]->Fill(en,asym );
2231
2232 // Effect of cuts in mass histograms
74858845 2233
4d97a954 2234 if(!matched)
2a77f6f4 2235 {
667432ef 2236 if(m02OK)
e671adc2 2237 {
2238 fhMassM02CutNLocMax1->Fill(en,mass);
77cadd95 2239 fhAsymM02CutNLocMax1->Fill(en,asym );
4d97a954 2240 if(splitFrac > splitFracMin) fhMassSplitECutNLocMax1->Fill(en,mass );
667432ef 2241 } // m02
2242 } // split frac
2243
74858845 2244 if(m02OK && asyOK)
667432ef 2245 {
74858845 2246 fhSplitEFractionAfterCutsNLocMax1[0][matched]->Fill(en,splitFrac);
4d97a954 2247 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMax1[0][matched]->Fill(en,mass);
74858845 2248
2249 if(!matched && IsDataMC() && fFillMCFractionHisto && mcindex==kmcPi0)
667432ef 2250 {
74858845 2251
667432ef 2252 fhMCGenFracAfterCutsNLocMax1MCPi0 ->Fill(en , efrac );
2253 fhMCGenSplitEFracAfterCutsNLocMax1MCPi0->Fill(en , efracSplit);
e671adc2 2254 }
2a77f6f4 2255 }
26680f06 2256
883411b2 2257 if(fFillAngleHisto)
2258 {
c8710850 2259 fhAnglePairNLocMax1[matched]->Fill(en,angle);
e671adc2 2260 if( en > ecut )
c8710850 2261 fhAnglePairMassNLocMax1[matched]->Fill(mass,angle);
0137016b 2262 }
74858845 2263
c8710850 2264 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMax1[0][matched]->Fill(en,l0); fhMassConNLocMax1[0][matched]->Fill(en,mass); fhAsyConNLocMax1[0][matched]->Fill(en,asym); }
9554fc65 2265 else if(pidTag==AliCaloPID::kPi0 )
2266 {
2267 fhM02Pi0NLocMax1[0][matched]->Fill(en,l0); fhMassPi0NLocMax1[0][matched]->Fill(en,mass); fhAsyPi0NLocMax1[0][matched]->Fill(en,asym);
2268 fhCentralityPi0NLocMax1[0][matched]->Fill(en,cent) ;
2269 if(!matched)
2270 {
2271 fhEventPlanePi0NLocMax1->Fill(en,evp) ;
2272 if(en > ecut)fhPi0EtaPhiNLocMax1->Fill(eta,phi);
19391b8c 2273 FillSSWeightHistograms(cluster, 0, absId1, absId2);
9554fc65 2274 }
2275 }
2276 else if(pidTag==AliCaloPID::kEta)
2277 {
2278 fhM02EtaNLocMax1[0][matched]->Fill(en,l0); fhMassEtaNLocMax1[0][matched]->Fill(en,mass); fhAsyEtaNLocMax1[0][matched]->Fill(en,asym);
2279 fhCentralityEtaNLocMax1[0][matched]->Fill(en,cent) ;
2280 if(!matched)
2281 {
2282 fhEventPlaneEtaNLocMax1->Fill(en,evp) ;
2283 if(en > ecut)fhEtaEtaPhiNLocMax1->Fill(eta,phi);
2284 }
2285 }
17f5b4b6 2286
167f2534 2287 }
5c46c992 2288 else if(nMax==2)
2289 {
2a77f6f4 2290 fhMassNLocMax2[0][matched]->Fill(en,mass );
667432ef 2291 fhAsymNLocMax2[0][matched]->Fill(en,asym );
2292
2293 // Effect of cuts in mass histograms
4d97a954 2294 if(!matched)
2a77f6f4 2295 {
667432ef 2296 if(m02OK)
e671adc2 2297 {
2298 fhMassM02CutNLocMax2->Fill(en,mass);
77cadd95 2299 fhAsymM02CutNLocMax2->Fill(en,asym );
4d97a954 2300 if(splitFrac > splitFracMin) fhMassSplitECutNLocMax2->Fill(en,mass );
667432ef 2301 } // m02
2302 } // split frac
2303
74858845 2304 if(m02OK && asyOK)
667432ef 2305 {
74858845 2306 fhSplitEFractionAfterCutsNLocMax2[0][matched]->Fill(en,splitFrac);
4d97a954 2307 if(splitFrac >splitFracMin) fhMassAfterCutsNLocMax2[0][matched]->Fill(en,mass);
74858845 2308
2309 if(!matched && IsDataMC() && fFillMCFractionHisto && mcindex==kmcPi0)
667432ef 2310 {
74858845 2311
667432ef 2312 fhMCGenFracAfterCutsNLocMax2MCPi0 ->Fill(en , efrac );
2313 fhMCGenSplitEFracAfterCutsNLocMax2MCPi0->Fill(en , efracSplit);
e671adc2 2314 }
2a77f6f4 2315 }
26680f06 2316
883411b2 2317 if(fFillAngleHisto)
0137016b 2318 {
c8710850 2319 fhAnglePairNLocMax2[matched]->Fill(en,angle);
e671adc2 2320 if( en > ecut )
c8710850 2321 fhAnglePairMassNLocMax2[matched]->Fill(mass,angle);
0137016b 2322 }
9554fc65 2323
c8710850 2324 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMax2[0][matched]->Fill(en,l0); fhMassConNLocMax2[0][matched]->Fill(en,mass); fhAsyConNLocMax2[0][matched]->Fill(en,asym); }
9554fc65 2325 else if(pidTag==AliCaloPID::kPi0 )
2326 {
2327 fhM02Pi0NLocMax2[0][matched]->Fill(en,l0); fhMassPi0NLocMax2[0][matched]->Fill(en,mass); fhAsyPi0NLocMax2[0][matched]->Fill(en,asym);
2328 fhCentralityPi0NLocMax2[0][matched]->Fill(en,cent) ;
2329 if(!matched)
2330 {
2331 fhEventPlanePi0NLocMax2->Fill(en,evp) ;
2332 if(en > ecut)fhPi0EtaPhiNLocMax2->Fill(eta,phi);
19391b8c 2333 FillSSWeightHistograms(cluster, 1, absId1, absId2);
9554fc65 2334 }
2335 }
2336 else if(pidTag==AliCaloPID::kEta)
2337 {
2338 fhM02EtaNLocMax2[0][matched]->Fill(en,l0); fhMassEtaNLocMax2[0][matched]->Fill(en,mass); fhAsyEtaNLocMax2[0][matched]->Fill(en,asym);
2339 fhCentralityEtaNLocMax2[0][matched]->Fill(en,cent) ;
2340 if(!matched)
2341 {
2342 fhEventPlaneEtaNLocMax2->Fill(en,evp) ;
2343 if(en > ecut)fhEtaEtaPhiNLocMax2->Fill(eta,phi);
2344 }
2345 }
c8710850 2346
243c2909 2347 }
5c46c992 2348 else if(nMax >2)
2349 {
2a77f6f4 2350 fhMassNLocMaxN[0][matched]->Fill(en,mass);
667432ef 2351 fhAsymNLocMaxN[0][matched]->Fill(en,asym);
2352
2a77f6f4 2353 // Effect of cuts in mass histograms
4d97a954 2354 if(!matched)
2a77f6f4 2355 {
667432ef 2356 if(m02OK)
e671adc2 2357 {
2358 fhMassM02CutNLocMaxN->Fill(en,mass);
77cadd95 2359 fhAsymM02CutNLocMaxN->Fill(en,asym );
4d97a954 2360 if(splitFrac > splitFracMin)fhMassSplitECutNLocMaxN->Fill(en,mass );
667432ef 2361 } // m02
2362 } // split frac
2363
74858845 2364 if(m02OK && asyOK)
667432ef 2365 {
74858845 2366 fhSplitEFractionAfterCutsNLocMaxN[0][matched]->Fill(en,splitFrac);
4d97a954 2367 if(splitFrac > splitFracMin) fhMassAfterCutsNLocMaxN[0][matched]->Fill(en,mass);
74858845 2368
2369 if(!matched && IsDataMC() && fFillMCFractionHisto && mcindex==kmcPi0)
667432ef 2370 {
74858845 2371
667432ef 2372 fhMCGenFracAfterCutsNLocMaxNMCPi0 ->Fill(en , efrac );
2373 fhMCGenSplitEFracAfterCutsNLocMaxNMCPi0->Fill(en , efracSplit);
e671adc2 2374 }
2a77f6f4 2375 }
26680f06 2376
667432ef 2377 if(fFillAngleHisto)
883411b2 2378 {
c8710850 2379 fhAnglePairNLocMaxN[matched]->Fill(en,angle);
e671adc2 2380 if( en > ecut )
c8710850 2381 fhAnglePairMassNLocMaxN[matched]->Fill(mass,angle);
0137016b 2382 }
667432ef 2383
c8710850 2384 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMaxN[0][matched]->Fill(en,l0); fhMassConNLocMaxN[0][matched]->Fill(en,mass); fhAsyConNLocMaxN[0][matched]->Fill(en,asym); }
9554fc65 2385 else if(pidTag==AliCaloPID::kPi0 )
2386 {
2387 fhM02Pi0NLocMaxN[0][matched]->Fill(en,l0); fhMassPi0NLocMaxN[0][matched]->Fill(en,mass); fhAsyPi0NLocMaxN[0][matched]->Fill(en,asym);
2388 fhCentralityPi0NLocMaxN[0][matched]->Fill(en,cent) ;
2389 if(!matched)
2390 {
2391 fhEventPlanePi0NLocMaxN->Fill(en,evp) ;
2392 if(en > ecut)fhPi0EtaPhiNLocMaxN->Fill(eta,phi);
19391b8c 2393 FillSSWeightHistograms(cluster, 2, absId1, absId2);
9554fc65 2394 }
2395 }
2396 else if(pidTag==AliCaloPID::kEta)
2397 {
2398 fhM02EtaNLocMaxN[0][matched]->Fill(en,l0); fhMassEtaNLocMaxN[0][matched]->Fill(en,mass); fhAsyEtaNLocMaxN[0][matched]->Fill(en,asym);
2399 fhCentralityEtaNLocMaxN[0][matched]->Fill(en,cent) ;
2400 if(!matched)
2401 {
2402 fhEventPlaneEtaNLocMaxN->Fill(en,evp) ;
2403 if(en > ecut)fhEtaEtaPhiNLocMaxN->Fill(eta,phi);
2404 }
2405 }
c8710850 2406
243c2909 2407 }
2408
26680f06 2409
3c1d9afb 2410 if(IsDataMC())
2411 {
243c2909 2412 if (nMax==1)
2413 {
667432ef 2414 fhMassNLocMax1[mcindex][matched]->Fill(en,mass);
2415 fhAsymNLocMax1[mcindex][matched]->Fill(en,asym);
2416
74858845 2417 if(asyOK && m02OK)
c8710850 2418 {
74858845 2419 fhSplitEFractionAfterCutsNLocMax1[mcindex][matched]->Fill(en,splitFrac);
4d97a954 2420 if(splitFrac > splitFracMin)
74858845 2421 fhMassAfterCutsNLocMax1[mcindex][matched]->Fill(en,mass);
c8710850 2422 }
667432ef 2423
c8710850 2424 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMax1[mcindex][matched]->Fill(en,l0); fhMassConNLocMax1[mcindex][matched]->Fill(en,mass); fhAsyConNLocMax1[mcindex][matched]->Fill(en,asym); }
2425 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0NLocMax1[mcindex][matched]->Fill(en,l0); fhMassPi0NLocMax1[mcindex][matched]->Fill(en,mass); fhAsyPi0NLocMax1[mcindex][matched]->Fill(en,asym); }
17f5b4b6 2426 else if(pidTag==AliCaloPID::kEta ) { fhM02EtaNLocMax1[mcindex][matched]->Fill(en,l0); fhMassEtaNLocMax1[mcindex][matched]->Fill(en,mass); fhAsyEtaNLocMax1[mcindex][matched]->Fill(en,asym); }
2427
2428 if (pidTag==AliCaloPID::kPi0) fhCentralityPi0NLocMax1[mcindex][matched]->Fill(en,cent) ;
2429 else if(pidTag==AliCaloPID::kEta) fhCentralityEtaNLocMax1[mcindex][matched]->Fill(en,cent) ;
2430 }
0137016b 2431 else if(nMax==2)
2432 {
5c46c992 2433 fhMassNLocMax2[mcindex][matched]->Fill(en,mass);
667432ef 2434 fhAsymNLocMax2[mcindex][matched]->Fill(en,asym);
2435
74858845 2436 if(asyOK && m02OK)
c8710850 2437 {
74858845 2438 fhSplitEFractionAfterCutsNLocMax2[mcindex][matched]->Fill(en,splitFrac);
4d97a954 2439 if(splitFrac >splitFracMin)
74858845 2440 fhMassAfterCutsNLocMax2[mcindex][matched]->Fill(en,mass);
c8710850 2441 }
667432ef 2442
c8710850 2443 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMax2[mcindex][matched]->Fill(en,l0); fhMassConNLocMax2[mcindex][matched]->Fill(en,mass); fhAsyConNLocMax2[mcindex][matched]->Fill(en,asym); }
2444 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0NLocMax2[mcindex][matched]->Fill(en,l0); fhMassPi0NLocMax2[mcindex][matched]->Fill(en,mass); fhAsyPi0NLocMax2[mcindex][matched]->Fill(en,asym); }
2445 else if(pidTag==AliCaloPID::kEta ) { fhM02EtaNLocMax2[mcindex][matched]->Fill(en,l0); fhMassEtaNLocMax2[mcindex][matched]->Fill(en,mass); fhAsyEtaNLocMax2[mcindex][matched]->Fill(en,asym); }
17f5b4b6 2446
2447 if (pidTag==AliCaloPID::kPi0) fhCentralityPi0NLocMax2[mcindex][matched]->Fill(en,cent) ;
2448 else if(pidTag==AliCaloPID::kEta) fhCentralityEtaNLocMax2[mcindex][matched]->Fill(en,cent) ;
bb2d339b 2449
243c2909 2450 }
0137016b 2451 else if(nMax >2)
2452 {
5c46c992 2453 fhMassNLocMaxN[mcindex][matched]->Fill(en,mass);
667432ef 2454 fhAsymNLocMaxN[mcindex][matched]->Fill(en,asym);
2455
74858845 2456 if(asyOK && m02OK)
c8710850 2457 {
74858845 2458 fhSplitEFractionAfterCutsNLocMaxN[mcindex][matched]->Fill(en,splitFrac);
4d97a954 2459 if(splitFrac > splitFracMin )
74858845 2460 fhMassAfterCutsNLocMaxN[mcindex][matched]->Fill(en,mass);
c8710850 2461 }
667432ef 2462
c8710850 2463 if (pidTag==AliCaloPID::kPhoton) { fhM02ConNLocMaxN[mcindex][matched]->Fill(en,l0); fhMassConNLocMaxN[mcindex][matched]->Fill(en,mass); fhAsyConNLocMaxN[mcindex][matched]->Fill(en,asym); }
2464 else if(pidTag==AliCaloPID::kPi0 ) { fhM02Pi0NLocMaxN[mcindex][matched]->Fill(en,l0); fhMassPi0NLocMaxN[mcindex][matched]->Fill(en,mass); fhAsyPi0NLocMaxN[mcindex][matched]->Fill(en,asym); }
17f5b4b6 2465 else if(pidTag==AliCaloPID::kEta ) { fhM02EtaNLocMaxN[mcindex][matched]->Fill(en,l0); fhMassEtaNLocMaxN[mcindex][matched]->Fill(en,mass); fhAsyEtaNLocMaxN[mcindex][matched]->Fill(en,asym); }
2466
2467 if (pidTag==AliCaloPID::kPi0) fhCentralityPi0NLocMaxN[mcindex][matched]->Fill(en,cent) ;
2468 else if(pidTag==AliCaloPID::kEta) fhCentralityEtaNLocMaxN[mcindex][matched]->Fill(en,cent) ;
243c2909 2469 }
992b14a7 2470
2471 }//Work with MC truth first
5c46c992 2472
992b14a7 2473 }//loop
2474
2475 if(GetDebug() > 1) printf("AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms() - END \n");
e23a0471 2476
992b14a7 2477}
2478
2479//______________________________________________________________________
2480void AliAnaInsideClusterInvariantMass::Print(const Option_t * opt) const
2481{
2482 //Print some relevant parameters set for the analysis
2483 if(! opt)
2484 return;
2485
2486 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 2487 AliAnaCaloTrackCorrBaseClass::Print("");
243c2909 2488 printf("Calorimeter = %s\n", fCalorimeter.Data()) ;
19391b8c 2489 if(GetCaloUtils()) printf("Loc. Max. E > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutE());
2490 if(GetCaloUtils()) printf("Loc. Max. E Diff > %2.2f\n", GetCaloUtils()->GetLocalMaximaCutEDiff());
cfc19369 2491 printf("Min. N Cells =%d \n", fMinNCells) ;
2492 printf("Min. Dist. to Bad =%1.1f \n", fMinBadDist) ;
71e3889f 2493 printf("%2.2f < lambda_0^2 <%2.2f \n",fM02MinCut,fM02MaxCut);
19391b8c 2494 if(fFillSSWeightHisto) printf(" N w %d - N e cut %d \n",fSSWeightN,fSSECellCutN);
2495
992b14a7 2496 printf(" \n") ;
2497
2498}
2499
dbba06ca 2500
19391b8c 2501//___________________________________________________________________________________________________________________
2502void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom,
2503 AliVCaloCells* cells,
2504 AliVCluster * cluster,
2505 Float_t & l0, Float_t & l1,
2506 Float_t & disp, Float_t & dEta, Float_t & dPhi,
2507 Float_t & sEta, Float_t & sPhi, Float_t & sEtaPhi,
2508 Float_t eCellMin)
2509{
2510 // Calculates new center of gravity in the local EMCAL-module coordinates
2511 // and tranfers into global ALICE coordinates
2512 // Calculates Dispersion and main axis
2513
2514 if(!cluster)
2515 {
2516 AliInfo("Cluster pointer null!");
2517 return;
2518 }
2519
2520 Double_t eCell = 0.;
2521 Float_t fraction = 1.;
2522 Float_t recalFactor = 1.;
2523
2524 Int_t iSupMod = -1;
2525 Int_t iTower = -1;
2526 Int_t iIphi = -1;
2527 Int_t iIeta = -1;
2528 Int_t iphi = -1;
2529 Int_t ieta = -1;
2530 Double_t etai = -1.;
2531 Double_t phii = -1.;
2532
2533 Int_t nstat = 0 ;
2534 Float_t wtot = 0.;
2535 Double_t w = 0.;
2536 Double_t etaMean = 0.;
2537 Double_t phiMean = 0.;
3ae72bd8 2538
19391b8c 2539 //Loop on cells, calculate the cluster energy, in case a cut on cell energy is added
3ae72bd8 2540 // and to check if the cluster is between 2 SM in eta
2541 Int_t iSM0 = -1;
2542 Bool_t shared = kFALSE;
2543 Float_t energy = 0;
2544
2545 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
19391b8c 2546 {
3ae72bd8 2547 //Get from the absid the supermodule, tower and eta/phi numbers
2548 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
2549 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
2550
2551 //Check if there are cells of different SM
2552 if (iDigit == 0 ) iSM0 = iSupMod;
2553 else if(iSupMod!= iSM0) shared = kTRUE;
2554
2555 //Get the cell energy, if recalibration is on, apply factors
2556 fraction = cluster->GetCellAmplitudeFraction(iDigit);
2557 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
2558
2559 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
19391b8c 2560 {
3ae72bd8 2561 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
2562 }
2563
2564 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
2565
9ae170de 2566 if(eCell > eCellMin) energy += eCell;
3ae72bd8 2567
2568 }//cell loop
19391b8c 2569
2570 //Loop on cells, get weighted parameters
2571 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
2572 {
2573 //Get from the absid the supermodule, tower and eta/phi numbers
2574 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
2575 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
2576
2577 //Get the cell energy, if recalibration is on, apply factors
2578 fraction = cluster->GetCellAmplitudeFraction(iDigit);
2579 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
2580
3ae72bd8 2581 if(GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
2582 {
2583 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
2584 }
19391b8c 2585
2586 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
2587
3ae72bd8 2588 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
2589 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
2590 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
2591
9ae170de 2592 if(energy > 0 && eCell > eCellMin)
19391b8c 2593 {
2594 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
8edbd100 2595
2596 //correct weight, ONLY in simulation
9ae170de 2597 w *= (1 - fWSimu * w );
aa12888f 2598
19391b8c 2599 etai=(Double_t)ieta;
2600 phii=(Double_t)iphi;
2601
2602 if(w > 0.0)
2603 {
2604 wtot += w ;
2605 nstat++;
2606 //Shower shape
2607 sEta += w * etai * etai ;
2608 etaMean += w * etai ;
2609 sPhi += w * phii * phii ;
2610 phiMean += w * phii ;
2611 sEtaPhi += w * etai * phii ;
2612 }
2613 }
9ae170de 2614 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
19391b8c 2615
2616 }//cell loop
2617
2618 //Normalize to the weight
2619 if (wtot > 0)
2620 {
2621 etaMean /= wtot ;
2622 phiMean /= wtot ;
2623 }
2624 else
2625 AliError(Form("Wrong weight %f\n", wtot));
2626
2627 //Calculate dispersion
2628 for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
2629 {
2630 //Get from the absid the supermodule, tower and eta/phi numbers
2631 geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
2632 geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
2633
2634 //Get the cell energy, if recalibration is on, apply factors
2635 fraction = cluster->GetCellAmplitudeFraction(iDigit);
2636 if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
2637 if (GetCaloUtils()->GetEMCALRecoUtils()->IsRecalibrationOn())
2638 {
2639 recalFactor = GetCaloUtils()->GetEMCALRecoUtils()->GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
2640 }
3ae72bd8 2641
19391b8c 2642 eCell = cells->GetCellAmplitude(cluster->GetCellAbsId(iDigit))*fraction*recalFactor;
2643
3ae72bd8 2644 // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2
2645 // C Side impair SM, nSupMod%2=1; A side pair SM, nSupMod%2=0
2646 if(shared && iSupMod%2) ieta+=AliEMCALGeoParams::fgkEMCALCols;
2647
9ae170de 2648 if(energy > 0 && eCell > eCellMin)
19391b8c 2649 {
2650 w = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
2651
8edbd100 2652 //correct weight, ONLY in simulation
9ae170de 2653 w *= (1 - fWSimu * w );
8edbd100 2654
19391b8c 2655 etai=(Double_t)ieta;
2656 phii=(Double_t)iphi;
2657 if(w > 0.0)
2658 {
2659 disp += w *((etai-etaMean)*(etai-etaMean)+(phii-phiMean)*(phii-phiMean));
2660 dEta += w * (etai-etaMean)*(etai-etaMean) ;
2661 dPhi += w * (phii-phiMean)*(phii-phiMean) ;
2662 }
2663 }
9ae170de 2664 else if(energy == 0 || (eCellMin <0.01 && eCell == 0)) AliError(Form("Wrong energy %f and/or amplitude %f\n", eCell, energy));
19391b8c 2665 }// cell loop
2666
2667 //Normalize to the weigth and set shower shape parameters
2668 if (wtot > 0 && nstat > 1)
2669 {
2670 disp /= wtot ;
2671 dEta /= wtot ;
2672 dPhi /= wtot ;
2673 sEta /= wtot ;
2674 sPhi /= wtot ;
2675 sEtaPhi /= wtot ;
2676
2677 sEta -= etaMean * etaMean ;
2678 sPhi -= phiMean * phiMean ;
2679 sEtaPhi -= etaMean * phiMean ;
2680
2681 l0 = (0.5 * (sEta + sPhi) + TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
2682 l1 = (0.5 * (sEta + sPhi) - TMath::Sqrt( 0.25 * (sEta - sPhi) * (sEta - sPhi) + sEtaPhi * sEtaPhi ));
2683 }
2684 else
2685 {
2686 l0 = 0. ;
2687 l1 = 0. ;
2688 dEta = 0. ; dPhi = 0. ; disp = 0. ;
2689 sEta = 0. ; sPhi = 0. ; sEtaPhi = 0. ;
2690 }
2691
2692}
2693
992b14a7 2694