diff --git a/Control/AthenaConfiguration/python/AthConfigFlags.py b/Control/AthenaConfiguration/python/AthConfigFlags.py
index 2deb44627d12c4c98c812f4cca380c1f89c57712..f84d6c574b204da29b283bae952a38b21e26673c 100644
--- a/Control/AthenaConfiguration/python/AthConfigFlags.py
+++ b/Control/AthenaConfiguration/python/AthConfigFlags.py
@@ -82,6 +82,7 @@ class FlagAddress(object):
 
         if self._flags.hasFlag( merged ):
             return self._flags._get( merged )
+
         raise RuntimeError( "No such flag: {}  The name is likely incomplete.".format(merged) )
 
     def __setattr__( self, name, value ):
@@ -203,6 +204,9 @@ class AthConfigFlags(object):
         for f in self._flagdict.keys():
             if f.startswith(path):
                 return True
+        for c in self._dynaflags.keys():
+            if c.startswith(path):
+                return True
         return False
 
     def hasFlag(self, name):
@@ -291,12 +295,12 @@ class AthConfigFlags(object):
             #End loop over flags
             pass
 
-        #Last sanity check: Make sure that teh replaced section still contains teh same names:
-        if (replacedNames!=replacementNames):
+        #Last sanity check: Make sure that the replaced section still contains the same names:
+        if not replacementNames.issuperset(replacedNames):
             _msg.error(replacedNames)
             _msg.error(replacementNames)
-            raise RuntimeError("Attempt to replace incompatible subsets: None matching flag names are "
-                               + repr(replacedNames ^ replacementNames ))
+            raise RuntimeError("Attempt to replace incompatible flags subsets: distinct flag are "
+                               + repr(replacementNames - replacedNames))
         newFlags = AthConfigFlags(newFlagDict)
         newFlags._dynaflags = deepcopy(self._dynaflags)
         return newFlags
@@ -318,24 +322,28 @@ class AthConfigFlags(object):
             self._flagdict[fullName]=flag
 
         for (name,loader) in other._dynaflags.items():
-            if prefix+"."+name in self._dynaflags:
-                raise KeyError("Duplicated dynamic flags name: {}".format( name ) )
-        self._dynaflags.update(other._dynaflags)
-            #self.join( loader(), name )
-
+            fullName = prefix+"."+name if prefix != "" else name
+            if fullName in self._dynaflags:
+                raise KeyError("Duplicated dynamic flags name: {}".format( fullName ) )
+            _msg.debug("Joining dynamic flags with %s", fullName)
+            self._dynaflags[fullName] = loader
         return
 
-    def dump(self):
+    def dump(self, pattern=".*"):
+        import re
+        compiled = re.compile(pattern)
         print("{:40} : {}".format( "Flag Name","Value" ) )
         for name in sorted(self._flagdict):
-            print("{:40} : {}".format( name, repr(self._flagdict[name] ) ) )
+            if compiled.match(name):
+                print("{:40} : {}".format( name, repr(self._flagdict[name] ) ) )
 
         if len(self._dynaflags) == 0:
             return
         print("Flag categories that can be loaded dynamically")
         print("{:25} : {:>30} : {}".format( "Category","Generator name", "Defined in" ) )
         for name,gen_and_prefix in sorted(self._dynaflags.items()):
-            print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) )
+            if compiled.match(name):
+                print("{:25} : {:>30} : {}".format( name, gen_and_prefix[0].__name__, '/'.join(gen_and_prefix[0].__code__.co_filename.split('/')[-2:]) ) )
 
 
     def initAll(self):
diff --git a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
index eb0acbd46a1185ad7607d44f8d85e88fb5d9da5b..cd14d84535dab0e98c07942810e7b68dc919717e 100644
--- a/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
+++ b/Trigger/TrigTools/TrigInDetConfig/CMakeLists.txt
@@ -9,3 +9,4 @@ atlas_subdir( TrigInDetConfig )
 atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
 atlas_add_test( TrigInDetCfg    SCRIPT python -m TrigInDetConfig.TrigInDetConfig    POST_EXEC_SCRIPT nopost.sh )
