diff --git a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py
index 5185d3642cf928b37c9b951ce46ef453b5ccc8dd..c01caa50e7482ab72a424bdb01192fac99b22f0a 100644
--- a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py
@@ -4,36 +4,15 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.Enums import Format
 
-def ITkTrackParticleCreatorToolCfg(flags, name="ITkTrackParticleCreatorTool", **kwargs):
-    result = ComponentAccumulator()
-    if "TrackToVertex" not in kwargs:
-        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
-        kwargs["TrackToVertex"] = result.popToolsAndMerge(TrackToVertexCfg(flags))
-    if "TrackSummaryTool" not in kwargs:
-        from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolSharedHitsCfg
-        TrackSummaryTool = result.popToolsAndMerge(ITkTrackSummaryToolSharedHitsCfg(flags))
-        result.addPublicTool(TrackSummaryTool)
-        kwargs["TrackSummaryTool"] = TrackSummaryTool
-    kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster
-    kwargs.setdefault("KeepParameters", True)
-    kwargs.setdefault("KeepFirstParameters", False)
-    # need to treat Vertex specifically because at the time of
-    # the track particle creation the primary vertex does not yet exist.
-    # The problem is solved by first creating track particles wrt. the beam line
-    # and correcting the parameters after the vertex finding.
-    kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.ITk.Tracking.perigeeExpression=="Vertex"
-                      else flags.ITk.Tracking.perigeeExpression)
-    kwargs.setdefault("IBLParameterSvc", "")
-    ITkTrackParticleCreatorTool = CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)
-    result.addPublicTool(ITkTrackParticleCreatorTool, primary=True)
-    return result
-
-def ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool", ITkTrackParticleCreator = None, **kwargs):
+def ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool", **kwargs):
     result = ComponentAccumulator()
 
-    ITkTrackParticleCreator = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags))
+    if "TrackParticleCreator" not in kwargs:
+        from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg
+        ITkTrackParticleCreator = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags))
+        result.addPublicTool(ITkTrackParticleCreator)
+        kwargs.setdefault("TrackParticleCreator", ITkTrackParticleCreator)
 
-    kwargs.setdefault("TrackParticleCreator", ITkTrackParticleCreator)
     result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs))
     return result
 
@@ -69,12 +48,16 @@ def ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", TrackContain
     kwargs.setdefault("TrackContainerName", TrackContainerName)
     kwargs.setdefault("xAODContainerName", OutputTrackParticleContainer)
     kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", OutputTrackParticleContainer)
+
     if "TrackParticleCreator" not in kwargs:
-        kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags))
+        from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg
+        kwargs["TrackParticleCreator"] = result.popToolsAndMerge(ITkTrackParticleCreatorToolCfg(flags))
     if "TrackCollectionCnvTool" not in kwargs:
+        TrackParticleCreator = kwargs["TrackParticleCreator"]
+        result.addPublicTool(TrackParticleCreator)
         kwargs["TrackCollectionCnvTool"] = result.popToolsAndMerge(ITkTrackCollectionCnvToolCfg(
             flags,
-            TrackParticleCreator=kwargs["TrackParticleCreator"],
+            TrackParticleCreator=TrackParticleCreator,
         ))
 
     if flags.ITk.Tracking.doTruth:
diff --git a/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py b/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py
index 8bd54d944fefc0ffdf775ce71f7cb48d0f1732a9..61b38822f24e8c3bb39ef4fe7ae8c1bd805126b4 100644
--- a/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py
+++ b/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py
@@ -71,3 +71,8 @@ def TRT_ElectronPidToolCfg(flags, name="TRT_ElectronPidTool", **kwargs):
 
     acc.setPrivateTools(CompFactory.InDet.TRT_ElectronPidToolRun2(name, **kwargs))
     return acc
+
+def GSFBuildTRT_ElectronPidToolCfg(flags, name="GSFBuildTRT_ElectronPidTool", **kwargs):
+    kwargs.setdefault("CalculateNNPid", False)
+    kwargs.setdefault("MinimumTrackPtForNNPid", 0.)
+    return TRT_ElectronPidToolCfg(flags, name, **kwargs)
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 7a79e44eb9d383b7493829f8a848c6445c09539c..f3b1f12af7196811cabcab5847e06d69da10c137 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -14,90 +14,33 @@ def TrackToVertexCfg(flags, name="AtlasTrackToVertexTool", **kwargs):
     result.setPrivateTools(CompFactory.Reco.TrackToVertex(name, **kwargs))
     return result
 
-def TrackParticleCreatorToolCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs):
-
-    if flags.Detector.GeometryITk:
-        name = name.replace("InDet", "ITk")
-        from InDetConfig.ITkTrackRecoConfig import ITkTrackParticleCreatorToolCfg
-        return ITkTrackParticleCreatorToolCfg(flags, name, **kwargs)
-
+def RecTrackParticleContainerCnvToolCfg(flags, name="RecTrackParticleContainerCnvTool", **kwargs):
     result = ComponentAccumulator()
-    if "TrackToVertex" not in kwargs:
-        kwargs["TrackToVertex"] = result.popToolsAndMerge(TrackToVertexCfg(flags))
-    if "TrackSummaryTool" not in kwargs:
-        from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolSharedHitsCfg
-        TrackSummaryTool = result.popToolsAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags))
-        result.addPublicTool(TrackSummaryTool)
-        kwargs["TrackSummaryTool"] = TrackSummaryTool
-
-    if "TRT_ElectronPidTool" not in kwargs :
-        from InDetConfig.TRT_ElectronPidToolsConfig import TRT_ElectronPidToolCfg
-        kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(TRT_ElectronPidToolCfg(flags, name="InDetTRT_ElectronPidTool")))
-
-    if 'PixelToTPIDTool' not in kwargs :
-        from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg
-        kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags)))
-
-    kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster
-    kwargs.setdefault("KeepParameters", True)
-    kwargs.setdefault("KeepFirstParameters", False)
-    # need to treat Vertex specifically because at the time of
-    # the track particle creation the primary vertex does not yet exist.
-    # The problem is solved by first creating track particles wrt. the beam line
-    # and correcting the parameters after the vertex finding.
-    kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.InDet.Tracking.perigeeExpression=="Vertex"
-                      else flags.InDet.Tracking.perigeeExpression)
-    result.addPublicTool(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs), primary = True)
-    return result
 
-def TrackParticleCreatorToolPIDCheckCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs):
-    # Used only through tracking passes, where ActivePass flags are defined
-    if not flags.InDet.Tracking.ActivePass.RunTRTPID:
-        kwargs.setdefault("TRT_ElectronPidTool", None)
-    if not flags.InDet.Tracking.ActivePass.RunPixelPID:
-        kwargs.setdefault("PixelToTPIDTool", None)
-
-    # have to create special public instance depending on PID tool configuration
-    if name=="InDetxAODParticleCreatorTool" :
-        pixel_pid = flags.InDet.Tracking.ActivePass.RunPixelPID
-        trt_pid = flags.InDet.Tracking.ActivePass.RunPixelPID
-        if not trt_pid and not pixel_pid :
-            name  += "NoPID"
-        elif not trt_pid :
-            name += "NoTRTPID"
-        elif not pixel_pid :
-            name  += "NoPixPID"
-
-    return TrackParticleCreatorToolCfg(flags, name, **kwargs)
-
-def TrackParticleCreatorToolNoPIDCfg(flags, name="InDetxAODParticleCreatorToolNoPID", **kwargs):
-
-    kwargs.setdefault("TRT_ElectronPidTool", None)
-    kwargs.setdefault("PixelToTPIDTool", None)
-    return TrackParticleCreatorToolCfg(flags, name, **kwargs)
-
-def RecTrackParticleContainerCnvToolCfg(flags, name="RecTrackParticleContainerCnvTool", TrackParticleCreator = None):
-    result = ComponentAccumulator()
-    if TrackParticleCreator is None:
-        TrackParticleCreator = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags))
-    result.setPrivateTools(CompFactory.xAODMaker.RecTrackParticleContainerCnvTool(name,
-                                                                                  TrackParticleCreator=TrackParticleCreator,
-    ))
+    if "TrackParticleCreator" not in kwargs:
+        from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
+        TrackParticleCreator = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags))
+        result.addPublicTool(TrackParticleCreator)
+        kwargs.setdefault("TrackParticleCreator", TrackParticleCreator)
+
+    result.setPrivateTools(CompFactory.xAODMaker.RecTrackParticleContainerCnvTool(name, **kwargs))
     return result
 
