From 910ed545a26019883eca255620672338590af3c3 Mon Sep 17 00:00:00 2001 From: Karol Krizka Date: Wed, 7 Aug 2024 22:32:21 +0100 Subject: [PATCH] Fix particle hypothesis having to be positive in truth tracking. --- ACTSTracking/Helpers.hxx | 11 ++++++++++- src/ACTSTruthCKFTrackingProc.cxx | 2 +- src/ACTSTruthTrackingProc.cxx | 2 +- src/Helpers.cxx | 16 ++-------------- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/ACTSTracking/Helpers.hxx b/ACTSTracking/Helpers.hxx index 83da45b..1a2a9e3 100644 --- a/ACTSTracking/Helpers.hxx +++ b/ACTSTracking/Helpers.hxx @@ -113,7 +113,16 @@ EVENT::TrackState* ACTS2Marlin_trackState(int location, EVENT::LCCollection* getCollection(EVENT::LCEvent* evt, const std::string& name); -Acts::ParticleHypothesis convertParticle(const EVENT::MCParticle* mcParticle); +//! Get particle hypothesis for a given MCParticle object +/** + * The particle hypothesis is determined by the PDG code of the MCParticle. The + * absolute value is taken, as this is a requirement from ACTS. + * + * \param mcParticle MCParticle object for which to determine a hypothesis + * + * \return The ACTS particle hypothesis + */ +Acts::ParticleHypothesis getParticleHypothesis(const EVENT::MCParticle* mcParticle); } // namespace ACTSTracking diff --git a/src/ACTSTruthCKFTrackingProc.cxx b/src/ACTSTruthCKFTrackingProc.cxx index 05ae0b0..894a98c 100644 --- a/src/ACTSTruthCKFTrackingProc.cxx +++ b/src/ACTSTruthCKFTrackingProc.cxx @@ -152,7 +152,7 @@ void ACTSTruthCKFTrackingProc::processEvent(LCEvent* evt) { std::pow(_initialTrackError_relP * p / (p * p), 2); Acts::BoundTrackParameters seed(perigeeSurface, params, cov, - ACTSTracking::convertParticle(mcParticle)); + ACTSTracking::getParticleHypothesis(mcParticle)); seeds.push_back(seed); } diff --git a/src/ACTSTruthTrackingProc.cxx b/src/ACTSTruthTrackingProc.cxx index 7dc0dd8..ef9cf54 100644 --- a/src/ACTSTruthTrackingProc.cxx +++ b/src/ACTSTruthTrackingProc.cxx @@ -332,7 +332,7 @@ void ACTSTruthTrackingProc::processEvent(LCEvent* evt) { Acts::Vector3(mcParticle->getVertex())); Acts::BoundTrackParameters initialparams(perigeeSurface, params, - cov, ACTSTracking::convertParticle(mcParticle)); + cov, ACTSTracking::getParticleHypothesis(mcParticle)); // reference Examples TruthTracking/ParticleSmearing.cpp streamlog_out(DEBUG) << "Initial Paramemeters" << std::endl << initialparams << std::endl; diff --git a/src/Helpers.cxx b/src/Helpers.cxx index cf67272..c774af9 100644 --- a/src/Helpers.cxx +++ b/src/Helpers.cxx @@ -502,37 +502,25 @@ EVENT::LCCollection* getCollection(EVENT::LCEvent* evt, } } -Acts::ParticleHypothesis convertParticle(const EVENT::MCParticle* mcParticle) +Acts::ParticleHypothesis getParticleHypothesis(const EVENT::MCParticle* mcParticle) { - switch (mcParticle->getPDG()) { + switch (std::abs(mcParticle->getPDG())) { case 11: return Acts::ParticleHypothesis {Acts::PdgParticle::eElectron}; - case -11: - return Acts::ParticleHypothesis {Acts::PdgParticle::ePositron}; case 13: return Acts::ParticleHypothesis {Acts::PdgParticle::eMuon}; - case -13: - return Acts::ParticleHypothesis {Acts::PdgParticle::eAntiMuon}; case 15: return Acts::ParticleHypothesis {Acts::PdgParticle::eTau}; - case -15: - return Acts::ParticleHypothesis {Acts::PdgParticle::eAntiTau}; case 22: return Acts::ParticleHypothesis {Acts::PdgParticle::eGamma}; case 111: return Acts::ParticleHypothesis {Acts::PdgParticle::ePionZero}; case 211: return Acts::ParticleHypothesis {Acts::PdgParticle::ePionPlus}; - case -211: - return Acts::ParticleHypothesis {Acts::PdgParticle::ePionMinus}; case 2112: return Acts::ParticleHypothesis {Acts::PdgParticle::eNeutron}; - case -2112: - return Acts::ParticleHypothesis {Acts::PdgParticle::eAntiNeutron}; case 2212: return Acts::ParticleHypothesis {Acts::PdgParticle::eProton}; - case -2212: - return Acts::ParticleHypothesis {Acts::PdgParticle::eAntiProton}; } Acts::PdgParticle pdg = Acts::PdgParticle::eInvalid;