diff --git a/Trigger/TrigTools/IDScanHitFilter/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigTools/IDScanHitFilter/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 0000000000000000000000000000000000000000..61d96e367e6069905544cb36c5d86e1fdbbb4a16
--- /dev/null
+++ b/Trigger/TrigTools/IDScanHitFilter/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigTools/IDScanHitFilter
diff --git a/Trigger/TrigTools/IDScanHitFilter/CMakeLists.txt b/Trigger/TrigTools/IDScanHitFilter/CMakeLists.txt
index 551e7242262b0809415f100f6c3d17f5357a37fe..3b7ddeae822c7153691b20cff4de40f2c6b01a45 100644
--- a/Trigger/TrigTools/IDScanHitFilter/CMakeLists.txt
+++ b/Trigger/TrigTools/IDScanHitFilter/CMakeLists.txt
@@ -6,23 +6,15 @@
 atlas_subdir( IDScanHitFilter )
 
 # Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
+atlas_depends_on_subdirs( PRIVATE
                           Control/AthenaBaseComps
                           GaudiKernel
                           Trigger/TrigEvent/TrigInDetEvent
                           Trigger/TrigEvent/TrigSteeringEvent
                           Trigger/TrigTools/TrigInDetToolInterfaces
-                          PRIVATE
                           DetectorDescription/IRegionSelector )
 
 # Component(s) in the package:
-atlas_add_library( IDScanHitFilterLib
-                   src/*.cxx
-                   PUBLIC_HEADERS IDScanHitFilter
-                   LINK_LIBRARIES AthenaBaseComps GaudiKernel TrigInDetEvent TrigSteeringEvent
-                   PRIVATE_LINK_LIBRARIES IRegionSelector )
-
 atlas_add_component( IDScanHitFilter
-                     src/components/*.cxx
-                     LINK_LIBRARIES AthenaBaseComps GaudiKernel TrigInDetEvent TrigSteeringEvent IRegionSelector IDScanHitFilterLib )
-
+                     src/*.cxx src/components/*.cxx
+                     LINK_LIBRARIES AthenaBaseComps GaudiKernel TrigInDetEvent TrigSteeringEvent IRegionSelector )
diff --git a/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.cxx b/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.cxx
index 92b84b63934da32469a1a66f600b73e1817c600f..38784fc8a17aab7842f9ff1ef4c7ea7415208588 100644
--- a/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.cxx
+++ b/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.cxx
@@ -11,7 +11,7 @@
 //   $Id: FilyterBin.cxx, v0.0   Sun 17 Mar 2013 10:06:51 GMT sutt $
 
 
-#include "IDScanHitFilter/FilterBin.h"
+#include "FilterBin.h"
 
 long FilterBin::m_maxLayers      = 19;
 long FilterBin::m_maxBarrelLayer = 6;
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/FilterBin.h b/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.h
old mode 100755
new mode 100644
similarity index 85%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/FilterBin.h
rename to Trigger/TrigTools/IDScanHitFilter/src/FilterBin.h
index f401099cb9e29b4ff722facb746a673e062bf964..144e603b72f98ea5e1149e13505dc269442948c9
--- a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/FilterBin.h
+++ b/Trigger/TrigTools/IDScanHitFilter/src/FilterBin.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -21,8 +21,11 @@
 #if ! defined( IDSCAN_FILTERBIN_H )
 #define IDSCAN_FILTERBIN_H
 
-#include "IDScanHitFilter/FixedBitSet.h"
-#include "IDScanHitFilter/IdScanSpPoint.h"
+#include "FixedBitSet.h"
+#include "IdScanSpPoint.h"
+
+#include "CxxUtils/checker_macros.h"
+
 #include <iostream>
 #include <list>
 #include <map>
@@ -46,8 +49,8 @@ class FilterBin
   std::list<IdScanSpPoint* >&       hitList();
   const std::list<IdScanSpPoint* >& hitList() const;
 
-  static void setMaxLayers(long layer)      { m_maxLayers = layer; }
-  static void setMaxBarrelLayer(long layer) { m_maxBarrelLayer = layer; }
+  static void setMaxLayers ATLAS_NOT_THREAD_SAFE (long layer)      { m_maxLayers = layer; }
+  static void setMaxBarrelLayer ATLAS_NOT_THREAD_SAFE (long layer) { m_maxBarrelLayer = layer; }
 
 private:
   void neighborKeys( long key, long* np ) const; 
@@ -58,8 +61,9 @@ private:
   FixedBitSet m_Ldirect;                        // keeps direct layers
   FixedBitSet m_Ltotal;                         // keeps direct+indirect layers
 
-  static long m_maxLayers;
-  static long m_maxBarrelLayer;
+  // statics set once during initialize() via the above non-thread-safe methods:
+  static long m_maxLayers ATLAS_THREAD_SAFE;
+  static long m_maxBarrelLayer ATLAS_THREAD_SAFE;
 };
 
 
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/FixedBitSet.h b/Trigger/TrigTools/IDScanHitFilter/src/FixedBitSet.h
old mode 100755
new mode 100644
similarity index 100%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/FixedBitSet.h
rename to Trigger/TrigTools/IDScanHitFilter/src/FixedBitSet.h
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/GC_Constants.h b/Trigger/TrigTools/IDScanHitFilter/src/GC_Constants.h
old mode 100755
new mode 100644
similarity index 100%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/GC_Constants.h
rename to Trigger/TrigTools/IDScanHitFilter/src/GC_Constants.h
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/Group.h b/Trigger/TrigTools/IDScanHitFilter/src/Group.h
old mode 100755
new mode 100644
similarity index 98%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/Group.h
rename to Trigger/TrigTools/IDScanHitFilter/src/Group.h
index 3a4316e7768b1acb5cd0072cfb19fe4f9bd11efc..b7467307baf99e47eb586f433a808a1cce95ebfa
--- a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/Group.h
+++ b/Trigger/TrigTools/IDScanHitFilter/src/Group.h
@@ -27,7 +27,7 @@
 #include <iomanip>
 
 
-#include "IDScanHitFilter/IdScanSpPoint.h"
+#include "IdScanSpPoint.h"
 
 typedef std::vector<IdScanSpPoint*> hitVec;
 
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/HF_Constants.h b/Trigger/TrigTools/IDScanHitFilter/src/HF_Constants.h
old mode 100755
new mode 100644
similarity index 100%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/HF_Constants.h
rename to Trigger/TrigTools/IDScanHitFilter/src/HF_Constants.h
diff --git a/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.cxx b/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.cxx
index 859bd31c2717aa35be7bec1fca7a8fb7f495d49c..32296e9c71cb803f1342887a6513d4e099cf271a 100755
--- a/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.cxx
+++ b/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -12,6 +12,7 @@
 #include <iostream>
 
 #include "GaudiKernel/MsgStream.h"
+#include "CxxUtils/checker_macros.h"
 
 #include "TrigInDetEvent/TrigVertex.h"
 #include "TrigInDetEvent/TrigSiSpacePoint.h"
@@ -19,9 +20,9 @@
 #include "TrigInDetEvent/TrigInDetTrackCollection.h"
 #include "IRegionSelector/IRoiDescriptor.h"
 
-#include "IDScanHitFilter/IDScanHitFilter.h"
-#include "IDScanHitFilter/IdScanSpPoint.h"
-#include "IDScanHitFilter/Group.h"
+#include "IDScanHitFilter.h"
+#include "IdScanSpPoint.h"
+#include "Group.h"
 
 
 IDScanHitFilter::IDScanHitFilter(const std::string& t, 
@@ -65,10 +66,8 @@ IDScanHitFilter::IDScanHitFilter(const std::string& t,
 
 }
 
-StatusCode IDScanHitFilter::initialize()
+StatusCode IDScanHitFilter::initialize ATLAS_NOT_THREAD_SAFE()
 {
-  StatusCode sc = AthAlgTool::initialize();
-
   m_dPhidRCut = 0.3/m_pTcutInMeV;
 
   ATH_MSG_INFO( "IDScanHitFilter constructed "                        );
@@ -79,10 +78,7 @@ StatusCode IDScanHitFilter::initialize()
   ATH_MSG_INFO( "Clone removal    set to " << m_cloneRemoval    );
   ATH_MSG_INFO( "dphidrcut    set to " << m_dPhidRCut    );
 
-  if (m_numberingTool.retrieve().isFailure()){
-    ATH_MSG_FATAL( "Tool " << m_numberingTool << " not found "  );
-    return StatusCode::FAILURE;
-  } 
+  ATH_CHECK( m_numberingTool.retrieve() );
 
   /// get first endcap layer, so we know how
   /// barrel layers there are 
@@ -109,14 +105,7 @@ StatusCode IDScanHitFilter::initialize()
   //  
   //  m_fullScan = (2*m_ROIphiHalfWidth > 6.28);
 
-  return sc;
-}
-
-
-StatusCode IDScanHitFilter::finalize()
-{
-  StatusCode sc = AthAlgTool::finalize(); 
-  return sc;
+  return StatusCode::SUCCESS;
 }
 
 
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IDScanHitFilter.h b/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.h
old mode 100755
new mode 100644
similarity index 94%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IDScanHitFilter.h
rename to Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.h
index 85fa2e0c6314e2564a6fa68677239a92e30c3adc..765dff11eda9ba71089aeda3aafb6e023b1d5ffb
--- a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IDScanHitFilter.h
+++ b/Trigger/TrigTools/IDScanHitFilter/src/IDScanHitFilter.h
@@ -31,7 +31,7 @@
 
 #include "AthenaBaseComps/AthAlgTool.h"
 
-#include "IDScanHitFilter/iHitFilter.h"
+#include "iHitFilter.h"
 #include "TrigInDetEvent/TrigInDetTrackCollection.h"
 #include "TrigInDetToolInterfaces/ITrigHitFilter.h"
 
@@ -54,9 +54,8 @@ class IDScanHitFilter: public iHitFilter, public AthAlgTool, virtual public ITri
   IDScanHitFilter( const std::string&, const std::string&, const IInterface* );
   virtual ~IDScanHitFilter(){ };
 
-  virtual StatusCode initialize();
-  virtual StatusCode finalize  ();
-  
+  virtual StatusCode initialize() override;
+
   void findTracks( std::vector<const TrigSiSpacePoint* >, 
 		   TrigInDetTrackCollection&, 
 		   const IRoiDescriptor*, double zvertex,
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IdScanSpPoint.h b/Trigger/TrigTools/IDScanHitFilter/src/IdScanSpPoint.h
old mode 100755
new mode 100644
similarity index 95%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IdScanSpPoint.h
rename to Trigger/TrigTools/IDScanHitFilter/src/IdScanSpPoint.h
index f0e96190be4a51a8d48061bf929ca2f5a13e40b8..d9912c2b17d5e32f0b5b963cc7eafd6dd51d1047
--- a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/IdScanSpPoint.h
+++ b/Trigger/TrigTools/IDScanHitFilter/src/IdScanSpPoint.h
@@ -25,7 +25,7 @@
 #include <vector>
 #include <iostream>
 
-#include "IDScanHitFilter/tIdScanSpPoint.h"
+#include "tIdScanSpPoint.h"
 #include "TrigInDetEvent/TrigSiSpacePoint.h"
 
 
diff --git a/Trigger/TrigTools/IDScanHitFilter/src/components/IDScanHitFilter_entries.cxx b/Trigger/TrigTools/IDScanHitFilter/src/components/IDScanHitFilter_entries.cxx
index df0d854f7c96664f0143e20ef90747b83aca6484..170355fa38f0bc80a8f6e8fe30844a72a4c94078 100644
--- a/Trigger/TrigTools/IDScanHitFilter/src/components/IDScanHitFilter_entries.cxx
+++ b/Trigger/TrigTools/IDScanHitFilter/src/components/IDScanHitFilter_entries.cxx
@@ -4,7 +4,7 @@
 // ATLAS Collaboration
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "IDScanHitFilter/IDScanHitFilter.h"
+#include "../IDScanHitFilter.h"
 
 DECLARE_COMPONENT( IDScanHitFilter )
 
diff --git a/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.cxx b/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.cxx
index 3281165eed6fe213a7be6822577c9ec601faad40..8892d4dfc174714bf7d54d16518bd77d3eec0bfd 100755
--- a/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.cxx
+++ b/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.cxx
@@ -10,11 +10,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // IdScan stuff
-#include "IDScanHitFilter/GC_Constants.h"
-#include "IDScanHitFilter/IdScanSpPoint.h"
-#include "IDScanHitFilter/Group.h"
-#include "IDScanHitFilter/FilterBin.h"
-#include "IDScanHitFilter/iHitFilter.h"
+#include "GC_Constants.h"
+#include "IdScanSpPoint.h"
+#include "Group.h"
+#include "FilterBin.h"
+#include "iHitFilter.h"
 
 #include <iostream>
 #include <algorithm>
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/iHitFilter.h b/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.h
old mode 100755
new mode 100644
similarity index 96%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/iHitFilter.h
rename to Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.h
index 1e5515e18df5d64d6f08fd01dda00933cb524369..18c7c969433195d0a2f25ef15c419ba445d68b87
--- a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/iHitFilter.h
+++ b/Trigger/TrigTools/IDScanHitFilter/src/iHitFilter.h
@@ -1,7 +1,7 @@
 // emacs: this is -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -26,11 +26,11 @@
 
 #include <vector>
 
-#include "IDScanHitFilter/HF_Constants.h"
+#include "HF_Constants.h"
 
-#include "IDScanHitFilter/FilterBin.h"
-#include "IDScanHitFilter/Group.h"
-#include "IDScanHitFilter/IdScanSpPoint.h"
+#include "FilterBin.h"
+#include "Group.h"
+#include "IdScanSpPoint.h"
 
 struct groupCleanerParams;
 struct GCP_loose;
diff --git a/Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/tIdScanSpPoint.h b/Trigger/TrigTools/IDScanHitFilter/src/tIdScanSpPoint.h
old mode 100755
new mode 100644
similarity index 100%
rename from Trigger/TrigTools/IDScanHitFilter/IDScanHitFilter/tIdScanSpPoint.h
rename to Trigger/TrigTools/IDScanHitFilter/src/tIdScanSpPoint.h