diff --git a/Trigger/TrigAlgorithms/TrigmuComb/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigmuComb/CMakeLists.txt
index fbd9987f92e48df15dd4f89fc055d83cd6a020ad..3502c0015953b7db3f02c761340280cc4069453a 100644
--- a/Trigger/TrigAlgorithms/TrigmuComb/CMakeLists.txt
+++ b/Trigger/TrigAlgorithms/TrigmuComb/CMakeLists.txt
@@ -7,7 +7,7 @@ atlas_subdir( TrigmuComb )
 atlas_add_component( TrigmuComb
                      src/*.cxx
                      src/components/*.cxx
-                     LINK_LIBRARIES AthenaBaseComps AthenaKernel AthenaMonitoringKernelLib CxxUtils GaudiKernel MagFieldInterfaces PathResolver StoreGateLib TrigConfHLTData TrigInDetEvent TrigInterfacesLib TrigMuonEvent TrigT1Interfaces TrigTimeAlgsLib TrkExInterfaces xAODTracking xAODTrigMuon )
+                     LINK_LIBRARIES AthenaBaseComps AthenaKernel AthenaMonitoringKernelLib CxxUtils GaudiKernel MagFieldInterfaces PathResolver StoreGateLib TrigConfHLTData TrigInDetEvent TrigInterfacesLib TrigMuonEvent TrigT1Interfaces TrigTimeAlgsLib TrkExInterfaces xAODTracking xAODTrigMuon MagFieldElements MagFieldConditions )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
diff --git a/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.cxx b/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.cxx
index d3554b5c6db16e734b49476952976f0df3c99844..9a318f94f2c81c4875d1afb1496b6c848c466fc7 100755
--- a/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.cxx
+++ b/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.cxx
@@ -35,6 +35,8 @@
 #include "TrigInDetEvent/TrigInDetTrackCollection.h"
 
 #include "GaudiKernel/SystemOfUnits.h"
+#include "GaudiKernel/ThreadLocalContext.h"
+
 
 ATLAS_NO_CHECK_FILE_THREAD_SAFETY;  // legacy trigger code
 
@@ -42,7 +44,6 @@ muComb::muComb(const std::string& name, ISvcLocator* pSvcLocator):
    HLT::FexAlgo(name, pSvcLocator),
    m_pStoreGate(NULL),
    m_backExtrapolatorG4("Trk::Extrapolator/AtlasExtrapolator"),
-   m_MagFieldSvc(0),
    m_pTimerService(0)
 {
 
@@ -187,12 +188,14 @@ HLT::ErrorCode muComb::hltInitialize()
    }
 
    if (m_useAthenaFieldService) {
-      if (!m_MagFieldSvc) service("AtlasFieldSvc", m_MagFieldSvc, /*createIf=*/ false).ignore();
-      if (m_MagFieldSvc) {
-	ATH_MSG_INFO("Retrieved AtlasFieldSvc ");
-      } else {
-	ATH_MSG_ERROR("Could not retrieve AtlasFieldSvc");
+      // Read handle for AtlasFieldCacheCondObj
+      StatusCode sc = m_fieldCacheCondObjInputKey.initialize();
+
+      if (sc.isFailure()) {
+	 ATH_MSG_ERROR("Error initalizing AtlasFieldCacheCondObj");
          return HLT::ErrorCode(HLT::Action::ABORT_JOB, HLT::Reason::BAD_JOB_SETUP);
+      } else {
+	 ATH_MSG_INFO("AtlasFieldCacheCondObj initialized ");
       }
    }
 
