diff --git a/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/FTagAnalysisAlgorithms/BTaggingEfficiencyAlg.h b/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/FTagAnalysisAlgorithms/BTaggingEfficiencyAlg.h
index 6656eecd5f4b501de1fe26ee49e218a0e88acce5..6bf50a3709986aefde575907af6220775bdaa657 100644
--- a/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/FTagAnalysisAlgorithms/BTaggingEfficiencyAlg.h
+++ b/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/FTagAnalysisAlgorithms/BTaggingEfficiencyAlg.h
@@ -11,10 +11,12 @@
 #include <AnaAlgorithm/AnaAlgorithm.h>
 #include <FTagAnalysisInterfaces/IBTaggingEfficiencyTool.h>
 #include <SelectionHelpers/OutOfValidityHelper.h>
+#include <SelectionHelpers/ISelectionAccessor.h>
 #include <SystematicsHandles/SysCopyHandle.h>
 #include <SystematicsHandles/SysListHandle.h>
 #include <SystematicsHandles/SysReadHandle.h>
 #include <xAODJet/JetContainer.h>
+#include <memory>
 
 namespace CP
 {
@@ -67,7 +69,7 @@ namespace CP
 
     /// \brief the accessor for \ref m_selectionDecoration
   private:
-    std::unique_ptr<const SG::AuxElement::Accessor<SelectionType> > m_selectionAccessor;
+    std::unique_ptr<ISelectionAccessor> m_selectionAccessor;
 
     /// \brief only run the inefficency for all jets
   private:
diff --git a/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/Root/BTaggingEfficiencyAlg.cxx b/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/Root/BTaggingEfficiencyAlg.cxx
index f675bd4908ad5c04cf412e490023a510f3d5c590..b933194b64762259305c408430f9579eb036b41b 100644
--- a/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/Root/BTaggingEfficiencyAlg.cxx
+++ b/PhysicsAnalysis/Algorithms/FTagAnalysisAlgorithms/Root/BTaggingEfficiencyAlg.cxx
@@ -42,7 +42,7 @@ namespace CP
         ANA_MSG_ERROR ("can't specify both onlyInefficiency and selectionDecoration");
         return StatusCode::FAILURE;
       }
-      m_selectionAccessor = std::make_unique<SG::AuxElement::Accessor<SelectionType> > (m_selectionDecoration);
+      ANA_CHECK (makeSelectionAccessor (m_selectionDecoration, m_selectionAccessor));
     }
 
     if (m_efficiencyDecoration.empty())
@@ -84,8 +84,7 @@ namespace CP
           // it.  You do the pre-selection via a view container like
           // for all the other CP algorithms.
           if (!m_onlyInefficiency &&
-              (!m_selectionAccessor ||
-               (*m_selectionAccessor) (*jet) == selectionAccept()))
+              (!m_selectionAccessor || m_selectionAccessor->getBool (*jet)))
           {
             ANA_CHECK_CORRECTION (m_outOfValidity, *jet, m_efficiencyTool->getScaleFactor (*jet, eff));
           } else