-def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", TrackParticleCreator = None):
+def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", **kwargs):
     if flags.Detector.GeometryITk:
         name = name.replace("InDet", "ITk")
         from InDetConfig.ITkTrackRecoConfig import ITkTrackCollectionCnvToolCfg
-        return ITkTrackCollectionCnvToolCfg(flags, name, TrackParticleCreator)
+        return ITkTrackCollectionCnvToolCfg(flags, name, **kwargs)
 
     result = ComponentAccumulator()
-    if TrackParticleCreator is None:
-        TrackParticleCreator = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags))
-    result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(
-        name,
-        TrackParticleCreator=TrackParticleCreator,
-    ))
+
+    if "TrackParticleCreator" not in kwargs:
+        from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
+        TrackParticleCreator = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags))
+        result.addPublicTool(TrackParticleCreator)
+        kwargs.setdefault("TrackParticleCreator", TrackParticleCreator)
+
+    result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs))
     return result
 
 def TrackCollectionMergerAlgCfg(flags, name="InDetTrackCollectionMerger",
@@ -144,12 +87,16 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", TrackContainerName
     kwargs.setdefault("TrackContainerName", TrackContainerName)
     kwargs.setdefault("xAODContainerName", OutputTrackParticleContainer)
     kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", OutputTrackParticleContainer)
+
     if "TrackParticleCreator" not in kwargs:
-        kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags))
+        from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
+        kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags))
     if "TrackCollectionCnvTool" not in kwargs:
+        TrackParticleCreator = kwargs["TrackParticleCreator"]
+        result.addPublicTool(TrackParticleCreator)
         kwargs["TrackCollectionCnvTool"] = result.popToolsAndMerge(TrackCollectionCnvToolCfg(
             flags,
-            TrackParticleCreator=kwargs["TrackParticleCreator"],
+            TrackParticleCreator = TrackParticleCreator,
         ))
 
     if flags.InDet.doTruth:
@@ -167,20 +114,18 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", TrackContainerName
     return result
 
 def TrackParticleCnvAlgPIDCheckCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs):
-
     result = ComponentAccumulator()
     if "TrackParticleCreator" not in kwargs:
-        kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolPIDCheckCfg(flags))
-
+        from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolPIDCheckCfg
+        kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolPIDCheckCfg(flags))
     result.merge(TrackParticleCnvAlgCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs))
     return result
 
 def TrackParticleCnvAlgNoPIDCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs):
-
     result = ComponentAccumulator()
     if "TrackParticleCreator" not in kwargs:
-        kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolNoPIDCfg(flags))
-
+        from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolNoPIDCfg
+        kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolNoPIDCfg(flags))
     result.merge(TrackParticleCnvAlgCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs))
     return result
 
diff --git a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
index ec2ffe698a1a09de306bde0ea3e13cda4529f38a..146a065c067f073f7420737ee0cd628a7d7c9795 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
@@ -434,20 +434,13 @@ def MuonTrackSelectorCfg(flags, name = "MuonTrackSelectorTool", **kwargs):
     return result
 
 def MuonStandaloneTrackParticleCnvAlgCfg(flags, name = "MuonStandaloneTrackParticleCnvAlg", **kwargs):
-    from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg, TrackParticleCnvAlgCfg, TrackParticleCreatorToolCfg, RecTrackParticleContainerCnvToolCfg
-    from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
-    from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
+    from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg, TrackParticleCnvAlgCfg, RecTrackParticleContainerCnvToolCfg
+    from TrkConfig.TrkParticleCreatorConfig import MuonParticleCreatorToolCfg
 
     result = ComponentAccumulator()
