diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
index 86aa55787dfab8fb00165f8c553645a5a223258e..87d00a7c3f629b0825c93180107d1446bad18aad 100644
--- a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
@@ -92,6 +92,8 @@ def getGenParticleInteractingFilter(name="ISF_GenParticleInteractingFilter", **k
     simdict = simFlags.specialConfiguration.get_Value()
     if simdict is not None and "InteractingPDGCodes" in simdict:
         kwargs.setdefault('AdditionalInteractingParticleTypes', simdict["InteractingPDGCodes"])
+    if simdict is not None and "NonInteractingPDGCodes" in simdict:
+        kwargs.setdefault('AdditionalNonInteractingParticleTypes', simdict["InteractingNonPDGCodes"])
     return CfgMgr.ISF__GenParticleInteractingFilter(name, **kwargs)
 
 def getEtaPhiFilter(name="ISF_EtaPhiFilter", **kwargs):
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.cxx b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.cxx
index b48885d715007281faadcd718184258614ce67b3..7eee7c20747b3defa5caacc2c13f876bf2d1baf4 100644
--- a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.cxx
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.cxx
@@ -22,6 +22,7 @@ ISF::GenParticleInteractingFilter::GenParticleInteractingFilter( const std::stri
   : base_class(t,n,p)
 {
   declareProperty("AdditionalInteractingParticleTypes", m_additionalInteractingParticleTypes);
+  declareProperty("AdditionalNonInteractingParticleTypes", m_additionalNonInteractingParticleTypes);
 }
 
 StatusCode ISF::GenParticleInteractingFilter::initialize()
@@ -35,6 +36,33 @@ StatusCode ISF::GenParticleInteractingFilter::initialize()
       ATH_MSG_DEBUG("   " << pdg_id);
     }
   }
+  if(m_additionalNonInteractingParticleTypes.empty()) {
+    ATH_MSG_DEBUG("No additional particle types will be classified as non-interacting.");
+  }
+  else {
+    ATH_MSG_DEBUG("Will classify particles with the following additional PDG codes as non-interacting:");
+    for(const auto& pdg_id : m_additionalNonInteractingParticleTypes) {
+      ATH_MSG_DEBUG("   " << pdg_id);
+    }
+  }
+  if (!m_additionalInteractingParticleTypes.empty() && !m_additionalNonInteractingParticleTypes.empty()) {
+    //Insanity check
+    bool clash(false);
+    for (const auto& pdg_id : m_additionalInteractingParticleTypes) {
+      if (find(m_additionalNonInteractingParticleTypes.begin(),
+               m_additionalNonInteractingParticleTypes.end(),
+               pdg_id) != m_additionalNonInteractingParticleTypes.end())
+        {
+          ATH_MSG_ERROR("Particle with PDG code " << pdg_id << " requested to be classified as both interacting and non-interacting.");
+          clash=true;
+        }
+    }
+    if (clash) {
+      ATH_MSG_ERROR("Please check your configuration!");
+      return StatusCode::FAILURE;
+    }
+  }
+
   return StatusCode::SUCCESS;
 }
 
@@ -45,6 +73,9 @@ bool ISF::GenParticleInteractingFilter::pass(const HepMC::GenParticle& particle)
   const bool isInteracting = find(m_additionalInteractingParticleTypes.begin(),
                                 m_additionalInteractingParticleTypes.end(),
                                 pdg_id) != m_additionalInteractingParticleTypes.end();
-  return !MC::isNonInteracting( &particle ) || isInteracting;
+  const bool isNonInteracting = find(m_additionalNonInteractingParticleTypes.begin(),
+                                     m_additionalNonInteractingParticleTypes.end(),
+                                pdg_id) != m_additionalNonInteractingParticleTypes.end();
+  return !(MC::isNonInteracting( &particle ) || isNonInteracting) || isInteracting;
 }
 
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.h
index 387b4fd6cb6c1912f380b78bd3644efcf65b7cc2..97f0011043c85df66ccbcbabcbe3737547953f16 100644
--- a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.h
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/src/GenParticleInteractingFilter.h
@@ -46,6 +46,9 @@ namespace ISF {
 
       /** Additional PDG codes to classify as interacting */
       std::vector<int> m_additionalInteractingParticleTypes;
+
+      /** Additional PDG codes to classify as non-interacting */
+      std::vector<int> m_additionalNonInteractingParticleTypes;
   };
 
 }