+atlas_add_test( TrigTrackingCutFlags    SCRIPT python -m TrigInDetConfig.TrigTrackingCutFlags    POST_EXEC_SCRIPT nopost.sh )
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index b8bb91cab32874b3fb033f4df73952eff8c14548..9099aac72f957488fae1c25d2a8b21b9606ae71f 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -24,7 +24,7 @@ def SiDetElementsRoadMaker_xkCfg( flags, **kwargs ):
                                                       PropagatorTool = acc.getPublicTool( "InDetTrigPatternPropagator" ),
                                                       usePixel     = flags.Detector.RecoPixel, # DetFlags.haveRIO.pixel_on(),
                                                       useSCT       = flags.Detector.RecoSCT, #DetFlags.haveRIO.SCT_on(),
-                                                      RoadWidth    = 10, #InDetTrigCutValues.RoadWidth()
+                                                      RoadWidth    = flags.InDet.Tracking.roadWidth,
                                                         )
   acc.addPublicTool( tool )
   return acc
@@ -114,7 +114,6 @@ def SiTrackMaker_xkCfg(flags, **kwargs):
   """
   based on: InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py , should be moved elsewhere
   """
-  import AthenaCommon.SystemOfUnits as Unit
   name = kwargs.pop("name", "SiTrackMaker_xk")
   acc = ComponentAccumulator()
   acc.merge( SiDetElementsRoadMaker_xkCfg( flags, **kwargs ) )
@@ -131,16 +130,16 @@ def SiTrackMaker_xkCfg(flags, **kwargs):
   tool = CompFactory.InDet.SiTrackMaker_xk( name,
                                             RoadTool                 = acc.getPublicTool( "InDetTrigSiDetElementsRoadMaker" ),
                                             CombinatorialTrackFinder = combTrackFinderTool,
-                                            pTmin                    = 1000*Unit.MeV, # TODO use flag for these props
-                                            nClustersMin             = 7,
-                                            nHolesMax                = 3,
-                                            nHolesGapMax             = 3,
-                                            SeedsFilterLevel         = 0,
-                                            Xi2max                   = 15,
-                                            Xi2maxNoAdd              = 35,
-                                            nWeightedClustersMin     = 6,
+                                            pTmin                    = flags.InDet.Tracking.minPT,
+                                            nClustersMin             = flags.InDet.Tracking.minClusters,
+                                            nHolesMax                = flags.InDet.Tracking.nHolesMax,
+                                            nHolesGapMax             = flags.InDet.Tracking.nHolesGapMax,
+                                            SeedsFilterLevel         = flags.InDet.Tracking.seedFilterLevel,
+                                            Xi2max                   = flags.InDet.Tracking.Xi2max,
+                                            Xi2maxNoAdd              = flags.InDet.Tracking.Xi2maxNoAdd,
+                                            nWeightedClustersMin     = flags.InDet.Tracking.nWeightedClustersMin,
                                             #CosmicTrack             = InDetFlags.doCosmics(),
-                                            Xi2maxMultiTracks        = 15,
+                                            Xi2maxMultiTracks        = flags.InDet.Tracking.Xi2max, # follwoing: Trigger/TrigTools/TrigInDetConfig/python/EFIDTracking.py
                                             UseAssociationTool       = False )
   acc.addPublicTool( tool )
   return acc
@@ -208,7 +207,7 @@ def InDetTrackSummaryHelperToolCfg(flags, **kwargs):
                                                        TRTStrawSummarySvc = trtStrawSummaryTool,
                                                        usePixel      = flags.Detector.RecoPixel,  #DetFlags.haveRIO.pixel_on(),
                                                        useSCT        = flags.Detector.RecoSCT,  #DetFlags.haveRIO.SCT_on(),
-                                                       useTRT        = True, # flags.Detector.TRTOn,  #DetFlags.haveRIO.TRT_on()
+                                                       useTRT        = flags.Detector.RecoTRT, # flags.Detector.TRTOn,  #DetFlags.haveRIO.TRT_on()
                                                          )
 
   acc.addPublicTool( tool )
@@ -433,6 +432,7 @@ def TrigInDetCondCfg( flags ):
   return acc
 
 def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
+
   #If signature specified add suffix to the name of each algorithms
   signature =  "_" + signatureName if signatureName else ''
 
