From 2a6c88e9a8c4e5bf2260e3f2c4c165c5ccf85c55 Mon Sep 17 00:00:00 2001
From: sutt <sutt@cern.ch>
Date: Thu, 1 Oct 2020 00:36:13 +0200
Subject: [PATCH] Replace use of old RegSelSvc by RegSelTools for the ID

The single RegSelSvc is to be replaced by a separate RegSelTool for each subsystem.

This merge request is to implement that migration for the ID code.

This code contains about 60 % of all the changes that are needed for the migration,
and most of the changes for the pixel, SCT and TRT.

```
For information the packages needing changes are
Innerdetector/InDetEventCnv/PixelRawDataByteStreamCnv
InnerDetector/InDetEventCnv/TRT_RawDataByteStreamCnv
InnerDetector/InDetExample/InDetRecExample
InnerDetector/InDetRecAlgs/InDetPrepRawDataFormation
InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool

Reconstruction/TRT_Rec
Reconstruction/iPat/iPatRecExample

Innerdetector/InDetExample/InDetTrigRecExample

InnerDetector/InDetTrigRecAlgs/InDetTrigPrepRawDataFormat
InnerDetector/InDetTrigRecAlgs/InDetTrigRawDataProvider
InnerDetector/InDetTrigRecAlgs/SiTrigSPSeededTrackFinder
InnerDetector/InDetTrigRecAlgs/SiTrigSpacePointFormation
InnerDetector/InDetTrigRecAlgs/TRT_TrigSeededTrackFinder
InnerDetector/InDetTrigRecAlgs/TRT_TrigTrackSegmentsFinder

Trigger/TrigTools/TrigOnlineSpacePointTool
Trigger/TriggerCommon/TriggerJobOpts

Trigger/TrigAlgorithms/TrigGenericAlgs
Trigger/TrigAlgorithms/TrigT2MinBias
Trigger/TrigHypothesis/TrigLongLivedParticlesHypo
```

plus the configuratin for every package that uses any of the above packages which will need to
instantiate the RegSelTools for the tool and algorithms configurables.
---
 .../share/InnerDetectorOverlay_jobOptions.py  | 11 ++++++
 .../PixelCalibAlgs/share/NoiseMapBuilder.py   |  7 +++-
 .../TRT_CalibAlgs/share/RAWHITemplate.py      |  1 +
 .../InDetConfig/python/TrackRecoConfig.py     |  4 ++-
 .../src/PixelRawDataProvider.cxx              |  4 +--
 .../src/PixelRawDataProvider.h                |  6 ++--
 .../share/ConfiguredInDetPreProcessingTRT.py  |  5 +++
 .../share/InDetReadBS_jobOptions.py           | 12 +++++++
 .../share/InDetRecPreProcessingSilicon.py     |  8 +++++
 .../python/InDetTrigConfigRecBackTracking.py  | 21 +++++++-----
 .../python/InDetTrigConfigRecNewTracking.py   |  7 ++++
 .../python/InDetTrigConfigRecPreProcessing.py | 34 +++++++++++++++++++
 .../share/InDetTrigRec_jobOptions.py          | 18 +++++-----
 .../PixelClusterization.h                     |  4 +--
 .../InDetPrepRawDataFormation/TRT_RIO_Maker.h |  4 +--
 .../src/PixelClusterization.cxx               |  3 +-
 .../src/TRT_RIO_Maker.cxx                     |  3 +-
 .../share/SiSPSeededTracksStandalone.py       |  4 +++
 .../SimpleTRT_SeededSpacePointFinder_ATL.h    |  4 +--
 .../SimpleTRT_SeededSpacePointFinder_ATL.cxx  |  3 +-
 .../Pixel_TrgClusterization.h                 |  5 +--
 .../SCT_TrgClusterization.h                   |  4 +--
 .../TRT_TrgRIO_Maker.h                        |  5 +--
 .../doc/packagedoc.h                          |  2 +-
 .../src/Pixel_TrgClusterization.cxx           | 12 ++-----
 .../src/SCT_TrgClusterization.cxx             | 11 ++----
 .../src/TRT_TrgRIO_Maker.cxx                  |  7 ++--
 .../TrigPixRawDataProvider.h                  |  8 +++--
 .../TrigSCTRawDataProvider.h                  |  5 +--
 .../TrigTRTRawDataProvider.h                  |  5 +--
 .../src/TrigPixRawDataProvider.cxx            |  8 ++---
 .../src/TrigSCTRawDataProvider.cxx            |  8 ++---
 .../src/TrigTRTRawDataProvider.cxx            |  9 ++---
 .../SiTrigSPSeededTrackFinder.h               |  6 ++--
 .../src/SiTrigSPSeededTrackFinder.cxx         | 18 ++++++----
 .../SiTrigSpacePointFinder.h                  |  8 +++--
 .../src/SiTrigSpacePointFinder.cxx            | 30 +++++++---------
 .../TRT_TrigSeededTrackFinder.h               |  5 ++-
 .../src/TRT_TrigSeededTrackFinder.cxx         | 14 +++-----
 .../TRT_TrigTrackSegmentsFinder.h             |  7 ++--
 .../src/TRT_TrigTrackSegmentsFinder.cxx       |  9 ++---
 .../share/PixelRTT_DigitizationValidation.py  | 11 +++++-
 .../share/PixelRTT_SimulationValidation.py    |  6 +++-
 .../TRT_Rec/TRT_Rec/TRT_Predictor.h           |  4 +--
 Reconstruction/TRT_Rec/src/TRT_Predictor.cxx  |  3 +-
 .../share/iPatRec_jobOptions.py               |  8 ++---
 .../TrigInDetConfig/python/InDetPT.py         |  3 ++
 .../TrigInDetConfig/python/InDetSetup.py      |  7 ++++
 .../TrigInDetConfig/python/TrigInDetConfig.py | 10 ++++--
 .../src/TrigSpacePointConversionTool.cxx      |  1 -
 50 files changed, 253 insertions(+), 149 deletions(-)

diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/InnerDetectorOverlay_jobOptions.py
index 5e3236432c1..304e723bf90 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 67a11a30b79..1d66ea56b49 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 9675ae23a0f..455f0adf677 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 b69f153bfa3..6445930a959 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 d50b392fd75..53f53c1041a 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 b9f4c5605c3..56855e0b8d8 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 a4289a2f4d3..a18b6a4c299 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 aa7b9745a8a..e5d39621d69 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 f35a14aadf0..bbe4a79c259 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 bd853408b9e..95ba698ec6e 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 01712f83af5..b9a3085f442 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 b22d5446699..e5fdf17b536 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 f5627a5d66c..85d5fbef1c0 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 969b27bb8bb..0dc0a7b5ce4 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 87d61f41bed..ca76abb5359 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 bf694c1e3ed..7f3c93be147 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 0008dcf2549..4f1628039ec 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 3698aa44f90..4798ef3495e 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 400fd153c4b..46de857d44f 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 a18b2f4fd4f..d73412d4295 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 69320dc0d48..745a9ae5d8c 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 72e2844ccfc..971401aefd8 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 78f85d6397d..22c1d61f8db 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 861903ddfae..d034ff42b65 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 f3ff3c4f81d..1dd2cb7184b 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 dd13ab00bd9..7f629e254a4 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 6b41fc716d9..5dc99d7ae9b 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 0c6feddca78..ce5a4ef5be9 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 6b909197955..681f4fe663c 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 fe0b3816a02..bb51dd9f3c2 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 313b6bd8f45..0b291390123 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 40d1eda7c57..aeac885a8d5 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 b32400654e2..17c65c76cf1 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 a41f07122fa..2ce82cb6394 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 846f87dbca6..1ebedf8ca82 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 c99b4b34704..ef36ccdb528 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 b3c30d1609c..e6c6919f1ce 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 f447b291a87..13b5b633200 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 23c9070448c..1ccc01ce4b0 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 f2c1c03ecff..a73d01ac009 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 c106ba7b5f4..3990768571a 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 aa582e882bc..68822f76a63 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 38406bcda0f..f671cb84298 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 a105d5edcfb..32c4d3de0f0 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 d82abe5479d..1e58c807ba2 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 18ec6fe20db..d65f219d642 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 b42c63542a2..6a2e8ff95ba 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 6acaa889727..97993fa95ed 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 9099aac72f9..c35b373ab85 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 aefb54809a0..54eda180a1d 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);
 
-- 
GitLab