@@ -638,6 +641,8 @@ HLT::ErrorCode muComb::hltExecute(const HLT::TriggerElement* inputTE,
                                   HLT::TriggerElement* outputTE)
 {
 
+   EventContext ctx = Gaudi::Hive::currentContext();
+
    // init monitoring variables
    m_ptMS        = -9999.;
    m_etaMS       = -9999.;
@@ -664,10 +669,17 @@ HLT::ErrorCode muComb::hltExecute(const HLT::TriggerElement* inputTE,
    bool toroidOn   = !m_assumeToroidOff;
    bool solenoidOn = !m_assumeSolenoidOff;
    if (m_useAthenaFieldService) {
-      if (m_MagFieldSvc) {
-         toroidOn  = m_MagFieldSvc->toroidOn() && !m_assumeToroidOff;
-         solenoidOn = m_MagFieldSvc->solenoidOn() && !m_assumeSolenoidOff;
-      }
+        SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
+        const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
+        if (fieldCondObj == nullptr) {
+            ATH_MSG_ERROR("execute: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
+            return HLT::ErrorCode(HLT::Action::ABORT_CHAIN, HLT::Reason::BAD_JOB_SETUP);
+        }
+        MagField::AtlasFieldCache fieldCache;
+        fieldCondObj->getInitializedCache (fieldCache);
+
+        toroidOn   = fieldCache.toroidOn() && !m_assumeToroidOff;
+        solenoidOn = fieldCache.solenoidOn() && !m_assumeSolenoidOff;
    }
    ATH_MSG_DEBUG("=========== Magnetic Field Status ========== ");
    ATH_MSG_DEBUG(" B Fields read from AthenaFieldService:   " << (m_useAthenaFieldService ? "TRUE" : "FALSE"));
@@ -718,7 +730,7 @@ HLT::ErrorCode muComb::hltExecute(const HLT::TriggerElement* inputTE,
          useL1 = true;
       } else {
 	ATH_MSG_ERROR(" L2StandAloneMuonContainer not found --> ABORT");
-         return HLT::ErrorCode(HLT::Action::ABORT_CHAIN, HLT::Reason::MISSING_FEATURE);
+        return HLT::ErrorCode(HLT::Action::ABORT_CHAIN, HLT::Reason::MISSING_FEATURE);
       }
    }
    xAOD::L2StandAloneMuonContainer* muonColl = const_cast<xAOD::L2StandAloneMuonContainer*>(const_muonColl);
diff --git a/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.h b/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.h
index 2dd7d3f9c4dab2102ff4ab6ba16b79b52f1ec8a2..d62a7d516dae8ef7a6206839bbeb1ffacf316898 100755
--- a/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.h
+++ b/Trigger/TrigAlgorithms/TrigmuComb/src/muComb.h
@@ -23,12 +23,15 @@
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 //#include "ByteStreamCnvSvcBase/ROBDataProviderSvc.h"
 #include "TrkExInterfaces/IExtrapolator.h"
-#include "MagFieldInterfaces/IMagFieldSvc.h"
+//#include "MagFieldInterfaces/IMagFieldSvc.h"
+
+#include "MagFieldConditions/AtlasFieldCacheCondObj.h"
 
 #include "xAODTrigMuon/L2CombinedMuonContainer.h"
 #include "xAODTracking/TrackParticle.h"
 
 #include "CxxUtils/checker_macros.h"
+
 ATLAS_NO_CHECK_FILE_THREAD_SAFETY;  // legacy trigger code
 
 /** Main LVL2 Algorithm. Sided by a xAOD::L2StandaloneMuon, match the muon spectrometer track with an ID track, and produces a xAOD::L2CombinedMuon. */
@@ -62,7 +65,9 @@ class muComb : public HLT::FexAlgo
   ToolHandle<Trk::IExtrapolator>  m_backExtrapolatorG4;  
 
   /** Handle to the Magnetic field service */
-  MagField::IMagFieldSvc* m_MagFieldSvc; 
+  //MagField::IMagFieldSvc* m_MagFieldSvc; 
+  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
+
 
   /** Pointer to Timer Service */ 
   ITrigTimerSvc*  m_pTimerService;
diff --git a/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.cxx b/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.cxx
index 07424d65b7c6072ea342a2214fb7691e5deac06c..db0bf90648a07643ee70ab14fe13cccefabf6379 100644
--- a/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.cxx
+++ b/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.cxx
@@ -25,11 +25,12 @@
 #include "xAODTracking/TrackParticleContainer.h"
 #include "AthenaMonitoringKernel/Monitored.h"
 
+#include "GaudiKernel/ThreadLocalContext.h"
+
 class ISvcLocator;
 
 muCombMT::muCombMT(const std::string& name, ISvcLocator* pSvcLocator):
-   AthAlgorithm(name, pSvcLocator),
-   m_MagFieldSvc(0)
+   AthAlgorithm(name, pSvcLocator)
 {
 }
 
@@ -38,13 +39,7 @@ StatusCode muCombMT::initialize()
    ATH_MSG_DEBUG("Initialization:");
 
    //Filed service
-   if (!m_MagFieldSvc) service("AtlasFieldSvc", m_MagFieldSvc, /*createIf=*/ false).ignore();
-   if (m_MagFieldSvc) {
-      ATH_MSG_DEBUG( "Retrieved AtlasFieldSvc" );
-   } else {
-      ATH_MSG_ERROR( "Could not retrieve AtlasFieldSvc --> Abort" );
-      return StatusCode::FAILURE; 
-   }
+   ATH_CHECK( m_fieldCacheCondObjInputKey.initialize() );
 
    if (!m_monTool.empty()) {
       ATH_MSG_DEBUG("Retrieving monTool");
@@ -512,10 +507,18 @@ StatusCode muCombMT::execute()
    //Magnetic field status
    bool toroidOn   = !m_assumeToroidOff;
    bool solenoidOn = !m_assumeSolenoidOff;
-   if (m_MagFieldSvc) {
-      toroidOn  = m_MagFieldSvc->toroidOn() && !m_assumeToroidOff;
-      solenoidOn = m_MagFieldSvc->solenoidOn() && !m_assumeSolenoidOff;
+
+   SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
+   const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
+   if (fieldCondObj == nullptr) {
+       ATH_MSG_ERROR("execute: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
+       return StatusCode::FAILURE;
    }
+   MagField::AtlasFieldCache fieldCache;
+   fieldCondObj->getInitializedCache (fieldCache);
+
+   toroidOn   = fieldCache.toroidOn() && !m_assumeToroidOff;
+   solenoidOn = fieldCache.solenoidOn() && !m_assumeSolenoidOff;
    ATH_MSG_DEBUG( "=========== Magnetic Field Status ========== " );
    ATH_MSG_DEBUG( " Assuming Toroid OFF is:                  " << (m_assumeToroidOff ? "TRUE" : "FALSE") );
    ATH_MSG_DEBUG( " Assuming Solenoid OFF is:                " << (m_assumeSolenoidOff ? "TRUE" : "FALSE") );
diff --git a/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.h b/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.h
index 05707f2b82b0bcccf0028b21115492e5a4f4d1ed..b14f1e01fe5894afc8224429276c96d638e64dfa 100644
--- a/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.h
+++ b/Trigger/TrigAlgorithms/TrigmuComb/src/muCombMT.h
@@ -33,7 +33,7 @@
 #include "StoreGate/WriteHandleKey.h"
 
 #include "TrkExInterfaces/IExtrapolator.h"
-#include "MagFieldInterfaces/IMagFieldSvc.h"
+//#include "MagFieldInterfaces/IMagFieldSvc.h"
 
 #include "xAODTrigMuon/L2CombinedMuonContainer.h"
 #include "xAODTracking/TrackParticleContainer.h"
@@ -43,6 +43,7 @@
 //#include "TrigT1Interfaces/RecMuonRoI.h"
 
 #include "AthenaMonitoringKernel/GenericMonitoringTool.h"
+#include "MagFieldConditions/AtlasFieldCacheCondObj.h"
 
 /** Main LVL2 Algorithm. Sided by a xAOD::L2StandaloneMuon, match the muon spectrometer track with an ID track, and produces a xAOD::L2CombinedMuon. */
 class muCombMT : public AthAlgorithm
@@ -89,7 +90,8 @@ class muCombMT : public AthAlgorithm
 
   /** Handle to the Magnetic field service */
   //ServiceHandle<MagField::IMagFieldSvc> m_magFieldSvc;       //!< helper tool to get the magnetic field
-  MagField::IMagFieldSvc* m_MagFieldSvc; 
+  //MagField::IMagFieldSvc* m_MagFieldSvc; 
+  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
 
 
   int    drptMatch(double, double, double,