@@ -622,7 +622,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
   acc.addCondAlgo( CompFactory.InDet.SiElementPropertiesTableCondAlg(name = "InDetSiElementPropertiesTableCondAlg") )
 
   InDet__SiTrackerSpacePointFinder=CompFactory.InDet.SiTrackerSpacePointFinder
-  InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name                   = "TrigSPFinder"+ signature,
+  InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name                   = "InDetSiTrackerSpacePointFinder_"+ signature,
                                                                     SiSpacePointMakerTool  = InDetSiSpacePointMakerTool,
                                                                     PixelsClustersName     = "PixelTrigClusters",
                                                                     SCT_ClustersName       = "SCT_TrigClusters",
@@ -672,7 +672,7 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
                                                                          ReadKey  = "PixelDetectorElementCollection",
                                                                          WriteKey = "PixelDetElementBoundaryLinks_xk") )
 
-  ftf = CompFactory.TrigFastTrackFinder( name = "FTF" + signature,
+  ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature,
                                          LayerNumberTool          = acc.getPublicTool( "TrigL2LayerNumberTool_FTF" ),
                                          SpacePointProviderTool   = acc.getPublicTool( "TrigSPConversionTool" + signature.lower() ),
                                          TrackSummaryTool         = acc.getPublicTool( "TrigSummaryTool_FTF" ),
@@ -682,51 +682,47 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
                                          RoIs = roisKey,
                                          trigZFinder = CompFactory.TrigZFinder(),
                                          doZFinder = False, # this and all below, copied over from comparison with running JOs, TODO find a proper surce of this settings
-                                         SeedRadBinWidth =  2,
-                                         TrackInitialD0Max = 20.0,
+                                         SeedRadBinWidth =  flags.InDet.Tracking.seedRadBinWidth,
+                                         TrackInitialD0Max = 1000. if flags.InDet.Tracking.extension == 'cosmics' else 20.0,
                                          TracksName = "TrigFastTrackFinder_Tracks"+signature,
                                          OutputCollectionSuffix = signature,
                                          TripletDoPSS = False,
-                                         Triplet_D0Max = 4.0,
-                                         Triplet_D0_PPS_Max = 1.7,
+                                         Triplet_D0Max = flags.InDet.Tracking.d0SeedMax,
+                                         Triplet_D0_PPS_Max = flags.InDet.Tracking.d0SeedPPSMax,
                                          Triplet_MaxBufferLength = 3,
                                          Triplet_MinPtFrac = 1,
                                          Triplet_nMaxPhiSlice = 53,
-                                         doCloneRemoval = True,
-                                         doResMon = False,
-                                         doSeedRedundancyCheck = True,
-                                         pTmin = 1000.0,
+                                         doCloneRemoval = flags.InDet.Tracking.doCloneRemoval,
+                                         doResMon = flags.InDet.Tracking.doResMon,
+                                         doSeedRedundancyCheck = flags.InDet.Tracking.checkRedundantSeeds,
+                                         pTmin = flags.InDet.Tracking.minPT,
                                          useNewLayerNumberScheme = True,
-                                         MinHits = 5
-                                           )
-  #ftf.RoIs = roisKey
-  ftf.OutputLevel=DEBUG
+                                         MinHits = 5)
   acc.addEventAlgo( ftf )
 
-  #CondSvc=CompFactory.CondSvc
-  #acc.addService(CondSvc())
-
-
-  #from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool
-  #from TrigInDetConf.TrigInDetPostTools import  InDetTrigParticleCreatorToolFTF
-
-  #InDet__TrigTrackingxAODCnvMT=CompFactory.InDet.TrigTrackingxAODCnvMT
-  #theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg",
-  #                                                         doIBLresidual = False,
-  #                                                         TrackName = "TrigFastTrackFinder_Tracks",
-  #                                                         TrackParticlesName = "IDTrack",
-  #                                                         ParticleCreatorTool = InDetTrigParticleCreatorToolFTF)
-  #theTrackParticleCreatorAlg.roiCollectionName = roisKey
-  #acc.addEventAlgo(theTrackParticleCreatorAlg)
-
+  creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF",
+                                                          Extrapolator = acc.getPublicTool( "TrigInDetExtrapolator" ),
+                                                          TrackSummaryTool = acc.getPublicTool( "TrigSummaryTool_FTF" ),
+                                                          KeepParameters = True,
+                                                          ComputeAdditionalInfo = True)
+  acc.addPublicTool(creatorTool)
 
