diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py
index 5e3236432c13837a73067574353c409d6f62cdc3..304e723bf901dccbaf9de716b5681615591221f9 100644
--- a/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py
+++ b/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py
@@ -24,6 +24,10 @@ if DetFlags.overlay.pixel_on() or DetFlags.overlay.SCT_on() or DetFlags.overlay.
                 job.InDetPixelRawDataProvider.RDOKey = overlayFlags.bkgPrefix()+"PixelRDOs"
             else:
                 job.InDetPixelRawDataProvider.RDOKey = overlayFlags.dataStore()+"+PixelRDOs"
+
+            from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+            job.InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel()
+
             #ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "PixelRDO_Container/PixelRDOs" ]
             #ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "Trk::PixelClusterContainer/PixelOnlineClusters" ]
         else:
@@ -65,6 +69,10 @@ if DetFlags.overlay.pixel_on() or DetFlags.overlay.SCT_on() or DetFlags.overlay.
             #ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "SCT_RDO_Container/SCT_RDOs" ]
             #ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "Trk::SCT_ClusterContainer/SCT_OnlineClusters" ]
 
+#           from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+#           job.InDetSCTRawDataProvider.RegSelTool_SCT = makeRegSelTool_SCT()
+
+
     if DetFlags.overlay.TRT_on():
         if overlayFlags.isDataOverlay():
             conddb.blockFolder("/TRT/Cond/DigVers")
@@ -92,6 +100,9 @@ if DetFlags.overlay.pixel_on() or DetFlags.overlay.SCT_on() or DetFlags.overlay.
                 job.InDetTRTRawDataProvider.RDOKey = overlayFlags.dataStore()+"+TRT_RDOs"
             #ServiceMgr.ByteStreamAddressProviderSvc.TypeNames += [ "TRT_RDO_Container/TRT_RDOs" ]
 
+#           from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+#           job.InDetTRTRawDataProvider.RegSelTool = makeRegSelTool_TRT()
+
             #from IOVDbSvc.CondDB import conddb
             #conddb.addFolder("TRT","/TRT/Calib/T0","<tag>TrtCalibt0-UPD2-FDR2-01</tag>")
             #conddb.addFolder("TRT","/TRT/Calib/RT","<tag>TrtCalibRt-UPD2-FDR2-01</tag>")
diff --git a/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/share/NoiseMapBuilder.py b/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/share/NoiseMapBuilder.py
index 67a11a30b79b11bdfad63f0e66fa9ce03a63e3fd..1d66ea56b49254c1ea58acbe4a448a8c934c4e17 100755
--- a/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/share/NoiseMapBuilder.py
+++ b/InnerDetector/InDetCalibAlgs/PixelCalibAlgs/share/NoiseMapBuilder.py
@@ -166,7 +166,12 @@ if doClusterization :
   include( "PixelConditionsServices/PixelCalibSvc_jobOptions.py" )
 
   from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__PixelClusterization
-  topSequence += InDet__PixelClusterization("PixelClusterization")
+
+  pixelClusterization = InDet__PixelClusterization("PixelClusterization")
+  from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+  pixelClusterization.RegSelTool = makeReagSelTool_Pixel()
+
+  topSequence += pixelClusterization
   import logging
   logger = logging.getLogger( 'PixelCalibAlgs' )
   logger.info(topSequence.PixelClusterization)
diff --git a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/RAWHITemplate.py b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/RAWHITemplate.py
index 9675ae23a0f98a2bbd85af9ca566f9501518c900..455f0adf6775338e796aa750267e7070fdd71fb8 100644
--- a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/RAWHITemplate.py
+++ b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/RAWHITemplate.py
@@ -422,6 +422,7 @@ print TRT_StrawStatus
 
 
 
+
 topSequence.InDetTRT_RIO_Maker.TRTEffiCut=0.5
 topSequence.InDetSCT_Clusterization.TRTEffiCut=0.5
 topSequence.InDetPixelClusterization.TRTEffiCut=0.5
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index b69f153bfa3f54c2f4a71ad510f941169cddbd85..6445930a9596a7f420c72e6dbc166d8adad3cb3b 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -20,7 +20,9 @@ def PixelClusterizationCfg(flags, **kwargs) :
     sub_acc = PixelGangedAmbiguitiesFinderCfg(flags)
     ambi_finder=sub_acc.getPrimary()
     acc.merge(sub_acc)