-    track_summary_tool = result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags))
-    muon_hit_summary_tool = result.popToolsAndMerge(MuonHitSummaryToolCfg(flags))
-    muon_particle_creator_tool = result.getPrimaryAndMerge( TrackParticleCreatorToolCfg(flags, name="MuonParticleCreatorTool", 
-                                                                    TrackSummaryTool=track_summary_tool, 
-                                                                    TRT_ElectronPidTool=None,
-                                                                    PixelToTPIDTool=None,
-                                                                    KeepAllPerigee=True,
-                                                                    MuonSummaryTool= muon_hit_summary_tool,
-                                                                    PerigeeExpression="Origin"  ) )
+
+    muon_particle_creator_tool = result.popToolsAndMerge(MuonParticleCreatorToolCfg(flags))
+    result.addPublicTool(muon_particle_creator_tool)
     track_collection_cnv_tool = result.getPrimaryAndMerge(TrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", TrackParticleCreator = muon_particle_creator_tool))
     kwargs.setdefault("TrackParticleCreator",  muon_particle_creator_tool)
     kwargs.setdefault("RecTrackParticleContainerCnvTool", result.getPrimaryAndMerge(RecTrackParticleContainerCnvToolCfg(flags,
diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
index c2ed6bf8a15493042b5146bbacdb3f2351fe0032..f5ba070ca007c3cc146e27cee209c93493cce4eb 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
@@ -95,38 +95,6 @@ def MuonCombinedInDetDetailedTrackSelectorTool_LRTCfg(flags, name='MuonCombinedI
     return MuonCombinedInDetDetailedTrackSelectorToolCfg(flags, name, **kwargs)
 
 
-def MuonCombinedParticleCreatorCfg(flags, name="MuonCombinedParticleCreator", **kwargs):
-    from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
-
-    result = ComponentAccumulator()
-    if flags.Muon.SAMuonTrigger:
-        from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
-        kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)))
-    else:
-        from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
-        kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonCombinedTrackSummaryToolCfg(flags)))
-
-    if 'TrackToVertex' not in kwargs:
-        kwargs.setdefault('TrackToVertex', result.popToolsAndMerge(
-            MuonTrackToVertexCfg(flags)))
-
-    # if "PixelToTPIDTool" not in kwargs and not flags.Muon.MuonTrigger and flags.GeoModel.Run < LHCPeriod.Run4:
-    #    from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg
-    #    kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(
-    #        InDetPixelToTPIDToolCfg(flags)))
-
-    kwargs.setdefault("KeepAllPerigee", True)
-    kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge(
-        MuonHitSummaryToolCfg(flags)))
-    if flags.Beam.Type is BeamType.Cosmics:
-        kwargs.setdefault("PerigeeExpression", "Origin")
-    kwargs.setdefault("IBLParameterSvc",
-                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
-    tool = CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)
-    result.setPrivateTools(tool)
-    return result
-
-
 def InDetCandidateToolCfg(flags, name="InDetCandidateTool", **kwargs):
     result = MuonCombinedInDetDetailedTrackSelectorToolCfg(flags)
     kwargs.setdefault("TrackSelector", result.getPrimary())
@@ -150,31 +118,6 @@ def MuonInDetForwardCandidateToolCfg(flags,  name='MuonInDetForwardCandidateTool
     return result  # FIXME - is this and the above, actually used?
 
 
-def MuonCaloParticleCreatorCfg(flags, name="MuonCaloParticleCreator", **kwargs):
-    from InDetConfig.TrackRecoConfig import TrackToVertexCfg
-    result = ComponentAccumulator()
-    if "TrackToVertex" not in kwargs:
-        kwargs["TrackToVertex"] = result.popToolsAndMerge(
-            TrackToVertexCfg(flags))
-
-    if flags.Muon.SAMuonTrigger:
-        from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
-        kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
-            MuonTrackSummaryToolCfg(flags)))
-    else:
-        from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
-        kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
-            MuonCombinedTrackSummaryToolCfg(flags)))
-    kwargs.setdefault("KeepAllPerigee", True)
-    kwargs.setdefault("PerigeeExpression", "Origin")
-    kwargs.setdefault("IBLParameterSvc",
-                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
-    track_particle_creator = CompFactory.Trk.TrackParticleCreatorTool(
-        name="MuonCaloParticleCreator", **kwargs)
-    result.setPrivateTools(track_particle_creator)
-    return result
-
-
 def MuonCaloEnergyToolCfg(flags,  name="MuonCaloEnergyTool", **kwargs):
     from TrackToCalo.TrackToCaloConfig import ParticleCaloCellAssociationToolCfg, ParticleCaloExtensionToolCfg
 
@@ -184,6 +127,7 @@ def MuonCaloEnergyToolCfg(flags,  name="MuonCaloEnergyTool", **kwargs):
     particle_calo_extension_tool = result.popToolsAndMerge(
         ParticleCaloExtensionToolCfg(flags))
 
+    from TrkConfig.TrkParticleCreatorConfig import MuonCaloParticleCreatorCfg
     track_particle_creator = result.popToolsAndMerge(
         MuonCaloParticleCreatorCfg(flags))
 
@@ -269,9 +213,8 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs):
     kwargs.setdefault("ParticleCaloExtensionTool", acc.popPrivateTools())
     result.merge(acc)
 
