diff --git a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx
index 86fa21fd6a749c8a313448f3564231700c510938..9d829730e8c392a52b91c8081e7b10b1fb4b42bb 100644
--- a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx
+++ b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx
@@ -1,24 +1,12 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// ExtrapolateMuonToIPTool.cxx
-//   Implementation file for class ExtrapolateMuonToIP
-///////////////////////////////////////////////////////////////////
-// Niels van Eldik
-///////////////////////////////////////////////////////////////////
-
 #include "ExtrapolateMuonToIPTool.h"
 #include "TrkParameters/TrackParameters.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-#include "TrkExInterfaces/IExtrapolator.h"
 
 #include <vector>
 
-
-
 ExtrapolateMuonToIPTool::ExtrapolateMuonToIPTool(const std::string& t, const std::string& n,const IInterface* p)  :  
   AthAlgTool(t,n,p),
   m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"),
@@ -34,41 +22,20 @@ ExtrapolateMuonToIPTool::ExtrapolateMuonToIPTool(const std::string& t, const std
 
 }
 
-ExtrapolateMuonToIPTool::~ExtrapolateMuonToIPTool() {
-
-} 
-
 // Initialize method:
 StatusCode ExtrapolateMuonToIPTool::initialize()
 {
-
-  if( m_extrapolator.retrieve().isFailure() ){
-    ATH_MSG_ERROR( "failed to retrieve " << m_extrapolator );
-    return StatusCode::FAILURE;
-  }
-
-  if( m_muonExtrapolator.retrieve().isFailure() ){
-    ATH_MSG_ERROR( "failed to retrieve " << m_muonExtrapolator );
-    return StatusCode::FAILURE;
-  }
-
+  ATH_CHECK(m_extrapolator.retrieve());
+  ATH_CHECK(m_muonExtrapolator.retrieve());
   if(!m_edmHelperSvc.empty()) {
-    if(m_edmHelperSvc.retrieve().isFailure()) {
-      ATH_MSG_ERROR("Failed to retrieve helper " << m_edmHelperSvc);
-      return StatusCode::FAILURE;
-    }else {
-      ATH_MSG_DEBUG( "Retrieved helper " << m_edmHelperSvc );
-    }  
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_MSG_DEBUG( "Retrieved helper " << m_edmHelperSvc );
   }
-
   if(!m_printer.empty()) {
-    if(m_printer.retrieve().isFailure()) {
-      ATH_MSG_ERROR( "Failed to retrieve printer " << m_printer );
-      return StatusCode::FAILURE;
-    }else {
-      ATH_MSG_DEBUG("Retrieved printer " << m_printer);
-    }  
+    ATH_CHECK(m_printer.retrieve());
+    ATH_MSG_DEBUG("Retrieved printer " << m_printer);
   }
+  ATH_CHECK(m_trackSummary.retrieve());
   return StatusCode::SUCCESS;
 }
 
@@ -107,7 +74,7 @@ TrackCollection* ExtrapolateMuonToIPTool::extrapolate(const TrackCollection& muo
     if( !extrapolateTrack ) {
       if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) <<MSG::DEBUG <<"Extrapolation of muon to IP failed" << endmsg;
       continue;
-    }    
+    }
 
     if (msgLvl(MSG::DEBUG))  msg(MSG::DEBUG) << " Extrapolated track " << m_printer->print(*extrapolateTrack) << endmsg; 
 
@@ -235,7 +202,8 @@ Trk::Track* ExtrapolateMuonToIPTool::extrapolate(const Trk::Track& track) const
   info.setPatternRecognitionInfo( Trk::TrackInfo::MuidStandAlone );
   // create new track
   Trk::Track* extrapolateTrack = new Trk::Track( info, trackStateOnSurfaces, track.fitQuality() ? track.fitQuality()->clone():0);
-	
+  // create track summary
+  m_trackSummary->updateTrack(*extrapolateTrack);
   return extrapolateTrack;
 }
 
diff --git a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h
index 34b9a7bed04b4d4e88fbca200c2474c985993ff1..a3fc351b2d1cb3525b26b1ba8889a4e4bb1c509d 100644
--- a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h
+++ b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h
@@ -1,26 +1,22 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef EXTRAPOLATEMUONTOIPTOOL_H
 #define EXTRAPOLATEMUONTOIPTOOL_H
 
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
 #include "MuonRecToolInterfaces/IMuonTrackExtrapolationTool.h"
 
 #include "AthenaBaseComps/AthAlgTool.h"
-
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
 
-#include <atomic>
+#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "TrkToolInterfaces/ITrackSummaryTool.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
+#include "TrkExInterfaces/IExtrapolator.h"
 