-    acc.addEventAlgo( CompFactory.InDet.PixelClusterization(   name                    = "InDetPixelClusterization",
+
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+    acc.addEventAlgo( CompFactory.InDet.PixelClusterization(   name         = "InDetPixelClusterization",
                                                     clusteringTool          = merged_pixels_tool,
                                                     gangedAmbiguitiesFinder = ambi_finder,
                                                     DataObjectName          = "PixelRDOs",
diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.cxx b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.cxx
index d50b392fd753ce2f1e4f0acb3636b0d4bf01d574..53f53c1041a98e08555f5cbc8c692655974e1a7b 100644
--- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.cxx
+++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.cxx
@@ -115,9 +115,7 @@ StatusCode PixelRawDataProvider::execute(const EventContext& ctx) const {
      for (; roi!=roiE; ++roi) {
        superRoI.push_back(*roi);
      }
-     m_regionSelector->DetROBIDListUint( PIXEL,
-					 superRoI,
-					 listOfRobs);
+     m_regionSelector->ROBIDList( superRoI, listOfRobs );
   }
   std::vector<const ROBFragment*> listOfRobf;
 
diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.h b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.h
index b9f4c5605c38d706c1662e3f0e6a648398ba2557..56855e0b8d88cb2faa1363d8058781c6d6a2cd00 100644
--- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.h
+++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawDataProvider.h
@@ -24,7 +24,7 @@
 #include "StoreGate/ReadCondHandleKey.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
 #include "PixelRawDataByteStreamCnv/IPixelRawDataProviderTool.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 
 // Forward declarations
 class PixelID;
@@ -49,8 +49,8 @@ class PixelRawDataProvider : public AthReentrantAlgorithm {
 private:
   const PixelID* m_pixel_id { nullptr };
 
-  ServiceHandle<IRegSelSvc> m_regionSelector                            { this, "RegSelSvc",  "RegSelSvc", "Region selector" };
-  ServiceHandle<IROBDataProviderSvc>   m_robDataProvider                { this, "ROBDataProvider", "ROBDataProviderSvc" };
+  ToolHandle<IRegSelTool>               m_regionSelector                { this, "RegSelTool",  "RegSelTool/RegSelTool_Pixel" };
+  ServiceHandle<IROBDataProviderSvc>    m_robDataProvider               { this, "ROBDataProvider", "ROBDataProviderSvc" };
   ToolHandle<IPixelRawDataProviderTool> m_rawDataTool                   { this, "ProviderTool", "PixelRawDataProviderTool"};
   Gaudi::Property<bool> m_roiSeeded                                     { this, "isRoI_Seeded", false, "Use RoI" }; // TODO, doubled information, empty RoIs collection name would be sufficent
   SG::ReadHandleKey<TrigRoiDescriptorCollection> m_roiCollectionKey     { this, "RoIs", "", "If RoI driven unpacking to be used, this is the key"};
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
index a4289a2f4d3d8fe32565fd55634ca37775f6e43a..a18b6a4c2998f05be9c5fa3ece94ddfe9b07b608 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py
@@ -174,6 +174,11 @@ class ConfiguredInDetPreProcessingTRT:
                                                    TrtDescrManageLocation = InDetKeys.TRT_Manager(),
                                                    TRTRDOLocation         = InDetKeys.TRT_RDOs(),
                                                    TRTRIOLocation         = collection)
+
+         from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+         InDetTRT_RIO_Maker.RegSelTool = makeRegSelTool_TRT()
+
+
          topSequence += InDetTRT_RIO_Maker
          if (InDetFlags.doPrintConfigurables()):
             printfunc (InDetTRT_RIO_Maker)
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetReadBS_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetReadBS_jobOptions.py
index aa7b9745a8a4a15d7db4890b4a5dcc3767f9d0db..e5d39621d69299391403ea7a37e4f07cc375bb1f 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetReadBS_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetReadBS_jobOptions.py
@@ -28,7 +28,13 @@ if DetFlags.readRDOBS.pixel_on():
   InDetPixelRawDataProvider = PixelRawDataProvider(name         = "InDetPixelRawDataProvider",
                                                    RDOKey       = InDetKeys.PixelRDOs(),
                                                    ProviderTool = InDetPixelRawDataProviderTool)
+
+  from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+  InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel()
+
   topSequence += InDetPixelRawDataProvider
+
+
   if (InDetFlags.doPrintConfigurables()):
     printfunc          (InDetPixelRawDataProvider)
   #InDetPixelRawDataProvider.OutputLevel = VERBOSE
@@ -80,6 +86,8 @@ if DetFlags.readRDOBS.TRT_on():
   from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConf import TRTRawDataProviderTool
   InDetTRTRawDataProviderTool = TRTRawDataProviderTool(name    = "InDetTRTRawDataProviderTool",
                                                       Decoder = InDetTRTRodDecoder)
+
+
   #ToolSvc += InDetTRTRawDataProviderTool
   if (InDetFlags.doPrintConfigurables()):
     printfunc      (InDetTRTRawDataProviderTool)
@@ -90,6 +98,10 @@ if DetFlags.readRDOBS.TRT_on():
   InDetTRTRawDataProvider = TRTRawDataProvider(name         = "InDetTRTRawDataProvider",
                                               RDOKey       = InDetKeys.TRT_RDOs(),
                                               ProviderTool = InDetTRTRawDataProviderTool)
+
+# from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+# InDetTRTRawDataProvider.RegSelTool = makeRegSelTool_TRT()
+
   topSequence += InDetTRTRawDataProvider
   if (InDetFlags.doPrintConfigurables()):
     printfunc          (InDetTRTRawDataProvider)
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
index f35a14aadf0226cf45bec66200cd7445c0784325..bbe4a79c25936da63d943eb3b28e855393461094 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
@@ -153,6 +153,10 @@ if InDetFlags.doPRDFormation():
                                                             gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder,
                                                             DataObjectName          = InDetKeys.PixelRDOs(),
                                                             ClustersName            = InDetKeys.PixelClusters())
+
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+      InDetPixelClusterization.RegSelTool = makeRegSelTool_Pixel()
+
       topSequence += InDetPixelClusterization
       if (InDetFlags.doPrintConfigurables()):
          printfunc (InDetPixelClusterization)
@@ -164,6 +168,10 @@ if InDetFlags.doPRDFormation():
                                                                 DataObjectName          = InDetKeys.PixelPURDOs(),
                                                                 ClustersName            = InDetKeys.PixelPUClusters(),
                                                                 AmbiguitiesMap = "PixelClusterAmbiguitiesMapPU")
+
+        from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+        InDetPixelClusterizationPU.RegSelTool = makeRegSelTool_Pixel()
+
         topSequence += InDetPixelClusterizationPU
         if (InDetFlags.doPrintConfigurables()):
           printfunc (InDetPixelClusterizationPU)
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecBackTracking.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecBackTracking.py
index bd853408b9e6521c9ffaf1fbad7ed645abcc821c..95ba698ec6e69faf866a6ec504f5541b32250249 100755
--- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecBackTracking.py
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecBackTracking.py
@@ -34,6 +34,9 @@ class TRT_TrigTrackSegmentsFinder_EF( InDet__TRT_TrigTrackSegmentsFinder ):
    def __init__(self, name="InDetTrigTRT_TrackSegmentsFinder_Photon_EF", type="photon", seqType="InsideOut"):
       super( InDet__TRT_TrigTrackSegmentsFinder, self ).__init__( name )
 
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+      self.RegSelTool = makeRegSelTool_TRT()
+
       from AthenaCommon.AppMgr import ToolSvc
       from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings
       from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
@@ -150,6 +153,9 @@ class TRT_TrigSeededTrackFinder_EF( InDet__TRT_TrigSeededTrackFinder ):
    def __init__(self, name="InDetTrigTRT_SeededTrackFinder_Photon_EF", type="photon"):
       super( InDet__TRT_TrigSeededTrackFinder, self ).__init__( name )
       
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+      self.RegSelTool = makeRegSelTool_TRT()
+
       from AthenaCommon.AppMgr import ToolSvc         
       from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCuts
       InDetTrigCutValues = EFIDTrackingCuts
@@ -174,14 +180,13 @@ class TRT_TrigSeededTrackFinder_EF( InDet__TRT_TrigSeededTrackFinder ):
            InDetTrigTRT_SeededSpacePointFinder.PRDtoTrackMap = 'InDetTrigPRDtoTrackMap_Photon_EF'
 
       elif InDetTrigFlags.loadSimpleTRTSeededSPFinder():
-         from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
-         InDetTrigRegSelSvc = RegSelSvcDefault()
-         InDetTrigRegSelSvc.enablePixel = DetFlags.pixel_on()
-         InDetTrigRegSelSvc.enableSCT   = DetFlags.SCT_on()
-
-         ServiceMgr += InDetTrigRegSelSvc
-         if (InDetTrigFlags.doPrintConfigurables()):
-            print (              InDetTrigRegSelSvc)
+         # from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
+         # InDetTrigRegSelSvc = RegSelSvcDefault()
+         # InDetTrigRegSelSvc.enablePixel = DetFlags.pixel_on()
+         # InDetTrigRegSelSvc.enableSCT   = DetFlags.SCT_on()
+         # ServiceMgr += InDetTrigRegSelSvc
+         # if (InDetTrigFlags.doPrintConfigurables()):
+         #    print (              InDetTrigRegSelSvc)
 
          from TRT_SeededSpacePointFinderTool.TRT_SeededSpacePointFinderToolConf import InDet__SimpleTRT_SeededSpacePointFinder_ATL
          InDetTrigTRT_SeededSpacePointFinder =  InDet__SimpleTRT_SeededSpacePointFinder_ATL(name                   = 'InDetTrigTRT_SeededSpFinder_'+type  ,
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py
index 01712f83af5aa877b8cbf129de4f16fb584aa8d7..b9a3085f4426ed4f4800531e6335b307f03ad1fc 100755
--- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecNewTracking.py
@@ -31,6 +31,13 @@ class SiTrigTrackFinder_EF( InDet__SiTrigSPSeededTrackFinder ):
   def __init__(self, name="SiTrigTrackFinder_Electron_EF", type="electron", lowPt=False):
     super( InDet__SiTrigSPSeededTrackFinder, self ).__init__( name )
     
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+
+    self.RegSelTool_Pixel = makeRegSelTool_Pixel()
+    self.RegSelTool_SCT   = makeRegSelTool_SCT()
+
+
     from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPrdAssociationTool, \
         InDetTrigPatternPropagator, InDetTrigPatternUpdator, \
         InDetTrigRotCreator
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecPreProcessing.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecPreProcessing.py
index b22d5446699f20728d2dd173986d900eacdaf926..e5fdf17b536a0bde961a73a09d61df4b9dd0a064 100755
--- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecPreProcessing.py
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecPreProcessing.py
@@ -40,6 +40,8 @@ class PixelClustering_EF( InDet__Pixel_TrgClusterization ):
    def __init__(self, name="PixelClustering_Electron_EF", type="electron"):
       super( InDet__Pixel_TrgClusterization, self ).__init__( name )
       
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+      self.RegSelTool = makeRegSelTool_Pixel()
       
       from AthenaCommon.AppMgr import ToolSvc
       # configure tools used
@@ -65,6 +67,10 @@ class PixelClustering_EF( InDet__Pixel_TrgClusterization ):
           InDet__TrigPixRawDataProvider(name="TrigPixRawDataProvider_EF",
                                         RawDataProviderTool = InDetTrigPixelRawDataProviderTool,
                                         RDOKey = EF_PixRDOKey)
+
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+      InDetTrigPixRawDataProvider.RegSelTool = makeRegSelTool_Pixel()
+
       ToolSvc += InDetTrigPixRawDataProvider
 
 
@@ -123,6 +129,9 @@ class SCTClustering_EF( InDet__SCT_TrgClusterization ):
    def __init__(self, name= "SCTClustering_Electron_EF", type="electron" ):
       super(InDet__SCT_TrgClusterization, self).__init__(name)
 
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+      self.RegSelTool = makeRegSelTool_SCT()
+
       from AthenaCommon.AppMgr import ToolSvc
       from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
 
@@ -143,6 +152,7 @@ class SCTClustering_EF( InDet__SCT_TrgClusterization ):
       from InDetTrigRecExample.InDetTrigConditionsAccess import SCT_ConditionsSetup
       InDetTrigSCTRawDataProviderTool = SCTRawDataProviderTool(name    = "InDetTrigSCTRawDataProviderTool",
                                                                Decoder = InDetTrigSCTRodDecoder)
+
       ToolSvc += InDetTrigSCTRawDataProviderTool
 
 
@@ -151,6 +161,12 @@ class SCTClustering_EF( InDet__SCT_TrgClusterization ):
           InDet__TrigSCTRawDataProvider(name="TrigSCTRawDataProvider_EF",
                                         RDOKey = EF_SCTRDOKey,
                                         RawDataTool = InDetTrigSCTRawDataProviderTool)
+
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+      InDetTrigSCTRawDataProvider.RegSelTool = makeRegSelTool_SCT()
+
+
+
       ToolSvc += InDetTrigSCTRawDataProvider
 
       from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigClusterMakerTool
@@ -204,6 +220,10 @@ class TRTDriftCircleMaker_EF(  InDet__TRT_TrgRIO_Maker ):
    def __init__(self, name= "TRTDriftCircleMaker_Electron_EF", type="electron" ):
       super(InDet__TRT_TrgRIO_Maker, self).__init__(name)
 
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+      self.RegSelTool = makeRegSelTool_TRT()
+      
+
       from AthenaCommon.AppMgr import ToolSvc
 
       from InDetTrigRecExample.InDetTrigCommonTools import InDetTrigTRTRodDecoder
@@ -221,6 +241,9 @@ class TRTDriftCircleMaker_EF(  InDet__TRT_TrgRIO_Maker ):
                                         RDOKey = EF_TRTRDOKey,
                                         RawDataTool="TRTRawDataProviderTool/InDetTrigTRTRawDataProviderTool")
 
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+      InDetTrigTRTRawDataProvider.RegSelTool = makeRegSelTool_TRT()
+
       ToolSvc += InDetTrigTRTRawDataProvider
       
       from InDetTrigRecExample.InDetTrigCommonTools import InDetTrigTRT_DriftFunctionTool, \
@@ -279,6 +302,11 @@ class SiTrigSpacePointFinder_EF( InDet__SiTrigSpacePointFinder ):
    def __init__(self, name = "SiTrigSpacePointFinder_Electron_EF", type="electron", lowPt=False):
       super (InDet__SiTrigSpacePointFinder, self).__init__(name)
 
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+      from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+      self.RegSelTool_Pixel = makeRegSelTool_Pixel()
+      self.RegSelTool_SCT   = makeRegSelTool_SCT()
+
       from AthenaCommon.AppMgr import ToolSvc
       
       from InDetTrigRecExample.InDetTrigConfigRecLoadTools import \
@@ -302,6 +330,12 @@ class SiTrigSpacePointFinder_EF( InDet__SiTrigSpacePointFinder ):
       self.ProcessSCTs = True
       self.ProcessOverlaps = InDetTrigFlags.doOverlapSP()
 
+#      from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+#      from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT
+
+#      self.RegSelTool_Pixel = makeRegSelTool_Pixel()
+#      self.RegSelTool_SCT   = makeRegSelTool_SCT()
+
       if type=='cosmicsN':
          from InDetTrigRecExample.InDetTrigConfigRecLoadToolsCosmics import \
              InDetTrigSiSpacePointMakerToolCosmics, SCT_TrigSpacePointToolCosmics
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/share/InDetTrigRec_jobOptions.py b/InnerDetector/InDetExample/InDetTrigRecExample/share/InDetTrigRec_jobOptions.py
index f5627a5d66ce5210d01fe6072657ede28af7daad..85d5fbef1c05eb74f711282530f6a1455cfddfd0 100755
--- a/InnerDetector/InDetExample/InDetTrigRecExample/share/InDetTrigRec_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/share/InDetTrigRec_jobOptions.py
@@ -60,18 +60,18 @@ else:
   include ("InDetRecExample/InDetRecConditionsAccess.py")
 
 #manipulate RegSelSvc settings to be aware of the inactive detelems
-from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
-RegSelSvc = RegSelSvcDefault()
+# from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
+# RegSelSvc = RegSelSvcDefault()
 
-RegSelSvc.DisableFromConditions = False
-RegSelSvc.DisablePixelFromConditions = False
-RegSelSvc.DisableTRTFromConditions = False
-RegSelSvc.DisableSCTFromConditions = False
+# RegSelSvc.DisableFromConditions = False
+# RegSelSvc.DisablePixelFromConditions = False
+# RegSelSvc.DisableTRTFromConditions = False
+# RegSelSvc.DisableSCTFromConditions = False
 from InDetTrigRecExample.InDetTrigConfigConditions import \
          SCT_ConditionsSetup, TRT_ConditionsSetup
-RegSelSvc.PixConditionsSvc = ""      #empty as it does not work
-RegSelSvc.SCTConditionsTool = "SCT_ConditionsSummaryTool/"+SCT_ConditionsSetup.instanceName("InDetSCT_ConditionsSummaryTool")
-RegSelSvc.TRTConditionsSvc = "TRT_ConditionsSummarySvc/"+TRT_ConditionsSetup.instanceName("InDetTRTConditionsSummaryService")
+# RegSelSvc.PixConditionsSvc = ""      #empty as it does not work
+# RegSelSvc.SCTConditionsTool = "SCT_ConditionsSummaryTool/"+SCT_ConditionsSetup.instanceName("InDetSCT_ConditionsSummaryTool")
+# RegSelSvc.TRTConditionsSvc = "TRT_ConditionsSummarySvc/"+TRT_ConditionsSetup.instanceName("InDetTRTConditionsSummaryService")
 
 #this should be our common cabling setup/
 # online running data are dealt with in the TriggerJobOpts 
diff --git a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/PixelClusterization.h b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/PixelClusterization.h
index 969b27bb8bbd938fa47005483d29a868696d7825..0dc0a7b5ce4dbd5bea7dfe7b49574b60c2cab923 100644
--- a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/PixelClusterization.h
+++ b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/PixelClusterization.h
@@ -30,7 +30,7 @@
 #include "InDetRawData/InDetRawDataCollection.h"
 #include "InDetRawData/PixelRDO_Container.h"
 #include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "SiClusterizationTool/IPixelClusteringTool.h"
 
 
@@ -78,7 +78,7 @@ private:
   ToolHandle< PixelGangedAmbiguitiesFinder > m_gangedAmbiguitiesFinder; 
   SG::ReadHandleKey<PixelRDO_Container> m_rdoContainerKey;
   SG::ReadHandleKey<TrigRoiDescriptorCollection> m_roiCollectionKey;
-  ServiceHandle<IRegSelSvc>     m_regionSelector;     //!< region selector service
+  ToolHandle<IRegSelTool>     m_regionSelector { this, "RegSelTool", "RegSelTool/RegSelTool_Pixel" };     //!< region selector tool
   bool m_roiSeeded;
   const PixelID* m_idHelper;
   SG::WriteHandleKey<PixelClusterContainer> m_clusterContainerKey;
diff --git a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/TRT_RIO_Maker.h b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/TRT_RIO_Maker.h
index 87d61f41bedcfe0a3a8e2b523e575d63b927d4d4..ca76abb53594eea242eb0aabc8c150b67becd75d 100644
--- a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/TRT_RIO_Maker.h
+++ b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/InDetPrepRawDataFormation/TRT_RIO_Maker.h
@@ -27,7 +27,7 @@
 #include "InDetPrepRawData/TRT_DriftCircleContainer.h"
 #include "InDetRawData/TRT_RDO_Container.h"
 #include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 //fwd declarations
 class StatusCode;
 class ISvcLocator;
@@ -72,7 +72,7 @@ namespace InDet{
 
     SG::ReadHandleKey<TrigRoiDescriptorCollection> m_roiCollectionKey{this, "RoIs", "", "RoIs to read in"};
     BooleanProperty m_roiSeeded{this, "isRoI_Seeded", false, "Use RoI"};
-    ServiceHandle<IRegSelSvc>     m_regionSelector;     //!< region selector service
+    ToolHandle<IRegSelTool>     m_regionSelector { this, "RegSelTool", "RegSelTool/RegSelTool_TRT" };     //!< region selector tool
     SG::UpdateHandleKey<InDet::TRT_DriftCircleContainerCache> m_rioContainerCacheKey;
 
   };
diff --git a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/PixelClusterization.cxx b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/PixelClusterization.cxx
index bf694c1e3ed653d2e7fb9c9036426575935eb41e..7f3c93be1474251708d202429e26fc653cd0a0c9 100644
--- a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/PixelClusterization.cxx
+++ b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/PixelClusterization.cxx
@@ -35,7 +35,6 @@ namespace InDet{
   m_gangedAmbiguitiesFinder("InDet::PixelGangedAmbiguitiesFinder", this), //made private
   m_rdoContainerKey(""),
   m_roiCollectionKey(""),
-  m_regionSelector("RegSelSvc", name),
   m_roiSeeded(false),
   m_idHelper(nullptr),
   m_clusterContainerKey(""),
@@ -163,7 +162,7 @@ namespace InDet{
       for (; roi!=roiE; ++roi) {
         
         listOfPixIds.clear();//Prevents needless memory reallocations
-        m_regionSelector->DetHashIDList( PIXEL, **roi, listOfPixIds);
+        m_regionSelector->HashIDList( **roi, listOfPixIds);
         ATH_MSG_VERBOSE(**roi);
         ATH_MSG_VERBOSE( "REGTEST: Pixel : Roi contains " 
 		     << listOfPixIds.size() << " det. Elements" );
diff --git a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/TRT_RIO_Maker.cxx b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/TRT_RIO_Maker.cxx
index 0008dcf25499700fa4a942159bcbb53a2a6ebe8a..4f1628039ecf0ad9e9c6ef9f759ef40c3f62f720 100644
--- a/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/TRT_RIO_Maker.cxx
+++ b/InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation/src/TRT_RIO_Maker.cxx
@@ -34,7 +34,6 @@ namespace InDet {
   m_rioContainerKey("TRT_DriftCircles"),
   m_mode_rio_production(0),
   m_trtBadChannels(0),
-  m_regionSelector("RegSelSvc", name),
   m_rioContainerCacheKey("")
   {
     // Read TRT_RIO_Maker steering parameters
@@ -110,7 +109,7 @@ namespace InDet {
       for(const TrigRoiDescriptor* roi : *roiCollection){
          
          listOfTRTIds.clear(); //Prevents needless memory reallocations
-         m_regionSelector->DetHashIDList( TRT, *roi, listOfTRTIds);
+         m_regionSelector->HashIDList( *roi, listOfTRTIds);
 #ifndef NDEBUG
           ATH_MSG_VERBOSE(*roi);
           ATH_MSG_VERBOSE( "REGTEST: SCT : Roi contains " 
diff --git a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/share/SiSPSeededTracksStandalone.py b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/share/SiSPSeededTracksStandalone.py
index 3698aa44f90d365982a22940b96cbaf37268599d..4798ef3495e3628bdaed9f04d75ce62936b123e4 100644
--- a/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/share/SiSPSeededTracksStandalone.py
+++ b/InnerDetector/InDetRecAlgs/SiSPSeededTrackFinder/share/SiSPSeededTracksStandalone.py
@@ -499,6 +499,10 @@ if doPixel:
                                                           gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder,
                                                           DataObjectName          = InDetKeys.PixelRDOs(),
                                                           ClustersName            = InDetKeys.PixelClusters())
+
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+    InDetPixelClusterization.RegSelTool = makeRegSelTool_Pixel()
+
     topSequence += InDetPixelClusterization
 
 # For SCT
diff --git a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/TRT_SeededSpacePointFinderTool/SimpleTRT_SeededSpacePointFinder_ATL.h b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/TRT_SeededSpacePointFinderTool/SimpleTRT_SeededSpacePointFinder_ATL.h
index 400fd153c4b1bdfb0df6462406a16e16e1f4c2e2..46de857d44fa6336aaaee854252f4d38b58e4819 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/TRT_SeededSpacePointFinderTool/SimpleTRT_SeededSpacePointFinder_ATL.h
+++ b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/TRT_SeededSpacePointFinderTool/SimpleTRT_SeededSpacePointFinder_ATL.h
@@ -26,7 +26,7 @@
 
 #include "TrkSpacePoint/SpacePointContainer.h" 
 #include "TrkSpacePoint/SpacePointOverlapCollection.h" 
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "TrkEventUtils/PRDtoTrackMap.h"
 
 class MsgStream;
@@ -122,7 +122,7 @@ namespace InDet{
 
 
        /** Region Selector */
-       ServiceHandle<IRegSelSvc> m_pRegionSelector;
+       ToolHandle<IRegSelTool> m_pRegionSelector{ this, "RegSelTool_SCT", "RegSelTool/RegSelTool_SCT" };
 
        /**ID SCT helper*/
        const SCT_ID* m_sctId;
diff --git a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/SimpleTRT_SeededSpacePointFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/SimpleTRT_SeededSpacePointFinder_ATL.cxx
index a18b2f4fd4fac731aac06fea503b703cf13f3afa..d73412d429559dd4ce9e15cfc1ebe454ac1ecf3e 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/SimpleTRT_SeededSpacePointFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/SimpleTRT_SeededSpacePointFinder_ATL.cxx
@@ -40,7 +40,6 @@ InDet::SimpleTRT_SeededSpacePointFinder_ATL::SimpleTRT_SeededSpacePointFinder_AT
     m_directionEtaCut(0.5),
     m_positionPhiCut(5.),
     m_positionZ_Cut(250.),
-    m_pRegionSelector("RegSelSvc",n),
     m_sctId(nullptr),
     m_trtId(nullptr)
 {
@@ -243,7 +242,7 @@ void InDet::SimpleTRT_SeededSpacePointFinder_ATL::getHashesInROI(const Trk::Trac
   //// AAAARGH!!! No checking that you are within the correct phi range???
   RoiDescriptor roi(  eta-deltaEta, eta+deltaEta, phi-deltaPhi, phi+deltaPhi);
 
-  m_pRegionSelector->DetHashIDList(SCT, roi, listOfSCT_Hashes);
+  m_pRegionSelector->HashIDList( roi, listOfSCT_Hashes );
 
   // copy Hashes into Set to be able to search them
   for (std::vector<IdentifierHash>::const_iterator it = listOfSCT_Hashes.begin();
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/Pixel_TrgClusterization.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/Pixel_TrgClusterization.h
index 69320dc0d480d05afe6e8f9ae2a56e49667635f2..745a9ae5d8cd28b7ec73911c57a5f10402b50afb 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/Pixel_TrgClusterization.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/Pixel_TrgClusterization.h
@@ -44,8 +44,9 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 
-class IRegSelSvc;
 class TrigTimer;
 class PixelID;
 class IROBDataProviderSvc;
@@ -116,7 +117,7 @@ namespace InDet {
     const PixelID*           m_idHelper{};
     PixelClusterContainer*   m_clusterContainer{};
     
-    ServiceHandle<IRegSelSvc>     m_regionSelector;     //!< region selector service
+    ToolHandle<IRegSelTool>  m_regionSelector{ this, "RegSelTool", "RegSelTool/RegSelTool_Pixel" };     //!< region selector service
     bool m_doFullScan;             //!< support for FullScan mode
     double                   m_etaHalfWidth;       //!< ROI half-width in eta
     double                   m_phiHalfWidth;       //!< ROI half-width in phi
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/SCT_TrgClusterization.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/SCT_TrgClusterization.h
index 72e2844ccfc40925e094d1f392a646938072a7e4..971401aefd8845f167e10a6972350eb7abe44776 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/SCT_TrgClusterization.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/SCT_TrgClusterization.h
@@ -37,7 +37,7 @@
 #include "InDetConditionsSummaryService/IInDetConditionsTool.h"
 
 #include "Identifier/IdentifierHash.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
 #include "SiClusterizationTool/ISCT_ClusteringTool.h"
 #include "InDetTrigToolInterfaces/ITrigRawDataProviderTool.h"
@@ -110,7 +110,7 @@ namespace InDet {
     SCT_ClusterContainer*   m_clusterContainer;
     
     // !<  Trigger part
-    ServiceHandle<IRegSelSvc>    m_regionSelector; //!<  region selector service
+    ToolHandle<IRegSelTool>    m_regionSelector{ this, "RegSelTool", "RegSelTool/RegSelTool_SCT" }; //!<  region selector service
     bool m_doFullScan;                       //!<  support for FullScan mode
     double                  m_etaHalfWidth;          //!<  ROI half-width in eta.
     double                  m_phiHalfWidth;          //!<  ROI half-width in phi.
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/TRT_TrgRIO_Maker.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/TRT_TrgRIO_Maker.h
index 78f85d6397de79f6c8bcb9779c0ef28ad695c44d..22c1d61f8dbd784f6aa22f8762ad53f1bfde4073 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/TRT_TrgRIO_Maker.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/InDetTrigPrepRawDataFormat/TRT_TrgRIO_Maker.h
@@ -33,7 +33,8 @@
 //typedef - cannot be declared forward
 #include "InDetPrepRawData/TRT_DriftCircleContainer.h"
 
-class IRegSelSvc;
+#include "IRegionSelector/IRegSelTool.h"
+
 class TrigTimer;
 class ITRT_ByteStream_ConditionsSvc;
 class IROBDataProviderSvc;
@@ -84,7 +85,7 @@ namespace InDet{
     InDet::TRT_DriftCircleContainer* m_riocontainer       ;
     int                            m_mode_rio_production;
 
-    ServiceHandle<IRegSelSvc>    m_regionSelector; //!<  region selector service
+    ToolHandle<IRegSelTool>    m_regionSelector { this, "RegSelTool", "RegSelTool/RegSelTool_TRT" }; //!<  region selector service
     ServiceHandle<ITRT_ByteStream_ConditionsSvc> m_bsErrorSvc;
     ServiceHandle<IROBDataProviderSvc>    m_robDataProvider;   //!< ROB Data Provide Service
     
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/doc/packagedoc.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/doc/packagedoc.h
index 861903ddfae9d3347691be6cdd330b2127bbd62a..d034ff42b65c1984ceb1c28afd1941b3f6e4c155 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/doc/packagedoc.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/doc/packagedoc.h
@@ -69,7 +69,7 @@ ErrorStrategy
 
 Trigger-specific parameters are:
 <ul>
-<li>RegionSelectorToolName = "RegSelSvc" name of the RegionSelector tool, </li>
+<li>RegSelToolName = "RegSelTool/RegSelTool_TRT" name of the RegSel tool, </li>
 <li>EtaHalfWidth  - RoI half-width in eta </li>
 <li>PhiHalfWidth - RoI half-width in phi </li>
 </ul>
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/Pixel_TrgClusterization.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/Pixel_TrgClusterization.cxx
index f3ff3c4f81df9497af46625f26a26e5aa8e4f1c7..1dd2cb7184bf8102200e8bc968acac9886f708ee 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/Pixel_TrgClusterization.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/Pixel_TrgClusterization.cxx
@@ -31,7 +31,7 @@
 
 // Trigger
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "IRegionSelector/IRoiDescriptor.h"
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
@@ -57,7 +57,6 @@ namespace InDet{
     m_pixelRDOContainerName("PixelRDOs"),    // RDO container
     m_clustersName("PixelTrigClusters"),
     m_ambiguitiesMapName("TrigPixelClusterAmbiguitiesMap"),
-    m_regionSelector("RegSelSvc", name),
     m_doFullScan(false),
     m_etaHalfWidth(0.1),
     m_phiHalfWidth(0.1),
@@ -71,7 +70,6 @@ namespace InDet{
     declareProperty("ClustersName",            m_clustersName);
     declareProperty("AmbiguitiesMapName",      m_ambiguitiesMapName);
 
-    declareProperty("RegionSelectorTool",      m_regionSelector);
     declareProperty("doFullScan",              m_doFullScan);
     declareProperty("EtaHalfWidth",            m_etaHalfWidth);
     declareProperty("PhiHalfWidth",            m_phiHalfWidth);
@@ -361,7 +359,7 @@ namespace InDet{
 
     if (!(roi->isFullscan())){
       if(doTiming()) m_timerRegSel->start();
-      m_regionSelector->DetHashIDList( PIXEL, *roi, m_listOfPixIds);
+      m_regionSelector->HashIDList( *roi, m_listOfPixIds);
       m_numPixIds = m_listOfPixIds.size();
       ATH_MSG_DEBUG( "REGTEST: Pixel : Roi contains " 
 		     << m_numPixIds << " det. Elements" );
@@ -619,12 +617,8 @@ namespace InDet{
 		   << " located at   phi = " <<  roi->phi()
 		   << ", eta = " << roi->eta() );
 		
-
-    //const TrigRoiDescriptor fs(true);
-
     std::vector<unsigned int> uIntListOfRobs;
-    m_regionSelector->DetROBIDListUint( PIXEL, *roi, uIntListOfRobs );
-    //m_regionSelector->DetROBIDListUint( PIXEL, fs, uIntListOfRobs );
+    m_regionSelector->ROBIDList( *roi, uIntListOfRobs );
 
     ATH_MSG_DEBUG( "list of pre-registered ROB ID in PIX: " );
     for(uint i_lid(0); i_lid<uIntListOfRobs.size(); i_lid++)
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/SCT_TrgClusterization.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/SCT_TrgClusterization.cxx
index dd13ab00bd9248fb3d72a1302289a9c4e1ca6b2d..7f629e254a4abfe769d7febf864e771a961df768 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/SCT_TrgClusterization.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/SCT_TrgClusterization.cxx
@@ -31,7 +31,7 @@
 
 //Trigger
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "IRegionSelector/IRoiDescriptor.h"
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
@@ -58,7 +58,6 @@ namespace InDet{
     m_flaggedCondDataName("SCT_FlaggedCondData_TRIG"),
     m_idHelper(0),
     m_clusterContainer(nullptr),
-    m_regionSelector("RegSelSvc", name),
     m_doFullScan(false),
     m_etaHalfWidth(0.1),
     m_phiHalfWidth(0.1),
@@ -77,7 +76,6 @@ namespace InDet{
     declareProperty("clusteringTool",      m_clusteringTool);
     declareProperty("ClustersName",        m_clustersName);
     declareProperty("FlaggedCondDataName", m_flaggedCondDataName);
-    declareProperty("RegionSelectorTool",  m_regionSelector );
     declareProperty("doFullScan",          m_doFullScan );
 
     declareProperty("EtaHalfWidth",        m_etaHalfWidth);
@@ -366,7 +364,7 @@ namespace InDet{
 
     if (!(roi->isFullscan())){
       if(doTiming()) m_timerRegSel->start();
-      m_regionSelector->DetHashIDList(SCT, *roi, m_listOfSctIds );
+      m_regionSelector->HashIDList( *roi, m_listOfSctIds );
       if(doTiming()) m_timerRegSel->stop();
       
       m_numSctIds = m_listOfSctIds.size();
@@ -620,11 +618,8 @@ namespace InDet{
     ATH_MSG_DEBUG( "REGTEST prepareROBs / event"
 		   << *roi);
 
-    //const TrigRoiDescriptor fs(true);
-
     std::vector<unsigned int> uIntListOfRobs;
-    m_regionSelector->DetROBIDListUint( SCT, *roi, uIntListOfRobs );
-    //m_regionSelector->DetROBIDListUint( SCT, fs, uIntListOfRobs );
+    m_regionSelector->ROBIDList( *roi, uIntListOfRobs );
 
 
     ATH_MSG_DEBUG( "list of pre-registered ROB ID in SCT: " );
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/TRT_TrgRIO_Maker.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/TRT_TrgRIO_Maker.cxx
index 6b41fc716d9088e23a5076f756d66106caac1715..5dc99d7ae9b84de12b3fb845e5bd9d287070d672 100755
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/TRT_TrgRIO_Maker.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat/src/TRT_TrgRIO_Maker.cxx
@@ -22,7 +22,7 @@
 
 //Trigger
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "IRegionSelector/IRoiDescriptor.h"
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 
@@ -43,7 +43,6 @@ namespace InDet{
     m_driftcircle_tool("InDet::TRT_DriftCircleTool"), 
     m_riocontainer(0),
     m_mode_rio_production(0),
-    m_regionSelector("RegSelSvc", name),
     m_bsErrorSvc("TRT_ByteStream_ConditionsSvc",name),
     m_robDataProvider("ROBDataProviderSvc", name),
     m_doFullScan(false),
@@ -293,7 +292,7 @@ namespace InDet{
     
       if(doTiming()) m_timerRegSel->start();
       
-      m_regionSelector->DetHashIDList( TRT, *roi, m_listOfTrtIds);
+      m_regionSelector->HashIDList( *roi, m_listOfTrtIds);
       m_numTrtIds = m_listOfTrtIds.size();
 
       if(doTiming()) m_timerRegSel->stop();
@@ -499,7 +498,7 @@ namespace InDet{
     ATH_MSG_DEBUG( "REGTEST prepareROBs / event RoI " << *roi);
 
     std::vector<unsigned int> uIntListOfRobs;
-    m_regionSelector->DetROBIDListUint( TRT, *roi, uIntListOfRobs );
+    m_regionSelector->ROBIDList( *roi, uIntListOfRobs );
 
     ATH_MSG_DEBUG( "list of pre-registered ROB ID in TRT: ");
     for(auto i : uIntListOfRobs)
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigPixRawDataProvider.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigPixRawDataProvider.h
index 0c6feddca7897b7275f1f66bb4f5b6e30dc63285..ce5a4ef5be914491bafdcb794903062eebfa8435 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigPixRawDataProvider.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigPixRawDataProvider.h
@@ -26,12 +26,14 @@
 #include "InDetRawData/PixelRDO_Container.h"
 #include "InDetByteStreamErrors/IDCInDetBSErrContainer.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 #include <string>
 
 class IRoiDescriptor;
 class PixelID;
 class IROBDataProviderSvc;
-class IRegSelSvc;
+
 class IPixelRawDataProviderTool;
 
 namespace InDet {
@@ -55,7 +57,9 @@ namespace InDet {
 
     
   private:
-    ServiceHandle<IRegSelSvc>             m_regionSelector;     
+
+    ToolHandle<IRegSelTool>               m_regionSelector { this, "RegSelTool", "RegSelTool/RegSelTool_Pixel" };     
+
     ServiceHandle<IROBDataProviderSvc>    m_robDataProvider;
     ToolHandle<IPixelRawDataProviderTool>  m_rawDataTool;
     const PixelID*                        m_id; 
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigSCTRawDataProvider.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigSCTRawDataProvider.h
index 6b9091979554117c971a67a0e68881ab6e55c466..681f4fe663c3aae64f1529392c23e6a3eaefbf3b 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigSCTRawDataProvider.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigSCTRawDataProvider.h
@@ -28,11 +28,12 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/IIncidentListener.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 #include <string>
 
 class TrigRoiDescriptor;
 class SCT_ID;
-class IRegSelSvc;
 class IROBDataProviderSvc;
 class MsgStream;
 class IRoiDescriptor;
@@ -62,7 +63,7 @@ namespace InDet {
     StatusCode initContainer();
     
   private:
-    ServiceHandle<IRegSelSvc>           m_regionSelector;     
+    ToolHandle<IRegSelTool>             m_regionSelector { this, "RegSelTool", "RegSelTool/RegSelTool_SCT" };     
     ServiceHandle<IROBDataProviderSvc>  m_robDataProvider;
     ToolHandle<ISCTRawDataProviderTool> m_rawDataTool{this, "RawDataTool", "SCTRawDataProviderTool"};
     ToolHandle<ISCT_CablingTool>        m_cablingTool{this, "SCT_CablingTool", "SCT_CablingTool", "Tool to retrieve SCT Cabling"};
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigTRTRawDataProvider.h b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigTRTRawDataProvider.h
index fe0b3816a02cb49d1b29a255264046d3d83c92c9..bb51dd9f3c23f6fcf7a895ff11958683b7316a17 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigTRTRawDataProvider.h
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/InDetTrigRawDataProvider/TrigTRTRawDataProvider.h
@@ -25,13 +25,14 @@
 #include "InDetRawData/TRT_RDO_Container.h"
 #include "TRT_ConditionsServices/ITRT_ByteStream_ConditionsSvc.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 #include <string>
 
 class IRoiDescriptor;
 class TRT_ID;
 class ITRT_CablingSvc;
 class IROBDataProviderSvc;
-class IRegSelSvc;
 class ITRTRawDataProviderTool;
 
 
@@ -57,7 +58,7 @@ namespace InDet {
     StatusCode initContainer();
     
   private:
-    ServiceHandle<IRegSelSvc>           m_regionSelector;     
+    ToolHandle<IRegSelTool>             m_regionSelector { this, "RegSelTool", "RegSetTool/RegSelTool_TRT" };     
     ServiceHandle<IROBDataProviderSvc>  m_robDataProvider;
     ToolHandle<ITRTRawDataProviderTool> m_rawDataTool;
     ServiceHandle<ITRT_CablingSvc>      m_IdMapping;
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigPixRawDataProvider.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigPixRawDataProvider.cxx
index 313b6bd8f45d254c0386912629815f5dd39970f4..0b29139012399b60dee918b25b0a25c4c672c9c2 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigPixRawDataProvider.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigPixRawDataProvider.cxx
@@ -7,7 +7,7 @@
 #include "TrigSteeringEvent/TrigRoiDescriptor.h" 
 #include "AthenaKernel/getMessageSvc.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
-#include "IRegionSelector/IRegSelSvc.h" 
+#include "IRegionSelector/IRegSelTool.h" 
 #include "PixelRawDataByteStreamCnv/IPixelRawDataProviderTool.h"
 
 
@@ -26,7 +26,6 @@ namespace InDet {
 						  const std::string& name,
 						  const IInterface* parent) :
     AthAlgTool(type,name,parent),
-    m_regionSelector  ("RegSelSvc", name), 
     m_robDataProvider ("ROBDataProviderSvc", name),
     m_rawDataTool     ("PixelRawDataProviderTool"),
     m_id(0),
@@ -133,9 +132,8 @@ namespace InDet {
       ATH_MSG_DEBUG ( "REGTEST:" << *roi );
     
       //double zmax = 168; 
-      m_regionSelector->DetROBIDListUint( PIXEL, 
-					  *roi, 
-					  robIDlist); 
+      m_regionSelector->ROBIDList( *roi, robIDlist ); 
+
     } else {
       msg(MSG::ERROR) << name() << " invoked without an RoI data " << endmsg;
       return StatusCode::FAILURE;
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigSCTRawDataProvider.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigSCTRawDataProvider.cxx
index 40d1eda7c57cca80807dbcbece29df37ba4a5052..aeac885a8d55445875a6c43506b91d752290fa24 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigSCTRawDataProvider.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigSCTRawDataProvider.cxx
@@ -10,7 +10,7 @@
 
 //#include "InDetRawData/InDetRawDataCLASS_DEF.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
-#include "IRegionSelector/IRegSelSvc.h" 
+#include "IRegionSelector/IRegSelTool.h" 
 
 using OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment;
 
@@ -25,7 +25,6 @@ namespace InDet {
 						  const std::string& name,
 						  const IInterface* parent) :
     AthAlgTool(type,name,parent),
-    m_regionSelector  ("RegSelSvc", name), 
     m_robDataProvider ("ROBDataProviderSvc", name),
     m_id(nullptr),
     m_container(nullptr),
@@ -159,10 +158,7 @@ namespace InDet {
       ATH_MSG_DEBUG( "REGTEST:" << *roi);
 
       //      double zmax = 168; 
-      m_regionSelector->DetROBIDListUint( SCT, 
-					  *roi, 
-					  robIDlist);                                       
-
+      m_regionSelector->ROBIDList( *roi, robIDlist );
 
     } else {
       m_cablingTool->getAllRods(robIDlist);
diff --git a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigTRTRawDataProvider.cxx b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigTRTRawDataProvider.cxx
index b32400654e2f2e3bb520297bd24e54cb2373b5a6..17c65c76cf1ee8069460404d3cee0bdc4a8ea6f4 100644
--- a/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigTRTRawDataProvider.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider/src/TrigTRTRawDataProvider.cxx
@@ -8,7 +8,7 @@
 #include "AthenaKernel/getMessageSvc.h"
 #include "TRT_Cabling/ITRT_CablingSvc.h"
 #include "ByteStreamCnvSvcBase/IROBDataProviderSvc.h"
-#include "IRegionSelector/IRegSelSvc.h" 
+#include "IRegionSelector/IRegSelTool.h" 
 #include "TRT_RawDataByteStreamCnv/ITRTRawDataProviderTool.h"
 #include "InDetByteStreamErrors/TRT_BSErrContainer.h"
 
@@ -24,7 +24,6 @@ namespace InDet {
 						  const std::string& name,
 						  const IInterface* parent) :
     AthAlgTool(type,name,parent),
-    m_regionSelector  ("RegSelSvc", name), 
     m_robDataProvider ("ROBDataProviderSvc", name),
     m_rawDataTool     ("TRTRawDataProviderTool/InDetTrigTRTRawDataProviderTool"),
     m_IdMapping       ("TRT_CablingSvc",name),
@@ -132,10 +131,8 @@ namespace InDet {
       // Get RoiDescriptor
       ATH_MSG_DEBUG( "REGTEST:" << *roi );
             
-      //double zmax = 168; 
-      m_regionSelector->DetROBIDListUint( TRT, 
-					  *roi, 
-					  robIDlist);
+      m_regionSelector->ROBIDList( *roi, robIDlist );
+					  
     } else {
       robIDlist = m_IdMapping->getAllRods();
     }
diff --git a/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder.h b/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder.h
index a41f07122facdde3ae898ba58cb8eb87e3fbde2b..2ce82cb6394b6bf7a947c7ac00d731ac482befcf 100755
--- a/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder.h
+++ b/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder/SiTrigSPSeededTrackFinder.h
@@ -29,6 +29,8 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 //!< Trigger specific stuff
 #include "TrigInterfaces/FexAlgo.h"
 
@@ -36,7 +38,6 @@
 
 //forward declarations
 class TrigTimer;
-class IRegSelSvc;
 
 namespace InDet {
   class ISiSpacePointsSeedMaker;
@@ -113,7 +114,8 @@ namespace InDet {
     ToolHandle< ISiTrackMaker           > m_trackmaker;   // Track                maker
     
     //!< Trigger part
-    ServiceHandle<IRegSelSvc>     m_regionSelector;      //!< region selector service
+    ToolHandle<IRegSelTool>     m_regionSelector_pixel { this, "RegSelTool_Pixel", "RegSelTool/RegSelTool_Pixel" };    //!< pixel region selector tool
+    ToolHandle<IRegSelTool>     m_regionSelector_sct   { this, "RegSelTool_SCT",   "RegSelTool/RegSelTool_SCT" };      //!< sct region selector tool
 
     StringProperty m_prdToTrackMap
        {this,"PRDtoTrackMap",""};                        //!< optional map between PRDs and tracks to identify shared hits.
diff --git a/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/src/SiTrigSPSeededTrackFinder.cxx b/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/src/SiTrigSPSeededTrackFinder.cxx
index 846f87dbca67697a91c03f99238fbf5ac6add9de..1ebedf8ca820b3f301ca52ce27de99aded402731 100755
--- a/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/src/SiTrigSPSeededTrackFinder.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder/src/SiTrigSPSeededTrackFinder.cxx
@@ -17,7 +17,7 @@
 
 //Trigger stuff
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "IRegionSelector/IRoiDescriptor.h"
 
 //tools
@@ -61,7 +61,6 @@ InDet::SiTrigSPSeededTrackFinder::SiTrigSPSeededTrackFinder
   m_seedsmaker("InDet::SiSpacePointsSeedMaker_ATLxk/InDetTrigSiSpacePointsSeedMaker"),
   m_zvertexmaker("InDet::SiZvertexMaker_xk/InDetTrigZvertexMaker"),
   m_trackmaker("InDet::SiTrackMaker_xk/InDetTrigSiTrackMaker"),
-  m_regionSelector("RegSelSvc", name),
   m_etaHalfWidth(0.1),
   m_phiHalfWidth(0.1),
   m_doFullScan(false),
@@ -75,7 +74,6 @@ InDet::SiTrigSPSeededTrackFinder::SiTrigSPSeededTrackFinder
   
   declareProperty("useZvertexTool",m_useZvertexTool);
   declareProperty("useSeedMaker",m_useSeedMaker);
-  declareProperty("RegionSelectorTool",m_regionSelector);
   declareProperty("EtaHalfWidth",  m_etaHalfWidth);
   declareProperty("PhiHalfWidth",  m_phiHalfWidth);
   declareProperty("doFullScan",    m_doFullScan);
@@ -167,10 +165,16 @@ HLT::ErrorCode InDet::SiTrigSPSeededTrackFinder::hltInitialize() {
 
   if(!m_doFullScan){
     // Retrieving Region Selector Tool
-    if ( m_regionSelector.retrieve().isFailure() ) {
+    if ( m_regionSelector_pixel.retrieve().isFailure() ) {
       msg() << MSG::FATAL
 	    << "Unable to retrieve RegionSelector tool "
-	    << m_regionSelector.type() << endmsg;
+	    << m_regionSelector_pixel.type() << endmsg;
+      return HLT::ErrorCode(HLT::Action::ABORT_JOB, HLT::Reason::BAD_JOB_SETUP);
+    }
+    if ( m_regionSelector_sct.retrieve().isFailure() ) {
+      msg() << MSG::FATAL
+	    << "Unable to retrieve RegionSelector tool "
+	    << m_regionSelector_sct.type() << endmsg;
       return HLT::ErrorCode(HLT::Action::ABORT_JOB, HLT::Reason::BAD_JOB_SETUP);
     }
   }
@@ -264,12 +268,12 @@ HLT::ErrorCode InDet::SiTrigSPSeededTrackFinder::hltExecute(const HLT::TriggerEl
       m_timerRegSel->start();
     
     // SCT hash id's:
-    m_regionSelector->DetHashIDList(SCT, *roi, listOfSCTIds );
+    m_regionSelector_sct->HashIDList( *roi, listOfSCTIds );
     
     m_nDetElSCT = listOfSCTIds.size();
     
     // pixels hash id's:
-    m_regionSelector->DetHashIDList( PIXEL, *roi, listOfPixIds);
+    m_regionSelector_pixel->HashIDList( *roi, listOfPixIds);
     m_nDetElPixel = listOfPixIds.size();
 
     if(doTiming()) 
diff --git a/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/SiTrigSpacePointFormation/SiTrigSpacePointFinder.h b/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/SiTrigSpacePointFormation/SiTrigSpacePointFinder.h
index c99b4b3470425bf96a0f3e611433ae9e281b76b8..ef36ccdb5280c02626e4d67f1db8f109794ae58b 100755
--- a/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/SiTrigSpacePointFormation/SiTrigSpacePointFinder.h
+++ b/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/SiTrigSpacePointFormation/SiTrigSpacePointFinder.h
@@ -41,6 +41,8 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 
+#include "IRegionSelector/IRegSelTool.h"
+
 #include <string>
 #include <vector>
 
@@ -49,7 +51,7 @@
 class SpacePointCollection; 
 class SpacePointContainer; 
 class SpacePointOverlapCollection;
-class IRegSelSvc;
+
 class TrigTimer;
 
 namespace InDet{
@@ -98,7 +100,9 @@ namespace InDet{
     ToolHandle< ITrigSCT_SpacePointTool > m_trigSpacePointTool;
     ToolHandle< SiSpacePointMakerTool > m_SiSpacePointMakerTool;
     
-    ServiceHandle<IRegSelSvc>     m_regionSelector;     //!< region selector service
+    ToolHandle<IRegSelTool>     m_regionSelector_pixel { this, "RegSelTool_Pixel", "RegSelTool/RegSelTool_Pixel" };     //!< region selector service
+    ToolHandle<IRegSelTool>     m_regionSelector_sct   { this, "RegSelTool_SCT",   "RegSelTool/RegSelTool_SCT" };     //!< region selector service
+ 
     bool m_doFullScan;		//!< skip RegionSelector and indefFind for FullScan
     
     double                  m_etaHalfWidth;          //!< ROI half-width in eta
diff --git a/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/src/SiTrigSpacePointFinder.cxx b/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/src/SiTrigSpacePointFinder.cxx
index b3c30d1609c2f8cc1df278b7375b1506a866c4b1..e6c6919f1ce277d23c4c3f8dfc0dc482a0bd543f 100755
--- a/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/src/SiTrigSpacePointFinder.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation/src/SiTrigSpacePointFinder.cxx
@@ -29,7 +29,7 @@ ATLAS Collaboration
 
 // Trigger
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "TrigTimeAlgs/TrigTimer.h"
 
 #include "GaudiKernel/ITHistSvc.h"
@@ -60,7 +60,6 @@ namespace InDet{
     m_spOverlapColl(0),
     m_trigSpacePointTool ("InDet::SCT_TrigSpacePointTool"),
     m_SiSpacePointMakerTool ("InDet::SiSpacePointMakerTool"),
-    m_regionSelector("RegSelSvc", name),
     m_doFullScan(false),
     m_etaHalfWidth(0.1),
     m_phiHalfWidth(0.1)
@@ -80,7 +79,6 @@ namespace InDet{
     declareProperty("ProcessOverlaps",          m_overlap);
     declareProperty("OverlapSPName",            m_spOverlapName);
 
-    declareProperty("RegionSelectorTool",      m_regionSelector);
     declareProperty("doFullScan",              m_doFullScan);
     declareProperty("EtaHalfWidth",            m_etaHalfWidth );
     declareProperty("PhiHalfWidth",            m_phiHalfWidth );
@@ -138,14 +136,19 @@ namespace InDet{
 
     if(!m_doFullScan){  
       // Retrieving Region Selector Tool:
-      if ( m_regionSelector.retrieve().isFailure() ) {
-	ATH_MSG_FATAL( "Unable to retrieve RegionSelector tool "  
-		       << m_regionSelector.type() );
+      if ( m_regionSelector_pixel.retrieve().isFailure() ) {
+	ATH_MSG_FATAL( "Unable to retrieve Pixel RegionSelector tool "  
+		       << m_regionSelector_pixel.type() );
+	return HLT::ErrorCode(HLT::Action::ABORT_JOB, HLT::Reason::BAD_JOB_SETUP);
+      }
+      if ( m_regionSelector_sct.retrieve().isFailure() ) {
+	ATH_MSG_FATAL( "Unable to retrieve SCT RegionSelector tool "  
+		       << m_regionSelector_sct.type() );
 	return HLT::ErrorCode(HLT::Action::ABORT_JOB, HLT::Reason::BAD_JOB_SETUP);
       }
     }
     else{
-      ATH_MSG_INFO( "RegionSelector is not needed for FullScan " );
+      ATH_MSG_INFO( "RegionSelector is not needed for FullScan (not strictly true - we can use fullscan RoiDescriptors" );
     }
 
     // Get an Identifier helper object
@@ -440,10 +443,7 @@ namespace InDet{
       if(!m_doFullScan){
 	//   Get the SCT RDO's:
 	if(doTiming()) m_timerRegSel->resume();
-      
-	m_regionSelector->DetHashIDList(SCT, 
-					*roi, 
-					m_listOfSctIds );
+	m_regionSelector_sct->HashIDList( *roi, m_listOfSctIds );
 	if(doTiming()) m_timerRegSel->pause();
       }
 
@@ -619,12 +619,8 @@ namespace InDet{
 
       if(!m_doFullScan){
 	if(doTiming()) m_timerRegSel->resume();
-      
-	m_regionSelector->DetHashIDList( PIXEL, 
-					 *roi, 
-					 m_listOfPixIds);
-      
-	if(doTiming()) m_timerRegSel->pause();
+      	m_regionSelector_pixel->HashIDList( *roi, m_listOfPixIds );
+      	if(doTiming()) m_timerRegSel->pause();
       }
     
       m_nPix=0;
diff --git a/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder.h b/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder.h
index f447b291a87883422c7a1ef89881bf7e67af83b0..13b5b6332002a8d5c1f1c3e56221247efafb9ed2 100755
--- a/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder.h
+++ b/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder/TRT_TrigSeededTrackFinder.h
@@ -36,10 +36,9 @@
 //!< Trigger specific stuff
 #include "TrigTimeAlgs/TrigTimerSvc.h"
 #include "TrigInterfaces/FexAlgo.h"
+#include "IRegionSelector/IRegSelTool.h"
 
 
-class IRegSelSvc;
-
 namespace InDet {
 
 
@@ -78,7 +77,7 @@ namespace InDet {
       std::ostream& dump     (std::ostream& out) const;
 
   protected:
-      ServiceHandle<IRegSelSvc>     m_regionSelector;      //!< region selector service
+      ToolHandle<IRegSelTool>     m_regionSelector{ this, "RegSelTool", "RegSelTool/RegSelTool_TRT" };      //!< region selector service
       
       double       m_etaHalfWidth{};   //!< ROI half-width in eta.
       double       m_phiHalfWidth{};   //!< ROI half-width in phi.
diff --git a/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/src/TRT_TrigSeededTrackFinder.cxx b/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/src/TRT_TrigSeededTrackFinder.cxx
index 23c9070448ccd1eba8cc415d09e832428d485c8f..1ccc01ce4b08b924b2858a91b77536f255b7a8a2 100755
--- a/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/src/TRT_TrigSeededTrackFinder.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder/src/TRT_TrigSeededTrackFinder.cxx
@@ -18,7 +18,7 @@
 #include "TrkEventPrimitives/FitQuality.h"
 #include "TrkTrack/TrackCollection.h"
 
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
 
@@ -36,7 +36,6 @@ using namespace std;
 
 InDet::TRT_TrigSeededTrackFinder::TRT_TrigSeededTrackFinder (const std::string& name, ISvcLocator* pSvcLocator)
   : HLT::FexAlgo(name, pSvcLocator),
-    m_regionSelector("RegSelSvc", name),
     m_etaHalfWidth(0.1),
     m_phiHalfWidth(0.1),
     m_doFullScan(false),
@@ -49,7 +48,6 @@ InDet::TRT_TrigSeededTrackFinder::TRT_TrigSeededTrackFinder (const std::string&
   m_doExtension = false ; //Find the track TRT extension
   m_saveTRT = true ; //Save stand-alone TRT segments
 
-  declareProperty("RegionSelectorTool"         ,m_regionSelector   ); //RegionSelector tool
   declareProperty("EtaHalfWidth"               ,m_etaHalfWidth     ); //Eta half-width of RoI
   declareProperty("PhiHalfWidth"               ,m_phiHalfWidth     ); //Phi half-width of RoI
   declareProperty("doFullScan"                 ,m_doFullScan       ); // Enables full scan mode
@@ -218,17 +216,15 @@ HLT::ErrorCode InDet::TRT_TrigSeededTrackFinder::hltExecute(const HLT::TriggerEl
     //    const double zmax= 168;
 
     // SCT hash id's:
-    m_regionSelector->DetHashIDList(SCT,
-				    *roi,
-				    listOfSCTIds );
+    m_regionSelector->HashIDList( *roi, listOfSCTIds );
 
     m_nDetElSCT = listOfSCTIds.size();
     if(outputLevel <= MSG::DEBUG) msg() << MSG::DEBUG << "Number of SCT detector elements:" << m_nDetElSCT << endmsg;
 
     // pixels hash id's:
-    m_regionSelector->DetHashIDList( PIXEL,
-				     *roi,
-				     listOfPixIds);
+    m_regionSelector->HashIDList( *roi, listOfPixIds );
+				     
+				     
     m_nDetElPixel = listOfPixIds.size();
     if(outputLevel <= MSG::DEBUG) msg() << MSG::DEBUG << "Number of Pixel detector elements:" << m_nDetElPixel << endmsg;
 
diff --git a/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder.h b/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder.h
index f2c1c03ecff5c715f89a8984de8807d778f77778..a73d01ac009e2600895d73a9eb6942062a067e11 100755
--- a/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder.h
+++ b/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder/TRT_TrigTrackSegmentsFinder.h
@@ -11,9 +11,12 @@
 
 //!< Trigger specific stuff
 #include "TrigInterfaces/FexAlgo.h"
+
+#include "IRegionSelector/IRegSelTool.h"
+
 #include <iosfwd>
 
-class IRegSelSvc;
+
 class TrigTimer;
 
 namespace InDet {
@@ -72,7 +75,7 @@ namespace InDet {
       MsgStream&    dumpevent(MsgStream&    out) const;
 
       //!< Trigger part
-      ServiceHandle<IRegSelSvc>     m_regionSelector;     //!< region selector service
+      ToolHandle<IRegSelTool>     m_regionSelector{ this, "RegSelTool", "RegSelTool/RegSelTool_TRT" };     //!< region selector service
       double                  m_etaHalfWidth{};   //!< ROI half-width in eta.
       double                  m_phiHalfWidth{};   //!< ROI half-width in phi.
       bool m_doFullScan{}; 			//!< supports FullScan mode
diff --git a/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/src/TRT_TrigTrackSegmentsFinder.cxx b/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/src/TRT_TrigTrackSegmentsFinder.cxx
index c106ba7b5f4ec23d6c5a53b264857340394ab6aa..3990768571a4ff5e41ec057ef3042a81aa62d6a9 100755
--- a/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/src/TRT_TrigTrackSegmentsFinder.cxx
+++ b/InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder/src/TRT_TrigTrackSegmentsFinder.cxx
@@ -21,7 +21,7 @@
 
 //Trigger stuff
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include <ostream>
 
 
@@ -33,13 +33,11 @@ InDet::TRT_TrigTrackSegmentsFinder::TRT_TrigTrackSegmentsFinder
 (const std::string& name,ISvcLocator* pSvcLocator):
   HLT::FexAlgo(name, pSvcLocator),
   m_segmentsMakerTool("InDet::TRT_TrackSegmentsMaker_ATLxk/InDetTrigTRT_TrackSegmentsMaker"),
-  m_regionSelector("RegSelSvc", name),
   m_etaHalfWidth(0.1),
   m_phiHalfWidth(0.1),
   m_doFullScan(false)
 {
   declareProperty("SegmentsMakerTool", m_segmentsMakerTool);
-  declareProperty("RegionSelector", m_regionSelector);
   declareProperty("EtaHalfWidth",  m_etaHalfWidth);
   declareProperty("PhiHalfWidth",  m_phiHalfWidth);
   declareProperty("doFullScan",    m_doFullScan);
@@ -131,9 +129,8 @@ HLT::ErrorCode InDet::TRT_TrigTrackSegmentsFinder::hltExecute(const HLT::Trigger
     // TRT hash id's:
     if(doTiming()) m_timerRegSel->start();
     std::vector<IdentifierHash> listOfTRTIds; 
-    m_regionSelector->DetHashIDList(TRT, 
-				    *roi, 
-				    listOfTRTIds );
+    m_regionSelector->HashIDList( *roi,listOfTRTIds );
+				    
     if(doTiming()) m_timerRegSel->stop();
 
     if(doTiming()) m_timerSegMaker->resume();
diff --git a/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_DigitizationValidation.py b/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_DigitizationValidation.py
index aa582e882bc6b5aef485740a31bd22e620629bf2..68822f76a63279cfa0379eee1fad9d538ed0c9af 100644
--- a/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_DigitizationValidation.py
+++ b/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_DigitizationValidation.py
@@ -109,9 +109,18 @@ if not hasattr(condSeq, 'PixelOfflineCalibCondAlg'):
     PixelOfflineCalibCondAlg.InputSource = 2
 
 from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__PixelClusterization
-job += InDet__PixelClusterization("PixelClusterization")
+
+pixelClusterization = InDet__PixelClusterization("PixelClusterization")
+
+from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+pixelClusterization.RegSelTool = makeRegSelTool_Pixel()
+
+job += pixelClusterization
+
 print job.PixelClusterization
 
+
+
 from SiSpacePointFormation.SiSpacePointFormationConf import InDet__SiTrackerSpacePointFinder
 job += InDet__SiTrackerSpacePointFinder("PixelSpacePoints",
                                         ProcessSCTs = False)
diff --git a/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_SimulationValidation.py b/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_SimulationValidation.py
index 38406bcda0f81d67e94d1f148f5c50cbfa1ab1d8..f671cb84298c18d4e57529edc44ecf25548a591c 100644
--- a/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_SimulationValidation.py
+++ b/InnerDetector/InDetValidation/PixelRTT/share/PixelRTT_SimulationValidation.py
@@ -178,9 +178,13 @@ if not hasattr(condSeq, 'PixelOfflineCalibCondAlg'):
     PixelOfflineCalibCondAlg.InputSource = 2
 
 from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__PixelClusterization
-job += InDet__PixelClusterization("PixelClusterization")
+pixelClusterization = InDet__PixelClusterization("PixelClusterization")
+from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+pixelClusterization.RegSelTool = makeRegSelTool_Pixel()
+job += pixelClusterization
 print job.PixelClusterization
 
+
 from SiSpacePointFormation.SiSpacePointFormationConf import InDet__SiTrackerSpacePointFinder
 job += InDet__SiTrackerSpacePointFinder("PixelSpacePoints",
                                         ProcessSCTs = False)
diff --git a/Reconstruction/TRT_Rec/TRT_Rec/TRT_Predictor.h b/Reconstruction/TRT_Rec/TRT_Rec/TRT_Predictor.h
index a105d5edcfb2513b59c67c6c5dadcae773710237..32c4d3de0f0a6b5ea0ab5ff78ad72a761778815f 100755
--- a/Reconstruction/TRT_Rec/TRT_Rec/TRT_Predictor.h
+++ b/Reconstruction/TRT_Rec/TRT_Rec/TRT_Predictor.h
@@ -14,7 +14,7 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
-#include "IRegionSelector/IRegSelSvc.h"
+#include "IRegionSelector/IRegSelTool.h"
 #include "iPatInterfaces/ITRT_Predictor.h"
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
@@ -59,7 +59,7 @@ private:
 
     // helpers, managers, tools
     // SurfaceIntersector*				m_intersector;
-    ServiceHandle<IRegSelSvc>			m_regionSelector;
+    ToolHandle<IRegSelTool>			m_regionSelector { this, "RegSelTool", "RegSelTool/RegSetTool_TRT" };
     ToolHandle<Trk::IIntersector>		m_rungeKuttaIntersector;
     const InDetDD::TRT_DetectorManager*		m_manager;
 
diff --git a/Reconstruction/TRT_Rec/src/TRT_Predictor.cxx b/Reconstruction/TRT_Rec/src/TRT_Predictor.cxx
index d82abe5479dedd3264f6b11acf458bdac603849c..1e58c807ba289d82656483b888c42ebb562373fd 100755
--- a/Reconstruction/TRT_Rec/src/TRT_Predictor.cxx
+++ b/Reconstruction/TRT_Rec/src/TRT_Predictor.cxx
@@ -40,7 +40,6 @@ TRT_Predictor::TRT_Predictor (const std::string&	type,
 			      const std::string&	name, 
 			      const IInterface*      	parent)
     :	AthAlgTool			(type, name, parent),
-	m_regionSelector		("RegSelSvc", name),
 	m_rungeKuttaIntersector		("Trk::RungeKuttaIntersector/RungeKuttaIntersector"),
 	m_manager			(nullptr),
 	m_barrelAcceptance		(0.55),
@@ -684,7 +683,7 @@ TRT_Predictor::setRegion(const TrackParameters&	parameters)
     // get the detector element hashIDs from the RegionSelector.
     RoiDescriptor roi( etaMin, etaMax, phiMin, phiMax );
 
-    m_regionSelector->DetHashIDList(TRT, roi, *m_hashIds);
+    m_regionSelector->HashIDList( roi, *m_hashIds);
 }
 
 
diff --git a/Reconstruction/iPat/iPatRecExample/share/iPatRec_jobOptions.py b/Reconstruction/iPat/iPatRecExample/share/iPatRec_jobOptions.py
index 18ec6fe20db9f2f4d002c9bdadfaf359020cdc94..d65f219d642c4df446fed7e3cebe140e50e09270 100755
--- a/Reconstruction/iPat/iPatRecExample/share/iPatRec_jobOptions.py
+++ b/Reconstruction/iPat/iPatRecExample/share/iPatRec_jobOptions.py
@@ -92,10 +92,10 @@ if DetFlags.detdescr.ID_on() and (DetFlags.haveRIO.pixel_on() or DetFlags.haveRI
     # include the RegionSelector service
     if DetFlags.haveRIO.TRT_on():
         from AthenaCommon.AppMgr import ServiceMgr
-        from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
-        iPatRegSelSvc  = RegSelSvcDefault()
-        iPatRegSelSvc.enableTRT = True
-        ServiceMgr += iPatRegSelSvc
+        # from RegionSelector.RegSelSvcDefault import RegSelSvcDefault
+        # iPatRegSelSvc  = RegSelSvcDefault()
+        # iPatRegSelSvc.enableTRT = True
+        # ServiceMgr += iPatRegSelSvc
 
     # -------------------------------------------------------------
     # Algorithm Private Options: iPatRec
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetPT.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetPT.py
index b42c63542a2482405aeb7f74345ffcd1dff1d5a9..6a2e8ff95baca918780c0f5879d08544a680f257 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/InDetPT.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetPT.py
@@ -156,6 +156,9 @@ def makeInDetPrecisionTracking( config = None,
                                                      TRT_DriftCircleTool = InDetTrigTRT_DriftCircleTool )
             InDetTrigTRTRIOMaker.isRoI_Seeded = True
             InDetTrigTRTRIOMaker.RoIs = rois
+
+            from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT
+            InDetTrigTRTRIOMaker.RegSelTool = makeRegSelTool_TRT()
  
  
             from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigPatternPropagator, InDetTrigPatternUpdator
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
index 6acaa889727aa2a1e94b4887174ac8de53ee09c0..97993fa95ed7c84566cdd87124044febb93f060f 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py
@@ -112,6 +112,10 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie
     InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey
     InDetPixelRawDataProvider.BSErrorsCacheKey = InDetCacheNames.PixBSErrCacheKey
 
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel 
+
+    InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel()
+
     viewAlgs.append(InDetPixelRawDataProvider)
 
 
@@ -194,6 +198,9 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie
   InDetPixelClusterization.RoIs = rois
   InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey
 
+  from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+  InDetPixelClusterization.RegSelTool = makeRegSelTool_Pixel()
+
   viewAlgs.append(InDetPixelClusterization)
 
   # Create SCT_ConditionsSummaryTool
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 9099aac72f957488fae1c25d2a8b21b9606ae71f..c35b373ab85d011f6f9cc34518c46cdb531bc0f0 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -484,11 +484,15 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
     PixelRawDataProvider=CompFactory.PixelRawDataProvider
     InDetPixelRawDataProvider = PixelRawDataProvider(name         = "InDetPixelRawDataProvider"+ signature,
                                                      RDOKey       = InDetKeys.PixelRDOs(),
-                                                     ProviderTool = InDetPixelRawDataProviderTool,)
+                                                     ProviderTool = InDetPixelRawDataProviderTool )
 
     InDetPixelRawDataProvider.isRoI_Seeded = True
     InDetPixelRawDataProvider.RoIs = roisKey
     InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey
+
+    from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+    InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel()
+
     acc.addEventAlgo(InDetPixelRawDataProvider)
 
 
@@ -575,10 +579,12 @@ def TrigInDetConfig( flags, roisKey="EMRoIs", signatureName='' ):
                                                         DataObjectName          = InDetKeys.PixelRDOs(),
                                                         AmbiguitiesMap          = 'TrigPixelClusterAmbiguitiesMap',
                                                         ClustersName            = "PixelTrigClusters",)
-  InDetPixelClusterization
+
   InDetPixelClusterization.isRoI_Seeded = True
   InDetPixelClusterization.RoIs = roisKey
   InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey
+  from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel
+  InDetPixelClusterization.RegSelTool = makeRegSelTool_Pixel()
   acc.addEventAlgo(InDetPixelClusterization)
 
   from InDetConfig.InDetRecToolConfig import InDetSCT_ConditionsSummaryToolCfg
diff --git a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigSpacePointConversionTool.cxx b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigSpacePointConversionTool.cxx
index aefb54809a0679ba70330baed16593d7c8e9faa5..54eda180a1d2f86005cc229c08fa1d0f499bf1f4 100644
--- a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigSpacePointConversionTool.cxx
+++ b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigSpacePointConversionTool.cxx
@@ -30,7 +30,6 @@ TrigSpacePointConversionTool::TrigSpacePointConversionTool(const std::string& t,
 {
   declareInterface< ITrigSpacePointConversionTool >( this );
 
-  //  declareProperty( "RegionSelectorService",  m_regionSelectorName = "RegSelSvc" );
   declareProperty( "RegSel_Pixel",           m_regsel_pix);
   declareProperty( "RegSel_SCT",             m_regsel_sct);