-    acc = MuonCombinedParticleCreatorCfg(flags)
-    kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools())
-    result.merge(acc)
+    from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
+    kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags)))
 
     from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
     kwargs.setdefault("AmbiguityProcessor", result.popToolsAndMerge(MuonAmbiProcessorCfg(flags)))
diff --git a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
index 4d8d099f9bd80b74b09a406bda7ca7b4e382291a..270bc7937143000ac56f1b8015966538ef4d8f58 100644
--- a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
+++ b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
@@ -2,7 +2,6 @@
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
-from AthenaConfiguration.Enums import LHCPeriod
 from AthenaCommon.Logging import logging
 
 
@@ -23,34 +22,10 @@ def EMBremCollectionBuilderCfg(flags,
             egammaTrkRefitterToolCfg(flags))
 
     if "TrackParticleCreatorTool" not in kwargs:
-        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
-
-        from InDetConfig.TRT_ElectronPidToolsConfig import (
-            TRT_ElectronPidToolCfg)
-        from TrkConfig.TrkTrackSummaryToolConfig import GSFTrackSummaryToolCfg
-        TrackSummaryTool = acc.popToolsAndMerge(GSFTrackSummaryToolCfg(flags))
-        acc.addPublicTool(TrackSummaryTool)
-
-        gsfTrackParticleCreatorTool = CompFactory.Trk.TrackParticleCreatorTool(
-            name="GSFBuildInDetParticleCreatorTool",
-            KeepParameters=True,
-            TrackToVertex=acc.popToolsAndMerge(TrackToVertexCfg(flags)),
-            TrackSummaryTool=TrackSummaryTool,
-            PixelToTPIDTool=(CompFactory.InDet.PixelToTPIDTool(
-                name="GSFBuildPixelToTPIDTool")
-                if flags.GeoModel.Run < LHCPeriod.Run4 else None),
-            TRT_ElectronPidTool=(acc.popToolsAndMerge(
-                TRT_ElectronPidToolCfg(
-                    flags,
-                    name="GSFBuildTRT_ElectronPidTool",
-                    CalculateNNPid=False,
-                    MinimumTrackPtForNNPid=0.))
-                if flags.Detector.EnableTRT else None),
-            BadClusterID=0,
-            IBLParameterSvc=(
-                "IBLParameterSvc" if flags.Detector.GeometryID else "")
-        )
-        kwargs["TrackParticleCreatorTool"] = gsfTrackParticleCreatorTool
+        from TrkConfig.TrkParticleCreatorConfig import (
+            GSFBuildInDetParticleCreatorToolCfg)
+        kwargs["TrackParticleCreatorTool"] = acc.popToolsAndMerge(
+            GSFBuildInDetParticleCreatorToolCfg(flags))
 
     if "TrackSlimmingTool" not in kwargs:
         slimmingTool = CompFactory.Trk.TrackSlimmingTool(
diff --git a/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..8867e1c742b8484b7f9ef4dc7815912e1b40587a
--- /dev/null
+++ b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py
@@ -0,0 +1,239 @@
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+# Configuration of TrkParticleCreator package
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.Enums import BeamType, LHCPeriod
+
+####################################
+#####        InDet/ITk         #####
+####################################
+
+def TrackParticleCreatorToolCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs):
+
+    if flags.Detector.GeometryITk:
+        name = name.replace("InDet", "ITk")
+        return ITkTrackParticleCreatorToolCfg(flags, name, **kwargs)
+
+    result = ComponentAccumulator()
+    if "TrackToVertex" not in kwargs:
+        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags)))
+    if "TrackSummaryTool" not in kwargs:
+        from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolSharedHitsCfg
+        TrackSummaryTool = result.popToolsAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags))
+        result.addPublicTool(TrackSummaryTool)
+        kwargs.setdefault("TrackSummaryTool", TrackSummaryTool)
+
+    if "TRT_ElectronPidTool" not in kwargs :
+        from InDetConfig.TRT_ElectronPidToolsConfig import TRT_ElectronPidToolCfg
+        kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(TRT_ElectronPidToolCfg(flags, name="InDetTRT_ElectronPidTool")))
+
+    if 'PixelToTPIDTool' not in kwargs :
+        from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg
+        kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags)))
+
+    kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster
+    kwargs.setdefault("KeepParameters", True)
+    kwargs.setdefault("KeepFirstParameters", False)
+    # need to treat Vertex specifically because at the time of
+    # the track particle creation the primary vertex does not yet exist.
+    # The problem is solved by first creating track particles wrt. the beam line
+    # and correcting the parameters after the vertex finding.
+    kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.InDet.Tracking.perigeeExpression=="Vertex"
+                      else flags.InDet.Tracking.perigeeExpression)
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+def TrackParticleCreatorToolPIDCheckCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs):
+    # Used only through tracking passes, where ActivePass flags are defined
+    if not flags.InDet.Tracking.ActivePass.RunTRTPID:
+        kwargs.setdefault("TRT_ElectronPidTool", None)
+    if not flags.InDet.Tracking.ActivePass.RunPixelPID:
+        kwargs.setdefault("PixelToTPIDTool", None)
+
+    # have to create special public instance depending on PID tool configuration
+    if name=="InDetxAODParticleCreatorTool" :
+        pixel_pid = flags.InDet.Tracking.ActivePass.RunPixelPID
+        trt_pid = flags.InDet.Tracking.ActivePass.RunPixelPID
+        if not trt_pid and not pixel_pid :
+            name  += "NoPID"
+        elif not trt_pid :
+            name += "NoTRTPID"
+        elif not pixel_pid :
+            name  += "NoPixPID"
+
+    return TrackParticleCreatorToolCfg(flags, name, **kwargs)
+
+def TrackParticleCreatorToolNoPIDCfg(flags, name="InDetxAODParticleCreatorToolNoPID", **kwargs):
+    kwargs.setdefault("TRT_ElectronPidTool", None)
+    kwargs.setdefault("PixelToTPIDTool", None)
+    return TrackParticleCreatorToolCfg(flags, name, **kwargs)
+
+def InDetTrigParticleCreatorToolFTFCfg(flags, name="InDetTrigParticleCreatorToolFTF", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackToVertex" not in kwargs:
+        from TrigInDetConfig.TrigInDetConfig import TrigTrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrigTrackToVertexCfg(flags)))
+
+    if "TrackSummaryTool" not in kwargs:
+        from TrkConfig.TrkTrackSummaryToolConfig import InDetTrigTrackSummaryToolCfg
+        TrackSummaryTool = result.popToolsAndMerge( InDetTrigTrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") )
+        result.addPublicTool(TrackSummaryTool)
+        kwargs.setdefault("TrackSummaryTool", TrackSummaryTool)
+
+    kwargs.setdefault("KeepParameters", True)
+    kwargs.setdefault("ComputeAdditionalInfo", True)
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+def ITkTrackParticleCreatorToolCfg(flags, name="ITkTrackParticleCreatorTool", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackToVertex" not in kwargs:
+        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags)))
+    if "TrackSummaryTool" not in kwargs:
+        from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolSharedHitsCfg
+        TrackSummaryTool = result.popToolsAndMerge(ITkTrackSummaryToolSharedHitsCfg(flags))
+        result.addPublicTool(TrackSummaryTool)
+        kwargs.setdefault("TrackSummaryTool", TrackSummaryTool)
+    kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster
+    kwargs.setdefault("KeepParameters", True)
+    kwargs.setdefault("KeepFirstParameters", False)
+    # need to treat Vertex specifically because at the time of
+    # the track particle creation the primary vertex does not yet exist.
+    # The problem is solved by first creating track particles wrt. the beam line
+    # and correcting the parameters after the vertex finding.
+    kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.ITk.Tracking.perigeeExpression=="Vertex"
+                      else flags.ITk.Tracking.perigeeExpression)
+    kwargs.setdefault("IBLParameterSvc", "")
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+
+####################################
+#####         egamma           #####
+####################################
+
+def GSFBuildInDetParticleCreatorToolCfg(flags, name="GSFBuildInDetParticleCreatorTool", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackToVertex" not in kwargs:
+        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags)))
+
+    if "TrackSummaryTool" not in kwargs:
+        from TrkConfig.TrkTrackSummaryToolConfig import GSFTrackSummaryToolCfg
+        TrackSummaryTool = result.popToolsAndMerge(GSFTrackSummaryToolCfg(flags))
+        result.addPublicTool(TrackSummaryTool)
+        kwargs.setdefault("TrackSummaryTool", TrackSummaryTool)
+
+    if flags.GeoModel.Run < LHCPeriod.Run4 and "PixelToTPIDTool" not in kwargs:
+        kwargs.setdefault("PixelToTPIDTool", CompFactory.InDet.PixelToTPIDTool(name="GSFBuildPixelToTPIDTool"))
+
+    if flags.Detector.EnableTRT and "TRT_ElectronPidTool" not in kwargs :
+        from InDetConfig.TRT_ElectronPidToolsConfig import GSFBuildTRT_ElectronPidToolCfg
+        kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(GSFBuildTRT_ElectronPidToolCfg(flags)))
+
+    kwargs.setdefault("KeepParameters", True)
+    kwargs.setdefault("BadClusterID", 0)
+    kwargs.setdefault("IBLParameterSvc",
+                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+
+####################################
+#####          Muons           #####
+####################################
+
+def MuonParticleCreatorToolCfg(flags, name="MuonParticleCreatorTool", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackToVertex" not in kwargs:
+        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(
+            TrackToVertexCfg(flags)))
+
+    if "TrackSummaryTool" not in kwargs:
+        from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
+        kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
+            MuonTrackSummaryToolCfg(flags)))
+
+    if "MuonSummaryTool" not in kwargs:
+        from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
+        kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge(
+            MuonHitSummaryToolCfg(flags)))
+
+    kwargs.setdefault("KeepAllPerigee", True)
+    kwargs.setdefault("PerigeeExpression", "Origin")
+    kwargs.setdefault("IBLParameterSvc",
+                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+def MuonCombinedParticleCreatorCfg(flags, name="MuonCombinedParticleCreator", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackSummaryTool" not in kwargs:
+        if flags.Muon.SAMuonTrigger:
+            from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
+            kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)))
+        else:
+            from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
+            kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonCombinedTrackSummaryToolCfg(flags)))
+
+    if "TrackToVertex" not in kwargs:
+        from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonTrackToVertexCfg
+        kwargs.setdefault('TrackToVertex', result.popToolsAndMerge(
+            MuonTrackToVertexCfg(flags)))
+
+    if "MuonSummaryTool" not in kwargs:
+        from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
+        kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge(
+            MuonHitSummaryToolCfg(flags)))
+
+    # if "PixelToTPIDTool" not in kwargs and not flags.Muon.MuonTrigger and flags.GeoModel.Run < LHCPeriod.Run4:
+    #    from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg
+    #    kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(
+    #        InDetPixelToTPIDToolCfg(flags)))
+
+    kwargs.setdefault("KeepAllPerigee", True)
+    if flags.Beam.Type is BeamType.Cosmics:
+        kwargs.setdefault("PerigeeExpression", "Origin")
+    kwargs.setdefault("IBLParameterSvc",
+                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
+
+def MuonCaloParticleCreatorCfg(flags, name="MuonCaloParticleCreator", **kwargs):
+    result = ComponentAccumulator()
+
+    if "TrackToVertex" not in kwargs:
+        from InDetConfig.TrackRecoConfig import TrackToVertexCfg
+        kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(
+            TrackToVertexCfg(flags)))
+
+    if "TrackSummaryTool" not in kwargs:
+        if flags.Muon.SAMuonTrigger:
+            from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
+            kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
+                MuonTrackSummaryToolCfg(flags)))
+        else:
+            from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
+            kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
+                MuonCombinedTrackSummaryToolCfg(flags)))
+
+    kwargs.setdefault("KeepAllPerigee", True)
+    kwargs.setdefault("PerigeeExpression", "Origin")
+    kwargs.setdefault("IBLParameterSvc",
+                      "IBLParameterSvc" if flags.Detector.GeometryID else "")
+
+    result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs))
+    return result
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 1f1fbb061fa59cd39698192cb5f4df65ad18355f..663b6e382dafef6add20d4fc63dcebb4b8b9c491 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -293,18 +293,10 @@ def TrigTrackToVertexCfg(flags, name = 'TrigTrackToVertexTool', **kwargs ):
 def _trackConverterCfg(flags, signature, inputTracksKey, outputTrackParticleKey):
   acc = ComponentAccumulator()
 
