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