9#include <tracking/modules/trackingPerformanceEvaluation/EffPlotsModule.h>
11#include <framework/datastore/RelationVector.h>
13#include <framework/geometry/BFieldManager.h>
15#include <framework/gearbox/Const.h>
17#include <tracking/dataobjects/MCParticleInfo.h>
18#include <tracking/dataobjects/RecoTrack.h>
19#include <tracking/dataobjects/V0ValidationVertex.h>
21#include <root/TObject.h>
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.");
40 std::string(
"EffPlots_output.root"));
41 addParam(
"V0sName",
m_V0sName,
"Name of V0 collection.", std::string(
"V0ValidationVertexs"));
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(
""));
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));
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};
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;
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;
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;
115 25, bins_pt_new,
"p_{t} (GeV/c)",
116 10, bins_theta,
"#theta",
148 10, bins_theta,
"#theta",
151 10, bins_theta,
"#theta",
155 10, bins_theta,
"#theta_{mother}",
171 25, bins_pt_new,
"p_{t} (GeV/c)",
172 10, bins_theta,
"#theta",
205 10, bins_theta,
"#theta",
209 10, bins_theta,
"#theta",
213 10, bins_theta,
"#theta_{mother}",
228 25, bins_pt_new,
"p_{t} (GeV/c)",
229 10, bins_theta,
"#theta",
247 10, bins_theta,
"#theta",
251 10, bins_theta,
"#theta",
297 "dau_{0}, #phi_{mother}, barrel",
349 "dau_{1}, #phi_{mother}, barrel",
421 "#alpha_{mother,dau_{0}}",
434 "dau_{0}, #phi_{mother}",
437 "dau_{0}, #phi_{mother}, BW",
440 "dau_{0}, #phi_{mother}, barrel",
443 "dau_{0}, #phi_{mother}, FW",
458 "p_{T,mother} VS #theta_{mother}, dau_{0}",
498 "dau_{1}, #phi_{mother}",
501 "dau_{1}, #phi_{mother}, BW",
504 "dau_{1}, #phi_{mother}, barrel",
507 "dau_{1}, #phi_{mother}, FW",
522 "p_{T,mother} VS #theta_{mother}, dau_{1}",
562 "p VS cos(#theta), mother",
577 B2DEBUG(29,
"+++++ 1. loop on MCParticles");
588 std::vector< MCParticle* > MCPart_dau = mcParticle.getDaughters();
590 if (abs(MCPart_dau[0]->getPDG()) ==
Const::pion.getPDGCode() && abs(MCPart_dau[1]->getPDG()) ==
Const::proton.getPDGCode()) {
593 }
else if (abs(MCPart_dau[0]->getPDG()) ==
Const::proton.getPDGCode() && abs(MCPart_dau[1]->getPDG()) ==
Const::pion.getPDGCode()) {
596 }
else B2INFO(
"Lambda daughters != pi & p");
603 std::vector< MCParticle* > MCPart_dau = mcParticle.getDaughters();
605 if (MCPart_dau[0]->getPDG() ==
Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() == -
Const::pion.getPDGCode()) {
608 }
else if (MCPart_dau[0]->getPDG() == -
Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() ==
Const::pion.getPDGCode()) {
611 }
else B2INFO(
"Ks daughters != pi+ & pi-");
618 const ROOT::Math::XYZVector& MC_vtx = mcParticle.getDecayVertex();
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());
684 if (MC_transDist < 1.) {
691 if (MC_theta > (120 * TMath::Pi() / 180.)) {
697 }
else if (MC_theta < (30. * TMath::Pi() / 180.)) {
721 if (MCRecoTracks_MCdau0.
size() > 0) {
734 mcParticle.getMomentum().R() /
745 if (MC_transDist < 1.) {
760 if (MCRecoTracks_MCdau1.
size() > 0) {
777 if (MC_theta > (120 * TMath::Pi() / 180.))
779 else if (MC_theta < (30. * TMath::Pi() / 180.))
786 if (MCRecoTracks_MCdau1.
size() > 0) {
799 mcParticle.getMomentum().R() /
810 if (MC_transDist < 1.) {
832 if (Track_dau0ToMCParticle) {
855 if (MC_transDist < 1.)
858 if (MC_theta > (120 * TMath::Pi() / 180.)) {
861 }
else if (MC_theta < (30 * TMath::Pi() / 180.)) {
870 if (Track_dau1ToMCParticle) {
893 if (MC_transDist < 1.)
896 if (MC_theta > (120 * TMath::Pi() / 180.)) {
899 }
else if (MC_theta < (30 * TMath::Pi() / 180.)) {
911 if (nMatchedDau != 2)
915 int pdgCode = mcParticle.getPDG();
916 B2DEBUG(29,
"MCParticle has PDG code " << pdgCode);
921 if (V0s_toMCParticle.
size() > 0) {
936 if (MC_theta > (120 * TMath::Pi() / 180.))
939 else if (MC_theta < (30 * TMath::Pi() / 180.))
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);
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);
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);
978 B2INFO(
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
979 B2INFO(
"~ V0 Finding Performance Evaluation ~ SHORT SUMMARY ~");
981 B2INFO(
" + overall, normalized to MC particles (_noGeoAcc):");
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 <<
")% ");
987 B2INFO(
" + overall, normalized to RecoTracks(_withGeoAcc):");
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(
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
1005 if (h_eff_dau0_d0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_d0");
1009 if (h_eff_dau0_z0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_z0");
1013 if (h_eff_dau0_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_RMother");
1017 if (h_eff_dau0_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_thetaMother");
1021 if (h_eff_dau0_phiMother_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_total");
1025 if (h_eff_dau0_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_BW");
1030 if (h_eff_dau0_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_barrel");
1034 if (h_eff_dau0_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_FW");
1038 if (h_eff_dau0_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_total");
1042 if (h_eff_dau0_phi_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_BW");
1046 if (h_eff_dau0_phi_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_barrel");
1050 if (h_eff_dau0_phi_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_FW");
1054 if (h2_effMap_dau0_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_dau0_pVScostheta");
1059 if (h_eff_dau1_d0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_d0");
1063 if (h_eff_dau1_z0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_z0");
1067 if (h_eff_dau1_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_RMother");
1071 if (h_eff_dau1_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_thetaMother");
1075 if (h_eff_dau1_phiMother_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_total");
1079 if (h_eff_dau1_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_BW");
1083 if (h_eff_dau1_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_barrel");
1087 if (h_eff_dau1_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_FW");
1091 if (h_eff_dau1_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_total");
1095 if (h_eff_dau1_phi_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_BW");
1099 if (h_eff_dau1_phi_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_barrel");
1103 if (h_eff_dau1_phi_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_FW");
1107 if (h2_effMap_dau1_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_dau1_pVScostheta");
1112 if (h_eff_Mother_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_RMother");
1116 if (h_eff_Mother_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_theta");
1120 if (h_eff_Mother_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phi_total");
1124 if (h_eff_Mother_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_BW");
1128 if (h_eff_Mother_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_barrel");
1132 if (h_eff_Mother_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_FW");
1137 if (h2_effMap_Mother_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_Mother_pVScostheta");
1140 TH1F* h_eff_V0Finder_RMother_withGeoAcc =
V0FinderEff(h_eff_dau0_RMother, h_eff_dau1_RMother, h_eff_Mother_RMother,
1142 if (h_eff_V0Finder_RMother_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_RMother_withGeoAcc");
1144 TH1F* h_eff_V0Finder_theta_withGeoAcc =
V0FinderEff(h_eff_dau0_thetaMother, h_eff_dau1_thetaMother, h_eff_Mother_theta,
1146 if (h_eff_V0Finder_theta_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_theta_withGeoAcc");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
1202 if (h_dau1_geoAcc_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_theta");
1206 if (h_dau1_geoAcc_phi->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_phi");
1210 if (h_dau1_geoAcc_pt->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_pt");
1214 if (h_dau1_geoAcc_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_thetaMother");
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");
1222 if (h_dau1_geoAcc_ptMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_ptMother");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
1290 while ((obj = nextHMC()))
1291 obj->Write(
"", BIT(2), 0);
1295 while ((obj = nextHTC()))
1296 obj->Write(
"", BIT(2), 0);
1300 while ((obj = nextHT()))
1301 obj->Write(
"", BIT(2), 0);
1305 while ((obj = nextHCheck()))
1306 obj->Write(
"", BIT(2), 0);
1311 while ((obj = nextHEff()))
1312 obj->Write(
"", BIT(2), 0);
1317 while ((obj = nextHGA()))
1318 obj->Write(
"", BIT(2), 0);
1329 bool isK_S0 =
false;
1333 bool twoChargedProngs =
false;
1340 twoChargedProngs =
true;
1342 return (isK_S0 && twoChargedProngs);
1349 bool isLambda =
false;
1353 bool twoChargedProngs =
false;
1364 twoChargedProngs =
true;
1366 return (isLambda && twoChargedProngs);
1373 int nMatchedDau = 0;
1375 std::vector< MCParticle* > MCPart_dau = the_mcParticle.
getDaughters();
1378 bool second =
false;
1381 if (Tracks_fromMCParticle_0.
size() > 0)
1385 if (Tracks_fromMCParticle_1.
size() > 0)
static const ParticleType Lambda
Lambda particle.
static const ChargedStable pion
charged pion particle
static const ChargedStable proton
proton particle
static const ParticleType Kshort
K^0_S particle.
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.
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.
std::vector< Belle2::MCParticle * > getDaughters() const
Get vector of all daughter particles, empty vector if none.
int getPDG() const
Return PDG code of particle.
void setDescription(const std::string &description)
Sets the description of the module.
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.
Class that bundles various TrackFitResults.
static const double T
[tesla]
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
static void getField(const double *pos, double *field)
return the magnetic field at a given position.
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.