-  from TrkConfig.TrkTrackSummaryToolConfig import InDetTrigTrackSummaryToolCfg
-  summaryTool = acc.popToolsAndMerge( InDetTrigTrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") )
-  acc.addPublicTool(summaryTool)
-
-  track_to_vertex = acc.popToolsAndMerge( TrigTrackToVertexCfg(flags) )
-  creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF",
-                                                          TrackSummaryTool      = summaryTool,
-                                                          TrackToVertex         = track_to_vertex,
-                                                          KeepParameters        = True,
-                                                          ComputeAdditionalInfo = True,
-                                                         )
+  from TrkConfig.TrkParticleCreatorConfig import InDetTrigParticleCreatorToolFTFCfg
+  creatorTool = acc.popToolsAndMerge(InDetTrigParticleCreatorToolFTFCfg(flags))
   acc.addPublicTool(creatorTool)
+
   from TrigEDMConfig.TriggerEDMRun3 import recordable
   trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature,
                                                           TrackName           = inputTracksKey,
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
index 132b08abd6d0a13487c765a9bd87cb38ad96f463..6238e6f02d11ecbd7813f7d713620b086310001a 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
@@ -245,12 +245,14 @@ def Run1xAODConversionCfg(flags):
     from TrigEDMConfig.TriggerEDM import getTriggerEDMList
     from TrigEDMConfig.TriggerEDM import getEFRun1BSList,getEFRun2EquivalentList,getL2Run1BSList,getL2Run2EquivalentList
 
