9 #include <tracking/modules/trackingPerformanceEvaluation/EffPlotsModule.h>
11 #include <framework/datastore/StoreArray.h>
12 #include <framework/datastore/RelationVector.h>
14 #include <framework/geometry/BFieldManager.h>
16 #include <framework/gearbox/Const.h>
18 #include <tracking/dataobjects/MCParticleInfo.h>
19 #include <tracking/dataobjects/RecoTrack.h>
20 #include <tracking/dataobjects/V0ValidationVertex.h>
22 #include <root/TObject.h>
24 #include <boost/foreach.hpp>
35 EffPlotsModule::EffPlotsModule() :
39 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.");
41 addParam(
"outputFileName", m_rootFileName,
"Name of output root file.",
42 std::string(
"EffPlots_output.root"));
43 addParam(
"V0sName", m_V0sName,
"Name of V0 collection.", std::string(
"V0ValidationVertexs"));
44 addParam(
"MCParticlesName", m_MCParticlesName,
"Name of MC Particle collection.", std::string(
""));
45 addParam(
"TrackColName", m_TrackColName,
46 "Belle2::Track collection name (input). Note that the V0s use "
47 "pointers indices into these arrays, so all hell may break loose "
48 "if you change this.", std::string(
""));
49 addParam(
"RecoTracksName", m_RecoTracksName,
"Name of RecoTrack collection.", std::string(
"RecoTracks"));
50 addParam(
"MCRecoTracksName", m_MCRecoTracksName,
"Name of MCRecoTrack collection.", std::string(
"MCRecoTracks"));
52 addParam(
"V0sType", m_V0sType,
"Type of V0 to perform plots. Default is Lambda0, alternatively Ks", std::string(
"Lambda0"));
53 addParam(
"AllHistograms", m_allHistograms,
"Create output for all histograms, not only efficiencies.",
bool(
false));
54 addParam(
"GeometricalAccettance", m_geometricalAccettance,
"Create output for geometrical accettance.",
bool(
false));
57 EffPlotsModule::~EffPlotsModule()
91 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};
93 Double_t bins_theta[10 + 1];
94 Double_t width_theta = TMath::Pi() / 10;
95 for (
unsigned int bin = 0; bin < 10 + 1; bin++)
96 bins_theta[bin] = bin * width_theta;
98 Double_t bins_phi[14 + 1];
99 Double_t width_phi = 2 * TMath::Pi() / 14;
100 for (
unsigned int bin = 0; bin < 14 + 1; bin++)
101 bins_phi[bin] = - TMath::Pi() + bin * width_phi;
103 Double_t bins_costheta[20 + 1];
104 Double_t width_cosTheta = 2. / 20;
105 for (
unsigned int bin1 = 0; bin1 < 20 + 1; bin1++)
106 bins_costheta[bin1] = - 1 + bin1 * width_cosTheta;
119 25, bins_pt_new,
"p_{t} (GeV/c)",
120 10, bins_theta,
"#theta",
152 10, bins_theta,
"#theta",
155 10, bins_theta,
"#theta",
159 10, bins_theta,
"#theta_{mother}",
175 25, bins_pt_new,
"p_{t} (GeV/c)",
176 10, bins_theta,
"#theta",
209 10, bins_theta,
"#theta",
213 10, bins_theta,
"#theta",
217 10, bins_theta,
"#theta_{mother}",
232 25, bins_pt_new,
"p_{t} (GeV/c)",
233 10, bins_theta,
"#theta",
251 10, bins_theta,
"#theta",
255 10, bins_theta,
"#theta",
523 B2DEBUG(99,
"+++++ 1. loop on MCParticles");
524 BOOST_FOREACH(
MCParticle & mcParticle, mcParticles) {
534 std::vector< MCParticle* > MCPart_dau = mcParticle.
getDaughters();
536 if (abs(MCPart_dau[0]->getPDG()) ==
Const::pion.getPDGCode() && abs(MCPart_dau[1]->getPDG()) ==
Const::proton.getPDGCode()) {
539 }
else if (abs(MCPart_dau[0]->getPDG()) ==
Const::proton.getPDGCode() && abs(MCPart_dau[1]->getPDG()) ==
Const::pion.getPDGCode()) {
542 }
else B2INFO(
"Lambda daughters != pi & p");
549 std::vector< MCParticle* > MCPart_dau = mcParticle.
getDaughters();
551 if (MCPart_dau[0]->getPDG() ==
Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() == -
Const::pion.getPDGCode()) {
554 }
else if (MCPart_dau[0]->getPDG() == -
Const::pion.getPDGCode() && MCPart_dau[1]->getPDG() ==
Const::pion.getPDGCode()) {
557 }
else B2INFO(
"Ks daughters != pi+ & pi-");
564 TVector3 MC_prodvtx = mcParticle.
getVertex();
566 TVector3 MC_FL = MC_vtx - MC_prodvtx;
568 float MC_transDist = sqrt(MC_vtx.X() * MC_vtx.X() + MC_vtx.Y() * MC_vtx.Y());
573 float MC_costheta = mcParticle.
getMomentum().CosTheta();
632 if (MC_transDist < 1.) {
639 if (MC_theta > (120 * TMath::Pi() / 180.)) {
645 }
else if (MC_theta < (30. * TMath::Pi() / 180.)) {
669 if (MCRecoTracks_MCdau0.
size() > 0) {
691 if (MC_transDist < 1.) {
705 if (MCRecoTracks_MCdau1.
size() > 0) {
722 if (MC_theta > (120 * TMath::Pi() / 180.))
724 else if (MC_theta < (30. * TMath::Pi() / 180.))
731 if (MCRecoTracks_MCdau1.
size() > 0) {
753 if (MC_transDist < 1.) {
774 if (Track_dau0ToMCParticle) {
797 if (MC_transDist < 1.)
800 if (MC_theta > (120 * TMath::Pi() / 180.)) {
803 }
else if (MC_theta < (30 * TMath::Pi() / 180.)) {
812 if (Track_dau1ToMCParticle) {
835 if (MC_transDist < 1.)
838 if (MC_theta > (120 * TMath::Pi() / 180.)) {
841 }
else if (MC_theta < (30 * TMath::Pi() / 180.)) {
853 if (nMatchedDau != 2)
856 int pdgCode = mcParticle.
getPDG();
857 B2DEBUG(99,
"MCParticle has PDG code " << pdgCode);
860 DataStore::getRelationsWithObj<V0ValidationVertex>(&mcParticle,
m_V0sName);
862 if (V0s_toMCParticle.
size() > 0) {
877 if (MC_theta > (120 * TMath::Pi() / 180.))
880 else if (MC_theta < (30 * TMath::Pi() / 180.))
894 double eff_dau0_noGA = track_dau0 / MC_dau0;
895 double effErr_dau0_noGA = sqrt(eff_dau0_noGA * (1 - eff_dau0_noGA)) / sqrt(MC_dau0);
896 double eff_dau0_withGA = track_dau0 / RecoTrack_dau0;
897 double effErr_dau0_withGA = sqrt(eff_dau0_withGA * (1 - eff_dau0_withGA)) / sqrt(RecoTrack_dau0);
902 double eff_dau1_noGA = track_dau1 / MC_dau1;
903 double effErr_dau1_noGA = sqrt(eff_dau1_noGA * (1 - eff_dau1_noGA)) / sqrt(MC_dau1);
904 double eff_dau1_withGA = track_dau1 / RecoTrack_dau1;
905 double effErr_dau1_withGA = sqrt(eff_dau1_withGA * (1 - eff_dau1_withGA)) / sqrt(RecoTrack_dau1);
910 double eff_Mother_noGA = track_Mother / MC_Mother;
911 double effErr_Mother_noGA = sqrt(eff_Mother_noGA * (1 - eff_Mother_noGA)) / sqrt(MC_Mother);
912 double eff_Mother_withGA = track_Mother / RecoTrack_Mother;
913 double effErr_Mother_withGA = sqrt(eff_Mother_withGA * (1 - eff_Mother_withGA)) / sqrt(RecoTrack_Mother);
919 B2INFO(
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
920 B2INFO(
"~ V0 Finding Performance Evaluation ~ SHORT SUMMARY ~");
922 B2INFO(
" + overall, normalized to MC particles (_noGeoAcc):");
924 B2INFO(
" efficiency dau0 = (" << eff_dau0_noGA * 100 <<
" +/- " << effErr_dau0_noGA * 100 <<
")% ");
925 B2INFO(
" efficiency dau1 = (" << eff_dau1_noGA * 100 <<
" +/- " << effErr_dau1_noGA * 100 <<
")% ");
926 B2INFO(
" efficiency Mother = (" << eff_Mother_noGA * 100 <<
" +/- " << effErr_Mother_noGA * 100 <<
")% ");
928 B2INFO(
" + overall, normalized to RecoTracks(_withGeoAcc):");
930 B2INFO(
" efficiency dau0 = (" << eff_dau0_withGA * 100 <<
" +/- " << effErr_dau0_withGA * 100 <<
")% ");
931 B2INFO(
" efficiency dau1 = (" << eff_dau1_withGA * 100 <<
" +/- " << effErr_dau1_withGA * 100 <<
")% ");
932 B2INFO(
" efficiency Mother = (" << eff_Mother_withGA * 100 <<
" +/- " << effErr_Mother_withGA * 100 <<
")% ");
933 B2INFO(
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
946 if (h_eff_dau0_d0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_d0");
950 if (h_eff_dau0_z0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_z0");
954 if (h_eff_dau0_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_RMother");
958 if (h_eff_dau0_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_thetaMother");
962 if (h_eff_dau0_phiMother_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_total");
966 if (h_eff_dau0_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_BW");
971 if (h_eff_dau0_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_barrel");
975 if (h_eff_dau0_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phiMother_FW");
979 if (h_eff_dau0_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_total");
983 if (h_eff_dau0_phi_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_BW");
987 if (h_eff_dau0_phi_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_barrel");
991 if (h_eff_dau0_phi_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau0_phi_FW");
995 if (h2_effMap_dau0_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_dau0_pVScostheta");
1000 if (h_eff_dau1_d0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_d0");
1004 if (h_eff_dau1_z0->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_z0");
1008 if (h_eff_dau1_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_RMother");
1012 if (h_eff_dau1_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_thetaMother");
1016 if (h_eff_dau1_phiMother_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_total");
1020 if (h_eff_dau1_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_BW");
1024 if (h_eff_dau1_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_barrel");
1028 if (h_eff_dau1_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phiMother_FW");
1032 if (h_eff_dau1_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_total");
1036 if (h_eff_dau1_phi_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_BW");
1040 if (h_eff_dau1_phi_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_barrel");
1044 if (h_eff_dau1_phi_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_dau1_phi_FW");
1048 if (h2_effMap_dau1_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_dau1_pVScostheta");
1053 if (h_eff_Mother_RMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_RMother");
1057 if (h_eff_Mother_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_theta");
1061 if (h_eff_Mother_phi_total->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phi_total");
1065 if (h_eff_Mother_phiMother_BW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_BW");
1069 if (h_eff_Mother_phiMother_barrel->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_barrel");
1073 if (h_eff_Mother_phiMother_FW->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_Mother_phiMother_FW");
1078 if (h2_effMap_Mother_pVScostheta->GetEntries() == 0) B2WARNING(
"Empty histogram h2_effMap_Mother_pVScostheta");
1081 TH1F* h_eff_V0Finder_RMother_withGeoAcc =
V0FinderEff(h_eff_dau0_RMother, h_eff_dau1_RMother, h_eff_Mother_RMother,
1083 if (h_eff_V0Finder_RMother_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_RMother_withGeoAcc");
1085 TH1F* h_eff_V0Finder_theta_withGeoAcc =
V0FinderEff(h_eff_dau0_thetaMother, h_eff_dau1_thetaMother, h_eff_Mother_theta,
1087 if (h_eff_V0Finder_theta_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_theta_withGeoAcc");
1089 TH1F* h_eff_V0Finder_phi_total_withGeoAcc =
V0FinderEff(h_eff_dau0_phiMother_total, h_eff_dau1_phiMother_total,
1090 h_eff_Mother_phi_total,
"h_eff_V0Finder_phi_total_withGeoAcc",
"efficiency VS #phi_{mother}, V0Finder",
m_histoList_Efficiencies);
1091 if (h_eff_V0Finder_phi_total_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_phi_total_withGeoAcc");
1093 TH1F* h_eff_V0Finder_phiMother_BW_withGeoAcc =
V0FinderEff(h_eff_dau0_phiMother_BW, h_eff_dau1_phiMother_BW,
1094 h_eff_Mother_phiMother_BW,
"h_eff_V0Finder_phi_BW_withGeoAcc",
"efficiency VS #phi_{mother}, V0Finder BW",
1096 if (h_eff_V0Finder_phiMother_BW_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_phiMother_BW_withGeoAcc");
1098 TH1F* h_eff_V0Finder_phiMother_barrel_withGeoAcc =
V0FinderEff(h_eff_dau0_phiMother_barrel, h_eff_dau1_phiMother_barrel,
1099 h_eff_Mother_phiMother_barrel,
"h_eff_V0Finder_phi_barrel_withGeoAcc",
"efficiency VS #phi_{mother}, V0Finder barrel",
1101 if (h_eff_V0Finder_phiMother_barrel_withGeoAcc->GetEntries() == 0)
1102 B2WARNING(
"Empty histogram h_eff_V0Finder_phiMother_barrel_withGeoAcc");
1104 TH1F* h_eff_V0Finder_phiMother_FW_withGeoAcc =
V0FinderEff(h_eff_dau0_phiMother_FW, h_eff_dau1_phiMother_FW,
1105 h_eff_Mother_phiMother_FW,
"h_eff_V0Finder_phi_FW_withGeoAcc",
"efficiency VS #phi_{mother}, V0Finder FW",
1107 if (h_eff_V0Finder_phiMother_FW_withGeoAcc->GetEntries() == 0) B2WARNING(
"Empty histogram h_eff_V0Finder_phiMother_FW_withGeoAcc");
1117 "geometrical acceptance VS #theta_{dau_{0}}, dau_{0}",
m_histoList_GA);
1118 if (h_dau0_geoAcc_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_theta");
1121 "geometrical acceptance VS #phi_{dau_{0}}, dau_{0}",
m_histoList_GA);
1122 if (h_dau0_geoAcc_phi->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_phi");
1125 "geometrical acceptance VS p_{T,dau_{0}}, dau_{0}",
m_histoList_GA);
1126 if (h_dau0_geoAcc_pt->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_pt");
1129 "geometrical acceptance VS #theta_{mother}, dau_{0}",
m_histoList_GA);
1130 if (h_dau0_geoAcc_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_thetaMother");
1133 "h_dau0_geoAcc_phiMother",
"geometrical acceptance VS #phi_{mother}, dau_{0}",
m_histoList_GA);
1134 if (h_dau0_geoAcc_phiMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_phiMother");
1137 "geometrical acceptance VS #p_{T,mother}, dau_{0}",
m_histoList_GA);
1138 if (h_dau0_geoAcc_ptMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau0_geoAcc_ptMother");
1143 if (h_dau1_geoAcc_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_theta");
1147 if (h_dau1_geoAcc_phi->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_phi");
1151 if (h_dau1_geoAcc_pt->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_pt");
1155 if (h_dau1_geoAcc_thetaMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_thetaMother");
1158 "h_dau1_geoAcc_phiMother",
"geometrical acceptance VS #phi_{mother}, p",
m_histoList_GA);
1159 if (h_dau1_geoAcc_phiMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_phiMother");
1163 if (h_dau1_geoAcc_ptMother->GetEntries() == 0) B2WARNING(
"Empty histogram h_dau1_geoAcc_ptMother");
1167 "geometrical acceptance VS #theta_{mother}, mother",
m_histoList_GA);
1168 if (h_Mother_geoAcc_theta->GetEntries() == 0) B2WARNING(
"Empty histogram h_Mother_geoAcc_theta");
1171 "geometrical acceptance VS #phi_{mother}, mother",
m_histoList_GA);
1172 if (h_Mother_geoAcc_phi->GetEntries() == 0) B2WARNING(
"Empty histogram h_Mother_geoAcc_phi");
1175 "geometrical acceptance VS p_{T,mother}, mother",
m_histoList_GA);
1176 if (h_Mother_geoAcc_pt->GetEntries() == 0) B2WARNING(
"Empty histogram h_Mother_geoAcc_pt");
1180 "geometrical acceptance dau_{0}, p_{T,dau_{0}} VS #theta_{dau_{0}}",
m_histoList_GA);
1181 if (h2_dau0_geoAcc2D->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau0_geoAcc2D");
1184 "geometrical acceptance p, p_{T,p} VS #theta_{p}",
m_histoList_GA);
1185 if (h2_dau1_geoAcc2D->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau1_geoAcc2D");
1188 "geometrical acceptance mother, p_{T,mother} VS #theta_{mother}",
m_histoList_GA);
1189 if (h2_Mother_geoAcc2D->GetEntries() == 0) B2WARNING(
"Empty histogram h2_Mother_geoAcc2D");
1192 "geometrical acceptance dau_{0}, p_{T,mother} VS #theta_{mother}",
m_histoList_GA);
1193 if (h2_dau0Mother_geoAcc2D->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau0Mother_geoAcc2D");
1196 "geometrical acceptance p, p_{T,mother} VS #theta_{mother}",
m_histoList_GA);
1197 if (h2_dau1Mother_geoAcc2D->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau1Mother_geoAcc2D");
1201 "geometrical acceptance dau_{0}, p_{T,dau_{0}} VS #theta_{dau_{0}}, BP",
m_histoList_GA);
1202 if (h2_dau0_geoAcc2D_BP->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau0_geoAcc2D_BP");
1205 "geometrical acceptance p, p_{T,p} VS #theta_{p}, BP",
m_histoList_GA);
1206 if (h2_dau1_geoAcc2D_BP->GetEntries() == 0) B2WARNING(
"Empty histogram h2_dau1_geoAcc2D_BP");
1209 "geometrical acceptance mother, p_{T,mother} VS #theta_{mother}, BP",
m_histoList_GA);
1210 if (h2_Mother_geoAcc2D_BP->GetEntries() == 0) B2WARNING(
"Empty histogram h2_Mother_geoAcc2D_BP");
1231 while ((obj = nextHMC()))
1232 obj->Write(
"", BIT(2), 0);
1236 while ((obj = nextHTC()))
1237 obj->Write(
"", BIT(2), 0);
1241 while ((obj = nextHT()))
1242 obj->Write(
"", BIT(2), 0);
1246 while ((obj = nextHCheck()))
1247 obj->Write(
"", BIT(2), 0);
1252 while ((obj = nextHEff()))
1253 obj->Write(
"", BIT(2), 0);
1258 while ((obj = nextHGA()))
1259 obj->Write(
"", BIT(2), 0);
1270 bool isK_S0 =
false;
1274 bool twoChargedProngs =
false;
1281 twoChargedProngs =
true;
1283 return (isK_S0 && twoChargedProngs);
1290 bool isLambda =
false;
1294 bool twoChargedProngs =
false;
1305 twoChargedProngs =
true;
1307 return (isLambda && twoChargedProngs);
1314 int nMatchedDau = 0;
1316 std::vector< MCParticle* > MCPart_dau = the_mcParticle.
getDaughters();
1319 bool second =
false;
1321 RelationVector<Track> Tracks_fromMCParticle_0 = DataStore::getRelationsWithObj<Track>(MCPart_dau[0]);
1322 if (Tracks_fromMCParticle_0.
size() > 0)
1325 RelationVector<Track> Tracks_fromMCParticle_1 = DataStore::getRelationsWithObj<Track>(MCPart_dau[1]);
1326 if (Tracks_fromMCParticle_1.
size() > 0)
int getPDGCode() const
PDG code.
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.
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)
MCParticle * mc_dau0
daughter 0 of a decayed MCParticle
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
bool isK_Short(const MCParticle &the_mcParticle)
determine if the MCParticle is a K-short
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
Initialize the Module.
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 the core of the module.
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
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
TH1F * m_h1_MC_dau0_phiMother_barrel
histogram of MCParticle daughter 0's mother's phi (barrel region)
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)
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)
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
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)
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)
MCParticle * mc_dau1
daughter 1 of a decayed MCParticle
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.
TVector3 getVertex() const
Return production vertex position, shorthand for getProductionVertex().
TVector3 getMomentum() const
Return momentum.
TVector3 getDecayVertex() const
Return decay vertex.
int getPDG() const
Return PDG code of particle.
Class for type safe access to objects that are referred to in relations.
size_t size() const
Get number of relations.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.
Class that bundles various TrackFitResults.
static const double T
[tesla]
#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.
Abstract base class for different kinds of events.