From f6e095aebb34691b9481f782ce63ca0840855479 Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Wed, 24 Jul 2024 17:03:10 +0100 Subject: [PATCH 01/10] truthParticleIsFiducial updated for first 10 truth particles and daughters of A' --- PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 468a6739b..23ab07536 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -759,6 +759,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_pz.push_back(particle->p4().Z()); m_truth_m.push_back(particle->m()); m_truth_pdg.push_back(particle->pdgId()); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truth_prod_x.push_back(particle->prodVtx()->x()); @@ -788,6 +789,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthM_px.push_back(particle->p4().X()); m_truthM_py.push_back(particle->p4().Y()); m_truthM_pz.push_back(particle->p4().Z()); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasDecayVtx()) { // decay vertex for A' particle m_truthM_x.push_back(particle->decayVtx()->x()); @@ -805,6 +807,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd0_px.push_back(particle->p4().X()); m_truthd0_py.push_back(particle->p4().Y()); m_truthd0_pz.push_back(particle->p4().Z()); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truthd0_x.push_back(particle->prodVtx()->x()); -- GitLab From 51586b309f3157871172108d8df9ea02e7a110bf Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Thu, 25 Jul 2024 11:01:51 +0100 Subject: [PATCH 02/10] Updating issue where ntuple maker won't run due to issue with ecal container --- PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx | 10 +++++----- faser-common | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 23ab07536..2079edf56 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -101,7 +101,7 @@ StatusCode NtupleDumperAlg::initialize() ATH_CHECK(m_triggerContainer.initialize()); ATH_CHECK(m_preshowerContainer.initialize()); ATH_CHECK(m_ecalContainer.initialize()); - ATH_CHECK(m_ecal2Container.initialize()); + //ATH_CHECK(m_ecal2Container.initialize()); ATH_CHECK(m_clusterContainer.initialize()); ATH_CHECK(m_simDataCollection.initialize()); ATH_CHECK(m_FaserTriggerData.initialize()); @@ -590,15 +590,15 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const SG::ReadHandle<xAOD::WaveformHitContainer> ecalContainer { m_ecalContainer, ctx }; ATH_CHECK(ecalContainer.isValid()); - SG::ReadHandle<xAOD::WaveformHitContainer> ecal2Container { m_ecal2Container, ctx }; - ATH_CHECK(ecal2Container.isValid()); + //SG::ReadHandle<xAOD::WaveformHitContainer> ecal2Container { m_ecal2Container, ctx }; + //ATH_CHECK(ecal2Container.isValid()); FillWaveBranches(*vetoNuContainer); FillWaveBranches(*vetoContainer); FillWaveBranches(*triggerContainer); FillWaveBranches(*preshowerContainer); FillWaveBranches(*ecalContainer); - FillWaveBranches(*ecal2Container); + //FillWaveBranches(*ecal2Container); // if real data, store charge in histograms from random events if (!isMC) { @@ -1313,7 +1313,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const for (auto &tp : truthParticleCount) { m_truthParticleBarcode.push_back(tp.first); m_truthParticleMatchedTracks.push_back(tp.second); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); + //m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); } } diff --git a/faser-common b/faser-common index 0a1e6ca7b..89ce6a071 160000 --- a/faser-common +++ b/faser-common @@ -1 +1 @@ -Subproject commit 0a1e6ca7be9dbc17b0692f998e36c87541ca8be3 +Subproject commit 89ce6a07128eb2ebc367b6b68f29c9c88220e3e6 -- GitLab From a21b07d7f2fe9f0b6a0048d6d471351d6d3c3be8 Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 12:11:09 +0100 Subject: [PATCH 03/10] Added first 10 MC truth at ST1, ST2, ST3 and updated fiducial for d0 [truthd0_isFiducial] ,d1 [truthd1_isFiducial] and first 10 MC truth [truth_isFiducial] --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 78 ++++++++++++++++++- .../NtupleDumper/src/NtupleDumperAlg.h | 13 ++++ 2 files changed, 87 insertions(+), 4 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 2079edf56..0df49fce4 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -375,6 +375,39 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_x", &m_truth_dec_x); m_tree->Branch("truth_dec_y", &m_truth_dec_y); m_tree->Branch("truth_dec_z", &m_truth_dec_z); + m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); + + m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); + m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); + m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); + + m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); + m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); + m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); + + m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); + m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); + m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); + + m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); + m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); + m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); + + m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); + m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); + m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); + + m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); + m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); + m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); + + m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); + m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); + m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); + + m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); + m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); + m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); // for mother + daughter particle truth infomation @@ -393,6 +426,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd0_x", &m_truthd0_x); m_tree->Branch("truthd0_y", &m_truthd0_y); m_tree->Branch("truthd0_z", &m_truthd0_z); + m_tree->Branch("truthd0_isFiducial", &m_truthd0_isFiducial); m_tree->Branch("truthd1_P", &m_truthd1_P); m_tree->Branch("truthd1_px", &m_truthd1_px); @@ -401,6 +435,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd1_x", &m_truthd1_x); m_tree->Branch("truthd1_y", &m_truthd1_y); m_tree->Branch("truthd1_z", &m_truthd1_z); + m_tree->Branch("truthd1_isFiducial", &m_truthd1_isFiducial); m_tree->Branch("vertex_x", &m_vertex_x, "vertex_x/D"); m_tree->Branch("vertex_y", &m_vertex_y, "vertex_y/D"); @@ -748,7 +783,9 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const // Find truth particle information SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer { m_truthParticleContainer, ctx }; + if (truthParticleContainer.isValid() && truthParticleContainer->size() > 0) { + int ipart(0); for (auto particle : *truthParticleContainer) { // loop over first 10 truth particles (for non A' samples) if (ipart++ > 9) break; @@ -759,7 +796,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_pz.push_back(particle->p4().Z()); m_truth_m.push_back(particle->m()); m_truth_pdg.push_back(particle->pdgId()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truth_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truth_prod_x.push_back(particle->prodVtx()->x()); @@ -780,6 +817,20 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_dec_y.push_back(999999); m_truth_dec_z.push_back(999999); } + auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].push_back(positions[station].x()); + m_truth_st_y[station].push_back(positions[station].y()); + m_truth_st_z[station].push_back(positions[station].z()); + } + + auto momenta = m_fiducialParticleTool->getTruthMomenta(truthParticle->barcode()); + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].push_back(momenta[station].x()); + m_truth_st_py[station].push_back(momenta[station].y()); + m_truth_st_pz[station].push_back(momenta[station].z()); + } + // Find the M d0 and d1 truth information for dark photon if ( particle->barcode() == 1 || particle->barcode() == 2 || particle->barcode() == 3 ) { @@ -789,7 +840,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthM_px.push_back(particle->p4().X()); m_truthM_py.push_back(particle->p4().Y()); m_truthM_pz.push_back(particle->p4().Z()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + if ( particle->hasDecayVtx()) { // decay vertex for A' particle m_truthM_x.push_back(particle->decayVtx()->x()); @@ -807,7 +858,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd0_px.push_back(particle->p4().X()); m_truthd0_py.push_back(particle->p4().Y()); m_truthd0_pz.push_back(particle->p4().Z()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truthd0_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truthd0_x.push_back(particle->prodVtx()->x()); @@ -829,6 +880,9 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd1_px.push_back(particle->p4().X()); m_truthd1_py.push_back(particle->p4().Y()); m_truthd1_pz.push_back(particle->p4().Z()); + m_truthd1_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + //m_isFiducial.push_back(m_fiducialParticleTool->isFiducial(truthParticle->barcode())); + if ( particle->hasProdVtx()) { m_truthd1_x.push_back(particle->prodVtx()->x()); @@ -1313,7 +1367,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const for (auto &tp : truthParticleCount) { m_truthParticleBarcode.push_back(tp.first); m_truthParticleMatchedTracks.push_back(tp.second); - //m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); } } @@ -1598,6 +1652,20 @@ NtupleDumperAlg::clearTree() const m_truth_dec_x.clear(); m_truth_dec_y.clear(); m_truth_dec_z.clear(); + m_truth_isFiducial.clear(); + + + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].clear(); + m_truth_st_y[station].clear(); + m_truth_st_z[station].clear(); + } + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].clear(); + m_truth_st_py[station].clear(); + m_truth_st_pz[station].clear(); + } + m_truthM_P.clear(); m_truthM_px.clear(); @@ -1614,6 +1682,7 @@ NtupleDumperAlg::clearTree() const m_truthd0_x.clear(); m_truthd0_y.clear(); m_truthd0_z.clear(); + m_truthd0_isFiducial.clear(); m_truthd1_P.clear(); m_truthd1_px.clear(); @@ -1622,6 +1691,7 @@ NtupleDumperAlg::clearTree() const m_truthd1_x.clear(); m_truthd1_y.clear(); m_truthd1_z.clear(); + m_truthd1_isFiducial.clear(); m_vertex_x = NaN; m_vertex_y = NaN; diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index d4fc22b97..762879a5f 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -340,16 +340,19 @@ private: mutable std::vector<double> m_truthM_z; mutable std::vector<double> m_truthd0_P; + mutable std::vector<bool> m_truthd0_isFiducial; // isFiducial applied to daughter of A' [Electron] mutable std::vector<double> m_truthd0_px; mutable std::vector<double> m_truthd0_py; mutable std::vector<double> m_truthd0_pz; + mutable std::vector<double> m_truthd0_x; // production vertex for daughter particles mutable std::vector<double> m_truthd0_y; mutable std::vector<double> m_truthd0_z; mutable std::vector<double> m_truthd1_P; + mutable std::vector<bool> m_truthd1_isFiducial; // isFiducial applied to daughter of A' [Positron] mutable std::vector<double> m_truthd1_px; mutable std::vector<double> m_truthd1_py; @@ -359,6 +362,8 @@ private: mutable std::vector<double> m_truthd1_y; mutable std::vector<double> m_truthd1_z; + + // first 10 truth particles mutable std::vector<double> m_truth_P; @@ -375,7 +380,15 @@ private: mutable std::vector<double> m_truth_prod_y; mutable std::vector<double> m_truth_prod_z; + mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] + mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles + mutable std::vector<bool> m_truth_isFiducial; /// Vector of boolean showing whether a truth particle is fiducial for the first 10 particles mutable double m_truthLeptonMomentum; mutable int m_truthBarcode; -- GitLab From 7d41575822dae630e5ad6b2036dc4375c9e26ac3 Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 12:19:57 +0100 Subject: [PATCH 04/10] Fixed issue with using getTruthMomenta --- PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 0df49fce4..e24049487 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -824,7 +824,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_st_z[station].push_back(positions[station].z()); } - auto momenta = m_fiducialParticleTool->getTruthMomenta(truthParticle->barcode()); + auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); for (int station = 0; station < 4; ++station) { m_truth_st_px[station].push_back(momenta[station].x()); m_truth_st_py[station].push_back(momenta[station].y()); -- GitLab From e9a12a4b0a208f262e4b0b9bb70f573e797f924b Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 14:47:19 +0100 Subject: [PATCH 05/10] Updating trackCollection issue --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 92 +++++++++---------- .../NtupleDumper/src/NtupleDumperAlg.h | 12 +-- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index e24049487..ae3db7b6d 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -377,37 +377,37 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_z", &m_truth_dec_z); m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); - m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); - m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); - m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); + // m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); + // m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); + // m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); - m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); - m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); - m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); + // m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); + // m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); + // m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); - m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); - m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); - m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); + // m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); + // m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); + // m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); - m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); - m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); - m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); + // m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); + // m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); + // m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); - m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); - m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); - m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); + // m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); + // m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); + // m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); - m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); - m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); - m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); + // m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); + // m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); + // m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); - m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); - m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); - m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); + // m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); + // m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); + // m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); - m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); - m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); - m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); + // m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); + // m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); + // m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); // for mother + daughter particle truth infomation @@ -817,19 +817,19 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_dec_y.push_back(999999); m_truth_dec_z.push_back(999999); } - auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); - for (int station = 0; station < 4; ++station) { - m_truth_st_x[station].push_back(positions[station].x()); - m_truth_st_y[station].push_back(positions[station].y()); - m_truth_st_z[station].push_back(positions[station].z()); - } + // auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); + // for (int station = 0; station < 4; ++station) { + // m_truth_st_x[station].push_back(positions[station].x()); + // m_truth_st_y[station].push_back(positions[station].y()); + // m_truth_st_z[station].push_back(positions[station].z()); + // } - auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); - for (int station = 0; station < 4; ++station) { - m_truth_st_px[station].push_back(momenta[station].x()); - m_truth_st_py[station].push_back(momenta[station].y()); - m_truth_st_pz[station].push_back(momenta[station].z()); - } + // auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); + // for (int station = 0; station < 4; ++station) { + // m_truth_st_px[station].push_back(momenta[station].x()); + // m_truth_st_py[station].push_back(momenta[station].y()); + // m_truth_st_pz[station].push_back(momenta[station].z()); + // } // Find the M d0 and d1 truth information for dark photon @@ -1655,16 +1655,16 @@ NtupleDumperAlg::clearTree() const m_truth_isFiducial.clear(); - for (int station = 0; station < 4; ++station) { - m_truth_st_x[station].clear(); - m_truth_st_y[station].clear(); - m_truth_st_z[station].clear(); - } - for (int station = 0; station < 4; ++station) { - m_truth_st_px[station].clear(); - m_truth_st_py[station].clear(); - m_truth_st_pz[station].clear(); - } + // for (int station = 0; station < 4; ++station) { + // m_truth_st_x[station].clear(); + // m_truth_st_y[station].clear(); + // m_truth_st_z[station].clear(); + // } + // for (int station = 0; station < 4; ++station) { + // m_truth_st_px[station].clear(); + // m_truth_st_py[station].clear(); + // m_truth_st_pz[station].clear(); + // } m_truthM_P.clear(); diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 762879a5f..2782faf09 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -380,12 +380,12 @@ private: mutable std::vector<double> m_truth_prod_y; mutable std::vector<double> m_truth_prod_z; - mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] + // mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles mutable std::vector<bool> m_truth_isFiducial; /// Vector of boolean showing whether a truth particle is fiducial for the first 10 particles -- GitLab From 45acb92d0a6b65d98d16ac1ecadf0a18bcfb508b Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 16:26:02 +0100 Subject: [PATCH 06/10] Revert "Updating trackCollection issue" This reverts commit e9a12a4b0a208f262e4b0b9bb70f573e797f924b. --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 92 +++++++++---------- .../NtupleDumper/src/NtupleDumperAlg.h | 12 +-- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index ae3db7b6d..e24049487 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -377,37 +377,37 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_z", &m_truth_dec_z); m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); - // m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); - // m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); - // m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); + m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); + m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); + m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); - // m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); - // m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); - // m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); + m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); + m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); + m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); - // m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); - // m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); - // m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); + m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); + m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); + m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); - // m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); - // m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); - // m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); + m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); + m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); + m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); - // m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); - // m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); - // m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); + m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); + m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); + m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); - // m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); - // m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); - // m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); + m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); + m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); + m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); - // m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); - // m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); - // m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); + m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); + m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); + m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); - // m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); - // m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); - // m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); + m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); + m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); + m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); // for mother + daughter particle truth infomation @@ -817,19 +817,19 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_dec_y.push_back(999999); m_truth_dec_z.push_back(999999); } - // auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); - // for (int station = 0; station < 4; ++station) { - // m_truth_st_x[station].push_back(positions[station].x()); - // m_truth_st_y[station].push_back(positions[station].y()); - // m_truth_st_z[station].push_back(positions[station].z()); - // } + auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].push_back(positions[station].x()); + m_truth_st_y[station].push_back(positions[station].y()); + m_truth_st_z[station].push_back(positions[station].z()); + } - // auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); - // for (int station = 0; station < 4; ++station) { - // m_truth_st_px[station].push_back(momenta[station].x()); - // m_truth_st_py[station].push_back(momenta[station].y()); - // m_truth_st_pz[station].push_back(momenta[station].z()); - // } + auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].push_back(momenta[station].x()); + m_truth_st_py[station].push_back(momenta[station].y()); + m_truth_st_pz[station].push_back(momenta[station].z()); + } // Find the M d0 and d1 truth information for dark photon @@ -1655,16 +1655,16 @@ NtupleDumperAlg::clearTree() const m_truth_isFiducial.clear(); - // for (int station = 0; station < 4; ++station) { - // m_truth_st_x[station].clear(); - // m_truth_st_y[station].clear(); - // m_truth_st_z[station].clear(); - // } - // for (int station = 0; station < 4; ++station) { - // m_truth_st_px[station].clear(); - // m_truth_st_py[station].clear(); - // m_truth_st_pz[station].clear(); - // } + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].clear(); + m_truth_st_y[station].clear(); + m_truth_st_z[station].clear(); + } + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].clear(); + m_truth_st_py[station].clear(); + m_truth_st_pz[station].clear(); + } m_truthM_P.clear(); diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 2782faf09..762879a5f 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -380,12 +380,12 @@ private: mutable std::vector<double> m_truth_prod_y; mutable std::vector<double> m_truth_prod_z; - // mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] - // mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] - // mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] - // mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] - // mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] - // mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] + mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles mutable std::vector<bool> m_truth_isFiducial; /// Vector of boolean showing whether a truth particle is fiducial for the first 10 particles -- GitLab From aa3cdc9cbbb5893b3445badb980af55f6c186a13 Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 16:26:20 +0100 Subject: [PATCH 07/10] Revert "Fixed issue with using getTruthMomenta" This reverts commit 7d41575822dae630e5ad6b2036dc4375c9e26ac3. --- PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index e24049487..0df49fce4 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -824,7 +824,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_st_z[station].push_back(positions[station].z()); } - auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); + auto momenta = m_fiducialParticleTool->getTruthMomenta(truthParticle->barcode()); for (int station = 0; station < 4; ++station) { m_truth_st_px[station].push_back(momenta[station].x()); m_truth_st_py[station].push_back(momenta[station].y()); -- GitLab From 6f59743c4a79cf007dea7e75fb9ead176b458a93 Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Tue, 20 Aug 2024 16:26:25 +0100 Subject: [PATCH 08/10] Revert "Added first 10 MC truth at ST1, ST2, ST3 and updated fiducial for d0 [truthd0_isFiducial] ,d1 [truthd1_isFiducial] and first 10 MC truth [truth_isFiducial]" This reverts commit a21b07d7f2fe9f0b6a0048d6d471351d6d3c3be8. --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 78 +------------------ .../NtupleDumper/src/NtupleDumperAlg.h | 13 ---- 2 files changed, 4 insertions(+), 87 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 0df49fce4..2079edf56 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -375,39 +375,6 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_x", &m_truth_dec_x); m_tree->Branch("truth_dec_y", &m_truth_dec_y); m_tree->Branch("truth_dec_z", &m_truth_dec_z); - m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); - - m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); - m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); - m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); - - m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); - m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); - m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); - - m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); - m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); - m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); - - m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); - m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); - m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); - - m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); - m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); - m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); - - m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); - m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); - m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); - - m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); - m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); - m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); - - m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); - m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); - m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); // for mother + daughter particle truth infomation @@ -426,7 +393,6 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd0_x", &m_truthd0_x); m_tree->Branch("truthd0_y", &m_truthd0_y); m_tree->Branch("truthd0_z", &m_truthd0_z); - m_tree->Branch("truthd0_isFiducial", &m_truthd0_isFiducial); m_tree->Branch("truthd1_P", &m_truthd1_P); m_tree->Branch("truthd1_px", &m_truthd1_px); @@ -435,7 +401,6 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd1_x", &m_truthd1_x); m_tree->Branch("truthd1_y", &m_truthd1_y); m_tree->Branch("truthd1_z", &m_truthd1_z); - m_tree->Branch("truthd1_isFiducial", &m_truthd1_isFiducial); m_tree->Branch("vertex_x", &m_vertex_x, "vertex_x/D"); m_tree->Branch("vertex_y", &m_vertex_y, "vertex_y/D"); @@ -783,9 +748,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const // Find truth particle information SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer { m_truthParticleContainer, ctx }; - if (truthParticleContainer.isValid() && truthParticleContainer->size() > 0) { - int ipart(0); for (auto particle : *truthParticleContainer) { // loop over first 10 truth particles (for non A' samples) if (ipart++ > 9) break; @@ -796,7 +759,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_pz.push_back(particle->p4().Z()); m_truth_m.push_back(particle->m()); m_truth_pdg.push_back(particle->pdgId()); - m_truth_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truth_prod_x.push_back(particle->prodVtx()->x()); @@ -817,20 +780,6 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_dec_y.push_back(999999); m_truth_dec_z.push_back(999999); } - auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); - for (int station = 0; station < 4; ++station) { - m_truth_st_x[station].push_back(positions[station].x()); - m_truth_st_y[station].push_back(positions[station].y()); - m_truth_st_z[station].push_back(positions[station].z()); - } - - auto momenta = m_fiducialParticleTool->getTruthMomenta(truthParticle->barcode()); - for (int station = 0; station < 4; ++station) { - m_truth_st_px[station].push_back(momenta[station].x()); - m_truth_st_py[station].push_back(momenta[station].y()); - m_truth_st_pz[station].push_back(momenta[station].z()); - } - // Find the M d0 and d1 truth information for dark photon if ( particle->barcode() == 1 || particle->barcode() == 2 || particle->barcode() == 3 ) { @@ -840,7 +789,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthM_px.push_back(particle->p4().X()); m_truthM_py.push_back(particle->p4().Y()); m_truthM_pz.push_back(particle->p4().Z()); - + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasDecayVtx()) { // decay vertex for A' particle m_truthM_x.push_back(particle->decayVtx()->x()); @@ -858,7 +807,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd0_px.push_back(particle->p4().X()); m_truthd0_py.push_back(particle->p4().Y()); m_truthd0_pz.push_back(particle->p4().Z()); - m_truthd0_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truthd0_x.push_back(particle->prodVtx()->x()); @@ -880,9 +829,6 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd1_px.push_back(particle->p4().X()); m_truthd1_py.push_back(particle->p4().Y()); m_truthd1_pz.push_back(particle->p4().Z()); - m_truthd1_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); - //m_isFiducial.push_back(m_fiducialParticleTool->isFiducial(truthParticle->barcode())); - if ( particle->hasProdVtx()) { m_truthd1_x.push_back(particle->prodVtx()->x()); @@ -1367,7 +1313,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const for (auto &tp : truthParticleCount) { m_truthParticleBarcode.push_back(tp.first); m_truthParticleMatchedTracks.push_back(tp.second); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); + //m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); } } @@ -1652,20 +1598,6 @@ NtupleDumperAlg::clearTree() const m_truth_dec_x.clear(); m_truth_dec_y.clear(); m_truth_dec_z.clear(); - m_truth_isFiducial.clear(); - - - for (int station = 0; station < 4; ++station) { - m_truth_st_x[station].clear(); - m_truth_st_y[station].clear(); - m_truth_st_z[station].clear(); - } - for (int station = 0; station < 4; ++station) { - m_truth_st_px[station].clear(); - m_truth_st_py[station].clear(); - m_truth_st_pz[station].clear(); - } - m_truthM_P.clear(); m_truthM_px.clear(); @@ -1682,7 +1614,6 @@ NtupleDumperAlg::clearTree() const m_truthd0_x.clear(); m_truthd0_y.clear(); m_truthd0_z.clear(); - m_truthd0_isFiducial.clear(); m_truthd1_P.clear(); m_truthd1_px.clear(); @@ -1691,7 +1622,6 @@ NtupleDumperAlg::clearTree() const m_truthd1_x.clear(); m_truthd1_y.clear(); m_truthd1_z.clear(); - m_truthd1_isFiducial.clear(); m_vertex_x = NaN; m_vertex_y = NaN; diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 762879a5f..d4fc22b97 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -340,19 +340,16 @@ private: mutable std::vector<double> m_truthM_z; mutable std::vector<double> m_truthd0_P; - mutable std::vector<bool> m_truthd0_isFiducial; // isFiducial applied to daughter of A' [Electron] mutable std::vector<double> m_truthd0_px; mutable std::vector<double> m_truthd0_py; mutable std::vector<double> m_truthd0_pz; - mutable std::vector<double> m_truthd0_x; // production vertex for daughter particles mutable std::vector<double> m_truthd0_y; mutable std::vector<double> m_truthd0_z; mutable std::vector<double> m_truthd1_P; - mutable std::vector<bool> m_truthd1_isFiducial; // isFiducial applied to daughter of A' [Positron] mutable std::vector<double> m_truthd1_px; mutable std::vector<double> m_truthd1_py; @@ -362,8 +359,6 @@ private: mutable std::vector<double> m_truthd1_y; mutable std::vector<double> m_truthd1_z; - - // first 10 truth particles mutable std::vector<double> m_truth_P; @@ -380,15 +375,7 @@ private: mutable std::vector<double> m_truth_prod_y; mutable std::vector<double> m_truth_prod_z; - mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station [first 10 MC particles] - mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station [first 10 MC particles] - mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles - mutable std::vector<bool> m_truth_isFiducial; /// Vector of boolean showing whether a truth particle is fiducial for the first 10 particles mutable double m_truthLeptonMomentum; mutable int m_truthBarcode; -- GitLab From ecd51e9fd032b0fb0b7e2d92025bd93b03c0834c Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Wed, 21 Aug 2024 11:42:09 +0100 Subject: [PATCH 09/10] Added truth_isFiducial , truthd0_isFiducial and truthd1_isFiducial --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 15 +++++++++++---- .../NtupleDumper/src/NtupleDumperAlg.h | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 2079edf56..5b789e0ef 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -375,6 +375,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_x", &m_truth_dec_x); m_tree->Branch("truth_dec_y", &m_truth_dec_y); m_tree->Branch("truth_dec_z", &m_truth_dec_z); + m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); // for mother + daughter particle truth infomation @@ -393,6 +394,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd0_x", &m_truthd0_x); m_tree->Branch("truthd0_y", &m_truthd0_y); m_tree->Branch("truthd0_z", &m_truthd0_z); + m_tree->Branch("truthd0_isFiducial", &m_truthd0_isFiducial); m_tree->Branch("truthd1_P", &m_truthd1_P); m_tree->Branch("truthd1_px", &m_truthd1_px); @@ -401,6 +403,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthd1_x", &m_truthd1_x); m_tree->Branch("truthd1_y", &m_truthd1_y); m_tree->Branch("truthd1_z", &m_truthd1_z); + m_tree->Branch("truthd1_isFiducial", &m_truthd1_isFiducial); m_tree->Branch("vertex_x", &m_vertex_x, "vertex_x/D"); m_tree->Branch("vertex_y", &m_vertex_y, "vertex_y/D"); @@ -759,7 +762,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_pz.push_back(particle->p4().Z()); m_truth_m.push_back(particle->m()); m_truth_pdg.push_back(particle->pdgId()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truth_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truth_prod_x.push_back(particle->prodVtx()->x()); @@ -789,7 +792,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthM_px.push_back(particle->p4().X()); m_truthM_py.push_back(particle->p4().Y()); m_truthM_pz.push_back(particle->p4().Z()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + if ( particle->hasDecayVtx()) { // decay vertex for A' particle m_truthM_x.push_back(particle->decayVtx()->x()); @@ -807,7 +810,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd0_px.push_back(particle->p4().X()); m_truthd0_py.push_back(particle->p4().Y()); m_truthd0_pz.push_back(particle->p4().Z()); - m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + m_truthd0_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truthd0_x.push_back(particle->prodVtx()->x()); @@ -829,6 +832,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truthd1_px.push_back(particle->p4().X()); m_truthd1_py.push_back(particle->p4().Y()); m_truthd1_pz.push_back(particle->p4().Z()); + m_truthd1_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); if ( particle->hasProdVtx()) { m_truthd1_x.push_back(particle->prodVtx()->x()); @@ -1313,7 +1317,7 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const for (auto &tp : truthParticleCount) { m_truthParticleBarcode.push_back(tp.first); m_truthParticleMatchedTracks.push_back(tp.second); - //m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); + m_truthParticleIsFiducial.push_back(m_fiducialParticleTool->isFiducial(tp.first)); } } @@ -1598,6 +1602,7 @@ NtupleDumperAlg::clearTree() const m_truth_dec_x.clear(); m_truth_dec_y.clear(); m_truth_dec_z.clear(); + m_truth_isFiducial.clear(); m_truthM_P.clear(); m_truthM_px.clear(); @@ -1614,6 +1619,7 @@ NtupleDumperAlg::clearTree() const m_truthd0_x.clear(); m_truthd0_y.clear(); m_truthd0_z.clear(); + m_truthd0_isFiducial.clear(); m_truthd1_P.clear(); m_truthd1_px.clear(); @@ -1622,6 +1628,7 @@ NtupleDumperAlg::clearTree() const m_truthd1_x.clear(); m_truthd1_y.clear(); m_truthd1_z.clear(); + m_truthd1_isFiducial.clear(); m_vertex_x = NaN; m_vertex_y = NaN; diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index d4fc22b97..0786017d3 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -340,6 +340,7 @@ private: mutable std::vector<double> m_truthM_z; mutable std::vector<double> m_truthd0_P; + mutable std::vector<bool> m_truthd0_isFiducial; //Boolean for if electron is fiducial mutable std::vector<double> m_truthd0_px; mutable std::vector<double> m_truthd0_py; @@ -350,6 +351,7 @@ private: mutable std::vector<double> m_truthd0_z; mutable std::vector<double> m_truthd1_P; + mutable std::vector<bool> m_truthd1_isFiducial; // Boolean for if positron is fiducial mutable std::vector<double> m_truthd1_px; mutable std::vector<double> m_truthd1_py; @@ -376,6 +378,7 @@ private: mutable std::vector<double> m_truth_prod_z; mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles + mutable std::vector<bool> m_truth_isFiducial; // Boolean for if first 10 truth particles are fiducial mutable double m_truthLeptonMomentum; mutable int m_truthBarcode; -- GitLab From 7b9c90003cb83926267c5cdf9b8c77e66057621d Mon Sep 17 00:00:00 2001 From: seley <sinead.mary.eley@cern.ch> Date: Fri, 23 Aug 2024 10:26:00 +0100 Subject: [PATCH 10/10] Added truth_st1_x, truth_st1_px etc. for truth positions and momenta extrapolated to each station for first 10 MC truth particles --- .../NtupleDumper/src/NtupleDumperAlg.cxx | 51 +++++++++++++++++++ .../NtupleDumper/src/NtupleDumperAlg.h | 7 +++ 2 files changed, 58 insertions(+) diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 5b789e0ef..937b2e7e4 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -377,6 +377,32 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truth_dec_z", &m_truth_dec_z); m_tree->Branch("truth_isFiducial", &m_truth_isFiducial); + + m_tree->Branch("truth_st0_x", &m_truth_st_x[0]); + m_tree->Branch("truth_st0_y", &m_truth_st_y[0]); + m_tree->Branch("truth_st0_z", &m_truth_st_z[0]); + m_tree->Branch("truth_st1_x", &m_truth_st_x[1]); + m_tree->Branch("truth_st1_y", &m_truth_st_y[1]); + m_tree->Branch("truth_st1_z", &m_truth_st_z[1]); + m_tree->Branch("truth_st2_x", &m_truth_st_x[2]); + m_tree->Branch("truth_st2_y", &m_truth_st_y[2]); + m_tree->Branch("truth_st2_z", &m_truth_st_z[2]); + m_tree->Branch("truth_st3_x", &m_truth_st_x[3]); + m_tree->Branch("truth_st3_y", &m_truth_st_y[3]); + m_tree->Branch("truth_st3_z", &m_truth_st_z[3]); + m_tree->Branch("truth_st0_px", &m_truth_st_px[0]); + m_tree->Branch("truth_st0_py", &m_truth_st_py[0]); + m_tree->Branch("truth_st0_pz", &m_truth_st_pz[0]); + m_tree->Branch("truth_st1_px", &m_truth_st_px[1]); + m_tree->Branch("truth_st1_py", &m_truth_st_py[1]); + m_tree->Branch("truth_st1_pz", &m_truth_st_pz[1]); + m_tree->Branch("truth_st2_px", &m_truth_st_px[2]); + m_tree->Branch("truth_st2_py", &m_truth_st_py[2]); + m_tree->Branch("truth_st2_pz", &m_truth_st_pz[2]); + m_tree->Branch("truth_st3_px", &m_truth_st_px[3]); + m_tree->Branch("truth_st3_py", &m_truth_st_py[3]); + m_tree->Branch("truth_st3_pz", &m_truth_st_pz[3]); + // for mother + daughter particle truth infomation m_tree->Branch("truthM_P", &m_truthM_P); @@ -764,6 +790,20 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_truth_pdg.push_back(particle->pdgId()); m_truth_isFiducial.push_back(m_fiducialParticleTool->isFiducial(particle->barcode())); + auto positions = m_fiducialParticleTool->getTruthPositions(particle->barcode()); // Add truth position information at each station + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].push_back(positions[station].x()); + m_truth_st_y[station].push_back(positions[station].y()); + m_truth_st_z[station].push_back(positions[station].z()); + } + + auto momenta = m_fiducialParticleTool->getTruthMomenta(particle->barcode()); // Add truth momentum information at each station + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].push_back(momenta[station].x()); + m_truth_st_py[station].push_back(momenta[station].y()); + m_truth_st_pz[station].push_back(momenta[station].z()); + } + if ( particle->hasProdVtx()) { m_truth_prod_x.push_back(particle->prodVtx()->x()); m_truth_prod_y.push_back(particle->prodVtx()->y()); @@ -1604,6 +1644,17 @@ NtupleDumperAlg::clearTree() const m_truth_dec_z.clear(); m_truth_isFiducial.clear(); + for (int station = 0; station < 4; ++station) { + m_truth_st_x[station].clear(); + m_truth_st_y[station].clear(); + m_truth_st_z[station].clear(); + } + for (int station = 0; station < 4; ++station) { + m_truth_st_px[station].clear(); + m_truth_st_py[station].clear(); + m_truth_st_pz[station].clear(); + } + m_truthM_P.clear(); m_truthM_px.clear(); m_truthM_py.clear(); diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index 0786017d3..c57c803ce 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -380,6 +380,13 @@ private: mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles mutable std::vector<bool> m_truth_isFiducial; // Boolean for if first 10 truth particles are fiducial + mutable std::array<std::vector<double>, 4> m_truth_st_x; // vector of the x components of the simulated hits of the truth particle for each station + mutable std::array<std::vector<double>, 4> m_truth_st_y; // vector of the y components of the simulated hits of the truth particle for each station + mutable std::array<std::vector<double>, 4> m_truth_st_z; // vector of the z components of the simulated hits of the truth particle for each station + mutable std::array<std::vector<double>, 4> m_truth_st_px; // x components of the true momentum at each station + mutable std::array<std::vector<double>, 4> m_truth_st_py; // y components of the true momentum at each station + mutable std::array<std::vector<double>, 4> m_truth_st_pz; // z components of the true momentum at each station + mutable double m_truthLeptonMomentum; mutable int m_truthBarcode; mutable int m_truthPdg; -- GitLab