-    from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg,TrackParticleCreatorToolCfg,RecTrackParticleContainerCnvToolCfg
-    partCreatorTool = acc.getPrimaryAndMerge( TrackParticleCreatorToolCfg(flags, 
-                                                                          #name="InDetxAODParticleCreatorTool"
-                                                                          PixelToTPIDTool=None
-                                                                          )
-                                             )
+    from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
+    partCreatorTool = acc.popToolsAndMerge(TrackParticleCreatorToolCfg(flags,
+                                                                       PixelToTPIDTool=None
+                                                                       )
+                                          )
+    acc.addPublicTool(partCreatorTool)
+
+    from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg,RecTrackParticleContainerCnvToolCfg
     trackCollCnvTool = acc.popToolsAndMerge(TrackCollectionCnvToolCfg(flags,
                                                                       name="TrackCollectionCnvTool",
                                                                       TrackParticleCreator= partCreatorTool
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py
index e102e47b1785691e922e3200049d96dde4d5a838..5fa600b78227bde17792157fad4a77ecbfffee6c 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py
@@ -138,10 +138,8 @@ def MuonTrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", **
     TrackCollectionCnvTool = CompFactory.xAODMaker.TrackCollectionCnvTool
 
     result = ComponentAccumulator()
-    from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg
-    acc = MuonCombinedParticleCreatorCfg(flags)
-    kwargs.setdefault("TrackParticleCreator",  acc.popPrivateTools())
-    result.merge(acc)
+    from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
+    kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags)))
 
     result.setPrivateTools(TrackCollectionCnvTool(name=name, **kwargs))
     return result