-namespace Trk{
-  class IExtrapolator;
-}
-namespace Muon{
-  class MuonEDMPrinterTool;
-}
+#include <atomic>
 
 /**
    Tool to extrapolate tracks in the muon system to the IP. Internally uses IMuonTrackThroughCalo for 
@@ -35,7 +31,7 @@ class ExtrapolateMuonToIPTool : virtual public Muon::IMuonTrackExtrapolationTool
   ExtrapolateMuonToIPTool(const std::string&, const std::string&, const IInterface*);
 
   /** Destructor */
-  virtual ~ExtrapolateMuonToIPTool();
+  virtual ~ExtrapolateMuonToIPTool()=default;
 
   /** initialize */
   virtual StatusCode initialize();
@@ -68,6 +64,7 @@ class ExtrapolateMuonToIPTool : virtual public Muon::IMuonTrackExtrapolationTool
     "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
     "Handle to the service providing the IMuonEDMHelperSvc interface" };               //!< muon EDM helper tool
   ToolHandle<Muon::MuonEDMPrinterTool>   m_printer;              //!< muon EDM printer tool
+  ToolHandle<Trk::ITrackSummaryTool> m_trackSummary {this,"TrackSummaryTool","Trk::TrackSummaryTool/MuidTrackSummaryTool"};
 
   mutable std::atomic_uint m_nextrapolations;
   mutable std::atomic_uint m_failedClosestPars;
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
index e3e5845b7051398c1bd1080c522eaf189ca52196..9317c22cf425b7c6505d1ba8369730f4451c28e0 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
@@ -23,10 +23,10 @@ namespace MuonCombined {
 
   MuonCandidateTool::MuonCandidateTool (const std::string& type, const std::string& name, const IInterface* parent)
     : AthAlgTool(type, name, parent),
-      m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
+      m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool", this),
       m_trackBuilder("Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder", this),
-      m_trackExtrapolationTool("ExtrapolateMuonToIPTool/ExtrapolateMuonToIPTool"),
-      m_ambiguityProcessor("Trk::TrackSelectionProcessorTool/MuonAmbiProcessor")
+      m_trackExtrapolationTool("ExtrapolateMuonToIPTool/ExtrapolateMuonToIPTool", this),
+      m_ambiguityProcessor("Trk::TrackSelectionProcessorTool/MuonAmbiProcessor", this)
   {
     declareInterface<IMuonCandidateTool>(this);
     declareProperty("Printer",m_printer );
diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
index 25cbb870294d14f0996d6adbbe6a2d2151d64298..4963ff9e169801013fe748478b79d5c60cc61bb4 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
@@ -181,7 +181,8 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs):
 
 def ExtrapolateMuonToIPToolCfg(flags, name="ExtrapolateMuonToIPTool", **kwargs):
     #FIXME complete this configuration
-    result = ComponentAccumulator()
+    result = MuonCombinedTrackSummaryToolCfg(flags)
+    kwargs.setdefault("TrackSummaryTool", result.popPrivateTools() )
     result.setPrivateTools(CompFactory.ExtrapolateMuonToIPTool(name,**kwargs))
     return result
 
@@ -189,10 +190,11 @@ def MuonCandidateToolCfg(flags, name="MuonCandidateTool",**kwargs):
     from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
     result = CombinedMuonTrackBuilderCfg(flags)
     kwargs.setdefault("TrackBuilder", result.popPrivateTools() )
-    acc = ExtrapolateMuonToIPToolCfg(flags)
-    extrapolator = acc.popPrivateTools()
-    result.addPublicTool(extrapolator)
-    kwargs.setdefault("TrackExtrapolationTool", extrapolator )
+    if flags.Beam.Type=="cosmics":
+        acc = ExtrapolateMuonToIPToolCfg(flags)
+        extrapolator = acc.popPrivateTools()
+        result.addPublicTool(extrapolator)
+        kwargs.setdefault("TrackExtrapolationTool", extrapolator )
     result.merge(acc)
 
     acc = MuonAmbiProcessorCfg(flags)
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py
index bf962778503471fc0c3eacf3022033df095fdca1..f6b1adae137247723aeec47aa83f8ee147faf13f 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py
@@ -64,6 +64,7 @@ addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCombinedParticleCreator","
 addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCaloParticleCreator","MuonCaloParticleCreator")
 addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCreatorTool","MuonCreatorTool")
 addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCreatorTool","StauCreatorTool",BuildStauContainer=True)
+addTool("MuonCombinedRecExample.MuonCombinedTools.ExtrapolateMuonToIPTool","ExtrapolateMuonToIPTool")
 addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCandidateTool","MuonCandidateTool")
 addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCombinedTrackSummaryTool","MuonCombinedTrackSummaryTool")
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py
index 3a008181d67422a8baf8f4fdcc33d3c4d693f88b..5507eb2c7cfce670249f6bfdfe3cbf072408f324 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags
 from MuonCombinedRecExample.MuonCombinedKeys import MuonCombinedKeys as MuonCbKeys
@@ -92,10 +92,19 @@ def MuonCreatorTool(name="MuonCreatorTool",**kwargs):
     kwargs.setdefault("ParticleCaloExtensionTool", getPublicTool("MuonParticleCaloExtensionTool") )
     return CfgMgr.MuonCombined__MuonCreatorTool(name,**kwargs)
 
+def ExtrapolateMuonToIPTool(name="ExtrapolateMuonToIPTool",**kwargs):
+    if TriggerFlags.MuonSlice.doTrigMuonConfig:
+        kwargs.setdefault("TrackSummaryTool", getPublicTool("MuonTrackSummaryTool"))
+    else:
+        import MuonCombinedRecExample.CombinedMuonTrackSummary
+        from AthenaCommon.AppMgr import ToolSvc
+        kwargs.setdefault("TrackSummaryTool", ToolSvc.CombinedMuonTrackSummary)
+    return CfgMgr.ExtrapolateMuonToIPTool(name,**kwargs)
+
 def MuonCandidateTool(name="MuonCandidateTool",**kwargs):
     if beamFlags.beamType() == 'cosmics':
         kwargs.setdefault("ExtrapolationStrategy", 1 )
-
+        kwargs.setdefault("TrackExtrapolationTool", getPublicTool("ExtrapolateMuonToIPTool"))
     if TriggerFlags.MuonSlice.doTrigMuonConfig:
         trigTrackBuilder = getPublicToolClone("TrigCombinedMuonTrackBuilder","CombinedMuonTrackBuilder",
                                               TrackSummaryTool=getPublicTool("MuonTrackSummaryTool"))
diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
index 5e099306652b0616b5db60bf5f2451059a2b80a7..aabe79b81d738e99fd6c59a15b819f905f4e0a31 100755
--- a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
+++ b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
@@ -25,6 +25,9 @@ from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc
 from MuonRecExample.MuonRecFlags import muonRecFlags
 from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags
 
+from AthenaCommon.BeamFlags import jobproperties
+beamFlags = jobproperties.Beam
+
 #Offline calorimeter isolation tool
 #from TrackInCaloTools import TrackInCaloTools
 #TMEFTrackInCaloTools = TrackInCaloTools.TrackInCaloTools(name='MuonIsoTrackInCaloTools')
@@ -345,6 +348,8 @@ def TMEF_MuonCombinedFitTagTool(name="TMEF_MuonCombinedFitTagTool",**kwargs):
 
 def TMEF_MuonCandidateTool(name="TMEF_MuonCandidateTool",**kwargs):
     kwargs.setdefault("TrackBuilder","TMEF_CombinedMuonTrackBuilder")
+    if beamFlags.beamType() == 'cosmics':
+        kwargs.setdefault("TrackExtrapolationTool", CfgGetter.getPublicTool("ExtrapolateMuonToIPTool"))
     return CfgMgr.MuonCombined__MuonCandidateTool(name,**kwargs)
 
 def TrigMuonAmbiProcessor(name="TrigMuonAmbiProcessor",**kwargs) :
diff --git a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py
index 378340b25f3cc58fd33d5dd1870964c6e6834127..d4db9d3d766f2ece783ac905d06a439769a42093 100755
--- a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py
+++ b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 from TrigmuComb.TrigmuCombConf import *
 from TrigmuComb.TrigmuCombMonitoring import *
@@ -7,14 +7,7 @@ from AthenaCommon.GlobalFlags import globalflags
 from AthenaCommon.AppMgr import ServiceMgr
 from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
 from MuonByteStream.MuonByteStreamFlags import muonByteStreamFlags
-#from TrigMuonBackExtrapolator.TrigMuonBackExtrapolatorConfig import *
 from AthenaCommon.AppMgr import ToolSvc
-#from CombinedMuonRefit.CombinedMuonRefitConf import ExtrapolateMuonToIPTool
-
-#ToolSvc += MuonBackExtrapolatorForAlignedDet()
-#ToolSvc += MuonBackExtrapolatorForMisalignedDet()
-#ToolSvc += MuonBackExtrapolatorForData()
-#ToolSvc += ExtrapolateMuonToIPTool()
 
 class TrigmuCombConfig (muComb):