+  trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature,
+                                                          TrackName = ftf.TracksName,
+                                                          TrackParticlesName = "TrigFastTrackFinder_Tracks_" + signature,
+                                                          ParticleCreatorTool = acc.getPublicTool("InDetTrigParticleCreatorToolFTF"))
+  acc.addEventAlgo(trackParticleCnv)
 
   return acc
 
-def indetInViewRecoCfg( flags, viewMakerName, signature='' ):
+def indetInViewRecoCfg( inflags, viewMakerName, signature='' ):
   """ TBD if this function should be defined here or moved to the menu are, for sake of symmetry it is kept here now
   There would certainly be additional algorithms
   """
+  # redirect InDet.Tracking flags to point to a specific trigger setting
+  flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signature)
+
+
   from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco
   reco = InViewReco( viewMakerName )
   algAcc = TrigInDetConfig( flags, roisKey=reco.inputMaker().InViewRoIs, signatureName=signature )
@@ -761,7 +757,7 @@ if __name__ == "__main__":
     from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
     acc.merge(ByteStreamReadCfg(ConfigFlags))
 
-    acc.merge( TrigInDetConfig( ConfigFlags ) )
+    acc.merge( indetInViewRecoCfg( ConfigFlags, viewMakerName="IMTest", signature="Electron" ) )
     from RegionSelector.RegSelConfig import regSelCfg
     rsc = regSelCfg( ConfigFlags )
     acc.merge( rsc )
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c9e24bbad58e1d8b58f039a740cc57160502a21
--- /dev/null
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+import AthenaCommon.SystemOfUnits as Units
+from AthenaConfiguration.AthConfigFlags import AthConfigFlags
+from InDetConfig.TrackingCutsFlags import createTrackingFlags
+
+
+def __sliceFlags():
+    flags = createTrackingFlags()
+    flags.addFlag("seedRadBinWidth", 2)
+    flags.addFlag("d0SeedMax", 4.0)
+    flags.addFlag("d0SeedPPSMax", 1.7)
+    flags.addFlag("doCloneRemoval", True)
+    flags.addFlag("doResMon", False)
+    flags.addFlag("checkRedundantSeeds", False)
+    return flags
+
+def __electronFlags():
+    flags = __sliceFlags()
+    flags.minPT = Units.GeV * 0.5 # TODO revise values
+    flags.checkRedundantSeeds=True
+    return flags
+
+def createTrigTrackingFlags():
+    flags = AthConfigFlags() 
+    flags.addFlagsCategory('Trigger.InDetTracking.Electron', __electronFlags, prefix=True)
+    return flags
+
+if __name__ == "__main__":
+    from AthenaCommon.Logging import logging
+    _msg = logging.getLogger('AthConfigFlags')    
+    _msg.setLevel(2)
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
+    flags.Trigger.doID
+    flags.dump(".*Trig")
+    
+    flags.Trigger.InDetTracking.Electron.minPT = 2.0 * Units.GeV
+    newflags = flags.cloneAndReplace('InDet.Tracking', 'Trigger.InDetTracking.Electron')
+    assert newflags.InDet.Tracking.minPT == 2.0 * Units.GeV
+    flags.dump()
\ No newline at end of file
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
index a44e40225d6898f8f95da5c7e149b17572aa5d9b..20b243769ba91f9e613c0a16f74f0d592d7db22a 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
@@ -275,6 +275,8 @@ def createTriggerFlags():
         return createMuonConfigFlags()
     flags.addFlagsCategory('Trigger.Offline', __muon, prefix=True)
 
+    from TrigInDetConfig.TrigTrackingCutFlags import createTrigTrackingFlags
+    flags.addFlagsCategory( 'Trigger.InDetTracking', createTrigTrackingFlags )
 
     from TriggerJobOpts.MenuConfigFlags import createMenuFlags
     flags.join( createMenuFlags() )