@@ -150,10 +148,8 @@ def MuonRecTrackParticleContainerCnvToolCfg(flags, name = "MuonRecTrackParticleC
     RecTrackParticleCnvTool = CompFactory.xAODMaker.RecTrackParticleContainerCnvTool
 
     result = ComponentAccumulator()
-    from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg
-    acc = MuonCombinedParticleCreatorCfg(flags)
-    kwargs.setdefault("TrackParticleCreator",  acc.popPrivateTools())
-    result.merge(acc)
+    from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
+    kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags)))
 
     result.setPrivateTools(RecTrackParticleCnvTool(name=name, **kwargs))
     return result
@@ -162,12 +158,10 @@ def MuonTrackParticleCnvCfg(flags, name = "MuonTrackParticleCnvAlg",**kwargs):
     TrackParticleCnv = CompFactory.xAODMaker.TrackParticleCnvAlg
     result=ComponentAccumulator()
 
-    from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg
-    acc = MuonCombinedParticleCreatorCfg(flags)
-    particleCreator = acc.popPrivateTools()
+    from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
+    particleCreator = result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags))
     result.addPublicTool(particleCreator) # Still public in TrackParticleCnvAlg
     kwargs.setdefault("TrackParticleCreator", particleCreator)
-    result.merge(acc)
 
     acc = MuonTrackCollectionCnvToolCfg(flags)
     kwargs.setdefault("TrackCollectionCnvTool", acc.popPrivateTools())