Belle II Software development
EffPlotsModule.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <tracking/modules/trackingPerformanceEvaluation/EffPlotsModule.h>
10
11#include <framework/datastore/RelationVector.h>
12
13#include <framework/geometry/BFieldManager.h>
14
15#include <framework/gearbox/Const.h>
16
17#include <tracking/dataobjects/MCParticleInfo.h>
18#include <tracking/dataobjects/RecoTrack.h>
19#include <tracking/dataobjects/V0ValidationVertex.h>
20
21#include <root/TObject.h>
22
23#include <vector>
24
25using namespace Belle2;
26
27//-----------------------------------------------------------------
28// Register the Module
29//-----------------------------------------------------------------
30
31REG_MODULE(EffPlots);
32
34 Module()
35{
36
37 setDescription("This module makes some plots related to V0 and saves them into a root file. For the efficiency plots: _noGeoAcc -> normalized to MCParticles; _withGeoAcc -> normalized to RecoTracks.");
38
39 addParam("outputFileName", m_rootFileName, "Name of output root file.",
40 std::string("EffPlots_output.root"));
41 addParam("V0sName", m_V0sName, "Name of V0 collection.", std::string("V0ValidationVertexs"));
42 addParam("MCParticlesName", m_MCParticlesName, "Name of MC Particle collection.", std::string(""));
43 addParam("TrackColName", m_TrackColName,
44 "Belle2::Track collection name (input). Note that the V0s use "
45 "pointers indices into these arrays, so all hell may break loose "
46 "if you change this.", std::string(""));
47 addParam("RecoTracksName", m_RecoTracksName, "Name of RecoTrack collection.", std::string("RecoTracks"));
48 addParam("MCRecoTracksName", m_MCRecoTracksName, "Name of MCRecoTrack collection.", std::string("MCRecoTracks"));
49
50 addParam("V0sType", m_V0sType, "Type of V0 to perform plots. Default is Lambda0, alternatively Ks", std::string("Lambda0"));
51 addParam("AllHistograms", m_allHistograms, "Create output for all histograms, not only efficiencies.", bool(false));
52 addParam("GeometricalAccettance", m_geometricalAccettance, "Create output for geometrical accettance.", bool(false));
53}
54
59
61{
63 StoreArray<V0ValidationVertex> v0ValidationVertices;
64 v0ValidationVertices.isRequired(m_V0sName);
65
67 trackFitResults.isRequired();
68
70 tracks.isRequired();
71
72 StoreArray<RecoTrack> recoTracks;
74
75 //create list of histograms to be saved in the rootfile
76 m_histoList = new TList;
77 m_histoList_MCParticles = new TList;
78 m_histoList_RecoTracks = new TList;
79 m_histoList_Tracks = new TList;
80 m_histoList_Efficiencies = new TList;
81 m_histoList_GA = new TList;
82 m_histoList_check = new TList;
83
84 //set the ROOT File
85 m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
86
87 Double_t bins_pt_new[25 + 1] = {0., 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.6, 2.8, 3., 3.2, 3.4};
88
89 Double_t bins_theta[10 + 1];
90 Double_t width_theta = TMath::Pi() / 10;
91 for (unsigned int bin = 0; bin < 10 + 1; bin++)
92 bins_theta[bin] = bin * width_theta;
93
94 Double_t bins_phi[14 + 1];
95 Double_t width_phi = 2 * TMath::Pi() / 14;
96 for (unsigned int bin = 0; bin < 14 + 1; bin++)
97 bins_phi[bin] = - TMath::Pi() + bin * width_phi;
98
99 Double_t bins_costheta[20 + 1];
100 Double_t width_cosTheta = 2. / 20;
101 for (unsigned int bin1 = 0; bin1 < 20 + 1; bin1++)
102 bins_costheta[bin1] = - 1 + bin1 * width_cosTheta;
103
104 //create histograms
105
106 //------------------------------------------------------------------//
107 // MC PARTICLES //
108 //------------------------------------------------------------------//
109
110 // MC dau0
111 m_h1_MC_dau0_d0 = createHistogram1D("h1MCdau0D0", "d0 dau_{0}", 100, -10, 10, "d0_{dau_{0}}", m_histoList_MCParticles);
112 m_h1_MC_dau0_z0 = createHistogram1D("h1MCdau0Z0", "z0 dau_{0}", 100, -10, 10, "z0_{dau_{0}}", m_histoList_MCParticles);
113 m_h1_MC_dau0_RMother = createHistogram1D("h1MCdau0RMother", "dau_{0}, R mother", 200, 0, 20, "R mother", m_histoList_MCParticles);
114 m_h3_MC_dau0 = createHistogram3D("h3MCdau0", "entry per MC dau_{0}",
115 25, bins_pt_new, "p_{t} (GeV/c)",
116 10, bins_theta, "#theta",
117 14, bins_phi, "#phi", m_histoList_MCParticles);
118 m_h1_MC_dau0_pt = createHistogram1D("h1MCdau0Pt", "dau_{0}, p_{T}", 25, bins_pt_new, "p_{T} (GeV/c)", m_histoList_MCParticles);
119 m_h1_MC_dau0_pz = createHistogram1D("h1MCdau0Pz", "dau_{0}, p_{z}", 25, bins_pt_new, "p_{z} (GeV/c)", m_histoList_MCParticles);
120 m_h1_MC_dau0_p = createHistogram1D("h1MCdau0P", "dau_{0}, p", 25, bins_pt_new, "p (GeV/c)", m_histoList_MCParticles);
121 m_h1_MC_dau0_theta = createHistogram1D("h1MCdau0Theta", "dau_{0}, #theta", 10, bins_theta, "#theta",
123 m_h1_MC_dau0_costheta = createHistogram1D("h1MCdau0CosTheta", "dau_{0}, cos#theta", 20, bins_costheta, "cos#theta",
125 m_h1_MC_dau0_Mother_cosAngle = createHistogram1D("h1MCdau0MothercosAngle", "cos#theta_{mother,dau_{0}}", 20,
126 bins_costheta, "cos#theta", m_histoList_MCParticles);
127 m_h1_MC_dau0_phi = createHistogram1D("h1MCdau0Phi", "dau_{0}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
128 m_h1_MC_dau0_phi_BW = createHistogram1D("h1MCdau0PhiBW", "dau_{0}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
129 m_h1_MC_dau0_phi_barrel = createHistogram1D("h1MCdau0Phibarrel", "dau_{0}, #phi", 14, bins_phi, "#phi",
131 m_h1_MC_dau0_phi_FW = createHistogram1D("h1MCdau0PhiFW", "dau_{0}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
132
133 m_h1_MC_dau0_phiMother_total = createHistogram1D("h1MCdau0phiMothertotal", "dau_{0}, #phi_{mother}", 14, bins_phi,
134 "#phi_{mother}", m_histoList_MCParticles);
135 m_h1_MC_dau0_phiMother_BW = createHistogram1D("h1MCdau0phiMotherBW", "dau_{0}, #phi_{mother}, BW", 14, bins_phi,
136 "#phi_{mother} BW", m_histoList_MCParticles);
137 m_h1_MC_dau0_phiMother_barrel = createHistogram1D("h1MCdau0phiMotherbarrel", "dau_{0}, #phi_{mother}, barrel", 14, bins_phi,
138 "#phi_{mother} barrel", m_histoList_MCParticles);
139 m_h1_MC_dau0_phiMother_FW = createHistogram1D("h1MCdau0phiMotherFW", "dau_{0}, #phi_{mother}, FW", 14, bins_phi,
140 "#phi_{mother} FW", m_histoList_MCParticles);
141
142 m_h1_MC_dau0_thetaMother = createHistogram1D("h1MCdau0ThetaMother", "dau_{0}, #theta_{mother}", 10, bins_theta,
143 "#theta_{mother}", m_histoList_MCParticles);
144 m_h1_MC_dau0_ptMother = createHistogram1D("h1MCdau0PtMother", "dau_{0}, p_{T,mother}", 25, bins_pt_new, "p_{T,mother} (GeV/c)",
146
147 m_h2_MC_dau0_2D = createHistogram2D("h2MCdau0", "entry per MC dau_{0}",
148 10, bins_theta, "#theta",
149 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
150 m_h2_MC_dau0_2D_BP = createHistogram2D("h2MCdau0BP", "entry per MC dau_{0}, beam pipe",
151 10, bins_theta, "#theta",
152 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
153
154 m_h2_MC_dau0_2DMother = createHistogram2D("h2MCdau0Mother", "entry mother per MC dau_{0}",
155 10, bins_theta, "#theta_{mother}",
156 25, bins_pt_new, "p_{T,mother} (GeV/c)", m_histoList_MCParticles);
157
158 m_h2_MC_dau0_pVScostheta = createHistogram2D("h2MCdau0pVScostheta", "p_{CM} VS cos(#theta)_{CM}, dau_{0}",
159 20, -1., 1.,
160 "cos(#theta)_{CM}",
161 50, 0., 5.,
162 "p_{CM} [GeV]", m_histoList_MCParticles);
163
164 m_h1_MC_dau0_PDG = createHistogram1D("h1MCdau0PDG", "PDG code, dau_{0}", 4600, -2300, 2300, "PDG", m_histoList_check);
165
166 //MC dau1
167 m_h1_MC_dau1_d0 = createHistogram1D("h1MCdau1D0", "d0 dau_{1}", 100, -10, 10, "d0_{dau_{1}}", m_histoList_MCParticles);
168 m_h1_MC_dau1_z0 = createHistogram1D("h1MCdau1Z0", "z0 dau_{1}", 100, -10, 10, "z0_{dau_{1}}", m_histoList_MCParticles);
169 m_h1_MC_dau1_RMother = createHistogram1D("h1MCdau1RMother", "dau_{1}, R mother", 200, 0, 20, "R mother", m_histoList_MCParticles);
170 m_h3_MC_dau1 = createHistogram3D("h3MCdau1", "entry per MC dau_{1}",
171 25, bins_pt_new, "p_{t} (GeV/c)",
172 10, bins_theta, "#theta",
173 14, bins_phi, "#phi", m_histoList_MCParticles);
174 m_h1_MC_dau1_pt = createHistogram1D("h1MCdau1Pt", "dau_{1}, p_{T}", 25, bins_pt_new, "p_{T} (GeV/c)", m_histoList_MCParticles);
175 m_h1_MC_dau1_pz = createHistogram1D("h1MCdau1Pz", "dau_{1}, p_{z}", 25, bins_pt_new, "p_{z} (GeV/c)", m_histoList_MCParticles);
176 m_h1_MC_dau1_p = createHistogram1D("h1MCdau1P", "dau_{1}, ", 25, bins_pt_new, "p (GeV/c)", m_histoList_MCParticles);
177 m_h1_MC_dau1_theta = createHistogram1D("h1MCdau1Theta", "dau_{1}, #theta", 10, bins_theta, "#theta",
179 m_h1_MC_dau1_costheta = createHistogram1D("h1MCdau1CosTheta", "dau_{1}, cos#theta", 20, bins_costheta, "cos#theta",
181 m_h1_MC_dau1_phi = createHistogram1D("h1MCdau1Phi", "dau_{1}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
182 m_h1_MC_dau1_phi_BW = createHistogram1D("h1MCdau1PhiBW", "dau_{1}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
183 m_h1_MC_dau1_phi_barrel = createHistogram1D("h1MCdau1Phibarrel", "dau_{1}, #phi", 14, bins_phi, "#phi",
185 m_h1_MC_dau1_phi_FW = createHistogram1D("h1MCdau1PhiFW", "dau_{1}, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
186
187 m_h1_MC_dau1_Mother_cosAngle = createHistogram1D("h1MCdau1MothercosAngle", "cos#theta_{mother,p}", 20, bins_costheta,
188 "cos#theta", m_histoList_MCParticles);
189
190 m_h1_MC_dau1_phiMother_total = createHistogram1D("h1MCdau1phiMothertotal", "dau_{1}, #phi_{mother}", 14, bins_phi,
191 "#phi_{mother}", m_histoList_MCParticles);
192 m_h1_MC_dau1_phiMother_BW = createHistogram1D("h1MCdau1phiMotherBW", "dau_{1}, #phi_{mother}, BW", 14, bins_phi,
193 "#phi_{mother} BW", m_histoList_MCParticles);
194 m_h1_MC_dau1_phiMother_barrel = createHistogram1D("h1MCdau1phiMotherbarrel", "dau_{1}, #phi_{mother}, barrel", 14, bins_phi,
195 "#phi_{mother} barrel", m_histoList_MCParticles);
196 m_h1_MC_dau1_phiMother_FW = createHistogram1D("h1MCdau1phiMotherFW", "dau_{1}, #phi_{mother}, FW", 14, bins_phi,
197 "#phi_{mother} FW", m_histoList_MCParticles);
198
199 m_h1_MC_dau1_thetaMother = createHistogram1D("h1MCdau1ThetaMother", "dau_{1}, #theta_{mother}", 10, bins_theta,
200 "#theta_{mother}", m_histoList_MCParticles);
201 m_h1_MC_dau1_ptMother = createHistogram1D("h1MCdau1PtMother", "dau_{1}, p_{T,mother}", 25, bins_pt_new, "p_{T,mother} (GeV/c)",
203
204 m_h2_MC_dau1_2D = createHistogram2D("h2MCdau1", "entry per MC dau_{1}",
205 10, bins_theta, "#theta",
206 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
207
208 m_h2_MC_dau1_2D_BP = createHistogram2D("h2MCdau1BP", "entry per MC dau_{1}, beam pipe",
209 10, bins_theta, "#theta",
210 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
211
212 m_h2_MC_dau1_2DMother = createHistogram2D("h2MCdau1Mother", "entry mother per MC dau_{1}",
213 10, bins_theta, "#theta_{mother}",
214 25, bins_pt_new, "p_{T,mother} (GeV/c)", m_histoList_MCParticles);
215
216 m_h2_MC_dau1_pVScostheta = createHistogram2D("h2MCdau1pVScostheta", "p_{CM} VS cos(#theta)_{CM}, dau_{1}",
217 20, -1., 1.,
218 "cos(#theta)_{CM}",
219 50, 0., 5.,
220 "p_{CM} [GeV]", m_histoList_MCParticles);
221
222 m_h1_MC_dau1_PDG = createHistogram1D("h1MCdau1PDG", "PDG code, dau_{1}", 4600, -2300, 2300, "PDG", m_histoList_check);
223
224 //MC mother
225 m_h1_MC_Mother_RMother = createHistogram1D("h1MCMotherRMother", "mother, R mother", 200, 0, 20, "R mother",
227 m_h3_MC_Mother = createHistogram3D("h3MCMother", "entry per MCmother",
228 25, bins_pt_new, "p_{t} (GeV/c)",
229 10, bins_theta, "#theta",
230 14, bins_phi, "#phi", m_histoList_MCParticles);
231 m_h1_MC_Mother_pt = createHistogram1D("h1MCMotherPt", "mother, p_{T}", 25, bins_pt_new, "p_{T} (GeV/c)",
233 m_h1_MC_Mother_pz = createHistogram1D("h1MCMotherPz", "mother, p_{z}", 25, bins_pt_new, "p_{z} (GeV/c)",
235 m_h1_MC_Mother_p = createHistogram1D("h1MCMotherP", "mother, p", 25, bins_pt_new, "p (GeV/c)", m_histoList_MCParticles);
236 m_h1_MC_Mother_theta = createHistogram1D("h1MCMotherTheta", "mother, #theta", 10, bins_theta, "#theta",
238 m_h1_MC_Mother_costheta = createHistogram1D("h1MCMotherCosTheta", "mother, cos#theta", 20, bins_costheta, "cos#theta",
240 m_h1_MC_Mother_phi = createHistogram1D("h1MCMotherPhi", "mother, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
241 m_h1_MC_Mother_phi_BW = createHistogram1D("h1MCMotherPhiBW", "mother, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
242 m_h1_MC_Mother_phi_barrel = createHistogram1D("h1MCMotherPhibarrel", "mother, #phi", 14, bins_phi, "#phi",
244 m_h1_MC_Mother_phi_FW = createHistogram1D("h1MCMotherPhiFW", "mother, #phi", 14, bins_phi, "#phi", m_histoList_MCParticles);
245
246 m_h2_MC_Mother_2D = createHistogram2D("h2MCMother", "entry per MCmother",
247 10, bins_theta, "#theta",
248 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
249
250 m_h2_MC_Mother_2D_BP = createHistogram2D("h2MCMotherBP", "entry per MCmother, beam pipe",
251 10, bins_theta, "#theta",
252 25, bins_pt_new, "p_{t} (GeV/c)", m_histoList_MCParticles);
253
254 m_h2_MC_Mother_pVScostheta = createHistogram2D("h2MCMotherpVScostheta", "p_{CM} VS cos(#theta)_{CM}, mother",
255 20, -1., 1.,
256 "cos(#theta)_{CM}",
257 50, 0., 5.,
258 "p_{CM} [GeV]", m_histoList_MCParticles);
259
260 m_h1_MC_Mother_PDG = createHistogram1D("h1MCMotherPDG", "PDG code, mother", 6400, -3200, 3200, "PDG", m_histoList_check);
261
262
263 //------------------------------------------------------------------//
264 // TRACKS //
265 //------------------------------------------------------------------//
266
267 //track dau0
268 m_h1_track_dau0_d0 = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0D0", "d0 dau_{0}", m_h1_MC_dau0_d0, m_histoList_Tracks));
269 m_h1_track_dau0_z0 = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Z0", "z0 dau_{0}", m_h1_MC_dau0_z0, m_histoList_Tracks));
270 m_h1_track_dau0_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0RMother", "dau_{0}, R mother", m_h1_MC_dau0_RMother,
272 m_h3_track_dau0 = dynamic_cast<TH3F*>(duplicateHistogram("h3trackdau0", "entry per track dau_{0}", m_h3_MC_dau0,
274 m_h1_track_dau0_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Pt", "p_{T} dau_{0}", m_h1_MC_dau0_pt, m_histoList_Tracks));
275 m_h1_track_dau0_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Pz", "p_{z} dau_{0}", m_h1_MC_dau0_pz, m_histoList_Tracks));
276 m_h1_track_dau0_p = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0P", "p dau_{0}", m_h1_MC_dau0_p, m_histoList_Tracks));
277 m_h1_track_dau0_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Theta", "#theta dau_{0}", m_h1_MC_dau0_theta,
279 m_h1_track_dau0_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0CosTheta", "cos#theta dau_{0}", m_h1_MC_dau0_costheta,
281 m_h1_track_dau0_Mother_cosAngle = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0MothercosAngle", "#alpha_{mother,dau_{0}}",
283 m_h1_track_dau0_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Phi", "#phi dau_{0}", m_h1_MC_dau0_phi,
285 m_h1_track_dau0_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiBW", "#phi dau_{0}", m_h1_MC_dau0_phi_BW,
287 m_h1_track_dau0_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0Phibarrel", "#phi dau_{0}", m_h1_MC_dau0_phi_barrel,
289 m_h1_track_dau0_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiFW", "#phi dau_{0}", m_h1_MC_dau0_phi_FW,
291
292 m_h1_track_dau0_phiMother_total = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiMothertotal", "dau_{0}, #phi_{mother}",
294 m_h1_track_dau0_phiMother_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiMotherBW", "dau_{0}, #phi_{mother}, BW",
296 m_h1_track_dau0_phiMother_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiMotherbarrel",
297 "dau_{0}, #phi_{mother}, barrel",
299 m_h1_track_dau0_phiMother_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PhiMotherFW", "dau_{0}, #phi_{mother}, FW",
301
302 m_h1_track_dau0_thetaMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0ThetaMother", "#theta_{mother} dau_{0}",
304 m_h1_track_dau0_ptMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau0PtMother", "p_{T,mother} dau_{0}",
307
308 m_h2_track_dau0_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau02D", "p_{T} VS #theta, dau_{0}", m_h2_MC_dau0_2D,
310 m_h2_track_dau0_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau02dBP", "p_{T} VS #theta, dau_{0} BP", m_h2_MC_dau0_2D_BP,
312 m_h2_track_dau0_2DMother = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau02DMother", "p_{T,mother} VS #theta_{mother}, dau_{0}",
314
315 m_h2_track_dau0_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau0pVScostheta", "p VS cos(#theta), dau_{0}",
317
318
319 //track dau1
320 m_h1_track_dau1_d0 = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1D0", "d0 dau_{1}", m_h1_MC_dau1_d0, m_histoList_Tracks));
321 m_h1_track_dau1_z0 = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Z0", "z0 dau_{1}", m_h1_MC_dau1_z0, m_histoList_Tracks));
322 m_h1_track_dau1_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1RMother", "p, R mother", m_h1_MC_dau1_RMother,
324 m_h3_track_dau1 = dynamic_cast<TH3F*>(duplicateHistogram("h3trackdau1", "entry per track dau_{1}", m_h3_MC_dau1,
326 m_h1_track_dau1_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Pt", "p_{T} dau_{1}", m_h1_MC_dau1_pt, m_histoList_Tracks));
327 m_h1_track_dau1_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Pz", "p_{z} dau_{1}", m_h1_MC_dau1_pz, m_histoList_Tracks));
328 m_h1_track_dau1_p = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1P", "p dau_{1}", m_h1_MC_dau1_p, m_histoList_Tracks));
329 m_h1_track_dau1_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Theta", "#theta dau_{1}", m_h1_MC_dau1_theta,
331 m_h1_track_dau1_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1CosTheta", "cos#theta dau_{1}", m_h1_MC_dau1_costheta,
333 m_h1_track_dau1_Mother_cosAngle = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1MothercosAngle", "#alpha_{mother,p}",
335 m_h1_track_dau1_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Phi", "#phi dau_{1}", m_h1_MC_dau1_phi,
337 m_h1_track_dau1_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiBW", "#phi dau_{1}", m_h1_MC_dau1_phi_BW,
339 m_h1_track_dau1_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1Phibarrel", "#phi dau_{1}", m_h1_MC_dau1_phi_barrel,
341 m_h1_track_dau1_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiFW", "#phi dau_{1}", m_h1_MC_dau1_phi_FW,
343
344 m_h1_track_dau1_phiMother_total = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiMothertotal", "dau_{1}, #phi_{mother}",
346 m_h1_track_dau1_phiMother_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiMotherBW", "dau_{1}, #phi_{mother}, BW",
348 m_h1_track_dau1_phiMother_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiMotherbarrel",
349 "dau_{1}, #phi_{mother}, barrel",
351 m_h1_track_dau1_phiMother_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PhiMotherFW", "dau_{1}, #phi_{mother}, FW",
353
354 m_h1_track_dau1_thetaMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1ThetaMother", "#theta_{mother} dau_{1}",
356 m_h1_track_dau1_ptMother = dynamic_cast<TH1F*>(duplicateHistogram("h1trackdau1PtMother", "p_{T,mother} dau_{1}",
359
360 m_h2_track_dau1_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau12D", "p_{T} VS #theta, dau_{1}", m_h2_MC_dau1_2D,
362 m_h2_track_dau1_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau12dBP", "p_{T} VS #theta, p BDAU_{1}", m_h2_MC_dau1_2D_BP,
364 m_h2_track_dau1_2DMother = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau12DMother", "p_{T,mother} VS #theta_{mother}, dau_{1}",
366
367 m_h2_track_dau1_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2trackdau1pVScostheta", "p VS cos(#theta), dau_{1}",
369
370 //V0
371 m_h1_V0_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1V0RMother", "mother, R mother", m_h1_MC_Mother_RMother,
373 m_h3_V0 = dynamic_cast<TH3F*>(duplicateHistogram("h3V0", "entry per V0", m_h3_MC_Mother, m_histoList_Tracks));
374 m_h1_V0_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1V0Pt", "p_{T} mother", m_h1_MC_Mother_pt, m_histoList_Tracks));
375 m_h1_V0_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1V0Pz", "p_{z} mother", m_h1_MC_Mother_pz, m_histoList_Tracks));
376 m_h1_V0_p = dynamic_cast<TH1F*>(duplicateHistogram("h1V0P", "p mother", m_h1_MC_Mother_p, m_histoList_Tracks));
377 m_h1_V0_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1V0Theta", "#theta mother", m_h1_MC_Mother_theta, m_histoList_Tracks));
378 m_h1_V0_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1V0CosTheta", "cos#theta mother", m_h1_MC_Mother_costheta,
380 m_h1_V0_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1V0Phi", "#phi mother", m_h1_MC_Mother_phi, m_histoList_Tracks));
381 m_h1_V0_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1V0PhiBW", "#phi mother", m_h1_MC_Mother_phi_BW, m_histoList_Tracks));
382 m_h1_V0_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1V0Phibarrel", "#phi mother", m_h1_MC_Mother_phi_barrel,
384 m_h1_V0_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1V0PhiFW", "#phi mother", m_h1_MC_Mother_phi_FW, m_histoList_Tracks));
385
386 m_h2_V0_Mother_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2V0Mother2D", "p_{T} VS #theta, mother", m_h2_MC_Mother_2D,
388 m_h2_V0_Mother_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2V0Mother2dBP", "p_{T} VS #theta, mother BP", m_h2_MC_Mother_2D_BP,
390
391 m_h2_V0_Mother_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2V0MotherpVScostheta", "p VS cos(#theta), mother",
393
394
395 //------------------------------------------------------------------//
396 // RECO TRACKS //
397 //------------------------------------------------------------------//
398
399 //RecoTrack dau0
400 m_h1_RecoTrack_dau0_d0 = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0D0", "d0 dau_{0}", m_h1_MC_dau0_d0,
402 m_h1_RecoTrack_dau0_z0 = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Z0", "z0 dau_{0}", m_h1_MC_dau0_z0,
404 m_h1_RecoTrack_dau0_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0RMother", "dau_{0}, R mother",
407 m_h3_RecoTrack_dau0 = dynamic_cast<TH3F*>(duplicateHistogram("h3RecoTrackdau0", "entry per RecoTrack dau_{0}", m_h3_MC_dau0,
409 m_h1_RecoTrack_dau0_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Pt", "p_{T} dau_{0}", m_h1_MC_dau0_pt,
411 m_h1_RecoTrack_dau0_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Pz", "p_{z} dau_{0}", m_h1_MC_dau0_pz,
413 m_h1_RecoTrack_dau0_p = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0P", "p dau_{0}", m_h1_MC_dau0_p,
415 m_h1_RecoTrack_dau0_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Theta", "#theta dau_{0}", m_h1_MC_dau0_theta,
417 m_h1_RecoTrack_dau0_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0CosTheta", "cos#theta dau_{0}",
420 m_h1_RecoTrack_dau0_Mother_cosAngle = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0MothercosAngle",
421 "#alpha_{mother,dau_{0}}",
423 m_h1_RecoTrack_dau0_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Phi", "#phi dau_{0}", m_h1_MC_dau0_phi,
425 m_h1_RecoTrack_dau0_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiBW", "#phi dau_{0}", m_h1_MC_dau0_phi_BW,
427 m_h1_RecoTrack_dau0_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0Phibarrel", "#phi dau_{0}",
430 m_h1_RecoTrack_dau0_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiFW", "#phi dau_{0}", m_h1_MC_dau0_phi_FW,
432
433 m_h1_RecoTrack_dau0_phiMother_total = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiMothertotal",
434 "dau_{0}, #phi_{mother}",
436 m_h1_RecoTrack_dau0_phiMother_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiMotherBW",
437 "dau_{0}, #phi_{mother}, BW",
439 m_h1_RecoTrack_dau0_phiMother_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiMotherbarrel",
440 "dau_{0}, #phi_{mother}, barrel",
442 m_h1_RecoTrack_dau0_phiMother_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PhiMotherFW",
443 "dau_{0}, #phi_{mother}, FW",
445
446 m_h1_RecoTrack_dau0_thetaMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0ThetaMother", "#theta_{mother} dau_{0}",
448 m_h1_RecoTrack_dau0_ptMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau0PtMother", "p_{T,mother} dau_{0}",
451
452 m_h2_RecoTrack_dau0_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau02D", "p_{T} VS #theta, dau_{0}", m_h2_MC_dau0_2D,
454 m_h2_RecoTrack_dau0_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau02dBP", "p_{T} VS #theta, dau_{0} BP",
457 m_h2_RecoTrack_dau0_2DMother = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau02DMother",
458 "p_{T,mother} VS #theta_{mother}, dau_{0}",
460
461 m_h2_RecoTrack_dau0_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau0pVscostheta", "p VS cos(#theta), dau_{0}",
463
464 //RecoTrack dau1
465 m_h1_RecoTrack_dau1_d0 = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1D0", "d0 dau_{1}", m_h1_MC_dau1_d0,
467 m_h1_RecoTrack_dau1_z0 = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Z0", "z0 dau_{1}", m_h1_MC_dau1_z0,
469 m_h1_RecoTrack_dau1_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1RMother", "dau_{1}, R mother",
472 m_h3_RecoTrack_dau1 = dynamic_cast<TH3F*>(duplicateHistogram("h3RecoTrackdau1", "entry per RecoTrack dau_{1}", m_h3_MC_dau1,
474 m_h1_RecoTrack_dau1_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Pt", "p_{T} dau_{1}", m_h1_MC_dau1_pt,
476 m_h1_RecoTrack_dau1_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Pz", "p_{z} dau_{1}", m_h1_MC_dau1_pz,
478 m_h1_RecoTrack_dau1_p = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1P", "p dau_{1}", m_h1_MC_dau1_p,
480 m_h1_RecoTrack_dau1_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Theta", "#theta dau_{1}", m_h1_MC_dau1_theta,
482 m_h1_RecoTrack_dau1_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1CosTheta", "cos#theta dau_{1}",
485 m_h1_RecoTrack_dau1_Mother_cosAngle = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1MothercosAngle", "#alpha_{mother,p}",
487 m_h1_RecoTrack_dau1_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Phi", "#phi dau_{1}", m_h1_MC_dau1_phi,
489 m_h1_RecoTrack_dau1_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiBW", "#phi dau_{1}", m_h1_MC_dau1_phi_BW,
491 m_h1_RecoTrack_dau1_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1Phibarrel", "#phi dau_{1}",
494 m_h1_RecoTrack_dau1_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiFW", "#phi dau_{1}", m_h1_MC_dau1_phi_FW,
496
497 m_h1_RecoTrack_dau1_phiMother_total = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiMothertotal",
498 "dau_{1}, #phi_{mother}",
500 m_h1_RecoTrack_dau1_phiMother_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiMotherBW",
501 "dau_{1}, #phi_{mother}, BW",
503 m_h1_RecoTrack_dau1_phiMother_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiMotherbarrel",
504 "dau_{1}, #phi_{mother}, barrel",
506 m_h1_RecoTrack_dau1_phiMother_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PhiMotherFW",
507 "dau_{1}, #phi_{mother}, FW",
509
510 m_h1_RecoTrack_dau1_thetaMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1ThetaMother", "#theta_{mother} dau_{1}",
512 m_h1_RecoTrack_dau1_ptMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrackdau1PtMother", "p_{T,mother} dau_{1}",
515
516 m_h2_RecoTrack_dau1_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau12D", "p_{T} VS #theta, dau_{1}", m_h2_MC_dau1_2D,
518 m_h2_RecoTrack_dau1_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau12dBP", "p_{T} VS #theta, p BP",
521 m_h2_RecoTrack_dau1_2DMother = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau12DMother",
522 "p_{T,mother} VS #theta_{mother}, dau_{1}",
524
525 m_h2_RecoTrack_dau1_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackdau1pVscostheta", "p VS cos(#theta), dau_{1}",
527
528 //RecoTrack Mother
529 m_h1_RecoTrack_Mother_RMother = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherRMother", "mother, R mother",
532 m_h3_RecoTrack_Mother = dynamic_cast<TH3F*>(duplicateHistogram("h3RecoTrack_Mother", "entry per RecoTrack_Mother", m_h3_MC_Mother,
534 m_h1_RecoTrack_Mother_pt = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPt", "p_{T} mother", m_h1_MC_dau0_pt,
536 m_h1_RecoTrack_Mother_pz = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPz", "p_{z} mother", m_h1_MC_dau0_pz,
538 m_h1_RecoTrack_Mother_p = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherP", "p mother", m_h1_MC_dau0_p,
540 m_h1_RecoTrack_Mother_theta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherTheta", "#theta mother", m_h1_MC_dau0_theta,
542 m_h1_RecoTrack_Mother_costheta = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherCosTheta", "cos#theta mother",
545 m_h1_RecoTrack_Mother_phi = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPhi", "#phi mother", m_h1_MC_dau0_phi,
547 m_h1_RecoTrack_Mother_phi_BW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPhiBW", "#phi mother", m_h1_MC_dau0_phi_BW,
549 m_h1_RecoTrack_Mother_phi_barrel = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPhibarrel", "#phi mother",
552 m_h1_RecoTrack_Mother_phi_FW = dynamic_cast<TH1F*>(duplicateHistogram("h1RecoTrack_MotherPhiFW", "#phi mother", m_h1_MC_dau0_phi_FW,
554
555 m_h2_RecoTrack_Mother_2D = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrack_Mother2D", "p_{T} VS #theta, mother",
558 m_h2_RecoTrack_Mother_2D_BP = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrack_Mother2dBP", "p_{T} VS #theta, mother BP",
560
561 m_h2_RecoTrack_Mother_pVScostheta = dynamic_cast<TH2F*>(duplicateHistogram("h2RecoTrackMotherpVscostheta",
562 "p VS cos(#theta), mother",
564
565}
566
568{
569
570}
571
573{
574
575 ROOT::Math::XYZVector magField = BFieldManager::getField(0, 0, 0) / Unit::T;
576
577 B2DEBUG(29, "+++++ 1. loop on MCParticles");
578 for (const MCParticle& mcParticle : m_MCParticles) {
579
580 //------------------------------------------------------------------//
581 // MC PARTICLES //
582 //------------------------------------------------------------------//
583
584 if (m_V0sType == "Lambda0") {
585 if (! isLambda0(mcParticle))
586 continue;
587
588 std::vector< MCParticle* > MCPart_dau = mcParticle.getDaughters();
589
590 if (abs(MCPart_dau[0]->getPDG()) == Const::pion.getPDGCode() && abs(MCPart_dau[1]->getPDG()) == Const::proton.getPDGCode()) {
591 m_MCDaughter0 = MCPart_dau[0];
592 m_MCDaughter1 = MCPart_dau[1];
593 } else if (abs(MCPart_dau[0]->getPDG()) == Const::proton.getPDGCode() && abs(MCPart_dau[1]->getPDG()) == Const::pion.getPDGCode()) {
594 m_MCDaughter0 = MCPart_dau[1];
595 m_MCDaughter1 = MCPart_dau[0];
596 } else B2INFO("Lambda daughters != pi & p");
597 }
598
599 else if (m_V0sType == "Ks") {
600 if (! isK_Short(mcParticle))
601 continue;
602
603 std::vector< MCParticle* > MCPart_dau = mcParticle.getDaughters();
604
605 if (MCPart_dau[0]->getPDG() == Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() == -Const::pion.getPDGCode()) {
606 m_MCDaughter0 = MCPart_dau[0];
607 m_MCDaughter1 = MCPart_dau[1];
608 } else if (MCPart_dau[0]->getPDG() == -Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() == Const::pion.getPDGCode()) {
609 m_MCDaughter0 = MCPart_dau[1];
610 m_MCDaughter1 = MCPart_dau[0];
611 } else B2INFO("Ks daughters != pi+ & pi-");
612 }
613
614 MCParticleInfo mcParticleInfo(mcParticle, magField);
615 MCParticleInfo mcParticleInfo_dau0(*m_MCDaughter0, magField);
616 MCParticleInfo mcParticleInfo_dau1(*m_MCDaughter1, magField);
617
618 const ROOT::Math::XYZVector& MC_vtx = mcParticle.getDecayVertex();
619
620 float MC_transDist = sqrt(MC_vtx.X() * MC_vtx.X() + MC_vtx.Y() * MC_vtx.Y());
621 float MC_pt = mcParticle.getMomentum().Rho();
622 float MC_p = mcParticle.getMomentum().R();
623 float MC_phi = mcParticle.getMomentum().Phi();
624 float MC_theta = mcParticle.getMomentum().Theta();
625 float MC_costheta = cos(mcParticle.getMomentum().Theta());
626
627 m_h1_MC_dau0_d0->Fill(mcParticleInfo_dau0.getD0());
628 m_h1_MC_dau0_z0->Fill(mcParticleInfo_dau0.getZ0());
629 m_h1_MC_dau0_RMother->Fill(MC_transDist);
630 m_h3_MC_dau0->Fill(m_MCDaughter0->getMomentum().Rho(), m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Phi());
631 m_h1_MC_dau0_pt->Fill(m_MCDaughter0->getMomentum().Rho());
632 m_h1_MC_dau0_pz->Fill(m_MCDaughter0->getMomentum().z());
633 m_h1_MC_dau0_p->Fill(m_MCDaughter0->getMomentum().R());
634 m_h1_MC_dau0_phi->Fill(m_MCDaughter0->getMomentum().Phi());
635 m_h1_MC_dau0_theta->Fill(m_MCDaughter0->getMomentum().Theta());
636 m_h1_MC_dau0_costheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()));
637 m_h1_MC_dau0_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter0->getMomentum()) / mcParticle.getMomentum().R() /
638 m_MCDaughter0->getMomentum().R());
639
640 m_h1_MC_dau0_thetaMother->Fill(MC_theta);
641 m_h1_MC_dau0_ptMother->Fill(MC_pt);
642
643 m_h1_MC_dau0_phiMother_total->Fill(MC_phi);
644 m_h2_MC_dau0_2D->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
645 m_h2_MC_dau0_2DMother->Fill(MC_theta, MC_pt);
646 m_h2_MC_dau0_pVScostheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()), m_MCDaughter0->getMomentum().R());
647 m_h1_MC_dau0_PDG->Fill(m_MCDaughter0->getPDG());
648
649 m_h1_MC_dau1_d0->Fill(mcParticleInfo_dau1.getD0());
650 m_h1_MC_dau1_z0->Fill(mcParticleInfo_dau1.getZ0());
651 m_h1_MC_dau1_RMother->Fill(MC_transDist);
652 m_h3_MC_dau1->Fill(m_MCDaughter1->getMomentum().Rho(), m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Phi());
653 m_h1_MC_dau1_pt->Fill(m_MCDaughter1->getMomentum().Rho());
654 m_h1_MC_dau1_pz->Fill(m_MCDaughter1->getMomentum().z());
655 m_h1_MC_dau1_p->Fill(m_MCDaughter1->getMomentum().R());
656 m_h1_MC_dau1_phi->Fill(m_MCDaughter1->getMomentum().Phi());
657 m_h1_MC_dau1_theta->Fill(m_MCDaughter1->getMomentum().Theta());
658 m_h1_MC_dau1_costheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()));
659 m_h1_MC_dau1_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter1->getMomentum()) / mcParticle.getMomentum().R() /
660 m_MCDaughter1->getMomentum().R());
661
662 m_h1_MC_dau1_thetaMother->Fill(MC_theta);
663 m_h1_MC_dau1_ptMother->Fill(MC_pt);
664
665 m_h1_MC_dau1_phiMother_total->Fill(MC_phi);
666 m_h2_MC_dau1_2D->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
667 m_h2_MC_dau1_2DMother->Fill(MC_theta, MC_pt);
668 m_h2_MC_dau1_pVScostheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()), m_MCDaughter1->getMomentum().R());
669 m_h1_MC_dau1_PDG->Fill(m_MCDaughter1->getPDG());
670
671 m_h1_MC_Mother_RMother->Fill(MC_transDist);
672 m_h3_MC_Mother->Fill(MC_pt, MC_theta, MC_phi);
673 m_h1_MC_Mother_pt->Fill(MC_pt);
674 m_h1_MC_Mother_pz->Fill(mcParticle.getMomentum().z());
675 m_h1_MC_Mother_p->Fill(mcParticle.getMomentum().R());
676 m_h1_MC_Mother_phi->Fill(MC_phi);
677 m_h1_MC_Mother_theta->Fill(MC_theta);
678 m_h1_MC_Mother_costheta->Fill(cos(mcParticle.getMomentum().Theta()));
679 m_h2_MC_Mother_2D->Fill(MC_theta, MC_pt);
680 m_h2_MC_Mother_pVScostheta->Fill(MC_costheta, MC_p);
681 m_h1_MC_Mother_PDG->Fill(mcParticle.getPDG());
682
683 //beam pipe
684 if (MC_transDist < 1.) {
685 m_h2_MC_dau0_2D_BP->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
686 m_h2_MC_dau1_2D_BP->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
687 m_h2_MC_Mother_2D_BP->Fill(MC_theta, MC_pt);
688 }
689
690
691 if (MC_theta > (120 * TMath::Pi() / 180.)) { //BW
692 m_h1_MC_dau0_phiMother_BW->Fill(MC_phi);
693 m_h1_MC_dau1_phiMother_BW->Fill(MC_phi);
694 m_h1_MC_dau0_phi_BW->Fill(m_MCDaughter0->getMomentum().Phi());
695 m_h1_MC_dau1_phi_BW->Fill(m_MCDaughter1->getMomentum().Phi());
696 m_h1_MC_Mother_phi_BW->Fill(MC_phi);
697 } else if (MC_theta < (30. * TMath::Pi() / 180.)) { //FW, theta < 30)
698 m_h1_MC_dau0_phiMother_FW->Fill(MC_phi);
699 m_h1_MC_dau1_phiMother_FW->Fill(MC_phi);
700 m_h1_MC_dau0_phi_FW->Fill(m_MCDaughter0->getMomentum().Phi());
701 m_h1_MC_dau1_phi_FW->Fill(m_MCDaughter1->getMomentum().Phi());
702 m_h1_MC_Mother_phi_FW->Fill(MC_phi);
703 } else { //barrel
704 m_h1_MC_dau0_phiMother_barrel->Fill(MC_phi);
705 m_h1_MC_dau1_phiMother_barrel->Fill(MC_phi);
706 m_h1_MC_dau0_phi_barrel->Fill(m_MCDaughter0->getMomentum().Phi());
707 m_h1_MC_dau1_phi_barrel->Fill(m_MCDaughter1->getMomentum().Phi());
708 m_h1_MC_Mother_phi_barrel->Fill(MC_phi);
709 }
710
711 //------------------------------------------------------------------//
712 // MC RECO TRACKS //
713 //------------------------------------------------------------------//
714
715 RelationVector<RecoTrack> MCRecoTracks_MCdau0 =
717
718 RelationVector<RecoTrack> MCRecoTracks_MCdau1 =
720
721 if (MCRecoTracks_MCdau0.size() > 0) {
722 m_h1_RecoTrack_dau0_d0->Fill(mcParticleInfo_dau0.getD0());
723 m_h1_RecoTrack_dau0_z0->Fill(mcParticleInfo_dau0.getZ0());
724 m_h1_RecoTrack_dau0_RMother->Fill(MC_transDist);
725 m_h3_RecoTrack_dau0->Fill(m_MCDaughter0->getMomentum().Rho(), m_MCDaughter0->getMomentum().Theta(),
726 m_MCDaughter0->getMomentum().Phi());
727 m_h1_RecoTrack_dau0_pt->Fill(m_MCDaughter0->getMomentum().Rho());
728 m_h1_RecoTrack_dau0_pz->Fill(m_MCDaughter0->getMomentum().z());
729 m_h1_RecoTrack_dau0_p->Fill(m_MCDaughter0->getMomentum().R());
730 m_h1_RecoTrack_dau0_phi->Fill(m_MCDaughter0->getMomentum().Phi());
731 m_h1_RecoTrack_dau0_theta->Fill(m_MCDaughter0->getMomentum().Theta());
732 m_h1_RecoTrack_dau0_costheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()));
733 m_h1_RecoTrack_dau0_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter0->getMomentum()) /
734 mcParticle.getMomentum().R() /
735 m_MCDaughter0->getMomentum().R());
736
737 m_h1_RecoTrack_dau0_thetaMother->Fill(MC_theta);
738 m_h1_RecoTrack_dau0_ptMother->Fill(MC_pt);
739
741 m_h2_RecoTrack_dau0_2D->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
742 m_h2_RecoTrack_dau0_2DMother->Fill(MC_theta, MC_pt);
743 m_h2_RecoTrack_dau0_pVScostheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()), m_MCDaughter0->getMomentum().R());
744
745 if (MC_transDist < 1.) {
746 m_h2_RecoTrack_dau0_2D_BP->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
747 }
748
749 if (m_MCDaughter0->getMomentum().Theta() > (120 * TMath::Pi() / 180.)) m_h1_RecoTrack_dau0_phi_BW->Fill(
750 m_MCDaughter0->getMomentum().Phi());
751 else if (m_MCDaughter0->getMomentum().Theta() < (30. * TMath::Pi() / 180.)) m_h1_RecoTrack_dau0_phi_FW->Fill(
752 m_MCDaughter0->getMomentum().Phi());
753 else m_h1_RecoTrack_dau0_phi_barrel->Fill(m_MCDaughter0->getMomentum().Phi());
754
755 if (MC_theta > (120 * TMath::Pi() / 180.)) m_h1_RecoTrack_dau0_phiMother_BW->Fill(MC_phi);
756 else if (MC_theta < (30. * TMath::Pi() / 180.)) m_h1_RecoTrack_dau0_phiMother_FW->Fill(MC_phi);
757 else m_h1_RecoTrack_dau0_phiMother_barrel->Fill(MC_phi);
758
759 //V0 candidates
760 if (MCRecoTracks_MCdau1.size() > 0) {
761 m_h1_RecoTrack_Mother_RMother->Fill(MC_transDist);
762 m_h3_RecoTrack_Mother->Fill(MC_pt, MC_theta, MC_phi);
763 m_h1_RecoTrack_Mother_pt->Fill(MC_pt);
764 m_h1_RecoTrack_Mother_pz->Fill(mcParticle.getMomentum().z());
765 m_h1_RecoTrack_Mother_p->Fill(mcParticle.getMomentum().R());
766 m_h1_RecoTrack_Mother_phi->Fill(MC_phi);
767 m_h1_RecoTrack_Mother_theta->Fill(MC_theta);
768 m_h1_RecoTrack_Mother_costheta->Fill(cos(mcParticle.getMomentum().Theta()));
769
770 m_h1_RecoTrack_Mother_pt->Fill(MC_pt);
771 m_h2_RecoTrack_Mother_2D->Fill(MC_theta, MC_pt);
772
773 m_h2_RecoTrack_Mother_pVScostheta->Fill(MC_costheta, MC_p);
774
775 if (MC_transDist < 1.) m_h2_RecoTrack_Mother_2D_BP->Fill(MC_theta, MC_pt);
776
777 if (MC_theta > (120 * TMath::Pi() / 180.)) //BW
778 m_h1_RecoTrack_Mother_phi_BW->Fill(MC_phi);
779 else if (MC_theta < (30. * TMath::Pi() / 180.))//FW
780 m_h1_RecoTrack_Mother_phi_FW->Fill(MC_phi);
781 else
783 }
784 }
785
786 if (MCRecoTracks_MCdau1.size() > 0) {
787 m_h1_RecoTrack_dau1_d0->Fill(mcParticleInfo_dau1.getD0());
788 m_h1_RecoTrack_dau1_z0->Fill(mcParticleInfo_dau1.getZ0());
789 m_h1_RecoTrack_dau1_RMother->Fill(MC_transDist);
790 m_h3_RecoTrack_dau1->Fill(m_MCDaughter1->getMomentum().Rho(), m_MCDaughter1->getMomentum().Theta(),
791 m_MCDaughter1->getMomentum().Phi());
792 m_h1_RecoTrack_dau1_pt->Fill(m_MCDaughter1->getMomentum().Rho());
793 m_h1_RecoTrack_dau1_pz->Fill(m_MCDaughter1->getMomentum().z());
794 m_h1_RecoTrack_dau1_p->Fill(m_MCDaughter1->getMomentum().R());
795 m_h1_RecoTrack_dau1_phi->Fill(m_MCDaughter1->getMomentum().Phi());
796 m_h1_RecoTrack_dau1_theta->Fill(m_MCDaughter1->getMomentum().Theta());
797 m_h1_RecoTrack_dau1_costheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()));
798 m_h1_RecoTrack_dau1_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter1->getMomentum()) /
799 mcParticle.getMomentum().R() /
800 m_MCDaughter1->getMomentum().R());
801
802 m_h1_RecoTrack_dau1_thetaMother->Fill(MC_theta);
803 m_h1_RecoTrack_dau1_ptMother->Fill(MC_pt);
804
806 m_h2_RecoTrack_dau1_2D->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
807 m_h2_RecoTrack_dau1_2DMother->Fill(MC_theta, MC_pt);
808 m_h2_RecoTrack_dau1_pVScostheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()), m_MCDaughter1->getMomentum().R());
809
810 if (MC_transDist < 1.) {
811 m_h2_RecoTrack_dau1_2D_BP->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
812
813 if (m_MCDaughter1->getMomentum().Theta() > (120 * TMath::Pi() / 180.)) m_h1_RecoTrack_dau1_phi_BW->Fill(
814 m_MCDaughter1->getMomentum().Phi());
815 else if (m_MCDaughter1->getMomentum().Theta() < (30. * TMath::Pi() / 180.)) m_h1_RecoTrack_dau1_phi_FW->Fill(
816 m_MCDaughter1->getMomentum().Phi());
817 else m_h1_RecoTrack_dau1_phi_barrel->Fill(m_MCDaughter1->getMomentum().Phi());
818
819 if (MC_theta > (120 * TMath::Pi() / 180.)) m_h1_RecoTrack_dau1_phiMother_BW->Fill(MC_phi);
820 else if (MC_theta < (30. * TMath::Pi() / 180.)) m_h1_RecoTrack_dau1_phiMother_FW->Fill(MC_phi);
821 else m_h1_RecoTrack_dau1_phiMother_barrel->Fill(MC_phi);
822 }
823 }
824
825 //------------------------------------------------------------------//
826 // TRACKS //
827 //------------------------------------------------------------------//
828
829 const Track* Track_dau0ToMCParticle = m_MCDaughter0->getRelated<Track>();
830 const Track* Track_dau1ToMCParticle = m_MCDaughter1->getRelated<Track>();
831
832 if (Track_dau0ToMCParticle) {
833 m_h1_track_dau0_d0->Fill(mcParticleInfo_dau0.getD0());
834 m_h1_track_dau0_z0->Fill(mcParticleInfo_dau0.getZ0());
835 m_h1_track_dau0_RMother->Fill(MC_transDist);
836 m_h3_track_dau0->Fill(m_MCDaughter0->getMomentum().Rho(), m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Phi());
837 m_h1_track_dau0_pt->Fill(m_MCDaughter0->getMomentum().Rho());
838 m_h1_track_dau0_pz->Fill(m_MCDaughter0->getMomentum().z());
839 m_h1_track_dau0_p->Fill(m_MCDaughter0->getMomentum().R());
840 m_h1_track_dau0_phi->Fill(m_MCDaughter0->getMomentum().Phi());
841 m_h1_track_dau0_theta->Fill(m_MCDaughter0->getMomentum().Theta());
842 m_h1_track_dau0_costheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()));
843 m_h1_track_dau0_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter0->getMomentum()) / mcParticle.getMomentum().R() /
844 m_MCDaughter0->getMomentum().R());
845
846 m_h1_track_dau0_thetaMother->Fill(MC_theta);
847 m_h1_track_dau0_ptMother->Fill(MC_pt);
848
850
851 m_h2_track_dau0_2D->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
852 m_h2_track_dau0_2DMother->Fill(MC_theta, MC_pt);
853 m_h2_track_dau0_pVScostheta->Fill(cos(m_MCDaughter0->getMomentum().Theta()), m_MCDaughter0->getMomentum().R());
854
855 if (MC_transDist < 1.)
856 m_h2_track_dau0_2D_BP->Fill(m_MCDaughter0->getMomentum().Theta(), m_MCDaughter0->getMomentum().Rho());
857
858 if (MC_theta > (120 * TMath::Pi() / 180.)) { //BW
859 m_h1_track_dau0_phiMother_BW->Fill(MC_phi);
860 m_h1_track_dau0_phi_BW->Fill(m_MCDaughter0->getMomentum().Phi());
861 } else if (MC_theta < (30 * TMath::Pi() / 180.)) { //FW
862 m_h1_track_dau0_phiMother_FW->Fill(MC_phi);
863 m_h1_track_dau0_phi_FW->Fill(m_MCDaughter0->getMomentum().Phi());
864 } else { //barrel
866 m_h1_track_dau0_phi_barrel->Fill(m_MCDaughter0->getMomentum().Phi());
867 }
868 }
869
870 if (Track_dau1ToMCParticle) {
871 m_h1_track_dau1_d0->Fill(mcParticleInfo_dau1.getD0());
872 m_h1_track_dau1_z0->Fill(mcParticleInfo_dau1.getZ0());
873 m_h1_track_dau1_RMother->Fill(MC_transDist);
874 m_h3_track_dau1->Fill(m_MCDaughter1->getMomentum().Rho(), m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Phi());
875 m_h1_track_dau1_pt->Fill(m_MCDaughter1->getMomentum().Rho());
876 m_h1_track_dau1_pz->Fill(m_MCDaughter1->getMomentum().z());
877 m_h1_track_dau1_p->Fill(m_MCDaughter1->getMomentum().R());
878 m_h1_track_dau1_phi->Fill(m_MCDaughter1->getMomentum().Phi());
879 m_h1_track_dau1_theta->Fill(m_MCDaughter1->getMomentum().Theta());
880 m_h1_track_dau1_costheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()));
881 m_h1_track_dau1_Mother_cosAngle->Fill(mcParticle.getMomentum().Dot(m_MCDaughter1->getMomentum()) / mcParticle.getMomentum().R() /
882 m_MCDaughter1->getMomentum().R());
883
884 m_h1_track_dau1_thetaMother->Fill(MC_theta);
885 m_h1_track_dau1_ptMother->Fill(MC_pt);
886
888
889 m_h2_track_dau1_2D->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
890 m_h2_track_dau1_2DMother->Fill(MC_theta, MC_pt);
891 m_h2_track_dau1_pVScostheta->Fill(cos(m_MCDaughter1->getMomentum().Theta()), m_MCDaughter1->getMomentum().R());
892
893 if (MC_transDist < 1.)
894 m_h2_track_dau1_2D_BP->Fill(m_MCDaughter1->getMomentum().Theta(), m_MCDaughter1->getMomentum().Rho());
895
896 if (MC_theta > (120 * TMath::Pi() / 180.)) { //BW
897 m_h1_track_dau1_phiMother_BW->Fill(MC_phi);
898 m_h1_track_dau1_phi_BW->Fill(m_MCDaughter1->getMomentum().Phi());
899 } else if (MC_theta < (30 * TMath::Pi() / 180.)) { //FW
900 m_h1_track_dau1_phiMother_FW->Fill(MC_phi);
901 m_h1_track_dau1_phi_FW->Fill(m_MCDaughter1->getMomentum().Phi());
902 } else { //barrel
904 m_h1_track_dau1_phi_barrel->Fill(m_MCDaughter1->getMomentum().Phi());
905 }
906 }
907
908 int nMatchedDau = nMatchedDaughters(mcParticle);
909
910 //V0: proceed only in case the MCParticle daughters have one associated reconstructed track:
911 if (nMatchedDau != 2)
912 continue;
913
914 // cppcheck-suppress variableScope ; declaration kept at this scope for readability
915 int pdgCode = mcParticle.getPDG();
916 B2DEBUG(29, "MCParticle has PDG code " << pdgCode);
917
918 RelationVector<V0ValidationVertex> V0s_toMCParticle =
920
921 if (V0s_toMCParticle.size() > 0) {
922
923 m_h1_V0_RMother->Fill(MC_transDist);
924 m_h3_V0->Fill(mcParticleInfo.getPt(), mcParticleInfo.getPtheta(), mcParticleInfo.getPphi());
925 m_h1_V0_pt->Fill(mcParticleInfo.getPt());
926 m_h1_V0_pz->Fill(mcParticleInfo.getPz());
927 m_h1_V0_p->Fill(mcParticleInfo.getP());
928 m_h1_V0_phi->Fill(mcParticleInfo.getPphi());
929 m_h1_V0_theta->Fill(mcParticleInfo.getPtheta());
930 m_h1_V0_costheta->Fill(cos(mcParticle.getMomentum().Theta()));
931 m_h2_V0_Mother_2D->Fill(MC_theta, MC_p);
932 m_h2_V0_Mother_pVScostheta->Fill(MC_costheta, MC_p);
933
934 if (MC_transDist < 1.) m_h2_V0_Mother_2D_BP->Fill(MC_theta, MC_pt);
935
936 if (MC_theta > (120 * TMath::Pi() / 180.)) //BW
937 m_h1_V0_phi_BW->Fill(mcParticleInfo.getPphi());
938
939 else if (MC_theta < (30 * TMath::Pi() / 180.))//FW
940 m_h1_V0_phi_FW->Fill(mcParticleInfo.getPphi());
941
942 else //barrel
943 m_h1_V0_phi_barrel->Fill(mcParticleInfo.getPphi());
944 }
945 }
946}
947
949{
950 double track_dau0 = m_h1_track_dau0_RMother->GetEntries();
951 double RecoTrack_dau0 = m_h1_RecoTrack_dau0_RMother->GetEntries();
952 double MC_dau0 = m_h1_MC_dau0_RMother->GetEntries();
953 double eff_dau0_noGA = track_dau0 / MC_dau0;
954 double effErr_dau0_noGA = sqrt(eff_dau0_noGA * (1 - eff_dau0_noGA)) / sqrt(MC_dau0);
955 double eff_dau0_withGA = track_dau0 / RecoTrack_dau0;
956 double effErr_dau0_withGA = sqrt(eff_dau0_withGA * (1 - eff_dau0_withGA)) / sqrt(RecoTrack_dau0);
957
958 double track_dau1 = m_h1_track_dau1_RMother->GetEntries();
959 double RecoTrack_dau1 = m_h1_RecoTrack_dau1_RMother->GetEntries();
960 double MC_dau1 = m_h1_MC_dau1_RMother->GetEntries();
961 double eff_dau1_noGA = track_dau1 / MC_dau1;
962 double effErr_dau1_noGA = sqrt(eff_dau1_noGA * (1 - eff_dau1_noGA)) / sqrt(MC_dau1);
963 double eff_dau1_withGA = track_dau1 / RecoTrack_dau1;
964 double effErr_dau1_withGA = sqrt(eff_dau1_withGA * (1 - eff_dau1_withGA)) / sqrt(RecoTrack_dau1);
965
966 double track_Mother = m_h1_V0_RMother->GetEntries();
967 double RecoTrack_Mother = m_h1_RecoTrack_Mother_RMother->GetEntries();
968 double MC_Mother = m_h1_MC_Mother_RMother->GetEntries();
969 double eff_Mother_noGA = track_Mother / MC_Mother;
970 double effErr_Mother_noGA = sqrt(eff_Mother_noGA * (1 - eff_Mother_noGA)) / sqrt(MC_Mother);
971 double eff_Mother_withGA = track_Mother / RecoTrack_Mother;
972 double effErr_Mother_withGA = sqrt(eff_Mother_withGA * (1 - eff_Mother_withGA)) / sqrt(RecoTrack_Mother);
973
974
975
976
977 B2INFO("");
978 B2INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
979 B2INFO("~ V0 Finding Performance Evaluation ~ SHORT SUMMARY ~");
980 B2INFO("");
981 B2INFO(" + overall, normalized to MC particles (_noGeoAcc):");
982 B2INFO("");
983 B2INFO(" efficiency dau0 = (" << eff_dau0_noGA * 100 << " +/- " << effErr_dau0_noGA * 100 << ")% ");
984 B2INFO(" efficiency dau1 = (" << eff_dau1_noGA * 100 << " +/- " << effErr_dau1_noGA * 100 << ")% ");
985 B2INFO(" efficiency Mother = (" << eff_Mother_noGA * 100 << " +/- " << effErr_Mother_noGA * 100 << ")% ");
986 B2INFO("");
987 B2INFO(" + overall, normalized to RecoTracks(_withGeoAcc):");
988 B2INFO("");
989 B2INFO(" efficiency dau0 = (" << eff_dau0_withGA * 100 << " +/- " << effErr_dau0_withGA * 100 << ")% ");
990 B2INFO(" efficiency dau1 = (" << eff_dau1_withGA * 100 << " +/- " << effErr_dau1_withGA * 100 << ")% ");
991 B2INFO(" efficiency Mother = (" << eff_Mother_withGA * 100 << " +/- " << effErr_Mother_withGA * 100 << ")% ");
992 B2INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
993
994}
995
997{
998 //------------------------------------------------------------------//
999 // EFFICIENCIES //
1000 //------------------------------------------------------------------//
1001
1002 //dau0
1003 TH1F* h_eff_dau0_d0 = effPlot1D(m_h1_MC_dau0_d0, m_h1_RecoTrack_dau0_d0, m_h1_track_dau0_d0, "h_eff_dau0_d0",
1004 "efficiency VS d0, dau_{0}", m_histoList_Efficiencies);
1005 if (h_eff_dau0_d0->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_d0");
1006
1007 TH1F* h_eff_dau0_z0 = effPlot1D(m_h1_MC_dau0_z0, m_h1_RecoTrack_dau0_z0, m_h1_track_dau0_z0, "h_eff_dau0_z0",
1008 "efficiency VS z0, dau_{0}", m_histoList_Efficiencies);
1009 if (h_eff_dau0_z0->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_z0");
1010
1012 "h_eff_dau0_RMother", "efficiency VS R_{mother}, dau_{0}", m_histoList_Efficiencies);
1013 if (h_eff_dau0_RMother->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_RMother");
1014
1016 "h_eff_dau0_thetaMother", "efficiency VS #theta_{mother}, dau_{0}", m_histoList_Efficiencies);
1017 if (h_eff_dau0_thetaMother->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_thetaMother");
1018
1020 m_h1_track_dau0_phiMother_total, "h_eff_dau0_phiMother_total", "efficiency VS #phi_{mother}, dau_{0}", m_histoList_Efficiencies);
1021 if (h_eff_dau0_phiMother_total->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phiMother_total");
1022
1024 "h_eff_dau0_phiMother_BW", "efficiency VS #phi_{mother}, dau_{0} BW", m_histoList_Efficiencies);
1025 if (h_eff_dau0_phiMother_BW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phiMother_BW");
1026
1028 m_h1_track_dau0_phiMother_barrel, "h_eff_dau0_phiMother_barrel", "efficiency VS #phi_{mother}, dau_{0} barrel",
1030 if (h_eff_dau0_phiMother_barrel->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phiMother_barrel");
1031
1033 "h_eff_dau0_phiMother_FW", "efficiency VS #phi_{mother}, dau_{0} FW", m_histoList_Efficiencies);
1034 if (h_eff_dau0_phiMother_FW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phiMother_FW");
1035
1036 TH1F* h_eff_dau0_phi_total = effPlot1D(m_h1_MC_dau0_phi, m_h1_RecoTrack_dau0_phi, m_h1_track_dau0_phi, "h_eff_dau0_phi_total",
1037 "efficiency VS #phi_{dau_{0}}, dau_{0}", m_histoList_Efficiencies);
1038 if (h_eff_dau0_phi_total->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phi_total");
1039
1040 TH1F* h_eff_dau0_phi_BW = effPlot1D(m_h1_MC_dau0_phi_BW, m_h1_RecoTrack_dau0_phi_BW, m_h1_track_dau0_phi_BW, "h_eff_dau0_phi_BW",
1041 "efficiency VS #phi_{dau_{0}}, dau_{0} BW", m_histoList_Efficiencies);
1042 if (h_eff_dau0_phi_BW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phi_BW");
1043
1045 "h_eff_dau0_phi_barrel", "efficiency VS #phi_{dau_{0}}, dau_{0} barrel", m_histoList_Efficiencies);
1046 if (h_eff_dau0_phi_barrel->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phi_barrel");
1047
1048 TH1F* h_eff_dau0_phi_FW = effPlot1D(m_h1_MC_dau0_phi_FW, m_h1_RecoTrack_dau0_phi_FW, m_h1_track_dau0_phi_FW, "h_eff_dau0_phi_FW",
1049 "efficiency VS #phi_{dau_{0}}, dau_{0} FW", m_histoList_Efficiencies);
1050 if (h_eff_dau0_phi_FW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau0_phi_FW");
1051
1053 "h2_effMap_dau0_pVScostheta", "efficiency map, p_{CM} VS cos(#theta)_{CM} dau_{0}", m_histoList_Efficiencies);
1054 if (h2_effMap_dau0_pVScostheta->GetEntries() == 0) B2WARNING("Empty histogram h2_effMap_dau0_pVScostheta");
1055
1056 //dau1
1057 TH1F* h_eff_dau1_d0 = effPlot1D(m_h1_MC_dau1_d0, m_h1_RecoTrack_dau1_d0, m_h1_track_dau1_d0, "h_eff_dau1_d0", "efficiency VS d0, p",
1059 if (h_eff_dau1_d0->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_d0");
1060
1061 TH1F* h_eff_dau1_z0 = effPlot1D(m_h1_MC_dau1_z0, m_h1_RecoTrack_dau1_z0, m_h1_track_dau1_z0, "h_eff_dau1_z0", "efficiency VS z0, p",
1063 if (h_eff_dau1_z0->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_z0");
1064
1066 "h_eff_dau1_RMother", "efficiency VS R_{mother}, p", m_histoList_Efficiencies);
1067 if (h_eff_dau1_RMother->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_RMother");
1068
1070 "h_eff_dau1_thetaMother", "efficiency VS #theta_{mother}, p", m_histoList_Efficiencies);
1071 if (h_eff_dau1_thetaMother->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_thetaMother");
1072
1074 m_h1_track_dau1_phiMother_total, "h_eff_dau1_phiMother_total", "efficiency VS #phi_{mother}, p", m_histoList_Efficiencies);
1075 if (h_eff_dau1_phiMother_total->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phiMother_total");
1076
1078 "h_eff_dau1_phiMother_BW", "efficiency VS #phi_{mother}, p BW", m_histoList_Efficiencies);
1079 if (h_eff_dau1_phiMother_BW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phiMother_BW");
1080
1082 m_h1_track_dau1_phiMother_barrel, "h_eff_dau1_phiMother_barrel", "efficiency VS #phi_{mother}, p barrel", m_histoList_Efficiencies);
1083 if (h_eff_dau1_phiMother_barrel->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phiMother_barrel");
1084
1086 "h_eff_dau1_phiMother_FW", "efficiency VS #phi_{mother}, p FW", m_histoList_Efficiencies);
1087 if (h_eff_dau1_phiMother_FW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phiMother_FW");
1088
1089 TH1F* h_eff_dau1_phi_total = effPlot1D(m_h1_MC_dau1_phi, m_h1_RecoTrack_dau1_phi, m_h1_track_dau1_phi, "h_eff_dau1_phi_total",
1090 "efficiency VS #phi_{p}, p", m_histoList_Efficiencies);
1091 if (h_eff_dau1_phi_total->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phi_total");
1092
1093 TH1F* h_eff_dau1_phi_BW = effPlot1D(m_h1_MC_dau1_phi_BW, m_h1_RecoTrack_dau1_phi_BW, m_h1_track_dau1_phi_BW, "h_eff_dau1_phi_BW",
1094 "efficiency VS #phi_{p}, p BW", m_histoList_Efficiencies);
1095 if (h_eff_dau1_phi_BW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phi_BW");
1096
1098 "h_eff_dau1_phi_barrel", "efficiency VS #phi_{p}, p barrel", m_histoList_Efficiencies);
1099 if (h_eff_dau1_phi_barrel->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phi_barrel");
1100
1101 TH1F* h_eff_dau1_phi_FW = effPlot1D(m_h1_MC_dau1_phi_FW, m_h1_RecoTrack_dau1_phi_FW, m_h1_track_dau1_phi_FW, "h_eff_dau1_phi_FW",
1102 "efficiency VS #phi_{p}, p FW", m_histoList_Efficiencies);
1103 if (h_eff_dau1_phi_FW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_dau1_phi_FW");
1104
1106 "h2_effMap_dau1_pVScostheta", "efficiency map, p_{CM} VS cos(#theta)_{CM} dau_{1}", m_histoList_Efficiencies);
1107 if (h2_effMap_dau1_pVScostheta->GetEntries() == 0) B2WARNING("Empty histogram h2_effMap_dau1_pVScostheta");
1108
1109 //mother
1111 "h_eff_Mother_RMother", "efficiency VS R_{mother}, mother", m_histoList_Efficiencies);
1112 if (h_eff_Mother_RMother->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_RMother");
1113
1114 TH1F* h_eff_Mother_theta = effPlot1D(m_h1_MC_Mother_theta, m_h1_RecoTrack_Mother_theta, m_h1_V0_theta, "h_eff_Mother_theta",
1115 "efficiency VS #theta_{mother}, mother", m_histoList_Efficiencies);
1116 if (h_eff_Mother_theta->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_theta");
1117
1118 TH1F* h_eff_Mother_phi_total = effPlot1D(m_h1_MC_Mother_phi, m_h1_RecoTrack_Mother_phi, m_h1_V0_phi, "h_eff_Mother_phi_total",
1119 "efficiency VS #phi_{mother}, mother", m_histoList_Efficiencies);
1120 if (h_eff_Mother_phi_total->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_phi_total");
1121
1123 "h_eff_Mother_phi_BW", "efficiency VS #phi_{mother}, mother BW", m_histoList_Efficiencies);
1124 if (h_eff_Mother_phiMother_BW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_phiMother_BW");
1125
1127 "h_eff_Mother_phi_barrel", "efficiency VS #phi_{mother}, mother barrel", m_histoList_Efficiencies);
1128 if (h_eff_Mother_phiMother_barrel->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_phiMother_barrel");
1129
1131 "h_eff_Mother_phi_FW", "efficiency VS #phi_{mother}, mother FW", m_histoList_Efficiencies);
1132 if (h_eff_Mother_phiMother_FW->GetEntries() == 0) B2WARNING("Empty histogram h_eff_Mother_phiMother_FW");
1133
1134 TH2F* h2_effMap_Mother_pVScostheta = effPlot2D(m_h2_MC_Mother_pVScostheta, m_h2_RecoTrack_Mother_pVScostheta,
1135 m_h2_V0_Mother_pVScostheta, "h2_effMap_Mother_pVScostheta", "efficiency map, p_{CM} VS cos(#theta)_{CM} mother",
1137 if (h2_effMap_Mother_pVScostheta->GetEntries() == 0) B2WARNING("Empty histogram h2_effMap_Mother_pVScostheta");
1138
1139 //eff_V0Finder [ = eff_mother / (eff_dau0 * eff_dau1)]
1140 TH1F* h_eff_V0Finder_RMother_withGeoAcc = V0FinderEff(h_eff_dau0_RMother, h_eff_dau1_RMother, h_eff_Mother_RMother,
1141 "h_eff_V0Finder_RMother_withGeoAcc", "efficiency VS R_{mother}, V0Finder", m_histoList_Efficiencies);
1142 if (h_eff_V0Finder_RMother_withGeoAcc->GetEntries() == 0) B2WARNING("Empty histogram h_eff_V0Finder_RMother_withGeoAcc");
1143
1144 TH1F* h_eff_V0Finder_theta_withGeoAcc = V0FinderEff(h_eff_dau0_thetaMother, h_eff_dau1_thetaMother, h_eff_Mother_theta,
1145 "h_eff_V0Finder_theta_withGeoAcc", "efficiency VS #theta_{mother}, V0Finder", m_histoList_Efficiencies);
1146 if (h_eff_V0Finder_theta_withGeoAcc->GetEntries() == 0) B2WARNING("Empty histogram h_eff_V0Finder_theta_withGeoAcc");
1147
1148 TH1F* h_eff_V0Finder_phi_total_withGeoAcc = V0FinderEff(h_eff_dau0_phiMother_total, h_eff_dau1_phiMother_total,
1149 h_eff_Mother_phi_total, "h_eff_V0Finder_phi_total_withGeoAcc", "efficiency VS #phi_{mother}, V0Finder", m_histoList_Efficiencies);
1150 if (h_eff_V0Finder_phi_total_withGeoAcc->GetEntries() == 0) B2WARNING("Empty histogram h_eff_V0Finder_phi_total_withGeoAcc");
1151
1152 TH1F* h_eff_V0Finder_phiMother_BW_withGeoAcc = V0FinderEff(h_eff_dau0_phiMother_BW, h_eff_dau1_phiMother_BW,
1153 h_eff_Mother_phiMother_BW, "h_eff_V0Finder_phi_BW_withGeoAcc", "efficiency VS #phi_{mother}, V0Finder BW",
1155 if (h_eff_V0Finder_phiMother_BW_withGeoAcc->GetEntries() == 0) B2WARNING("Empty histogram h_eff_V0Finder_phiMother_BW_withGeoAcc");
1156
1157 TH1F* h_eff_V0Finder_phiMother_barrel_withGeoAcc = V0FinderEff(h_eff_dau0_phiMother_barrel, h_eff_dau1_phiMother_barrel,
1158 h_eff_Mother_phiMother_barrel, "h_eff_V0Finder_phi_barrel_withGeoAcc", "efficiency VS #phi_{mother}, V0Finder barrel",
1160 if (h_eff_V0Finder_phiMother_barrel_withGeoAcc->GetEntries() == 0)
1161 B2WARNING("Empty histogram h_eff_V0Finder_phiMother_barrel_withGeoAcc");
1162
1163 TH1F* h_eff_V0Finder_phiMother_FW_withGeoAcc = V0FinderEff(h_eff_dau0_phiMother_FW, h_eff_dau1_phiMother_FW,
1164 h_eff_Mother_phiMother_FW, "h_eff_V0Finder_phi_FW_withGeoAcc", "efficiency VS #phi_{mother}, V0Finder FW",
1166 if (h_eff_V0Finder_phiMother_FW_withGeoAcc->GetEntries() == 0) B2WARNING("Empty histogram h_eff_V0Finder_phiMother_FW_withGeoAcc");
1167
1168
1169 //-------------------------------------------------------------------------//
1170 // GEOMETRICAL ACCETTANCE //
1171 //-------------------------------------------------------------------------//
1172
1174 //dau0
1175 TH1F* h_dau0_geoAcc_theta = geoAcc1D(m_h1_MC_dau0_theta, m_h1_RecoTrack_dau0_theta, "h_dau0_geoAcc_theta",
1176 "geometrical acceptance VS #theta_{dau_{0}}, dau_{0}", m_histoList_GA);
1177 if (h_dau0_geoAcc_theta->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_theta");
1178
1179 TH1F* h_dau0_geoAcc_phi = geoAcc1D(m_h1_MC_dau0_phi, m_h1_RecoTrack_dau0_phi, "h_dau0_geoAcc_phi",
1180 "geometrical acceptance VS #phi_{dau_{0}}, dau_{0}", m_histoList_GA);
1181 if (h_dau0_geoAcc_phi->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_phi");
1182
1183 TH1F* h_dau0_geoAcc_pt = geoAcc1D(m_h1_MC_dau0_pt, m_h1_RecoTrack_dau0_pt, "h_dau0_geoAcc_pt",
1184 "geometrical acceptance VS p_{T,dau_{0}}, dau_{0}", m_histoList_GA);
1185 if (h_dau0_geoAcc_pt->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_pt");
1186
1187 TH1F* h_dau0_geoAcc_thetaMother = geoAcc1D(m_h1_MC_dau0_thetaMother, m_h1_RecoTrack_dau0_thetaMother, "h_dau0_geoAcc_thetaMother",
1188 "geometrical acceptance VS #theta_{mother}, dau_{0}", m_histoList_GA);
1189 if (h_dau0_geoAcc_thetaMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_thetaMother");
1190
1192 "h_dau0_geoAcc_phiMother", "geometrical acceptance VS #phi_{mother}, dau_{0}", m_histoList_GA);
1193 if (h_dau0_geoAcc_phiMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_phiMother");
1194
1195 TH1F* h_dau0_geoAcc_ptMother = geoAcc1D(m_h1_MC_dau0_ptMother, m_h1_RecoTrack_dau0_ptMother, "h_dau0_geoAcc_ptMother",
1196 "geometrical acceptance VS #p_{T,mother}, dau_{0}", m_histoList_GA);
1197 if (h_dau0_geoAcc_ptMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau0_geoAcc_ptMother");
1198
1199 //dau1
1200 TH1F* h_dau1_geoAcc_theta = geoAcc1D(m_h1_MC_dau1_theta, m_h1_RecoTrack_dau1_theta, "h_dau1_geoAcc_theta",
1201 "geometrical acceptance VS #theta_{p}, p", m_histoList_GA);
1202 if (h_dau1_geoAcc_theta->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_theta");
1203
1204 TH1F* h_dau1_geoAcc_phi = geoAcc1D(m_h1_MC_dau1_phi, m_h1_RecoTrack_dau1_phi, "h_dau1_geoAcc_phi",
1205 "geometrical acceptance VS #phi_{p}, p", m_histoList_GA);
1206 if (h_dau1_geoAcc_phi->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_phi");
1207
1208 TH1F* h_dau1_geoAcc_pt = geoAcc1D(m_h1_MC_dau1_pt, m_h1_RecoTrack_dau1_pt, "h_dau1_geoAcc_pt",
1209 "geometrical acceptance VS p_{T,p}, p", m_histoList_GA);
1210 if (h_dau1_geoAcc_pt->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_pt");
1211
1212 TH1F* h_dau1_geoAcc_thetaMother = geoAcc1D(m_h1_MC_dau1_thetaMother, m_h1_RecoTrack_dau1_thetaMother, "h_dau1_geoAcc_thetaMother",
1213 "geometrical acceptance VS #theta_{mother}, p", m_histoList_GA);
1214 if (h_dau1_geoAcc_thetaMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_thetaMother");
1215
1217 "h_dau1_geoAcc_phiMother", "geometrical acceptance VS #phi_{mother}, p", m_histoList_GA);
1218 if (h_dau1_geoAcc_phiMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_phiMother");
1219
1220 TH1F* h_dau1_geoAcc_ptMother = geoAcc1D(m_h1_MC_dau1_ptMother, m_h1_RecoTrack_dau1_ptMother, "h_dau1_geoAcc_ptMother",
1221 "geometrical acceptance VS #p_{T,mother}, p", m_histoList_GA);
1222 if (h_dau1_geoAcc_ptMother->GetEntries() == 0) B2WARNING("Empty histogram h_dau1_geoAcc_ptMother");
1223
1224 //mother
1225 TH1F* h_Mother_geoAcc_theta = geoAcc1D(m_h1_MC_Mother_theta, m_h1_RecoTrack_Mother_theta, "h_Mother_geoAcc_theta",
1226 "geometrical acceptance VS #theta_{mother}, mother", m_histoList_GA);
1227 if (h_Mother_geoAcc_theta->GetEntries() == 0) B2WARNING("Empty histogram h_Mother_geoAcc_theta");
1228
1229 TH1F* h_Mother_geoAcc_phi = geoAcc1D(m_h1_MC_Mother_phi, m_h1_RecoTrack_Mother_phi, "h_Mother_geoAcc_phi",
1230 "geometrical acceptance VS #phi_{mother}, mother", m_histoList_GA);
1231 if (h_Mother_geoAcc_phi->GetEntries() == 0) B2WARNING("Empty histogram h_Mother_geoAcc_phi");
1232
1233 TH1F* h_Mother_geoAcc_pt = geoAcc1D(m_h1_MC_Mother_pt, m_h1_RecoTrack_Mother_pt, "h_Mother_geoAcc_pt",
1234 "geometrical acceptance VS p_{T,mother}, mother", m_histoList_GA);
1235 if (h_Mother_geoAcc_pt->GetEntries() == 0) B2WARNING("Empty histogram h_Mother_geoAcc_pt");
1236
1237 //2D
1238 TH2F* h2_dau0_geoAcc2D = geoAcc2D(m_h2_MC_dau0_2D, m_h2_RecoTrack_dau0_2D, "h2_dau0_geoAcc2D",
1239 "geometrical acceptance dau_{0}, p_{T,dau_{0}} VS #theta_{dau_{0}}", m_histoList_GA);
1240 if (h2_dau0_geoAcc2D->GetEntries() == 0) B2WARNING("Empty histogram h2_dau0_geoAcc2D");
1241
1242 TH2F* h2_dau1_geoAcc2D = geoAcc2D(m_h2_MC_dau1_2D, m_h2_RecoTrack_dau1_2D, "h2_dau1_geoAcc2D",
1243 "geometrical acceptance p, p_{T,p} VS #theta_{p}", m_histoList_GA);
1244 if (h2_dau1_geoAcc2D->GetEntries() == 0) B2WARNING("Empty histogram h2_dau1_geoAcc2D");
1245
1246 TH2F* h2_Mother_geoAcc2D = geoAcc2D(m_h2_MC_Mother_2D, m_h2_RecoTrack_Mother_2D, "h2_Mother_geoAcc2D",
1247 "geometrical acceptance mother, p_{T,mother} VS #theta_{mother}", m_histoList_GA);
1248 if (h2_Mother_geoAcc2D->GetEntries() == 0) B2WARNING("Empty histogram h2_Mother_geoAcc2D");
1249
1250 TH2F* h2_dau0Mother_geoAcc2D = geoAcc2D(m_h2_MC_dau0_2DMother, m_h2_RecoTrack_dau0_2DMother, "h2_dau0Mother_geoAcc2D",
1251 "geometrical acceptance dau_{0}, p_{T,mother} VS #theta_{mother}", m_histoList_GA);
1252 if (h2_dau0Mother_geoAcc2D->GetEntries() == 0) B2WARNING("Empty histogram h2_dau0Mother_geoAcc2D");
1253
1254 TH2F* h2_dau1Mother_geoAcc2D = geoAcc2D(m_h2_MC_dau1_2DMother, m_h2_RecoTrack_dau1_2DMother, "h2_dau1Mother_geoAcc2D",
1255 "geometrical acceptance p, p_{T,mother} VS #theta_{mother}", m_histoList_GA);
1256 if (h2_dau1Mother_geoAcc2D->GetEntries() == 0) B2WARNING("Empty histogram h2_dau1Mother_geoAcc2D");
1257
1258 //particles coming from inside the Beam Pipe
1259 TH2F* h2_dau0_geoAcc2D_BP = geoAcc2D(m_h2_MC_dau0_2D_BP, m_h2_RecoTrack_dau0_2D_BP, "h2_dau0_geoAcc2D_BP",
1260 "geometrical acceptance dau_{0}, p_{T,dau_{0}} VS #theta_{dau_{0}}, BP", m_histoList_GA);
1261 if (h2_dau0_geoAcc2D_BP->GetEntries() == 0) B2WARNING("Empty histogram h2_dau0_geoAcc2D_BP");
1262
1263 TH2F* h2_dau1_geoAcc2D_BP = geoAcc2D(m_h2_MC_dau1_2D_BP, m_h2_RecoTrack_dau1_2D_BP, "h2_dau1_geoAcc2D_BP",
1264 "geometrical acceptance p, p_{T,p} VS #theta_{p}, BP", m_histoList_GA);
1265 if (h2_dau1_geoAcc2D_BP->GetEntries() == 0) B2WARNING("Empty histogram h2_dau1_geoAcc2D_BP");
1266
1267 TH2F* h2_Mother_geoAcc2D_BP = geoAcc2D(m_h2_MC_Mother_2D_BP, m_h2_RecoTrack_Mother_2D_BP, "h2_Mother_geoAcc2D_BP",
1268 "geometrical acceptance mother, p_{T,mother} VS #theta_{mother}, BP", m_histoList_GA);
1269 if (h2_Mother_geoAcc2D_BP->GetEntries() == 0) B2WARNING("Empty histogram h2_Mother_geoAcc2D_BP");
1270 }
1271
1272 //---------------------------------------------------------------------------------
1273
1274 //write histograms on the output root file
1275 if (m_rootFilePtr != nullptr) {
1276 m_rootFilePtr->cd();
1277
1278 TIter nextHMC(m_histoList_MCParticles);
1279 TIter nextHTC(m_histoList_RecoTracks);
1280 TIter nextHT(m_histoList_Tracks);
1281 TIter nextHEff(m_histoList_Efficiencies);
1282 TIter nextHGA(m_histoList_GA);
1283 TIter nextHCheck(m_histoList_check);
1284
1285 TObject* obj;
1286
1287 if (m_allHistograms) {
1288 TDirectory* MCdir = m_rootFilePtr->mkdir("MCParticles");
1289 MCdir->cd();
1290 while ((obj = nextHMC()))
1291 obj->Write("", BIT(2), 0);
1292
1293 TDirectory* TCdir = m_rootFilePtr->mkdir("RecoTracks");
1294 TCdir->cd();
1295 while ((obj = nextHTC()))
1296 obj->Write("", BIT(2), 0);
1297
1298 TDirectory* Trdir = m_rootFilePtr->mkdir("Tracks");
1299 Trdir->cd();
1300 while ((obj = nextHT()))
1301 obj->Write("", BIT(2), 0);
1302
1303 TDirectory* check = m_rootFilePtr->mkdir("check");
1304 check->cd();
1305 while ((obj = nextHCheck()))
1306 obj->Write("", BIT(2), 0);
1307 }
1308
1309 TDirectory* Effdir = m_rootFilePtr->mkdir("Efficiencies");
1310 Effdir->cd();
1311 while ((obj = nextHEff()))
1312 obj->Write("", BIT(2), 0);
1313
1315 TDirectory* geoAcc = m_rootFilePtr->mkdir("geoAccettance");
1316 geoAcc->cd();
1317 while ((obj = nextHGA()))
1318 obj->Write("", BIT(2), 0);
1319 }
1320
1321
1322 m_rootFilePtr->Close();
1323 }
1324}
1325
1326bool EffPlotsModule::isK_Short(const MCParticle& the_mcParticle)
1327{
1328
1329 bool isK_S0 = false;
1330 if (abs(the_mcParticle.getPDG()) == Const::Kshort.getPDGCode())
1331 isK_S0 = true;
1332
1333 bool twoChargedProngs = false;
1334
1335 if (the_mcParticle.getDaughters().size() == 2 &&
1336 ((the_mcParticle.getDaughters()[0]->getPDG() == Const::pion.getPDGCode()
1337 && the_mcParticle.getDaughters()[1]->getPDG() == -Const::pion.getPDGCode()) ||
1338 (the_mcParticle.getDaughters()[0]->getPDG() == -Const::pion.getPDGCode()
1339 && the_mcParticle.getDaughters()[1]->getPDG() == Const::pion.getPDGCode())))
1340 twoChargedProngs = true;
1341
1342 return (isK_S0 && twoChargedProngs);
1343
1344}
1345
1346bool EffPlotsModule::isLambda0(const MCParticle& the_mcParticle)
1347{
1348
1349 bool isLambda = false;
1350 if (abs(the_mcParticle.getPDG()) == Const::Lambda.getPDGCode())
1351 isLambda = true;
1352
1353 bool twoChargedProngs = false;
1354
1355 if (the_mcParticle.getDaughters().size() == 2 &&
1356 ((the_mcParticle.getDaughters()[0]->getPDG() == Const::pion.getPDGCode()
1357 && the_mcParticle.getDaughters()[1]->getPDG() == -Const::proton.getPDGCode()) ||
1358 (the_mcParticle.getDaughters()[0]->getPDG() == -Const::pion.getPDGCode()
1359 && the_mcParticle.getDaughters()[1]->getPDG() == Const::proton.getPDGCode()) ||
1360 (the_mcParticle.getDaughters()[0]->getPDG() == Const::proton.getPDGCode()
1361 && the_mcParticle.getDaughters()[1]->getPDG() == -Const::pion.getPDGCode()) ||
1362 (the_mcParticle.getDaughters()[0]->getPDG() == -Const::proton.getPDGCode()
1363 && the_mcParticle.getDaughters()[1]->getPDG() == Const::pion.getPDGCode())))
1364 twoChargedProngs = true;
1365
1366 return (isLambda && twoChargedProngs);
1367
1368}
1369
1371{
1372
1373 int nMatchedDau = 0;
1374
1375 std::vector< MCParticle* > MCPart_dau = the_mcParticle.getDaughters();
1376
1377 bool first = false;
1378 bool second = false;
1379
1380 RelationVector<Track> Tracks_fromMCParticle_0 = DataStore::getRelationsWithObj<Track>(MCPart_dau[0]);
1381 if (Tracks_fromMCParticle_0.size() > 0)
1382 first = true;
1383
1384 RelationVector<Track> Tracks_fromMCParticle_1 = DataStore::getRelationsWithObj<Track>(MCPart_dau[1]);
1385 if (Tracks_fromMCParticle_1.size() > 0)
1386 second = true;
1387
1388
1389 if (first)
1390 nMatchedDau++;
1391
1392 if (second)
1393 nMatchedDau++;
1394
1395
1396 return nMatchedDau;
1397
1398}
static const ParticleType Lambda
Lambda particle.
Definition Const.h:680
static const ChargedStable pion
charged pion particle
Definition Const.h:662
static const ChargedStable proton
proton particle
Definition Const.h:664
static const ParticleType Kshort
K^0_S particle.
Definition Const.h:678
static RelationVector< T > getRelationsWithObj(const TObject *object, const std::string &name="", const std::string &namedRelation="")
Get the relations between an object and other objects in a store array.
Definition DataStore.h:412
TH1F * m_h1_RecoTrack_dau0_phiMother_FW
histogram of RecoTrack daughter 0's mother's phi (forward region)
TH1F * m_h1_MC_dau1_Mother_cosAngle
histogram of MCParticle daughter 1's and mother's cos(opening-angle)
TH1F * m_h1_RecoTrack_dau1_costheta
histogram of RecoTrack daughter 1's cos(theta)
TH1F * m_h1_V0_pz
histogram of V0 mother's pz
bool m_geometricalAccettance
true to create output for the geometrical acceptance
TH1F * m_h1_V0_phi
histogram of V0 mother's phi
TH3F * m_h3_track_dau1
histogram of Track daughter 1's pt vs theta vs phi
TH1F * m_h1_RecoTrack_dau0_pz
histogram of RecoTrack daughter 0's pz
TH1F * m_h1_RecoTrack_dau0_phi_BW
histogram of RecoTrack daughter 0's phi (backward region)
TH1F * m_h1_RecoTrack_Mother_theta
histogram of RecoTrack mother's theta
TH1F * m_h1_track_dau0_phi_barrel
histogram of Track daughter 0's phi (barrel region)
TH1F * m_h1_RecoTrack_dau1_p
histogram of RecoTrack daughter 1's p
std::string m_TFRColName
name of the TFR dataobjects collection
TH1F * m_h1_track_dau1_phi_barrel
histogram of Track daughter 1's phi (barrel region)
TH2F * m_h2_RecoTrack_Mother_pVScostheta
histogram of RecoTrack mother's p vs cos(theta)
TH1F * m_h1_track_dau0_ptMother
histogram of Track daughter 0's mother's pt
static bool isK_Short(const MCParticle &the_mcParticle)
determine if the MCParticle is a K-short
~EffPlotsModule() override
Destructor.
TH1F * m_h1_MC_dau0_PDG
histogram of MCParticle daughter 0's PDG code
TH1F * m_h1_track_dau1_z0
histogram of Track daughter 1's z0
TH1F * m_h1_track_dau1_pt
histogram of Track daughter 1's pt
TH1F * m_h1_track_dau1_ptMother
histogram of Track daughter 1's mother's pt
TH1F * m_h1_MC_dau1_PDG
histogram of MCParticle daughter 1's PDG code
TH1F * m_h1_RecoTrack_dau0_phiMother_BW
histogram of RecoTrack daughter 0's mother's phi (backward region)
TH1F * m_h1_V0_pt
histogram of V0 mother's pt
TH1F * m_h1_track_dau0_RMother
histogram of Track daughter 0's RMother
TH2F * m_h2_V0_Mother_2D
histogram of V0 mother's pt vs theta
TH1F * m_h1_track_dau1_pz
histogram of Track daughter 1's pz
TH1F * m_h1_track_dau0_phiMother_barrel
histogram of Track daughter 0's mother's phi (barrel region)
TH1F * m_h1_track_dau0_costheta
histogram of Track daughter 0's cos(theta)
TH2F * m_h2_track_dau1_2DMother
histogram of Track daughter 1's mother's pt vs theta
TH1F * m_h1_MC_dau0_z0
histogram of MCParticle daughter 0's z0
TH1F * m_h1_RecoTrack_dau1_z0
histogram of RecoTrack daughter 1's z0
TH1F * m_h1_MC_dau1_ptMother
histogram of MCParticle daughter 1's mother's pt
void initialize() override
Initializer.
TH1F * m_h1_RecoTrack_dau1_phiMother_total
histogram of RecoTrack daughter 1's mother's phi
TH2F * m_h2_MC_dau1_2D_BP
histogram of MCParticle daughter 1's pt vs theta (beam pipe)
TH2F * m_h2_RecoTrack_Mother_2D_BP
histogram of RecoTrack mother's pt vs theta (beam pipe)
TH2F * m_h2_MC_dau1_pVScostheta
histogram of MCParticle daughter 1's p vs cos(theta)
TH1F * m_h1_V0_phi_barrel
histogram of V0 mother's phi (barrel region)
TH3F * m_h3_RecoTrack_Mother
histogram of RecoTrack mother's pt vs theta vs phi
TH1F * m_h1_track_dau0_pz
histogram of Track daughter 0's pz
TH1F * m_h1_MC_dau1_phi_BW
histogram of MCParticle daughter 1's phi (backward region)
TH1F * m_h1_RecoTrack_dau1_Mother_cosAngle
histogram of RecoTrack daughter 1's and mother's cos(opening-angle)
TH2F * m_h2_track_dau0_2D
histogram of Track daughter 0's pt vs theta
TH2F * m_h2_MC_Mother_pVScostheta
histogram of MCParticle mother's p vs cos(theta)
TH1F * m_h1_V0_phi_FW
histogram of V0 mother's phi (forward region)
TH1F * m_h1_track_dau0_phiMother_total
histogram of Track daughter 0's mother's phi
TH1F * m_h1_track_dau1_phi
histogram of Track daughter 1's phi
TH1F * m_h1_V0_RMother
histogram of V0 mother's RMother
TH1F * m_h1_track_dau0_theta
histogram of Track daughter 0's theta
TH1F * m_h1_MC_dau0_thetaMother
histogram of MCParticle daughter 0's mother's theta
TH1F * m_h1_MC_Mother_pt
histogram of MCParticle mother's pt
void event() override
This method is called for each event.
TH1F * m_h1_RecoTrack_dau1_phi
histogram of RecoTrack daughter 1's phi
TH2F * m_h2_V0_Mother_2D_BP
histogram of V0 mother's pt vs theta (beam pipe)
TH3F * m_h3_RecoTrack_dau1
histogram of RecoTrack daughter 1's pt vs theta vs phi
TH1F * m_h1_RecoTrack_dau1_phi_FW
histogram of RecoTrack daughter 1's phi (forward region)
TH1F * m_h1_RecoTrack_dau0_d0
list of histograms filled per RecoTracks found in the event
TH1F * m_h1_MC_Mother_phi
histogram of MCParticle mother's phi
TH1F * m_h1_V0_costheta
histogram of V0 mother's cos(theta)
TH1F * m_h1_MC_dau1_RMother
histogram of MCParticle daughter 1's RMother
TH1F * m_h1_track_dau1_Mother_cosAngle
histogram of Track daughter 1's and mother's cos(opening-angle)
TH1F * m_h1_MC_Mother_phi_FW
histogram of MCParticle mother's phi (forward region)
TH2F * m_h2_RecoTrack_dau1_pVScostheta
histogram of RecoTrack daughter 1's p vs cos(theta)
TH1F * m_h1_MC_dau0_phi
histogram of MCParticle daughter 0's phi
bool m_allHistograms
true to create all histograms
void endRun() override
This method is called if the current run ends.
TH2F * m_h2_track_dau0_pVScostheta
histogram of Track daughter 0's p vs cos(theta)
TH2F * m_h2_RecoTrack_dau0_2D_BP
histogram of RecoTrack daughter 0's pt vs theta (beam pipe)
TH1F * m_h1_RecoTrack_dau1_phi_BW
histogram of RecoTrack daughter 1's phi (backward region)
TH1F * m_h1_MC_dau1_thetaMother
histogram of MCParticle daughter 1's mother's theta
TH1F * m_h1_RecoTrack_dau0_phiMother_total
histogram of RecoTrack daughter 0's mother's phi
TH1F * m_h1_RecoTrack_Mother_phi_barrel
histogram of RecoTrack mother's phi (barrel region)
TH1F * m_h1_MC_dau0_pt
histogram of MCParticle daughter 0's pt
TH1F * m_h1_RecoTrack_dau0_ptMother
histogram of RecoTrack daughter 0's mother's pt
TH1F * m_h1_RecoTrack_dau0_phi_FW
histogram of RecoTrack daughter 0's phi (forward region)
void terminate() override
This method is called at the end of the event processing.
TH1F * m_h1_MC_dau0_costheta
histogram of MCParticle daughter 0's cos(theta)
TList * m_histoList_check
list of histograms of MCParticle mother and daughters
TH1F * m_h1_MC_dau1_theta
histogram of MCParticle daughter 1's theta
TH1F * m_h1_track_dau1_p
histogram of Track daughter 1's p
TH1F * m_h1_MC_Mother_PDG
histogram of MCParticle mother's PDG code
TH1F * m_h1_MC_dau0_Mother_cosAngle
histogram of MCParticle daughter 0's and mother's cos(opening-angle)
TH1F * m_h1_RecoTrack_dau0_theta
histogram of RecoTrack daughter 0's theta
std::string m_TrackColName
name of the Tracks dataobjects collection
TH3F * m_h3_MC_dau0
histogram of MCParticle daughter 0's pt vs theta vs phi
TH1F * m_h1_track_dau0_pt
histogram of Track daughter 0's pt
TH2F * m_h2_MC_Mother_2D_BP
histogram of MCParticle mother's pt vs theta (beam pipe)
TH1F * m_h1_MC_dau1_p
histogram of MCParticle daughter 1's p
TH1F * m_h1_track_dau0_Mother_cosAngle
histogram of Track daughter 0's and mother's cos(opening-angle)
TH1F * m_h1_track_dau0_z0
histogram of Track daughter 0's z0
TH1F * m_h1_MC_dau0_RMother
histogram of MCParticle daughter 0's RMother
TH1F * m_h1_V0_phi_BW
histogram of V0 mother's phi (backward region)
TH1F * m_h1_RecoTrack_dau1_pz
histogram of RecoTrack daughter 1's pz
TList * m_histoList_Efficiencies
list of histograms of efficiencies
TH3F * m_h3_V0
histogram of V0 mother's pt vs theta vs phi
TH1F * m_h1_RecoTrack_dau1_ptMother
histogram of RecoTrack daughter 1's mother's pt
TH1F * m_h1_MC_dau1_pt
histogram of MCParticle daughter 1's pt
TH1F * m_h1_track_dau0_p
histogram of Track daughter 0's p
TH2F * m_h2_RecoTrack_Mother_2D
histogram of RecoTrack mother's pt vs theta
static int nMatchedDaughters(const MCParticle &the_mcParticle)
get the number of matched daughters of the MCParticle
std::string m_V0sType
type (as a string) of the selected V0
TH1F * m_h1_MC_Mother_p
histogram of MCParticle mother's p
TH2F * m_h2_MC_dau1_2D
histogram of MCParticle daughter 1's pt vs theta
TH3F * m_h3_MC_dau1
histogram of MCParticle daughter 1's pt vs theta vs phi
TH2F * m_h2_track_dau1_pVScostheta
histogram of Track daughter 1's p vs cos(theta)
TH1F * m_h1_RecoTrack_Mother_pz
histogram of RecoTrack mother's pz
TH1F * m_h1_MC_Mother_phi_BW
histogram of MCParticle mother's phi (backward region)
TH1F * m_h1_V0_p
histogram of V0 mother's p
TH1F * m_h1_RecoTrack_dau0_thetaMother
histogram of RecoTrack daughter 0's mother's theta
std::string m_V0sName
name of the V0s dataobjects collection
TList * m_histoList_GA
list of histograms of geometric acceptance
TH1F * m_h1_MC_dau0_phi_BW
histogram of MCParticle daughter 0's phi (backward region)
TH1F * m_h1_RecoTrack_dau0_RMother
histogram of RecoTrack daughter 0's RMother
TH2F * m_h2_track_dau1_2D
histogram of Track daughter 1's pt vs theta
TH1F * m_h1_RecoTrack_Mother_phi_FW
histogram of RecoTrack mother's phi (forward region)
void beginRun() override
Called when entering a new run.
TH1F * m_h1_RecoTrack_Mother_costheta
histogram of RecoTrack mother's cos(theta)
TH1F * m_h1_RecoTrack_dau0_z0
histogram of RecoTrack daughter 0's z0
TH1F * m_h1_RecoTrack_Mother_RMother
histogram of RecoTrack mother's RMother
TH2F * m_h2_track_dau0_2D_BP
histogram of Track daughter 0's pt vs theta (beam pipe)
TH1F * m_h1_MC_dau0_theta
histogram of MCParticle daughter 0's theta
TH1F * m_h1_MC_dau1_phiMother_FW
histogram of MCParticle daughter 1's mother's phi (forward region)
TH2F * m_h2_RecoTrack_dau0_2DMother
histogram of RecoTrack daughter 0's mother's pt vs theta
TH1F * m_h1_RecoTrack_dau1_phi_barrel
histogram of RecoTrack daughter 1's phi (barrel region)
TH1F * m_h1_RecoTrack_dau1_theta
histogram of RecoTrack daughter 1's theta
TH2F * m_h2_RecoTrack_dau1_2D
histogram of RecoTrack daughter 1's pt vs theta
TH3F * m_h3_RecoTrack_dau0
histogram of RecoTrack daughter 0's pt vs theta vs phi
TH2F * m_h2_RecoTrack_dau0_2D
histogram of RecoTrack daughter 0's pt vs theta
MCParticle * m_MCDaughter0
daughter 0 of a decayed MCParticle
TH1F * m_h1_MC_dau0_phiMother_barrel
histogram of MCParticle daughter 0's mother's phi (barrel region)
std::string m_RecoTracksName
name of the RecoTracks dataobjects collection
TH1F * m_h1_MC_dau0_ptMother
histogram of MCParticle daughter 0's mother's pt
TH1F * m_h1_track_dau0_d0
list of histograms filled per Tracks/V0 found in the event
TH1F * m_h1_RecoTrack_dau0_phiMother_barrel
histogram of RecoTrack daughter 0's mother's phi (barrel region)
TH1F * m_h1_track_dau1_costheta
histogram of Track daughter 1's cos(theta)
TH2F * m_h2_RecoTrack_dau1_2D_BP
histogram of RecoTrack daughter 1's pt vs theta (beam pipe)
TH1F * m_h1_MC_dau1_phiMother_BW
histogram of MCParticle daughter 1's mother's phi (backward region)
TList * m_histoList_MCParticles
list of histograms for MCParticles
TH1F * m_h1_MC_dau1_d0
histogram of MCParticle daughter 1's d0
TH1F * m_h1_MC_dau1_phi_FW
histogram of MCParticle daughter 1's phi (forward region)
TH1F * m_h1_MC_dau1_phiMother_total
histogram of MCParticle daughter 1's mother's phi
TH2F * m_h2_MC_dau0_2DMother
histogram of MCParticle daughter 0's mother's pt vs theta
TH1F * m_h1_MC_dau0_phi_FW
histogram of MCParticle daughter 0's phi (forward region)
EffPlotsModule()
Constructor.
std::string m_MCParticlesName
user-defined parameters
TH1F * m_h1_track_dau0_phi_BW
histogram of Track daughter 0's phi (backward region)
TH1F * m_h1_MC_dau0_phiMother_BW
histogram of MCParticle daughter 0's mother's phi (backward region)
TH2F * m_h2_track_dau0_2DMother
histogram of Track daughter 0's mother's pt vs theta
TH1F * m_h1_MC_dau0_pz
histogram of MCParticle daughter 0's pz
TH1F * m_h1_track_dau0_phiMother_FW
histogram of Track daughter 0's mother's phi (forward region)
TH1F * m_h1_MC_Mother_phi_barrel
histogram of MCParticle mother's phi (barrel region)
static bool isLambda0(const MCParticle &the_mcParticle)
determine if the MCParticle is a Lambda0
TH1F * m_h1_MC_dau1_costheta
histogram of MCParticle daughter 1's cos(theta)
TH2F * m_h2_RecoTrack_dau1_2DMother
histogram of RecoTrack daughter 1's mother's pt vs theta
TH1F * m_h1_track_dau1_theta
histogram of Track daughter 1's theta
TH3F * m_h3_MC_Mother
histogram of MCParticle mother's pt vs theta vs phi
TH1F * m_h1_MC_dau1_phi_barrel
histogram of MCParticle daughter 1's phi (barrel region)
TH1F * m_h1_RecoTrack_Mother_pt
histogram of RecoTrack mother's pt
TH1F * m_h1_RecoTrack_dau1_phiMother_FW
histogram of RecoTrack daughter 1's mother's phi (forward region)
TH3F * m_h3_track_dau0
histogram of Track daughter 0's pt vs theta vs phi
TH1F * m_h1_track_dau1_phi_FW
histogram of Track daughter 1's phi (forward region)
TH1F * m_h1_RecoTrack_dau1_phiMother_BW
histogram of RecoTrack daughter 1's mother's phi (backward region)
TH2F * m_h2_MC_dau0_pVScostheta
histogram of MCParticle daughter 0's p vs cos(theta)
TH1F * m_h1_RecoTrack_dau0_phi
histogram of RecoTrack daughter 0's phi
TH1F * m_h1_RecoTrack_dau0_costheta
histogram of RecoTrack daughter 0's cos(theta)
TH2F * m_h2_MC_dau0_2D
histogram of MCParticle daughter 0's pt vs theta
TH1F * m_h1_MC_dau0_p
histogram of MCParticle daughter 0's p
TH1F * m_h1_RecoTrack_dau1_d0
histogram of RecoTrack daughter 1's d0
TH2F * m_h2_MC_dau1_2DMother
histogram of MCParticle daughter 1's mother's pt vs theta
TH1F * m_h1_RecoTrack_dau1_thetaMother
histogram of RecoTrack daughter 1's mother's theta
TH1F * m_h1_MC_dau0_phiMother_FW
histogram of MCParticle daughter 0's mother's phi (forward region)
TH2F * m_h2_V0_Mother_pVScostheta
histogram of V0 mother's p vs cos(theta)
TH1F * m_h1_MC_Mother_RMother
histogram of MCParticle mother's RMother
TH1F * m_h1_track_dau1_phiMother_FW
histogram of Track daughter 1's mother's phi (forward region)
TH1F * m_h1_RecoTrack_Mother_phi_BW
histogram of RecoTrack mother's phi (backward region)
TH1F * m_h1_MC_Mother_pz
histogram of MCParticle mother's pz
TH1F * m_h1_track_dau0_thetaMother
histogram of Track daughter 0's mother's theta
TH1F * m_h1_MC_dau1_phiMother_barrel
histogram of MCParticle daughter 1's mother's phi (barrel region)
TH1F * m_h1_MC_dau1_z0
histogram of MCParticle daughter 1's z0
TH1F * m_h1_V0_theta
histogram of V0 mother's theta
TH1F * m_h1_RecoTrack_dau1_RMother
histogram of RecoTrack daughter 1's RMother
TH1F * m_h1_track_dau1_RMother
histogram of Track daughter 1's RMother
TList * m_histoList_RecoTracks
list of histograms for RecoTracks
TH1F * m_h1_MC_dau0_phiMother_total
histogram of MCParticle daughter 0's mother's phi
TH1F * m_h1_MC_Mother_costheta
histogram of MCParticle mother's cos(theta)
TH1F * m_h1_RecoTrack_Mother_phi
histogram of RecoTrack mother's phi
TH1F * m_h1_track_dau0_phi
histogram of Track daughter 0's phi
TH1F * m_h1_RecoTrack_dau1_pt
histogram of RecoTrack daughter 1's pt
TH1F * m_h1_track_dau1_phiMother_total
histogram of Track daughter 1's mother's phi
TH1F * m_h1_RecoTrack_dau0_p
histogram of RecoTrack daughter 0's p
TH1F * m_h1_RecoTrack_dau0_Mother_cosAngle
histogram of RecoTrack daughter 0's and mother's cos(opening-angle)
TH1F * m_h1_track_dau0_phiMother_BW
histogram of Track daughter 0's mother's phi (backward region)
TH1F * m_h1_MC_dau0_d0
list of histograms filled per MCParticle found in the event
std::string m_MCRecoTracksName
name of the MCRecoTracks dataobjects collection
StoreArray< MCParticle > m_MCParticles
MCParticle StoreArray.
TH1F * m_h1_RecoTrack_dau0_pt
histogram of RecoTrack daughter 0's pt
TH2F * m_h2_MC_dau0_2D_BP
histogram of MCParticle daughter 0's pt vs theta (beam pipe)
TH1F * m_h1_track_dau1_phiMother_barrel
histogram of Track daughter 1's mother's phi (barrel region)
TH1F * m_h1_RecoTrack_dau0_phi_barrel
histogram of RecoTrack daughter 0's phi (barrel region)
TH1F * m_h1_MC_Mother_theta
histogram of MCParticle mother's theta
TH1F * m_h1_track_dau1_phiMother_BW
histogram of Track daughter 1's mother's phi (backward region)
TH2F * m_h2_RecoTrack_dau0_pVScostheta
histogram of RecoTrack daughter 0's p vs cos(theta)
MCParticle * m_MCDaughter1
daughter 1 of a decayed MCParticle
TList * m_histoList_Tracks
list of histograms for Tracks
TH1F * m_h1_RecoTrack_dau1_phiMother_barrel
histogram of RecoTrack daughter 1's mother's phi (barrel region)
TH2F * m_h2_track_dau1_2D_BP
histogram of Track daughter 1's pt vs theta (beam pipe)
TH1F * m_h1_MC_dau1_phi
histogram of MCParticle daughter 1's phi
TH2F * m_h2_MC_Mother_2D
histogram of MCParticle mother's pt vs theta
TH1F * m_h1_track_dau1_d0
histogram of Track daughter 1's d0
TH1F * m_h1_track_dau0_phi_FW
histogram of Track daughter 0's phi (forward region)
TH1F * m_h1_MC_dau0_phi_barrel
histogram of MCParticle daughter 0's phi (barrel region)
TH1F * m_h1_MC_dau1_pz
histogram of MCParticle daughter 1's pz
TH1F * m_h1_track_dau1_phi_BW
histogram of Track daughter 1's phi (backward region)
TH1F * m_h1_RecoTrack_Mother_p
histogram of RecoTrack mother's p
TH1F * m_h1_track_dau1_thetaMother
histogram of Track daughter 1's mother's theta
This struct is used by the TrackingPerformanceEvaluation Module to save information of reconstructed ...
double getPt()
Getter for transverse momentum.
double getPtheta()
Getter for theta of momentum vector.
double getZ0()
Getter for Z0.
double getPz()
Getter for z component of momentum.
double getPphi()
Getter for phi of momentum vector.
double getD0()
Getter for D0.
double getP()
Getter for magnitut of momentum.
A Class to store the Monte Carlo particle information.
Definition MCParticle.h:32
std::vector< Belle2::MCParticle * > getDaughters() const
Get vector of all daughter particles, empty vector if none.
Definition MCParticle.cc:50
int getPDG() const
Return PDG code of particle.
Definition MCParticle.h:101
void setDescription(const std::string &description)
Sets the description of the module.
Definition Module.cc:214
Module()
Constructor.
Definition Module.cc:30
TH1F * createHistogram1D(const char *name, const char *title, Int_t nbins, Double_t min, Double_t max, const char *xtitle, TList *histoList=nullptr)
Create a 1D histogram and add it to the TList of 1D-histograms.
TH2F * effPlot2D(TH2F *h2_den, TH2F *h2_num, const char *name, const char *title, bool geo_accettance, TList *histoList=nullptr)
Create a 2D efficiency histogram and add it to the TList of 2D-histograms.
TH1F * effPlot1D(TH1F *h1_den, TH1F *h1_num, const char *name, const char *title, bool geo_accettance, TList *histoList=nullptr)
Create a 1D efficiency histogram and add it to the TList of 1D-histograms.
TH1 * duplicateHistogram(const char *newname, const char *newtitle, TH1 *h, TList *histoList=nullptr)
Make a copy of a 1D histogram and add it to the TList of 1D-histograms.
TH1F * V0FinderEff(TH1F *h1_dau0, TH1F *h1_dau1, TH1F *h1_Mother, const char *name, const char *title, TList *histoList=nullptr)
Create a 1D efficiency histogram for V0 finding and add it to the TList of 1D-histograms.
TList * m_histoList
List of performance-evaluation histograms.
TH1F * geoAcc1D(TH1F *h1_den, TH1F *h1_num, const char *name, const char *title, TList *histoList=nullptr)
Create a 1D efficiency histogram for geometric acceptance and add it to the TList of 1D-histograms.
TH3F * createHistogram3D(const char *name, const char *title, Int_t nbinsX, Double_t minX, Double_t maxX, const char *titleX, Int_t nbinsY, Double_t minY, Double_t maxY, const char *titleY, Int_t nbinsZ, Double_t minZ, Double_t maxZ, const char *titleZ, TList *histoList=nullptr)
Create a 3D histogram and add it to the TList of 3D-histograms.
TH2F * createHistogram2D(const char *name, const char *title, Int_t nbinsX, Double_t minX, Double_t maxX, const char *titleX, Int_t nbinsY, Double_t minY, Double_t maxY, const char *titleY, TList *histoList=nullptr)
Create a 2D histogram and add it to the TList of 2D-histograms.
TH2F * geoAcc2D(TH2F *h2_den, TH2F *h2_num, const char *name, const char *title, TList *histoList=nullptr)
Create a 2D efficiency histogram for geometric acceptance and add it to the TList of 2D-histograms.
TFile * m_rootFilePtr
pointer at root file used for storing histograms
Class for type safe access to objects that are referred to in relations.
size_t size() const
Get number of relations.
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.
Accessor to arrays stored in the data store.
Definition StoreArray.h:113
Class that bundles various TrackFitResults.
Definition Track.h:25
static const double T
[tesla]
Definition Unit.h:120
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition Module.h:559
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition Module.h:649
static void getField(const double *pos, double *field)
return the magnetic field at a given position.
double sqrt(double a)
sqrt for double
Definition beamHelpers.h:28
Abstract base class for different kinds of events.