From 6dca5b39a86d5ab0783b0e9ceac0a741d967bd1a Mon Sep 17 00:00:00 2001
From: Nicholas Styles <nicholas.styles@desy.de>
Date: Thu, 30 Jan 2020 14:49:32 +0100
Subject: [PATCH] move remaining client code to use classes from
 PixelReadoutGeometry, remove duplicates from InDetReadoutGeometry

---
 .../GeoModel/GeoAdaptors/CMakeLists.txt       |   3 +-
 .../GeoAdaptors/GeoAdaptors/GeoSiHit.icc      |   2 +-
 .../PixelDetectorManager.h                    | 195 -----
 .../InDetReadoutGeometry/PixelDiodeMap.h      | 196 -----
 .../InDetReadoutGeometry/PixelDiodeMatrix.h   | 202 ------
 .../InDetReadoutGeometry/PixelModuleDesign.h  | 354 ---------
 .../PixelMultipleConnection1D.h               | 128 ----
 .../InDetReadoutGeometry/PixelReadoutScheme.h | 157 ----
 .../src/PixelDetectorManager.cxx              | 684 ------------------
 .../src/PixelDiodeMap.cxx                     | 297 --------
 .../src/PixelDiodeMatrix.cxx                  | 338 ---------
 .../src/PixelModuleDesign.cxx                 | 245 -------
 .../src/PixelMultipleConnection1D.cxx         | 141 ----
 .../src/PixelReadoutScheme.cxx                | 104 ---
 .../MuonCnv/MuonEventTPCnv/CMakeLists.txt     |   3 +-
 .../MuonCnv/MuonEventTPCnv/test/make_dd.icc   |   2 +-
 .../iPat/iPatTrackFinder/CMakeLists.txt       |   3 +-
 .../iPatTrackFinder/src/FinderTolerances.cxx  |   2 +-
 Tracking/Acts/ActsGeometry/CMakeLists.txt     |   1 +
 .../ActsGeometry/src/ActsAlignmentCondAlg.cxx |   2 +-
 .../ActsGeometry/src/GeomShiftCondAlg.cxx     |   2 +-
 .../FTK_DataProviderSvc/CMakeLists.txt        |   5 +-
 .../src/FTK_DataProviderSvc.cxx               |   2 +-
 Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt   |   5 +-
 .../FTK_RecTools/src/FTK_HashIDTool.cxx       |   2 +-
 .../src/FTK_PixelClusterOnTrackTool.cxx       |   2 +-
 .../TrigFTK_RawDataAlgs/CMakeLists.txt        |   5 +-
 .../src/FTKTrackMakerMT.cxx                   |   2 +-
 .../src/FTK_RDO_MonitorAlgo.cxx               |   2 +-
 .../TrigFTKTrackConverter/CMakeLists.txt      |   3 +-
 .../src/TrigFTKClusterConverterTool.cxx       |   2 +-
 .../src/TrigFTKTrackConverter.cxx             |   2 +-
 .../TrigInDetRecoTools/CMakeLists.txt         |   3 +-
 .../src/TrigL2LayerSetPredictorTool.cxx       |   2 +-
 .../TrigOnlineSpacePointTool/CMakeLists.txt   |   3 +-
 .../src/FastPixelClusterization.h             |   2 +-
 .../src/PixelClusterCacheTool.cxx             |   2 +-
 .../src/TrigL2LayerNumberTool.cxx             |   2 +-
 graphics/GeometryJiveXML/CMakeLists.txt       |   3 +-
 .../GeometryJiveXML/src/GeometryWriter.cxx    |   2 +-
 .../VP12DGeometrySystems/CMakeLists.txt       |   3 +-
 .../src/StoreGateGeometryReader.cxx           |   2 +-
 .../VP1RawDataSystems/CMakeLists.txt          |   3 +-
 .../src/VP1RawDataHandle_PixelRDO.cxx         |   2 +-
 .../VP1Systems/VP1TrackSystems/CMakeLists.txt |   3 +-
 .../src/SimHitHandle_SiHit.cxx                |   2 +-
 graphics/VP1/VP1Utils/CMakeLists.txt          |   3 +-
 graphics/VP1/VP1Utils/src/VP1DetInfo.cxx      |   2 +-
 48 files changed, 53 insertions(+), 3079 deletions(-)
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDetectorManager.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMap.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMatrix.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelModuleDesign.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelMultipleConnection1D.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelReadoutScheme.h
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMap.cxx
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMatrix.cxx
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelModuleDesign.cxx
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelMultipleConnection1D.cxx
 delete mode 100755 InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelReadoutScheme.cxx

diff --git a/DetectorDescription/GeoModel/GeoAdaptors/CMakeLists.txt b/DetectorDescription/GeoModel/GeoAdaptors/CMakeLists.txt
index 476207e339f..4af992852cc 100644
--- a/DetectorDescription/GeoModel/GeoAdaptors/CMakeLists.txt
+++ b/DetectorDescription/GeoModel/GeoAdaptors/CMakeLists.txt
@@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC
 			              DetectorDescription/GeoPrimitives
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetSimEvent
                           LArCalorimeter/LArSimEvent
                           MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry
@@ -31,5 +32,5 @@ atlas_add_library( GeoAdaptors
                    PUBLIC_HEADERS GeoAdaptors
                    INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
                    DEFINITIONS ${CLHEP_DEFINITIONS}
-                   LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloIdentifier CaloSimEvent Identifier InDetIdentifier InDetReadoutGeometry InDetSimEvent LArSimEvent MuonReadoutGeometry MuonPrepRawData MuonSimEvent CaloDetDescrLib StoreGateLib SGtests MuonIdHelpersLib )
+                   LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloIdentifier CaloSimEvent Identifier InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetSimEvent LArSimEvent MuonReadoutGeometry MuonPrepRawData MuonSimEvent CaloDetDescrLib StoreGateLib SGtests MuonIdHelpersLib )
 
diff --git a/DetectorDescription/GeoModel/GeoAdaptors/GeoAdaptors/GeoSiHit.icc b/DetectorDescription/GeoModel/GeoAdaptors/GeoAdaptors/GeoSiHit.icc
index 2a6c9edbdd7..807ecad9de3 100755
--- a/DetectorDescription/GeoModel/GeoAdaptors/GeoAdaptors/GeoSiHit.icc
+++ b/DetectorDescription/GeoModel/GeoAdaptors/GeoAdaptors/GeoSiHit.icc
@@ -5,7 +5,7 @@
 #include "InDetSimEvent/SiHit.h"
 #include "InDetReadoutGeometry/SiDetectorElement.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "StoreGate/StoreGateSvc.h"
 #include "StoreGate/StoreGate.h"
 #include "InDetIdentifier/PixelID.h"
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDetectorManager.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDetectorManager.h
deleted file mode 100755
index 5954b00277d..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDetectorManager.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelDectorManager.h
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef InDetReadoutGeometry_PixelDetectorManager_h
-#define InDetReadoutGeometry_PixelDetectorManager_h 1
-
-#include "GeoPrimitives/GeoPrimitives.h"
-#include "GeoModelKernel/GeoVPhysVol.h"
-
-#include "InDetReadoutGeometry/SiDetectorManager.h"
-#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
-#include "InDetReadoutGeometry/InDetDD_Defs.h"
-
-#include "InDetIdentifier/PixelID.h"
-
-#include <map>
-
-class StoreGateSvc;
-class Identifier; 
-class IdentifierHash;
-class GeoAlignableTransform;
-class GeoVFullPhysVol;
-class GeoVPhysVol;
-class GeoVAlignmentStore;
-class CondAttrListCollection;
-
-namespace InDetDD {
-
-    class PixelModuleDesign;
-    class SiDetectorElement;
-    class ExtendedAlignableTransform;
-    
-    /** @class PixelDetectorManager
-    
-        Dedicated detector manager extending the functionality of the SiDetectorManager
-        with dedicated pixel information, access.
-        
-        @author: Grant Gorfine
-        - modified and maintained by Nick Styles & Andreas Salzburger
-        */
-    
-    class PixelDetectorManager : public SiDetectorManager  {
-    
-     public:
-      
-      /** Constructor */
-      PixelDetectorManager(StoreGateSvc* detStore);
-    
-      /** Destructor */
-      ~PixelDetectorManager();
-    
-      /** Access to raw geometry: */
-      virtual unsigned int getNumTreeTops() const override;
-      virtual PVConstLink getTreeTop(unsigned int i) const override;
-    
-      /** Add a Tree top: */
-      void addTreeTop(PVLink);
-    
-      //
-      // Access Readout Elements
-      //
-      /** access to individual elements : via Identifier */
-      virtual SiDetectorElement * getDetectorElement(const Identifier &id) const override;
-
-      /** access to individual elements : via IdentifierHash */
-      virtual SiDetectorElement * getDetectorElement(const IdentifierHash &idHash) const override;
-
-      /** access to individual elements : via element identification */
-      SiDetectorElement * getDetectorElement(int barrel_endcap,
-                                             int layer_wheel,
-                                             int phi_module, 
-    					                     int eta_module) const;
-
-      /** access to whole collection via Iterators */
-      virtual const SiDetectorElementCollection * getDetectorElementCollection() const override;
-      virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const override;
-      virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const override;
-    
-      /** Add elememts */
-      virtual void addDetectorElement(SiDetectorElement * element) override;
-    
-      /** Add alignable transforms. No access to these, they will be changed by manager: */
-      virtual void addAlignableTransform (int level,
-    				                      const Identifier &id, 
-    				                      GeoAlignableTransform *xf,
-    				                      const GeoVFullPhysVol * child);
-    				                      
-      /** As above but does a dynamic_cast to GeoVFullPhysVol */
-      virtual void addAlignableTransform (int level,
-    				                      const Identifier &id, 
-    				                      GeoAlignableTransform *xf,
-    				                      const GeoVPhysVol * child);
-    
-      // DEPRECATED
-      virtual void addAlignableTransform (int,
-                                          const Identifier &, 
-                                          GeoAlignableTransform *) override {}; // For backward compatibility
-    
-    
-      /** Initialize the neighbours. This can only be done when all elements are built. */
-      virtual void initNeighbours() override;
-        
-      /** Methods to query which manager we have */
-      virtual bool isPixel() const override {return true;}
-    
-      /** Check identifier is for this detector */
-      virtual bool identifierBelongs(const Identifier & id) const override;
-    
-      
-      /** Layers built. Deprecated. Recommend to access via numerology (see SiDetectorManager) 
-          Warning: decodes in "human-readable", e.g. using 3 out of 3 pixel layers yiels 111, the laset two out of 3 in 110, etc.
-         */
-      unsigned int getBarrelLayers() const ;
-
-      /** Layers built. Deprecated. Recommend to access via numerology (see SiDetectorManager) 
-          Warning: decodes in "human-readable", e.g. using 3 out of 3 pixel layers yiels 111, the laset two out of 3 in 110, etc.
-      */
-      unsigned int getEndcapLayers() const;
-    
-      /** Access to module design, Casts to PixelModuleDesign */
-      virtual const PixelModuleDesign * getPixelDesign(int i) const;
-
-      /** Process new IBLDist DB folder **/
-      bool processSpecialAlignment(const std::string &, InDetDD::AlignFolderType) const override;
-
-      bool processSpecialAlignment(const std::string& key,
-                                   const CondAttrListCollection* obj=nullptr,
-                                   GeoVAlignmentStore* alignStore=nullptr) const override;
-
-      /** Process new global DB folders for L1 and L2 **/
-      virtual
-      bool processGlobalAlignment(const std::string &, int level, FrameType frame,
-                                  const CondAttrListCollection* obj,
-                                  GeoVAlignmentStore* alignStore) const override;
-    
-     private:  
-    
-      /** implements the main alignment update for delta transforms in different frames,
-          it translates into the LocalDelta or GlobalDelta function of SiDetectorManager
-      */
-      virtual bool setAlignableTransformDelta(int level, 
-                                              const Identifier & id, 
-                                              const Amg::Transform3D & delta,
-                                              FrameType frame,
-                                              GeoVAlignmentStore* alignStore) const override;
-      
-    
-      /** prevent copy and assignment */
-      const PixelDetectorManager & operator=(const PixelDetectorManager &right);
-      PixelDetectorManager(const PixelDetectorManager &right);
-    
-    
-      virtual const PixelID  * getIdHelper() const override;
-    
-      // data members
-      std::vector<PVLink>                                           m_volume;
-      SiDetectorElementCollection                                   m_elementCollection;
-      typedef std::map<Identifier, ExtendedAlignableTransform *>    AlignableTransformMap;
-      std::vector< AlignableTransformMap >                          m_higherAlignableTransforms;
-      std::vector< ExtendedAlignableTransform *>                    m_alignableTransforms; 
-      const PixelID*                                                m_idHelper;
-
-      // Helpful function for debugging of transforms
-      void printTransform(const Amg::Transform3D & tr) const;
-
-
-      /** This variable switches the how the local alignment corrections are applied
-          If true they will be calcualted on top  of all of other corrections but in the default reference frame
-          If false they will be calcualted  on top  of all of other corrections but in the globally aligned reference frame    
-      */
-      bool                                                          m_isLogical;    
-
-    };
-
-} // namespace InDetDD
-
-#ifndef GAUDI_NEUTRAL
-#include "AthenaKernel/CLASS_DEF.h" 
-CLASS_DEF(InDetDD::PixelDetectorManager, 18429566, 1)
-
-#endif
-
-#endif
-
-
-
-
-
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMap.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMap.h
deleted file mode 100755
index a6da4c18983..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMap.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelDiodeMap.h
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETREADOUTGEOMETRY_PIXELDIODEMAP_H
-#define INDETREADOUTGEOMETRY_PIXELDIODEMAP_H
-
-// STL classes
-#include <list>
-#include <memory>
-#include <vector>
-
-// Data member classes
-#include "PixelReadoutGeometry/PixelDiodeMatrix.h"
-
-// Input/output classes
-#include "InDetReadoutGeometry/SiCellId.h"
-#include "InDetReadoutGeometry/SiDiodesParameters.h"
-
-namespace InDetDD {
-
-class SiCellId;
-class PixelDiodeMatrix;
-
-     /** @class PixelDiodeMap
-     
-        Class used to describe the diode segmentation of a pixel module
-        - to get the position and size of a PixelDiode object
-        - to get a PixelDiode object containing a space point
-        - to get a PixelDiode object from a PixelModulePosition
-
-        @author: David Calvet
-        - modified Davide Costanzo. Replace PixelModulePosition with SiCellId
-        - modified: Grant Gorfine, Andreas Salzburger
-        */
-
-    class PixelDiodeMap {
-      
-        public:
-        
-          /** Constructor from Diode matrix description */
-          PixelDiodeMap(std::shared_ptr<const PixelDiodeMatrix> diodeMatrix);
-          
-          /** Copy constructor: */
-          PixelDiodeMap(const PixelDiodeMap &map);
-          
-          /** Destructor */
-          ~PixelDiodeMap();
-          
-          /** Assignment operator */
-          PixelDiodeMap &operator=(const PixelDiodeMap &map);
-          
-          ///////////////////////////////////////////////////////////////////
-          // Const methods:
-          ///////////////////////////////////////////////////////////////////
-        
-          /** Get diodes parameters (position and size): */
-          SiDiodesParameters parameters(const SiCellId & diodeId) const;
-        
-          /** cell id for a given local position */
-          SiCellId cellIdOfPosition(const Amg::Vector2D & localPosition) const;
-        
-          /** Check if cellId is within range */
-          SiCellId cellIdInRange(const SiCellId & cellId) const;
-        
-          /** Get the neighbouring PixelDiodes of a given PixelDiode:
-             Cell for which the neighbours must be found
-             List of cells which are neighbours of the given one */
-          void neighboursOfCell(const SiCellId & cellId,
-        			std::vector<SiCellId> &neighbours) const;
-        
-          /** Compute the intersection length of two diodes:
-              return: the intersection length when the two diodes are projected on one
-              of the two axis, or 0 in case of no intersection or problem
-              nput: the two diodes for which the intersection length is computed */
-          double intersectionLength(const SiCellId &diode1, const SiCellId &diode2) const;
-        
-          // Global sensor size:
-          double leftColumn() const;
-          double rightColumn() const;
-          double leftRow() const;
-          double rightRow() const;
-          
-          double width() const;
-          double length() const;
-        
-          // Number of cells in each direction.
-          int phiDiodes() const;
-          int etaDiodes() const;
-        
-          // Total number of diodes:
-          int diodes() const;
-        
-          ///////////////////////////////////////////////////////////////////
-          // Non-const methods:
-          ///////////////////////////////////////////////////////////////////
-          /** Set general layout flag. This can be set to true to allow handling
-              of more complex layouts where cells are not lined up with each other 
-              such as bricking. Probably never will be needed.  */
-          void setGeneralLayout() {m_generalLayout = true;}
-        
-          ///////////////////////////////////////////////////////////////////
-          // Private methods:
-          ///////////////////////////////////////////////////////////////////
-        private:
-        
-          /** Compute the intersection length along one direction:
-               return 0 if no intersection
-               x1,x2 are the centers
-               dx1,dx2 are the full lengths */
-          double intersectionLength1D(const double x1,const double dx1,
-        			      const double x2,const double dx2) const;
-          
-          /** Slower method. Called by neighboursOfCell if m_generalLayout set. */
-          void neighboursOfCellGeneral(const SiCellId & cellId,
-        			                   std::vector<SiCellId> &neighbours) const;
-            
-          /** Slower method. Called by intersectionLength if m_generalLayout set. */
-          double intersectionLengthGeneral(const SiCellId &diode1,
-        				   const SiCellId &diode2) const;
-            
-        
-          ///////////////////////////////////////////////////////////////////
-          // Private data:
-          ///////////////////////////////////////////////////////////////////
-        private:
-          std::shared_ptr<const PixelDiodeMatrix> m_matrix;    //!< diode matrix
-          bool m_generalLayout;                 //!< Flag set to allow for dealing wth more general layouts.
-    };
-    
-    ///////////////////////////////////////////////////////////////////
-    // Inline methods:
-    ///////////////////////////////////////////////////////////////////
-    
-    inline double PixelDiodeMap::length() const
-    {
-      return m_matrix->etaWidth();
-    }
-    
-    inline double PixelDiodeMap::width() const
-    {
-      return m_matrix->phiWidth();  
-    }
-    
-    inline double PixelDiodeMap::leftColumn() const
-    {
-      return -0.5*length();
-    }
-    
-    inline double PixelDiodeMap::rightColumn() const
-    {
-      return 0.5*length();  
-    }
-    
-    inline double PixelDiodeMap::leftRow() const
-    {
-      return -0.5*width();
-    }
-    
-    inline double PixelDiodeMap::rightRow() const
-    {
-      return 0.5*width();
-    }
-    
-    inline int PixelDiodeMap::diodes() const
-    {
-      return phiDiodes() * etaDiodes();
-    }
-    
-    inline int PixelDiodeMap::phiDiodes() const
-    {
-      return m_matrix->phiCells();
-    }
-    
-    inline int PixelDiodeMap::etaDiodes() const
-    {
-      return m_matrix->etaCells();
-    }
-    
-    inline SiCellId PixelDiodeMap::cellIdInRange(const SiCellId & cellId) const
-    {
-      if (!cellId.isValid() || 
-          cellId.phiIndex() <0 || cellId.phiIndex() >= phiDiodes() ||
-          cellId.etaIndex() <0 || cellId.etaIndex() >= etaDiodes()) return SiCellId(); // Invalid
-      return cellId; 
-    }
-
-} // namespace InDetDD
-
-#endif // INDETREADOUTGEOMETRY_PIXELDIODEMAP_H
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMatrix.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMatrix.h
deleted file mode 100755
index 53ec66cc27b..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelDiodeMatrix.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelDiodeMatrix.h
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETREADOUTGEOMETRY_PIXELDIODEMATRIX_H
-#define INDETREADOUTGEOMETRY_PIXELDIODEMATRIX_H
-
-#include "InDetReadoutGeometry/SiCellId.h"
-#include "GeoPrimitives/GeoPrimitives.h"
-#include "TrkDetElementBase/TrkDetElementBase.h"
-
-#include <memory>
-
-namespace InDetDD {
-
-   /** @class PixelDiodeMatrix
-   
-    Class  used to describe the segmentation of the pixel and allow for conversion between cell id and position.
-     
-    The class PixelDiodeMatrix represents what it calls a cell. In the context
-    of this class a cell can either be just a simple cell as one would normally
-    think of a pixel cell (eg a 50x400um or 50x600um cell) or it can be a
-    container of multiple cells. To allow for different size cells and layout,
-    it contains a lower cell, an upper cell and multiple middle
-    cells. The middle cells are all the same (so all have the same size), but
-    the upper and lower cells can be different and can have different size or be left out
-    if they are not needed. The direction of replication is also specified (eta
-    or phi direction). The size of the cells in the direction orthoganal to the
-    replication direction must all be the same (there is no check for this though).
-    
-    To help understand the structure and its use, consider the current pixel
-    geometry. The pixel module has two cell sizes short and long cells. These
-    are refered to as normal and big bellow.  The long cells are in the region
-    at the edge of the the FE chips in order to cover the gap between FE chips.
-    
-    The assembly of this structure is done when building the sensitive detector
-    in GeoModel in the class GeoPixelSiCrystal.
-    
-     - normalCell (short pixel cell) 50x400um
-     - bigCell    (long pixel cell): 50x600um 
-    
-     - singleChipRow (represents one row associated to a FE)
-       - Size: phiWidth = 50um, etaWidth = 600*2+400*16) um = 7.6 CLHEP::mm 
-       - upper cell: bigCell
-       - middle cells: 16 x normalCell
-       - lower cell: bigcell
-       - direction: eta
-     
-     - singleRow (represents a row of cells covering the full length of the 
-       module)
-       - Size: phiWidth = 50um, etaWidth = 8 * (600*2+400*16) um = 60.8 CLHEP::mm
-       - upper cell: none
-       - middle cells: 8 x singleChipRow
-       - lower cell: none
-       - direction: eta
-    
-     - fullMatrix (represents the full module)
-       - Size: phiWidth = 50 * 328 um = 16.4 CLHEP::mm, etaWidth = 60.8 CLHEP::mm
-       - upper cell: none
-       - middle cells: 328 x singleRow
-       - lower cell: non
-       - direction: phi
-    
-    Each cell knows its total size and total number of child cells in the phi and eta
-    direction. This is determined by totaling up these quantities
-    when the object is constructed.
-    
-    The structure allows for efficient navigation from cell number to 
-    position and vice-versa. There are two main methods which allow for this navigation:
-    cellIdOfPosition() (from cell id to position) and positionOfCell() (from position to cell id).
-    
-    As it is assumed that child cells fill up completely its parent, there is
-    no range check in these methods. The methods are called from PixelDiodeMap
-    where it first checks that is within range of the top level cell (refered to
-    as the top level matrix).
-
-    PixelDiodeMatrix might inherit std::shared_ptr but needs to return std::shared_ptr of this pointer.
-    To do this, std::enable_shared_from_this and shared_from_this() have to be used.
-    https://en.cppreference.com/w/cpp/memory/enable_shared_from_this
-    
-    See the description of these methods for more details.
-    
-    @image html pixeldiodematrix.gif
-
-    @author Grant Gorfine
-    - modified & maintained: Nick Styles, Andreas Salzburger
-    **/
-    
-    class PixelDiodeMatrix : public std::enable_shared_from_this<PixelDiodeMatrix> {
-      
-    public:
-      
-      enum Direction {phiDir, etaDir};
-      
-      /// Destructor
-      ~PixelDiodeMatrix() = default;
-      
-      /// Construct method for just a single cell.
-      static std::shared_ptr<const PixelDiodeMatrix> construct(double phiWidth, double etaWidth);
-
-      /** Construct method with multiple matrices.
-          There may be zero or one lower matrix (pointer can be 0).
-          Multiple (numCells) middle matrics (must pass a non zero pointer).
-          There may be zero or one upper matrix (pointer can be 0).
-          These must all have the same width and cells in the non replicating direction. */
-      static std::shared_ptr<const PixelDiodeMatrix> construct(Direction direction,  // phi or eta
-                                                               std::shared_ptr<const PixelDiodeMatrix> lowerCell,
-                                                               std::shared_ptr<const PixelDiodeMatrix> middleCells,
-                                                               int numCells,
-                                                               std::shared_ptr<const PixelDiodeMatrix> upperCells);
-
-      /** Return cell Id corresponding to a relative position within the matrix.
-          The cellId is modified and returns the id relative to the passed cellId.
-          That is, it adds the relative cellId to the cellId passed to the function. 
-          A pointer to the correspond cell is returned. This can be used to get the
-          size of the cell. */
-      std::shared_ptr<const PixelDiodeMatrix> cellIdOfPosition(const Amg::Vector2D & position, SiCellId & cellId) const;
-      
-      /** Return position correspong to cell with relative id withing the matrix.
-          Returns the relative position added to the position passed in.
-          A pointer to the correspond cell is returned. This can be used to get the
-          size of the cell. */
-      std::shared_ptr<const PixelDiodeMatrix> positionOfCell(const SiCellId & cellId, Amg::Vector2D & position) const;
-      
-      /** Width in phi (x) direction.*/
-      double phiWidth() const;
-      
-      /** Width in eta (y) direction. */
-      double etaWidth() const;
-      
-      /** Number of cells in phi (x) direction. */
-      int phiCells() const;
-      
-      /** Number of cells in eta (y) direction. */
-      int etaCells() const;
-      
-      /** Query wether the matrix is just a single cell. Mainly for internal use. */
-      bool singleCell() const;
-      
-    private:
-      /** Hidden constructor */
-      PixelDiodeMatrix() {};
-
-      /// Initialize for just a single cell.
-      void initialize(double phiWidth, double etaWidth);
-      
-      /** Initialize for multiple matrices.
-          There may be zero or one lower matrix (pointer can be 0).
-          Multiple (numCells) middle matrics (must pass a non zero pointer).
-          There may be zero or one upper matrix (pointer can be 0).
-          These must all have the same width and cells in the non replicating direction. */
-      void initialize(Direction direction,  // phi or eta
-                      std::shared_ptr<const PixelDiodeMatrix> lowerCell,
-                      std::shared_ptr<const PixelDiodeMatrix> middleCells,
-                      int numCells,
-                      std::shared_ptr<const PixelDiodeMatrix> upperCells);
-
-      double        m_phiWidth;
-      double        m_etaWidth;
-      int           m_phiCells;    
-      int           m_etaCells;
-      Direction     m_direction;
-      int m_numCells; // number of MiddleCells along m_direction direction.
-      std::shared_ptr<const PixelDiodeMatrix> m_lowerCell;
-      std::shared_ptr<const PixelDiodeMatrix> m_middleCells;
-      std::shared_ptr<const PixelDiodeMatrix> m_upperCell;
-      bool m_singleCell;
-    
-    };
-    
-    inline double PixelDiodeMatrix::phiWidth() const
-    { 
-      return m_phiWidth;
-    }
-    
-    inline double PixelDiodeMatrix::etaWidth() const
-    { 
-      return m_etaWidth;
-    }
-    
-    inline int PixelDiodeMatrix::phiCells() const
-    { 
-      return m_phiCells;
-    }
-    
-    inline int PixelDiodeMatrix::etaCells() const
-    { 
-      return m_etaCells;
-    }
-    
-    inline bool PixelDiodeMatrix::singleCell() const
-    {
-      return m_singleCell;
-    }
-
-} // end namespace
-
-#endif //INDETREADOUTGEOMETRY_PIXELDIODEMATRIX_H
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelModuleDesign.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelModuleDesign.h
deleted file mode 100755
index 400f00af8ae..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelModuleDesign.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelModuleDesign.h
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-
-
-#ifndef INDETREADOUTGEOMETRY_PIXELMODULEDESIGN_H
-#define INDETREADOUTGEOMETRY_PIXELMODULEDESIGN_H
-
-// Base class
-#include "InDetReadoutGeometry/SiDetectorDesign.h"
-
-// Data member classes
-#include "PixelReadoutGeometry/PixelDiodeMap.h"
-#include "PixelReadoutGeometry/PixelReadoutScheme.h"
-
-// Other includes
-#include "CxxUtils/CachedUniquePtr.h"
-#include "InDetIdentifier/PixelID.h"
-
-#include <memory>
-
-namespace Trk{
- class RectangleBounds;
- class SurfaceBounds;
-}
-
-namespace InDetDD {
-
-    class PixelDiodeMatrix;
-    
-    /** @class PixelModuleDesign
-     Class used to describe the design of a module
-      (diode segmentation and readout scheme)
-      
-      - to get the PixelReadoutCell connected to a PixelDiode
-      - to get the list of PixelDiodes connected to a PixelReadoutCell
-      
-      @author Alessandro Fornaini
-      - modified: Grant Gorfine, Nick Styles, Andreas Salzburger
-    */
-    class PixelModuleDesign : public SiDetectorDesign {
-      
-      ///////////////////////////////////////////////////////////////////
-      // Public methods:
-      ///////////////////////////////////////////////////////////////////
-    public:
-    
-      ///////////////////////////////////////////////////////////////////
-      // Constructors/destructor:
-      ///////////////////////////////////////////////////////////////////
-      
-      /** Constructor with parameters:
-           local axis corresponding to eta direction
-           local axis corresponding to phi direction
-           local axis corresponding to depth direction
-           thickness of silicon sensor
-           number of circuits in one circuit column
-           number of circuits in one circuit row
-           number of cell columns per circuit
-           number of cell rows per circuit
-           number of diode columns connected to one circuit
-           number of diode rows connected to one circuit */
-      
-      PixelModuleDesign(const double thickness,
-			const int circuitsPerColumn,
-			const int circuitsPerRow,
-			const int cellColumnsPerCircuit,
-			const int cellRowsPerCircuit,
-			const int diodeColumnsPerCircuit,
-			const int diodeRowsPerCircuit,
-			std::shared_ptr<const PixelDiodeMatrix> matrix,
-			InDetDD::CarrierType carrierType,
-			int readoutSide = -1,
-			bool is3D=false);
-    
-      // Destructor:
-      virtual ~PixelModuleDesign() = default;
-      
-      ///////////////////////////////////////////////////////////////////
-      // Const methods:
-      ///////////////////////////////////////////////////////////////////
-    
-      /** Returns distance to nearest detector active edge 
-       +ve = inside
-       -ve = outside */
-      virtual void distanceToDetectorEdge(const SiLocalPosition & localPosition, 
-    				      double & etaDist, double & phiDist) const;
-    
-      /** readout or diode id -> position, size */
-      virtual SiDiodesParameters parameters(const SiCellId & cellId) const;
-      virtual SiLocalPosition localPositionOfCell(const SiCellId & cellId) const;
-    
-      /** readout id -> id of connected diodes */
-      virtual int numberOfConnectedCells(const SiReadoutCellId & readoutId) const;
-      virtual SiCellId connectedCell(const SiReadoutCellId & readoutId, int number) const;
-    
-      /** If cell is ganged return the other cell, otherwise return an invalid id. */
-      virtual SiCellId gangedCell(const SiCellId & cellId) const;
-    
-      /** diode id -> readout id */
-      virtual SiReadoutCellId readoutIdOfCell(const SiCellId & cellId) const;
-    
-      /** position -> id */
-      virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition & localPos) const;
-      virtual SiCellId cellIdOfPosition(const SiLocalPosition & localPos) const;
-    
-      /** Check if cell is in range. Returns the original cellId if it is in range, otherwise it returns an invalid id. */
-      virtual SiCellId cellIdInRange(const SiCellId & cellId) const;
-    
-      /** Helper method for stereo angle computation */
-      virtual HepGeom::Vector3D<double> phiMeasureSegment(const SiLocalPosition&) const;
-    
-      /** Special method for SCT (irrelevant here): */
-      virtual std::pair<SiLocalPosition,SiLocalPosition> endsOfStrip(const SiLocalPosition &position) const;
-    
-      /** Given row and column index of a diode, return position of diode center
-         ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId & cellId) or 
-         rawLocalPositionOfCell method in SiDetectorElement.
-         DEPRECATED */
-       SiLocalPosition positionFromColumnRow(const int column, const int row) const;
-      
-      /** Get the neighbouring diodes of a given diode:
-          Cell for which the neighbours must be found
-          List of cells which are neighbours of the given one */
-      virtual void neighboursOfCell(const SiCellId & cellId,
-    				std::vector<SiCellId> &neighbours) const;
-        
-      /** Compute the intersection length of two diodes:
-          return: the intersection length when the two diodes are projected on one
-           of the two axis, or 0 in case of no intersection or problem
-          input: the two diodes for which the intersection length is computed */
-      double intersectionLength(const SiCellId &diode1, const SiCellId &diode2) const;
-    
-      /** Global sensor size: */
-      double sensorLeftColumn() const;
-      double sensorRightColumn() const;
-      double sensorLeftRow() const;
-      double sensorRightRow() const;
-    
-      /** Total number of diodes: */
-      int numberOfDiodes() const;
-    
-      /** Total number of circuits:*/
-      int numberOfCircuits() const;
-    
-      /** Number of cell columns per circuit:*/
-      int columnsPerCircuit() const;
-    
-      /** Number of cell rows per circuit:*/
-      int rowsPerCircuit() const;
-    
-      /** Number of cell columns per module:*/
-      int columns() const;
-    
-      /** Number of cell rows per module:*/
-      int rows() const;
-    
-      /** Method to calculate length of a module*/
-      virtual double length() const;
-     
-      /** Method to calculate average width of a module*/
-      virtual double width() const;
-     
-      /** Method to calculate minimum width of a module*/
-      virtual double minWidth() const;
-     
-      /** Method to calculate maximum width of a module*/
-      virtual double maxWidth() const;
-    
-      /** Pitch in phi direction*/
-      virtual double phiPitch() const;
-    
-      /** Pitch in phi direction*/
-      virtual double phiPitch(const SiLocalPosition & localPosition) const;
-    
-      /** Pitch in eta direction*/
-      virtual double etaPitch() const;
-    
-      /** Method to calculate eta width from a column range*/
-      double widthFromColumnRange(const int colMin, const int colMax) const;
-    
-      /** Method to calculate phi width from a row range*/
-      double widthFromRowRange(const int rowMin, const int rowMax) const;
-    
-      /** Test if near bond gap within tolerances
-         Only relevant for SCT. Always returns false for pixels.*/
-      virtual bool nearBondGap(const SiLocalPosition & localPosition, double etaTol) const;
-    
-      /** Return true if hit local direction is the same as readout direction.*/
-      virtual bool swapHitPhiReadoutDirection() const;
-      virtual bool swapHitEtaReadoutDirection() const;
-    
-      /** Element boundary*/
-      virtual const Trk::SurfaceBounds & bounds() const; 
-    
-      virtual bool is3D() const;
-     
-      enum ReadoutTechnology{FEI3,FEI4,RD53};
-      ReadoutTechnology getReadoutTechnology() const;
-
-
-      ///////////////////////////////////////////////////////////////////
-      // Non-const methods:
-      ///////////////////////////////////////////////////////////////////
-    
-    
-      /** Add a new multiple connection for rows:
-         lower diode row for which the connection scheme is given
-         vector containing, for each diode, the readout cell row number 
-         to which the corresponding diode is connected */
-      void addMultipleRowConnection(const int lowerRow,
-    				const std::vector<int> &connections);
-    
-      /** Indicate that it is a more complex layout where cells are not 
-         lined up with each other. Eg bricking. Probably never will be needed. */
-      void setGeneralLayout();
-    
-      ///////////////////////////////////////////////////////////////////
-      // Private methods:
-      ///////////////////////////////////////////////////////////////////
-    private:
-    
-      PixelModuleDesign();
-    
-      // Copy constructor:
-      PixelModuleDesign(const PixelModuleDesign &design);
-      
-      // Assignment operator:
-      PixelModuleDesign &operator=(const PixelModuleDesign &design);
-     
-      
-      ///////////////////////////////////////////////////////////////////
-      // Private data:
-      ///////////////////////////////////////////////////////////////////
-    private:
-      PixelDiodeMap m_diodeMap;
-      PixelReadoutScheme m_readoutScheme;
-      CxxUtils::CachedUniquePtr<Trk::RectangleBounds> m_bounds;
-      bool m_is3D;
-    
-    };
-    
-    ///////////////////////////////////////////////////////////////////
-    // Inline methods:
-    ///////////////////////////////////////////////////////////////////
-    
-    inline void PixelModuleDesign::addMultipleRowConnection(const int lowerRow,
-    							const std::vector<int> &connections)
-    {
-      m_readoutScheme.addMultipleRowConnection(lowerRow,connections);
-    }
-    
-    inline double PixelModuleDesign::sensorLeftColumn() const
-    {
-      return m_diodeMap.leftColumn();
-    }
-    
-    inline double PixelModuleDesign::sensorRightColumn() const
-    {
-      return m_diodeMap.rightColumn();
-    }
-    
-    inline double PixelModuleDesign::sensorLeftRow() const
-    {
-      return m_diodeMap.leftRow();
-    }
-    
-    inline double PixelModuleDesign::sensorRightRow() const
-    {
-      return m_diodeMap.rightRow();
-    }
-    
-    inline int PixelModuleDesign::numberOfDiodes() const
-    {
-      return m_diodeMap.diodes();
-    }
-    
-    inline int PixelModuleDesign::numberOfCircuits() const
-    {
-      return m_readoutScheme.numberOfCircuits();
-    }
-    
-    inline int PixelModuleDesign::columnsPerCircuit() const
-    {
-      return m_readoutScheme.columnsPerCircuit();
-    }
-    
-    inline int PixelModuleDesign::rowsPerCircuit() const
-    {
-      return m_readoutScheme.rowsPerCircuit();
-    }
-    
-    inline int PixelModuleDesign::columns() const
-    {
-      return m_readoutScheme.columns();
-    }
-    
-    inline int PixelModuleDesign::rows() const
-    {
-      return m_readoutScheme.rows();
-    }
-    
-    inline bool PixelModuleDesign::nearBondGap(const SiLocalPosition &, double) const
-    {
-      // No bond gap in pixel module
-      return false;
-    }
-    
-    inline bool PixelModuleDesign::swapHitPhiReadoutDirection() const
-    {
-      return true;
-    }
-    
-    inline bool PixelModuleDesign::swapHitEtaReadoutDirection() const
-    {
-      return true;
-    }
-    
-    
-    inline void PixelModuleDesign::neighboursOfCell(const SiCellId & cellId,
-    						std::vector<SiCellId> &neighbours) const
-    {
-      return m_diodeMap.neighboursOfCell(cellId, neighbours);
-    }
-    
-    inline double PixelModuleDesign::intersectionLength(const SiCellId &diode1,
-    						    const SiCellId &diode2) const
-    {
-      return m_diodeMap.intersectionLength(diode1, diode2);
-    }  
-
-
-    
-    inline bool PixelModuleDesign::is3D() const 
-    { 
-      return m_is3D; 
-    } 
-
-    inline PixelModuleDesign::ReadoutTechnology PixelModuleDesign::getReadoutTechnology() const {
-      const int maxRow = m_readoutScheme.rowsPerCircuit();
-      const int maxCol = m_readoutScheme.columnsPerCircuit();
-      if (maxRow*maxCol>26000) { return FEI4; }
-      else                     { return FEI3; }
-    }
-
-} // namespace InDetDD
-
-#endif // INDETREADOUTGEOMETRY_PIXELMODULEDESIGN_H
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelMultipleConnection1D.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelMultipleConnection1D.h
deleted file mode 100755
index 1e605eaceee..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelMultipleConnection1D.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelMultipleConnection1D.h
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-
-
-#ifndef INDETREADOUTGEOMETRY_PIXELMULTIPLECONNECTION1D_H
-#define INDETREADOUTGEOMETRY_PIXELMULTIPLECONNECTION1D_H
-
-#include <vector>
-
-namespace InDetDD {
-
-    /** @class PixelMultipleConnection1D
-
-         Class used to handle connection of multiple diodes to the same readout cell
-
-         @author: David Calvet
-         @note: modifed by Grant Gorfine, Andreas Salzburger
-      */
-
-    class PixelMultipleConnection1D {
-  
-      ///////////////////////////////////////////////////////////////////
-      // Public methods:
-      ///////////////////////////////////////////////////////////////////
-      public:
-
-        PixelMultipleConnection1D();
-
-      /** Constructor with parameters:
-          lower diode index for which the connection scheme is given
-          vector containing, for each diode, the readout cell number to which
-          the corresponding diode is connected */
-        PixelMultipleConnection1D(const int lowerIndex, const std::vector<int> &connections);
-
-
-        void set(const int lowerIndex, const std::vector<int> &connections);
- 
-  
-        ///////////////////////////////////////////////////////////////////
-        // Const methods:
-        ///////////////////////////////////////////////////////////////////
-
-        /** Check if the readout cell is in the range; Also for index of gangedCell. */
-        bool outsideReadout(const int index) const;
-
-        /** Check if the diode is in the range: */
-        bool outsideDiode(const int cell) const;
-
-        /** Return the number of diodes that are connected to this readout cell, Must check outsideReadout first. */
-        int numberOfConnectedCells(const int index) const;
-
-        /** Return the diode index corresponding the this readout. 
-            number 0 will return the primary cell (ie diode index = readout cell index)
-            Must check outsideReadout first.*/
-        int connectedCell(const int index, unsigned int number) const;
-
-        /** Return readout cell id of this diode, Must check outsideDiode first. */
-        int readoutOfDiode(const int index) const;
-
-        /** If the diode is gnaged return the other diode. If the diode is not ganged return the same diode.
-            Must check outsideReadout first. */
-        int gangedCell(const int index) const;
-  
-        ///////////////////////////////////////////////////////////////////
-        // Private data:
-        ///////////////////////////////////////////////////////////////////
-      private:
-        int m_lowerDiode;              //!< lower diode index to which it applies
-        int m_upperDiode;              //!< upper diode index to which it applies
-        int m_lowerReadout;            //!< lower cell to which it applies
-        int m_upperReadout;            //!< upper cell to which it applies
-        std::vector< std::vector<int> > m_readoutToDiode;  //!< connection table readout -> diodes
-        std::vector<int> m_diodeToReadout;            //!< connection table diode -> readout
-        std::vector<int> m_diodeGanged;              //!< connection table diode -> other diode.
-
-        ///////////////////////////////////////////////////////////////////
-        // Private methods:
-        ///////////////////////////////////////////////////////////////////
-        void debugPrintout();
-
-};
-
-///////////////////////////////////////////////////////////////////
-// Inline methods:
-///////////////////////////////////////////////////////////////////
-
-inline bool PixelMultipleConnection1D::outsideReadout(const int readout) const
-{
-  return (readout<m_lowerReadout || readout>m_upperReadout);
-}
-
-
-inline bool PixelMultipleConnection1D::outsideDiode(const int diode) const
-{
-  return (diode<m_lowerDiode || diode>m_upperDiode);
-}
-
-
-inline int PixelMultipleConnection1D::numberOfConnectedCells(const int index) const
-{
-  return m_readoutToDiode[index - m_lowerReadout].size();
-}
-
-inline int  PixelMultipleConnection1D::connectedCell(const int index, unsigned int number) const
-{
-  return m_readoutToDiode[index - m_lowerReadout][number];
-}
-
-inline int PixelMultipleConnection1D::readoutOfDiode(const int index) const
-{
-  return m_diodeToReadout[index - m_lowerDiode];
-}
-
-inline int PixelMultipleConnection1D::gangedCell(const int index) const
-{
-  return m_diodeGanged[index - m_lowerReadout];
-}
-
-} // namespace InDetDD
-
-#endif // INDETREADOUTGEOMETRY_PIXELMULTIPLECONNECTION1D_H
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelReadoutScheme.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelReadoutScheme.h
deleted file mode 100755
index ad377034ed7..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/PixelReadoutScheme.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelReadoutScheme.h
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-
-#ifndef INDETREADOUTGEOMETRY_PIXELREADOUTSCHEME_H
-#define INDETREADOUTGEOMETRY_PIXELREADOUTSCHEME_H
-
-// Data member classes
-#include "PixelReadoutGeometry/PixelMultipleConnection1D.h"
-
-// Input and output classes
-#include "InDetReadoutGeometry/SiReadoutCellId.h"
-#include "InDetReadoutGeometry/SiCellId.h"
-
-namespace InDetDD {
-
-  /** @class PixelReadoutScheme
-
-      Class used to describe the connection scheme of a diode matrix
-      to a set of readout circuits
-      - to get the readout cell connected to a diode
-      - to get the list of diodes connected to a readout cell
-
-      @author David Calvet
-      - modified on 5/10/04 Davide Costanzo. Replace PixelModulePosition with SiCellId
-      - modified: Grant Gorfine, Andreas Salzburger
-    */
-
-  class PixelReadoutScheme {
-  
-     ///////////////////////////////////////////////////////////////////
-     // Public methods:
-     ///////////////////////////////////////////////////////////////////
-    public:
-
-      ///////////////////////////////////////////////////////////////////
-      // Constructors/destructor:
-      ///////////////////////////////////////////////////////////////////
-  
-      /** Constructor with parameters:
-       
-         number of circuits in one circuit column
-         number of circuits in one circuit row
-         number of cell columns per circuit
-         number of cell rows per circuit
-         number of diode columns connected to one circuit
-         number of diode rows connected to one circuit */
-         PixelReadoutScheme(const int circuitsPerColumn,const int circuitsPerRow,
-                            const int cellColumnsPerCircuit,
-                            const int cellRowsPerCircuit,
-                            const int diodeColumnsPerCircuit,
-                            const int diodeRowsPerCircuit);
-  
-        /** Destructor: */
-         ~PixelReadoutScheme();
-  
-       ///////////////////////////////////////////////////////////////////
-       // Const methods:
-       ///////////////////////////////////////////////////////////////////
-
-        /** total number of circuits: */
-        int numberOfCircuits() const;
-
-        /** number of cell columns per circuit: */
-        int columnsPerCircuit() const;
-
-        /** number of cell rows per circuit:*/
-        int rowsPerCircuit() const;
-
-        /** number of cell columns per module:*/
-        int columns() const;
-
-        /** number of cell rows per module:*/
-        int rows() const;
-
-        /** number of cells connected to this readout.*/
-        int numberOfConnectedCells(const SiReadoutCellId & readoutId) const;
-
-        /** Cell ids of cell connected to this readout.*/
-        SiCellId connectedCell(const SiReadoutCellId & readoutId, unsigned int number) const;
-
-        /** Readout id of this diode.*/
-        SiReadoutCellId readoutIdOfCell(const SiCellId & cellId) const;
-
-        /** If cell is ganged return the other cell, otherwise return an invalid id.*/
-       SiCellId gangedCell(const SiCellId & cellId) const;
-
-     ///////////////////////////////////////////////////////////////////
-     // Non-const methods:
-     ///////////////////////////////////////////////////////////////////
-
-      /** Add a new multiple connection for rows:
-          lower diode row for which the connection scheme is given
-          vector containing, for each diode, the readout cell row number 
-           to which the corresponding diode is connected */
-      void addMultipleRowConnection(const int lowerRow, const std::vector<int> &connections);
-
-     ///////////////////////////////////////////////////////////////////
-     // Private methods:
-     ///////////////////////////////////////////////////////////////////
-    private:
-
-      PixelReadoutScheme();
-  
-     ///////////////////////////////////////////////////////////////////
-     // Private data:
-     ///////////////////////////////////////////////////////////////////
-   private:
-     PixelMultipleConnection1D m_rowConnections; //!< multiple connections for rows
-     int m_numberOfCircuits; //!< total number of circuits
-     int m_columnsPerCircuit; //!< number of cell columns per circuit
-     int m_rowsPerCircuit; //!< number of cell rows per circuit
-     int m_columns; //!< Number of columns
-     int m_rows; //!< Number of rows
-
-};
-
-///////////////////////////////////////////////////////////////////
-// Inline methods:
-///////////////////////////////////////////////////////////////////
-inline PixelReadoutScheme::~PixelReadoutScheme()
-{}
-
-inline int PixelReadoutScheme::numberOfCircuits() const
-{
-  return m_numberOfCircuits;
-}
-
-inline int PixelReadoutScheme::columnsPerCircuit() const
-{
-  return m_columnsPerCircuit;
-}
-
-inline int PixelReadoutScheme::rowsPerCircuit() const 
-{
-  return m_rowsPerCircuit;
-}
-
-inline int PixelReadoutScheme::columns() const
-{
-  return m_columns;
-}
-
-inline int PixelReadoutScheme::rows() const 
-{
-  return m_rows;
-}
-
-} // namespace InDetDD
-
-#endif // INDETREADOUTGEOMETRY_PIXELREADOUTSCHEME_H
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx
deleted file mode 100755
index b6152e76bd0..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "DetDescrConditions/AlignableTransformContainer.h"
-#include "DetDescrConditions/AlignableTransform.h"
-#include "AthenaPoolUtilities/CondAttrListCollection.h"
-
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
-#include "InDetIdentifier/PixelID.h"
-#include "Identifier/Identifier.h"
-#include "Identifier/IdentifierHash.h"
-#include "InDetReadoutGeometry/SiDetectorElementCollection.h"
-#include "InDetReadoutGeometry/SiDetectorElement.h"
-#include "InDetReadoutGeometry/ExtendedAlignableTransform.h"
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
-#include "StoreGate/StoreGateSvc.h"
-
-#include "GeoModelKernel/GeoVAlignmentStore.h"
-#include "AthenaBaseComps/AthMsgStreamMacros.h"
-#include "GeoPrimitives/GeoPrimitivesHelpers.h"
-
-namespace InDetDD {
-
-  const int FIRST_HIGHER_LEVEL = 1;
-
-
-  PixelDetectorManager::PixelDetectorManager(StoreGateSvc* detStore) 
-    : SiDetectorManager(detStore, "Pixel"),
-      m_idHelper(0),
-      m_isLogical(false) // Change to true to change the definition of local module corrections
-  {
-
-    //  
-    // Initialized the Identifier helper.
-    //
-
-    StatusCode sc = detStore->retrieve(m_idHelper,"PixelID");
-    if (sc.isFailure() ) {
-      msg(MSG::ERROR) << "Could not retrieve Pixel id helper" << endmsg;
-    }
-
-    // Initialize the collections.
-    if (m_idHelper) {
-      m_elementCollection.resize(m_idHelper->wafer_hash_max());
-      m_alignableTransforms.resize(m_idHelper->wafer_hash_max());
-    } 
-  }
-
-
-  PixelDetectorManager::~PixelDetectorManager()
-  {
-    // Clean up
-    for (size_t i=0; i < m_volume.size(); i++) {
-      m_volume[i]->unref();
-    }
-
-    for (size_t j=0; j < m_higherAlignableTransforms.size(); j++){
-      AlignableTransformMap::iterator iterMap;  
-      for (iterMap = m_higherAlignableTransforms[j].begin(); 
-      iterMap != m_higherAlignableTransforms[j].end();
-      ++iterMap) {
-        delete iterMap->second;
-      }
-    }
-
-    for (size_t k=0; k < m_alignableTransforms.size(); k++){
-      delete m_alignableTransforms[k];
-    }
-  }
-
-
-
-  unsigned int PixelDetectorManager::getNumTreeTops() const
-  {
-    return m_volume.size(); 
-  }
-
-  PVConstLink PixelDetectorManager::getTreeTop(unsigned int i) const
-  {
-    return m_volume[i];
-  }
-
-  void PixelDetectorManager::addTreeTop(PVLink vol){
-    vol->ref();
-    m_volume.push_back(vol);
-  }
-
-
-  SiDetectorElement* PixelDetectorManager::getDetectorElement(const Identifier & id) const
-  {  
-  // NB the id helpers implementation for getting a hash is not optimal.
-  // Essentially does a binary search.
-  // Make sure it is a wafer Id
-    Identifier waferId = id;
-#ifndef __IDENTIFIER_64BIT__
-  // pixel ids have special treatement. It is possible to distinguish between
-  // a wafer id and a pixel cell id by checking bit 32, which is set for a pixel cell id.
-    if (id.is_valid() && (id.get_compact() & 0x80000000)) {
-      waferId =  m_idHelper->wafer_id(id);
-    }
-#else  
-    waferId =  m_idHelper->wafer_id(id);
-#endif /* __IDENTIFIER_64BIT__ */
-    IdentifierHash idHash = m_idHelper->wafer_hash(waferId);
-    if (idHash.is_valid()) {
-      return m_elementCollection[idHash];
-    } else {
-      return 0;
-    }
-  }
-
-
-  SiDetectorElement*  PixelDetectorManager::getDetectorElement(const IdentifierHash & idHash) const
-  {
-    return m_elementCollection[idHash];
-  }
-
-  SiDetectorElement* PixelDetectorManager::getDetectorElement(int barrel_endcap, int layer_wheel, int phi_module, int eta_module) const
-  {
-    return getDetectorElement(m_idHelper->wafer_id(barrel_endcap, layer_wheel, phi_module, eta_module));
-  }
-
-  const SiDetectorElementCollection* PixelDetectorManager::getDetectorElementCollection() const
-  { 
-    return &m_elementCollection;
-  }
-
-  SiDetectorElementCollection::const_iterator PixelDetectorManager::getDetectorElementBegin() const
-  {
-    return m_elementCollection.begin();
-  }
-
-  SiDetectorElementCollection::const_iterator PixelDetectorManager::getDetectorElementEnd() const
-  {
-    return m_elementCollection.end();
-  }
-
-
-  void PixelDetectorManager::addDetectorElement(SiDetectorElement * element)
-  {
-    IdentifierHash idHash = element->identifyHash();
-    if (idHash >=  m_elementCollection.size())
-      throw std::runtime_error("PixelDetectorManager: Error adding detector element.");
-    m_elementCollection[idHash] = element;
-  }
-
-  void PixelDetectorManager::initNeighbours()
-  {
-    SiDetectorElementCollection::iterator iter;
-
-    // Loop over all elements and set the neighbours
-    for (iter = m_elementCollection.begin(); iter != m_elementCollection.end(); ++iter){
-
-      SiDetectorElement * element = *iter;
-      if (element) {
-
-        IdentifierHash idHash = element->identifyHash();
-        IdentifierHash idHashOther;
-
-        int result;
-        // If no neighbour, result != 0 in which case we leave neighbour as null
-        result = m_idHelper->get_next_in_eta(idHash, idHashOther);
-        if (result==0) element->setNextInEta(m_elementCollection[idHashOther]);
-
-        result = m_idHelper->get_prev_in_eta(idHash, idHashOther);
-        if (result==0) element->setPrevInEta(m_elementCollection[idHashOther]);
-
-        result = m_idHelper->get_next_in_phi(idHash, idHashOther);
-        if (result==0) element->setNextInPhi(m_elementCollection[idHashOther]);
-
-        result = m_idHelper->get_prev_in_phi(idHash, idHashOther);
-        if (result==0) element->setPrevInPhi(m_elementCollection[idHashOther]);
-      }
-    }
-  }
-
-
-  const PixelID* PixelDetectorManager::getIdHelper() const
-  {
-    return m_idHelper;
-  }
-
-  unsigned int PixelDetectorManager::getBarrelLayers() const
-  {
-    unsigned int barrelLayers = 0;
-    for (int i = numerology().numLayers() - 1; i >= 0; --i) {
-      barrelLayers *= 10;
-      barrelLayers += numerology().useLayer(i);
-    }
-    return barrelLayers;
-  }
-
-  unsigned int PixelDetectorManager::getEndcapLayers() const
-  {
-    unsigned int endcapLayers = 0;
-    for (int i = numerology().numDisks() - 1; i >= 0; --i) {
-      endcapLayers *= 10;
-      endcapLayers += numerology().useDisk(i);
-    }
-    return endcapLayers;
-  }
-
-
-  bool PixelDetectorManager::setAlignableTransformDelta(int level, 
-                                                        const Identifier & id, 
-                                                        const Amg::Transform3D & delta,
-                                                        FrameType frame,
-                                                        GeoVAlignmentStore* alignStore) const
-  {
-
-    if (level == 0) { // At the element level - local shift
-
-      // We retrieve it via a hashId.
-      IdentifierHash idHash = m_idHelper->wafer_hash(id);
-      if (!idHash.is_valid()) return false;
-
-      if (frame == InDetDD::global) {
-
-        return setAlignableTransformGlobalDelta(m_alignableTransforms[idHash], delta, alignStore);
-
-      } else if (frame == InDetDD::local) {
-
-        SiDetectorElement * element =  m_elementCollection[idHash];
-        if (!element) return false;
-
-        // Its a local transform
-        //See header file for definition of m_isLogical          
-        if( m_isLogical ){
-	  //Ensure cache is up to date and use the alignment corrected local to global transform
-	  element->setCache();
-	  return setAlignableTransformLocalDelta(m_alignableTransforms[idHash], element->transform(), delta, alignStore);
-        } else 
-	  //Use default local to global transform
-	  return setAlignableTransformLocalDelta(m_alignableTransforms[idHash], element->defTransform(), delta, alignStore);
-      } else {
-        // other not supported
-        msg(MSG::WARNING) << "Frames other than global or local are not supported." << endmsg;
-        return false;
-      }
-
-    } else { // higher level
-
-      if (frame != InDetDD::global) {
-        msg(MSG::WARNING) << "Non global shift at higher levels is not possible." << endmsg;
-        return false;
-      }
-
-      int index = level - FIRST_HIGHER_LEVEL; // level 0 is treated separately.
-      if (index >=  static_cast<int>(m_higherAlignableTransforms.size())) return false;
-
-      // We retrieve it from a map. 
-      AlignableTransformMap::const_iterator iter;    
-      iter = m_higherAlignableTransforms[index].find(id);
-      if (iter == m_higherAlignableTransforms[index].end()) return false;      
-
-      // Its a global transform
-      return setAlignableTransformGlobalDelta(iter->second, delta, alignStore);
-    }
-
-  }
-
-
-  void PixelDetectorManager::addAlignableTransform (int level, 
-                            const Identifier & id, 
-                            GeoAlignableTransform *transform,
-                            const GeoVPhysVol * child)
-  {
-    if (m_idHelper) {
-
-      const GeoVFullPhysVol * childFPV = dynamic_cast<const GeoVFullPhysVol *>(child);
-      if (!childFPV) { 
-        msg(MSG::ERROR) << "Child of alignable transform is not a full physical volume" 
-          << endmsg;
-      } else {
-        addAlignableTransform (level, id, transform, childFPV);
-      }
-    }
-  }
-
-  void PixelDetectorManager::addAlignableTransform (int level, 
-                            const Identifier & id, 
-                            GeoAlignableTransform *transform,
-                            const GeoVFullPhysVol * child)
-  {
-    if (m_idHelper) {
-      if (level == 0) {
-        IdentifierHash idHash = m_idHelper->wafer_hash(id);
-        if (idHash.is_valid()) {
-          m_alignableTransforms[idHash]= new ExtendedAlignableTransform(transform, child);
-        } 
-      } else {
-        // Higher levels are saved in a map. NB the index is level-1 as level=0 is treated above.   
-        int index = level - FIRST_HIGHER_LEVEL; 
-        if (index >= static_cast<int>(m_higherAlignableTransforms.size())) m_higherAlignableTransforms.resize(index+1); 
-        m_higherAlignableTransforms[index][id] = new ExtendedAlignableTransform(transform, child);
-      }
-    }  
-  }
-
-  bool PixelDetectorManager::identifierBelongs(const Identifier & id) const
-  {
-    return getIdHelper()->is_pixel(id);
-  }
-
-
-
-  const PixelModuleDesign* PixelDetectorManager::getPixelDesign(int i) const
-  {
-    return dynamic_cast<const PixelModuleDesign *>(getDesign(i));
-  }
-
-
-
-  // The implementation of the new IBLDist DB; 
-  // Specific for IBL -> maybe make it different function in future to be more general 
-  bool PixelDetectorManager::processSpecialAlignment(const std::string & key, InDetDD::AlignFolderType alignfolderType) const
-  {
-
-  bool alignmentChange = false;
-
-  std::string alignfolder;
-  if (alignfolderType == InDetDD::static_run1) alignfolder = "/Indet/Align";
-  if (alignfolderType == InDetDD::timedependent_run2) alignfolder = "/Indet/AlignL3";
-
-  if(msgLvl(MSG::INFO))
-    msg(MSG::INFO) << "Processing IBLDist alignment container with key (" <<
-      key << ") and alignment folder pointing to " << alignfolder << endmsg;
-
-  int nstaves = 0;
-  if (numerology().numPhiModulesForLayer(0)<14) nstaves = 14;
-  else nstaves = numerology().numPhiModulesForLayer(0);
-  
-  std::vector<float> ibldist;
-  std::vector<float> iblbaseline;
-  ibldist.resize(nstaves);
-  iblbaseline.resize(nstaves);
-
-  const CondAttrListCollection* atrlistcol=0;
-  if (StatusCode::SUCCESS==m_detStore->retrieve(atrlistcol,key)) {
-    // loop over objects in collection
-    for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) {
-  
-  const coral::AttributeList& atrlist=citr->second;
-  ibldist[atrlist["stave"].data<int>()] = atrlist["mag"].data<float>();
-  iblbaseline[atrlist["stave"].data<int>()] = atrlist["base"].data<float>();
-
-  msg(MSG::VERBOSE) << "IBLDist DB -- channel: " << citr->first
-        << " ,stave: " << atrlist["stave"].data<int>() 
-        << " ,mag: " << atrlist["mag"].data<float>()
-        << " ,base: " << atrlist["base"].data<float>() << endmsg;
-    }
-  }
-  else {
-    if (msgLvl(MSG::INFO))
-  msg(MSG::INFO) << "Cannot find IBLDist Container for key "
-         << key << " - no IBL bowing alignment " << endmsg;
-    return alignmentChange;                                   
-  }
-
-  /**
-    Matthias D. (Oct. 2016): 
-    The idea of this first implementation is to get the AlignTransforms for IBL modules from their folder;
-    Calculate from the new DB entries the Tx displacement for this module;
-    Make a simple transfrom in local frame;
-    Add the Tx to the aligntransform;
-    Apply this new transform with the setAlignableTransformDelta() function;
-    This is non-optimal as it simply overrides the previous Delta (these are included in total Delta);
-    Possibly we could extend this in future to add tweak() functionality to GeoAlignableTransform?
-  **/
-
-  const AlignableTransformContainer* container;
-  if (StatusCode::SUCCESS!=m_detStore->retrieve(container, alignfolder)) {      
-    msg(MSG::ERROR) << "Cannot find AlignableTransformContainer for key " 
-        << key << " - no misalignment" << endmsg;
-    // This should not occur in normal situations so we force job to abort.
-    throw std::runtime_error("Unable to apply Inner Detector alignments");
-  }
-  // Check if container is empty - this can occur if it is an invalid IOV.
-  if (container->empty()) {
-    msg(MSG::ERROR) << "AlignableTransformContainer for key " 
-            << key << " is empty. Probably due to out of range IOV" << endmsg;
-    // This should not occur in normal situations so we force job to abort.
-    throw std::runtime_error("Unable to apply Inner Detector alignments.");
-  }
-  // loop over all the AlignableTransform objects in the collection
-  std::string IBLalignfolder = alignfolder;
-  IBLalignfolder.append("/PIXB1");// "/Indet/Align/PIXB1"   
-  for (DataVector<AlignableTransform>::const_iterator pat=container->begin();
-       pat!=container->end();++pat) {
-    if (!( (*pat)->tag()==IBLalignfolder && 
-	   numerology().numPhiModulesForLayer(0)==14 &&
-	   numerology().numLayers()==4) ){  // hard-coded to IBL for now; no other geometry should really apply this!
-      msg(MSG::DEBUG) << "IBLDist; ignoring collections " << (*pat)->tag() << endmsg;
-    }  
-    else{
-      const AlignableTransform* transformCollection = *pat;
-      for (AlignableTransform::AlignTransMem_citr trans_iter = transformCollection->begin(); 
-         trans_iter != transformCollection->end(); 
-         ++trans_iter) {
-        if (msgLvl(MSG::DEBUG)) {
-        msg(MSG::DEBUG) << "IBLDist alignment for identifier " 
-             << getIdHelper()->show_to_string(trans_iter->identify())   << endmsg;
-        }
-  
-        IdentifierHash idHash = getIdHelper()->wafer_hash(trans_iter->identify());
-        if (!idHash.is_valid()){
-	  msg(MSG::WARNING) << "Invalid HashID for identifier "
-			    << getIdHelper()->show_to_string(trans_iter->identify())   << endmsg;
-	  msg(MSG::WARNING) << "No IBLDist corrections can be applied for invalid HashID's - exiting " << endmsg;
-	  return false;
-	}
-	SiDetectorElement * sielem = m_elementCollection[idHash];
-        //This should work as Bowing is in L3 frame, i.e. local module frame                 
-        Amg::Vector3D center = sielem->defTransform() * Amg::Vector3D{0, 0, 0};
-        double z = center[2];
-        const double  y0y0  = 366.5*366.5;
-                 
-        double bowx = ibldist[getIdHelper()->phi_module(trans_iter->identify())] * ( z*z - y0y0 ) / y0y0;
-        double basex= iblbaseline[getIdHelper()->phi_module(trans_iter->identify())];
-        // This is in the module frame, as bowing corrections are directly L3                
-  
-        msg(MSG::DEBUG) << "Total IBL-module Tx shift (baseline+bowing): " << basex+bowx << endmsg;
-        if ( (basex+bowx)==0 ) continue; // make sure we ignore NULL corrections
-
-        Amg::Transform3D shift = Amg::Translation3D(basex+bowx,0,0) * Amg::RotationMatrix3D::Identity();
-
-        const AlignableTransform* cpat = *pat;
-        AlignableTransform::AlignTransMem_citr this_trans=cpat->findIdent(trans_iter->identify());
-        HepGeom::Transform3D newtrans = Amg::EigenTransformToCLHEP(shift)*this_trans->transform();
-
-        /** Verbose level debug section for transforms **/
-        if (msgLvl(MSG::VERBOSE)) {
-          msg(MSG::VERBOSE) << "Bowing Transformation only:" << endmsg;
-          printTransform(shift);
-          msg(MSG::VERBOSE) << "Original alignable Transformation from StoreGate:" << endmsg;
-          printTransform(Amg::CLHEPTransformToEigen(this_trans->transform()));
-          msg(MSG::VERBOSE) << "Final mModified Transformation:" << endmsg;
-          printTransform(Amg::CLHEPTransformToEigen(newtrans));
-        }
-        /** End of verbose level debug section **/
-    
-        // Set the new transform; Will replace existing one with updated transform
-        bool status = setAlignableTransformDelta(0, 
-                                                 trans_iter->identify(),
-                                                 Amg::CLHEPTransformToEigen(newtrans),
-                                                 InDetDD::local,
-                                                 nullptr);
- 
-        if (!status) {
-          if (msgLvl(MSG::DEBUG)) {
-            msg(MSG::DEBUG) << "Cannot set AlignableTransform for identifier."  
-                << getIdHelper()->show_to_string(trans_iter->identify())  
-                << " at level 0 for IBLDist bowing deformation " << endmsg;
-          }
-        }
-
-        alignmentChange = (alignmentChange || status);
-      }
-    }
-  }
-
-  return alignmentChange;
-  }
-
-  bool PixelDetectorManager::processSpecialAlignment(const std::string& key,
-                                                     const CondAttrListCollection* obj,
-                                                     GeoVAlignmentStore* alignStore) const {
-    bool alignmentChange = false;
-
-    ATH_MSG_INFO("Processing IBLDist alignment container with key " << key);
-    if(numerology().numLayers() != 4) {
-      // this doesn't appear to be Run 2, i.e. the IBL isn't there. Bailing
-      return alignmentChange;
-    }
-
-    int nstaves = 0;
-    if (numerology().numPhiModulesForLayer(0) < 14)
-      nstaves = 14;
-    else
-      nstaves = numerology().numPhiModulesForLayer(0);
-
-    std::vector<float> ibldist;
-    std::vector<float> iblbaseline;
-    ibldist.resize(nstaves);
-    iblbaseline.resize(nstaves);
-
-    // loop over objects in collection
-    for (CondAttrListCollection::const_iterator citr = obj->begin();
-        citr != obj->end(); ++citr) {
-
-      const coral::AttributeList &atrlist = citr->second;
-      ibldist[atrlist["stave"].data<int>()] = atrlist["mag"].data<float>();
-      iblbaseline[atrlist["stave"].data<int>()] = atrlist["base"].data<float>();
-
-      ATH_MSG_VERBOSE("IBLDist DB -- channel: " << citr->first
-        << ", stave: " << atrlist["stave"].data<int>()
-        << ", mag: " << atrlist["mag"].data<float>()
-        << ", base: " << atrlist["base"].data<float>());
-    }
-
-    /**
-     * Paul Gessinger (Jun 2019): For MT, we won't retrieve the underlying actual
-     * alignable transform container, since that's hard to come by.
-     * We loop over all detector elements, check if they match the
-     * detector elements we have IBL dist info for, retrieve the actual transform
-     * from the provided GeoAlignmentStore, and re-set it to the corrected
-     * value including IBL bowing.
-     *
-     * The calculation of the bowing is taken from the non-MT implementation above.
-     */
-
-
-    for(const auto* detElem : *getDetectorElementCollection()) {
-      if(!detElem->isInnermostPixelLayer()) {
-        // skip non-IBL elements. This only works if the innermost pixel layer is in fact
-        // the IBL. That should be the case for Run2 until replacement of the ID.
-        continue;
-      }
-      std::string repr = getIdHelper()->show_to_string(detElem->identify());
-      ATH_MSG_DEBUG("IBLDist alignment for identifier " << repr);
-
-
-      IdentifierHash idHash = getIdHelper()->wafer_hash(detElem->identify());
-      if (!idHash.is_valid()) {
-        ATH_MSG_WARNING("Invalid HashID for identifier " << repr);
-        ATH_MSG_WARNING("No IBLDist corrections can be applied for "
-                        "invalid HashID's - exiting ");
-        return false;
-      }
-
-      // extract the stave number
-      int stave = getIdHelper()->phi_module(detElem->identify());
-
-      Amg::Vector3D center = detElem->defTransform() * Amg::Vector3D{0, 0, 0};
-      double z = center[2];
-      const double y0y0 = 366.5 * 366.5;
-
-      double bowx = ibldist[stave] * (z * z - y0y0) / y0y0;
-      double basex = iblbaseline[stave];
-      // This is in the module frame, as bowing corrections are directly L3
-
-      ATH_MSG_DEBUG("Total IBL-module Tx shift (baseline+bowing): " << basex + bowx);
-
-      if ((basex + bowx) == 0) {
-        continue; // make sure we ignore NULL corrections
-      }
-
-      Amg::Transform3D shift = Amg::Translation3D(basex + bowx, 0, 0) *
-                               Amg::RotationMatrix3D::Identity();
-
-      // now we need to get the original alignment delta to apply this additional
-      // shift to
-      ExtendedAlignableTransform* eat = m_alignableTransforms[idHash];
-      const GeoTrf::Transform3D* currentDelta = alignStore->getDelta(eat->alignableTransform());
-      if (currentDelta == nullptr) {
-        ATH_MSG_ERROR("Have IBL Dist for element which does not have an alignment delta."
-                      << " This indicates inconsistent alignment data");
-        return false;
-      }
-
-      HepGeom::Transform3D recoToHitTransform = detElem->recoToHitTransform();
-      Amg::Transform3D r2h = Amg::CLHEPTransformToEigen(recoToHitTransform);
-
-      ATH_MSG_VERBOSE("Previous delta for " << repr << ":\n" << currentDelta->matrix());
-      ATH_MSG_VERBOSE("Bowing-only delta for " << repr << ":\n" << shift.matrix());
-      Amg::Transform3D newDelta = shift * r2h.inverse() * (*currentDelta) * r2h;
-
-      // We can probably just write it back to the geo alignment store.
-      // The IBL bowing is always at the module level, and that's the delta that
-      // we retrieved from the geo alignment store.
-
-      bool status = setAlignableTransformDelta(0,
-                                               detElem->identify(),
-                                               newDelta,
-                                               InDetDD::local,
-                                               alignStore);
-
-
-      ATH_MSG_VERBOSE("New delta for " << repr << ":\n"
-                      << alignStore->getDelta(eat->alignableTransform())->matrix());
-
-      alignmentChange |= status;
-    }
-
-    return alignmentChange;
-  }
-
-  // New global alignment folders
-  bool PixelDetectorManager::processGlobalAlignment(const std::string & key, int level, FrameType frame, const CondAttrListCollection* /*obj*/, GeoVAlignmentStore* alignStore) const
-  {
-
-    bool alignmentChange = false;
-
-    if(msgLvl(MSG::INFO))
-      msg(MSG::INFO) << "Processing new global alignment containers with key " << key << " in the " << frame << " frame at level " << level << endmsg;
-
-    Identifier ident=Identifier();
-    const CondAttrListCollection* atrlistcol=0;
-    if (StatusCode::SUCCESS==m_detStore->retrieve(atrlistcol,key)) {
-      // loop over objects in collection
-      for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) {
-	const coral::AttributeList& atrlist=citr->second;
-	// We are in the Pixel manager, therefore ignore all that is not Pixel Identifier
-	if (atrlist["det"].data<int>()!=1) continue;
-
-	ident = getIdHelper()->wafer_id(atrlist["bec"].data<int>(),
-					atrlist["layer"].data<int>(),
-					atrlist["ring"].data<int>(),
-					atrlist["sector"].data<int>());
-
-	// Make sure we have valid HashID (This ONLY works here as the 0-modules exist)
-	// Precaution which does not work for e.g. SCT
-	if (!(getIdHelper()->wafer_hash(ident)).is_valid()){
-	  msg(MSG::WARNING) << "Invalid HashID for identifier "
-			    << getIdHelper()->show_to_string(ident)   << endmsg;
-	  msg(MSG::WARNING) << "No global alignment corrections can be applied for invalid HashID's - exiting " << endmsg;
-	  return false;
-	}
-
-	// construct new transform                                                                                                                
-	// Order of rotations is defined as around z, then y, then x.
-	Amg::Translation3D  newtranslation(atrlist["Tx"].data<float>(),atrlist["Ty"].data<float>(),atrlist["Tz"].data<float>());
-	Amg::Transform3D newtrans = newtranslation * Amg::RotationMatrix3D::Identity();
-	newtrans *= Amg::AngleAxis3D(atrlist["Rz"].data<float>()*CLHEP::mrad, Amg::Vector3D(0.,0.,1.));
-	newtrans *= Amg::AngleAxis3D(atrlist["Ry"].data<float>()*CLHEP::mrad, Amg::Vector3D(0.,1.,0.));
-	newtrans *= Amg::AngleAxis3D(atrlist["Rx"].data<float>()*CLHEP::mrad, Amg::Vector3D(1.,0.,0.));
-
-	msg(MSG::DEBUG) << "New global DB -- channel: " << citr->first
-			  << " ,det: "    << atrlist["det"].data<int>()
-			  << " ,bec: "    << atrlist["bec"].data<int>()
-			  << " ,layer: "  << atrlist["layer"].data<int>()
-			  << " ,ring: "   << atrlist["ring"].data<int>()
-			  << " ,sector: " << atrlist["sector"].data<int>()
-			  << " ,Tx: "     << atrlist["Tx"].data<float>()
-			  << " ,Ty: "     << atrlist["Ty"].data<float>()
-			  << " ,Tz: "     << atrlist["Tz"].data<float>()
-			  << " ,Rx: "     << atrlist["Rx"].data<float>()
-			  << " ,Ry: "     << atrlist["Ry"].data<float>()
-			  << " ,Rz: "     << atrlist["Rz"].data<float>() << endmsg;
-      
-        // Set the new transform; Will replace existing one with updated transform                                                                 
-	bool status = setAlignableTransformDelta(level,
-						 ident,
-						 newtrans,
-						 frame,
-                                                 alignStore);
-
-        if (!status) {
-          if (msgLvl(MSG::DEBUG)) {
-            msg(MSG::DEBUG) << "Cannot set AlignableTransform for identifier."
-			    << getIdHelper()->show_to_string(ident)
-			    << " at level " << level << " for new global DB " << endmsg;
-          }
-        }
-
-        alignmentChange = (alignmentChange || status);
-      }
-    }
-    else {
-      if (msgLvl(MSG::INFO))
-	msg(MSG::INFO) << "Cannot find new global align Container for key "
-		       << key << " - no new global alignment " << endmsg;
-      return alignmentChange;
-    }
-    return alignmentChange;
-  }
-
-
-  // Helpful function for debugging of transforms
-  void PixelDetectorManager::printTransform(const Amg::Transform3D & tr) const
-  {
-  msg(MSG::DEBUG) <<" - translation: "<<tr.translation().x()<<"  "<<tr.translation().y()<<"  "<<tr.translation().z() << endmsg;
-  msg(MSG::DEBUG) <<" - rotation:"<< endmsg;
-  msg(MSG::DEBUG) <<"    "<<tr(0,0)<<"  "<<tr(0,1)<<"  "<<tr(0,2)<< endmsg;
-  msg(MSG::DEBUG) <<"    "<<tr(1,0)<<"  "<<tr(1,1)<<"  "<<tr(1,2)<< endmsg;
-  msg(MSG::DEBUG) <<"    "<<tr(2,0)<<"  "<<tr(2,1)<<"  "<<tr(2,2)<< endmsg;
-  return;
-  }
-
-
-} // namespace InDetDD
-
-
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMap.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMap.cxx
deleted file mode 100755
index 36abc6626cf..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMap.cxx
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelDiodeMap.cxx
-//   Implementation file for class PixelDiodeMap
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-// Version 4.2 14/08/2001 David Calvet
-// Modified: Grant Gorfine
-///////////////////////////////////////////////////////////////////
-
-#include "InDetReadoutGeometry/PixelDiodeMap.h"
-#include "InDetReadoutGeometry/PixelDiodeMatrix.h"
-#include "InDetReadoutGeometry/SiCellId.h"
-
-#include <cmath>
-#include <algorithm>
-
-namespace InDetDD {
-
-
-
-// Implicit constructor:
-PixelDiodeMap::PixelDiodeMap(std::shared_ptr<const PixelDiodeMatrix> matrix) :
-  m_matrix(matrix),
-  m_generalLayout(false) 
-{
-}
-
-PixelDiodeMap::~PixelDiodeMap()
-{
-}
-
-
-  SiCellId PixelDiodeMap::cellIdOfPosition(const Amg::Vector2D & localPos) const
-{
-  using std::abs;
-  using Trk::distPhi;
-  using Trk::distEta;
-
-  // Check that we are in the bounds of the top level matrix
-  // NB. edge is included in bounds.
-
-  double halfWidth = 0.5*width();
-  double halfLength = 0.5*length();
-  if ( (abs(localPos[distPhi]) > halfWidth) || 
-       (abs(localPos[distEta]) > halfLength) ) {
-    return SiCellId(); // Invalid Id.
-  }
-
-  // position relative to bottom left corner.
-  Amg::Vector2D relativePos = localPos + Amg::Vector2D(halfWidth, halfLength);
-
-  // The cellId returned will be added to this so we must start with 0,0.
-  SiCellId cellId(0,0);
-
-  std::shared_ptr<const PixelDiodeMatrix> cell = m_matrix->cellIdOfPosition(relativePos, cellId);
-
-  // return invalid Id if there was a problem (don't expect this to be the case).
-  if (cell==nullptr) {
-    return SiCellId(); // Invalid id.
-  } 
-
-  return cellId;
-  
-}
-
-  
-// Get diodes parameters (position and size):
-SiDiodesParameters
-PixelDiodeMap::parameters(const SiCellId & cellId) const
-{
-
-  // Check we are in range
-  
-  if (!cellId.isValid() || 
-      (cellId.phiIndex() < 0) || 
-      (cellId.phiIndex() >= m_matrix->phiCells()) ||
-      (cellId.etaIndex() < 0) ||
-      (cellId.etaIndex() >= m_matrix->etaCells())) {
-    return SiDiodesParameters();
-  }
-
-  double halfWidth = 0.5*width();
-  double halfLength = 0.5*length();
-  
-  //
-  // Position is relative to left bottom corner.
-  //
-  Amg::Vector2D position(-halfWidth, -halfLength);
-  std::shared_ptr<const PixelDiodeMatrix> cell = m_matrix->positionOfCell(cellId, position);
-  
-  if (cell) {
-    
-    // get size
-    Amg::Vector2D size(cell->phiWidth(), cell->etaWidth());
-
-    // return parameters
-    return SiDiodesParameters(position,size);
-  }
-
-  // return something in case of failure.
-  return SiDiodesParameters();
-}
-
-void PixelDiodeMap::neighboursOfCell(const SiCellId & cellId,
-				     std::vector<SiCellId> &neighbours) const
-{
-  neighbours.clear();
-
-  if (!cellId.isValid()) return;
-
-  // If non regular layout revert to slower method
-  if (m_generalLayout) return neighboursOfCellGeneral(cellId, neighbours);
-
-  neighbours.reserve(8);
-  // neighbours easily determined from cell number
-  // normally 8 neighbours 4 edge and 4 corners
-  
-  int phiIndex = cellId.phiIndex();
-  int etaIndex = cellId.etaIndex();
-
-  // M = minus
-  // P = plus
-  int phiM = phiIndex-1;
-  int phiP = phiIndex+1;
-  int etaM = etaIndex-1;
-  int etaP = etaIndex+1;
-
-  // -,0
-  if (phiM >= 0)                                 neighbours.push_back(SiCellId(phiM,etaIndex));
-  // -,-
-  if (phiM >= 0 && etaM >= 0)                    neighbours.push_back(SiCellId(phiM,etaM));
-  // 0,-
-  if (etaM >= 0)                                 neighbours.push_back(SiCellId(phiIndex,etaM));
-  // +,-
-  if (phiP < phiDiodes() && etaM >= 0)           neighbours.push_back(SiCellId(phiP,etaM));
-  // +,0
-  if (phiP < phiDiodes())                        neighbours.push_back(SiCellId(phiP,etaIndex));
-  // -,+
-  if (phiM >= 0 && etaP < etaDiodes())           neighbours.push_back(SiCellId(phiM,etaP));
-  // 0,+
-  if (etaP < etaDiodes())                        neighbours.push_back(SiCellId(phiIndex,etaP));
-  // +,+
-  if (phiP < phiDiodes() && etaP < etaDiodes())  neighbours.push_back(SiCellId(phiP,etaP));
-}
-
-// Get the neighbouring PixelDiodes of a given PixelDiode:
-// This will work for more complex layouts such as bricking. Probably never really needed but
-// since the code was here I keep it available.
-void PixelDiodeMap::neighboursOfCellGeneral(const SiCellId & cellId,
-					    std::vector<SiCellId> &neighbours) const
-{
-  // extract the diode spatial parameters
-  const SiDiodesParameters params=parameters(cellId);
-  const SiLocalPosition diodeCenter=params.centre();
-  const SiLocalPosition diodeSize=params.width();
-  const double &centerColumn=diodeCenter.xColumn();
-  const double &centerRow=diodeCenter.xRow();
-  const double halfSizeColumn=diodeSize.xColumn()/2;
-  const double halfSizeRow=diodeSize.xRow()/2;
-
-  // parameter
-  const double epsilon=0.01;
-
-  // compute the points to check
-  const double left1=centerColumn-halfSizeColumn*(1+epsilon);
-  const double right1=centerColumn+halfSizeColumn*(1+epsilon);
-  const double left2=centerColumn-halfSizeColumn*(1-epsilon);
-  const double right2=centerColumn+halfSizeColumn*(1-epsilon);
-  const double top1=centerRow+halfSizeRow*(1+epsilon);
-  const double bot1=centerRow-halfSizeRow*(1+epsilon);
-  const double top2=centerRow+halfSizeRow*(1-epsilon);
-  const double bot2=centerRow-halfSizeRow*(1-epsilon);
-
-  // build the list of positions to check
-  std::vector<SiLocalPosition> positions;
-  positions.reserve(12);
-  SiLocalPosition position;
-  position.xRow(bot1); position.xColumn(left2); positions.push_back(position);
-  position.xRow(bot1); position.xColumn(left1); positions.push_back(position);
-  position.xRow(bot2); position.xColumn(left1); positions.push_back(position);
-  position.xRow(top2); position.xColumn(left1); positions.push_back(position);
-  position.xRow(top1); position.xColumn(left1); positions.push_back(position);
-  position.xRow(top1); position.xColumn(left2); positions.push_back(position);
-  position.xRow(bot1); position.xColumn(right2); positions.push_back(position);
-  position.xRow(bot1); position.xColumn(right1); positions.push_back(position);
-  position.xRow(bot2); position.xColumn(right1); positions.push_back(position);
-  position.xRow(top2); position.xColumn(right1); positions.push_back(position);
-  position.xRow(top1); position.xColumn(right1); positions.push_back(position);
-  position.xRow(top1); position.xColumn(right2); positions.push_back(position);
-
-  // build the list of neighbours
-  neighbours.reserve(8);
-
-  // loop on all positions to check
-  for(std::vector<SiLocalPosition>::const_iterator p_position=positions.begin() ;
-      p_position!=positions.end() ; ++p_position) {
-
-    // get the PixelDiode for this position
-    SiCellId cellId_neighb = cellIdOfPosition(*p_position);
-
-    if (cellId.isValid()) {
-      // check if the diode is already in the list
-      //bool found=false;
-      std::vector<SiCellId>::const_iterator foundIter
-	= std::find(neighbours.begin(), neighbours.end(), cellId_neighb );
-
-      // If not found add this diode to the list
-      if (foundIter ==  neighbours.end()) neighbours.push_back(cellId_neighb);
-		    
-    } 
-  }
-}
-
-
-// Compute the intersection length of two diodes:
-double PixelDiodeMap::intersectionLength(const SiCellId &diode1,
-					 const SiCellId &diode2) const
-{ 
-  if(!diode1.isValid() || !diode2.isValid()) return 0;
-  // If non regular layout revert to slower method
-  if (m_generalLayout) return intersectionLengthGeneral(diode1, diode2);
-
-  const SiLocalPosition size = parameters(diode1).width();
-
-  int phiIndexDelta = std::abs(diode1.phiIndex() - diode2.phiIndex());
-  int etaIndexDelta = std::abs(diode1.etaIndex() - diode2.etaIndex());
-
-  // Intersection length is just the length or width of the diode depending on which neighbour.
-  if (phiIndexDelta == 1 && etaIndexDelta == 0) return size.xEta();
-  if (phiIndexDelta == 0 && etaIndexDelta == 1) return size.xPhi();
-  // Will return 0 if it is a corner neighbour or if its not a neighbour or if they are oth the same diode.
-  return 0;
-}
-
-// Compute the intersection length of two diodes:
-// This will work for more complex layouts such as bricking. Probably never really needed but
-// since the code was here I keep it available.
-double PixelDiodeMap::intersectionLengthGeneral(const SiCellId &diode1,
-						const SiCellId &diode2) const
-
-{
-  const SiDiodesParameters params1=parameters(diode1);
-  const SiDiodesParameters params2=parameters(diode2);
-  const SiLocalPosition center1=params1.centre();
-  const SiLocalPosition center2=params2.centre();
-  const SiLocalPosition size1=params1.width();
-  const SiLocalPosition size2=params2.width();
-  
-  // compute intersection length on column direction
-  const double intersectionColumn=intersectionLength1D(center1.xColumn(),
-					  size1.xColumn(),
-					  center2.xColumn(),
-					  size2.xColumn());
-  // compute intersection length on row direction
-  const double intersectionRow=intersectionLength1D(center1.xRow(),
-				       size1.xRow(),
-				       center2.xRow(),
-				       size2.xRow());
-
-  // return the real intersection 
-  // (if both directions intersect, there is a problem)
-  if (intersectionColumn>0) {
-    if (intersectionRow>0) return 0;
-    return intersectionColumn;
-  } else {
-    return intersectionRow;
-  }
-}
-
-// Compute the intersection length along one direction:
-double PixelDiodeMap::intersectionLength1D(const double x1,const double dx1,
-					   const double x2,const double dx2) const
-{
-  // compute distance between the two centers
-  double distance=std::abs(x1-x2);
-
-  // compute theoretical intersection
-  double intersection=(dx1+dx2)/2-distance;
-
-  // if intersection if negative, no intersection
-  if (intersection<-1e-10) return intersection;
-  else if (intersection<1e-10) return 0;
-  else {
-    // intersection cannot exceed size
-    if (intersection>dx1) intersection=dx1;
-    if (intersection>dx2) intersection=dx2;
-    return intersection;
-  }
-}
-
-} // namespace InDetDD
-
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMatrix.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMatrix.cxx
deleted file mode 100755
index 9b663572257..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDiodeMatrix.cxx
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "InDetReadoutGeometry/PixelDiodeMatrix.h"
-#include "InDetReadoutGeometry/SiCellId.h"
-#include "TrkEventPrimitives/ParamDefs.h"
-
-#include <cassert>
-
-namespace InDetDD {
-
-std::shared_ptr<const PixelDiodeMatrix> PixelDiodeMatrix::construct(double phiWidth, double etaWidth)
-{
-  class Helper : public PixelDiodeMatrix{};
-  std::shared_ptr<PixelDiodeMatrix> ptr = std::make_shared<Helper>();
-  ptr->initialize(phiWidth, etaWidth);
-  return ptr;
-}
-
-void PixelDiodeMatrix::initialize(double phiWidth, double etaWidth)
-{
-  m_phiWidth = phiWidth;
-  m_etaWidth = etaWidth;
-  m_phiCells = 1;
-  m_etaCells = 1;
-  m_direction = phiDir; // Irrelevant
-  m_numCells = 0;
-  m_lowerCell = nullptr;
-  m_middleCells = nullptr;
-  m_upperCell = nullptr;
-  m_singleCell = true;
-}
-
-std::shared_ptr<const PixelDiodeMatrix> PixelDiodeMatrix::construct(Direction direction,  // phi or eta
-                                                                    std::shared_ptr<const PixelDiodeMatrix> lowerCell,
-                                                                    std::shared_ptr<const PixelDiodeMatrix> middleCells,
-                                                                    int numCells,
-                                                                    std::shared_ptr<const PixelDiodeMatrix> upperCell)
-{
-  class Helper : public PixelDiodeMatrix{};
-  std::shared_ptr<PixelDiodeMatrix> ptr = std::make_shared<Helper>();
-  ptr->initialize(direction,
-                  lowerCell,
-                  middleCells,
-                  numCells,
-                  upperCell);
-  return ptr;
-}
-
-void PixelDiodeMatrix::initialize(Direction direction,  // phi or eta
-                                  std::shared_ptr<const PixelDiodeMatrix> lowerCell,
-                                  std::shared_ptr<const PixelDiodeMatrix> middleCells,
-                                  int numCells,
-                                  std::shared_ptr<const PixelDiodeMatrix> upperCell)
-{
-  m_phiWidth = 0;
-  m_etaWidth = 0;
-  m_phiCells = 0;
-  m_etaCells = 0;
-  m_direction = direction;
-  m_numCells = numCells;
-  m_lowerCell = lowerCell;
-  m_middleCells = middleCells;
-  m_upperCell = upperCell;
-  m_singleCell = false;
-
-  // middleCells must be non zero.
-  assert(m_middleCells);
-
-  if (m_direction == phiDir) {
-    
-    // In eta direction widths must be all the same.
-    if (m_middleCells){
-      m_etaWidth = m_middleCells->etaWidth();
-      m_etaCells = m_middleCells->etaCells();
-    }
-    // Check lower and upper are consistent
-    // TODO.
-    
-    if (m_lowerCell) {
-      m_phiWidth += m_lowerCell->phiWidth();
-      m_phiCells += m_lowerCell->phiCells();
-    }
-
-    if (m_middleCells){
-      m_phiWidth += m_numCells * m_middleCells->phiWidth();
-      m_phiCells += m_numCells * m_middleCells->phiCells();
-    }
-  
-    if (m_upperCell) {
-      m_phiWidth += m_upperCell->phiWidth();
-      m_phiCells += m_upperCell->phiCells();
-    }
-
-  } else { // eta Direction
-
-    // In phi direction widths must be all the same.
-    if (m_middleCells){
-      m_phiWidth = m_middleCells->phiWidth();
-      m_phiCells = m_middleCells->phiCells();
-    }
-    // Check lower and upper are consistent
-    // TODO.
-    
-    if (m_lowerCell) {
-      m_etaWidth += m_lowerCell->etaWidth();
-      m_etaCells += m_lowerCell->etaCells();
-    }
-
-    if (m_middleCells){
-      m_etaWidth += m_numCells * m_middleCells->etaWidth();
-      m_etaCells += m_numCells * m_middleCells->etaCells();
-    }
-  
-    if (m_upperCell) {
-      m_etaWidth += m_upperCell->etaWidth();
-      m_etaCells += m_upperCell->etaCells();
-    }
-
-  }
-
-}
-
-std::shared_ptr<const PixelDiodeMatrix>
-PixelDiodeMatrix::cellIdOfPosition(const Amg::Vector2D & relPosition, SiCellId & cellId) const
-
-  /// Description.  
-  /// Overview of algoritm:
-  /// 
-  ///  - Before calling this method on the top level matrix the 2D position is
-  ///    calculated relative to the bottom left corner.
-  ///  - The method cellIdOfPosition is always called with the position relative to
-  ///    bottom left of the cell and the cell id of bottom left child cell. 
-  ///    For the top level matrix this is the position (-halfWidth, -halfLength) and a starting 
-  ///    cell id of (0,0).
-  ///  - It first checks if it is in the lower cell (if it exists). 
-  ///  - If not, it determines which cell by dividing the position relative to
-  ///    the start of the cell array by the pitch in that direction. 
-  ///  - If it is beyond the range of the middle cells it is taken as being in 
-  ///    the upper cell.
-  ///  - The cell number is added to the cellId that is passed to the method
-  ///  - Once the cell is determined the function is called recursively until it
-  ///    reaches a single cell. 
-  ///
-
-{
-  using Trk::distPhi;
-  using Trk::distEta;
-
-  if (m_singleCell) {
-    return shared_from_this();
-  }
-
-  double relPosDir = 0; // Relative position along m_direction
-  int startIndex = 0;
-  double pitch = 0;
-  int middleCells = 0;
-
-  if (m_direction == phiDir) {
-
-    relPosDir = relPosition[distPhi];
-    pitch = m_middleCells->phiWidth();
-    middleCells = m_middleCells->phiCells();
-
-    if (m_lowerCell) {
-      if (relPosDir < m_lowerCell->phiWidth()) {
-	return m_lowerCell->cellIdOfPosition(relPosition, cellId);
-      } else {
-	relPosDir  -=  m_lowerCell->phiWidth();
-	startIndex +=  m_lowerCell->phiCells();
-      }
-    }
-  } else { // etaDir
-
-    relPosDir = relPosition[distEta];
-    pitch = m_middleCells->etaWidth();
-    middleCells = m_middleCells->etaCells();
-
-    if (m_lowerCell) {
-      if (relPosDir < m_lowerCell->etaWidth()) {
-	return m_lowerCell->cellIdOfPosition(relPosition, cellId);
-      } else {
-	relPosDir  -=  m_lowerCell->etaWidth();
-	startIndex +=  m_lowerCell->etaCells();
-      }
-    }
-  } 
-
-  
-  int index = static_cast<int>((relPosDir) / pitch);
-
-  if (index < 0) index = 0; // Make sure its in range (in case of rounding errors)
-  std::shared_ptr<const PixelDiodeMatrix> nextCell = nullptr;
-
-  if (m_upperCell && (index >= m_numCells)) { 
-    // We are in the upper cell. 
-    index = m_numCells;
-    nextCell = m_upperCell;
-  } else {
-    // We are in the middle cells
-    // Make sure its in range (in case of rounding errors)
-    if (index >= m_numCells) index = m_numCells - 1;
-    nextCell = m_middleCells;
-  }
-  
-
-  relPosDir  -= index *  pitch;
-  startIndex += index *  middleCells;
-
-  int newPhiIndex = cellId.phiIndex();
-  int newEtaIndex = cellId.etaIndex();
-  std::shared_ptr<const PixelDiodeMatrix> cell = nullptr;
-
-  if (m_direction == phiDir) {
-    if (nextCell->singleCell()) {
-      newPhiIndex += startIndex;
-      cell = nextCell;
-    } else {
-      Amg::Vector2D newRelPos(relPosDir, relPosition[distEta]);
-      SiCellId relId(0,0);
-      cell = nextCell->cellIdOfPosition(newRelPos, relId);
-      newPhiIndex += startIndex + relId.phiIndex();
-      newEtaIndex += relId.etaIndex();
-    } 
-  } else { 
-    if (nextCell->singleCell()) {
-      newEtaIndex += startIndex;
-      cell = nextCell;
-    } else {
-      Amg::Vector2D newRelPos(relPosition[distPhi], relPosDir);
-      SiCellId relId(0,0);
-      cell = nextCell->cellIdOfPosition(newRelPos, relId);
-      newPhiIndex += relId.phiIndex();
-      newEtaIndex += startIndex + relId.etaIndex();
-    }
-  }
-
-  cellId = SiCellId(newPhiIndex, newEtaIndex);
-  return cell;
-}
-
-	
-	   
-std::shared_ptr<const PixelDiodeMatrix>
-PixelDiodeMatrix::positionOfCell(const SiCellId & cellId, Amg::Vector2D & position) const
-
-  /// Description.  
-  /// Overview of algoritm:
-  ///
-  ///  - It starts with the position of the bottom left corner of the cell.
-  ///    For the full matrix this is (-halfwidth,-halflength)
-  ///  - It first checks if is in the lower cell (if it exists).
-  ///  - If not it determines the bottom edge of the cell by multiplying the cell
-  ///    number by the pitch.
-  ///  - If it is beyond the range of the middle cells it is taken as being in 
-  ///    the upper cell.
-  ///  - This position is then passed recursively to the same method until it
-  ///    reaches a single cell.
-  ///  - At the end the 2D position is then transformed to the position
-  ///    relative to the module center.
-
-{
-  using Trk::distPhi;
-  using Trk::distEta;
-
-  if (m_singleCell) {
-    position[distPhi] += 0.5*m_phiWidth;
-    position[distEta] += 0.5*m_etaWidth;
-    return shared_from_this();
-  }
-
-  int relIndex = 0; // Relative index along m_direction
-  double pitch = 0;
-  int middleCells = 0;
-  double startPos = 0;
-
-  if (m_direction == phiDir) {
-
-    relIndex = cellId.phiIndex();
-    pitch = m_middleCells->phiWidth();
-    middleCells = m_middleCells->phiCells();
-    
-    if (m_lowerCell) {
-      if (relIndex < m_lowerCell->phiCells()) {
-	return m_lowerCell->positionOfCell(cellId, position);
-      } else {
-	relIndex -=  m_lowerCell->phiCells();
-	startPos +=  m_lowerCell->phiWidth();
-      }
-    } 
-
-  } else { // etaDir
-
-    relIndex = cellId.etaIndex();
-    pitch = m_middleCells->etaWidth();
-    middleCells = m_middleCells->etaCells();
-
-    if (m_lowerCell) {
-      if (relIndex < m_lowerCell->etaCells()) {
-	return m_lowerCell->positionOfCell(cellId, position);
-      } else {
-	relIndex -=  m_lowerCell->etaCells();
-	startPos +=  m_lowerCell->etaWidth();
-      }
-    }
-  } 
-
-  int index = relIndex / middleCells;
-  if (index > m_numCells) index = m_numCells;
-  relIndex -= index * middleCells;
-  startPos += index * pitch;
-
-  std::shared_ptr<const PixelDiodeMatrix> nextCell = nullptr;
-
-  if (m_upperCell && (index == m_numCells)) { 
-    // We are in the upper cell. 
-    nextCell = m_upperCell;
-  } else {
-    // We are in the middle cells
-    nextCell = m_middleCells;
-  }
-
-  std::shared_ptr<const PixelDiodeMatrix> cell = nullptr;
-  if (m_direction == phiDir) {
-    SiCellId relId(relIndex,cellId.etaIndex());
-    position[distPhi] += startPos;
-    cell = nextCell->positionOfCell(relId, position);
-  } else {
-    SiCellId relId(cellId.phiIndex(),relIndex);
-    position[distEta] += startPos;
-    cell = nextCell->positionOfCell(relId, position);
-  }    
-  
-  return cell;
-}
-
-} // end namespace
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelModuleDesign.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelModuleDesign.cxx
deleted file mode 100755
index 3ff60a34d60..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelModuleDesign.cxx
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelModuleDesign.cxx
-//   Implementation file for class PixelModuleDesign
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-// Version 1.9 18/03/2002 Alessandro Fornaini
-// Modified: Grant Gorfine
-///////////////////////////////////////////////////////////////////
-
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
-#include "Identifier/Identifier.h"
-#include "InDetReadoutGeometry/SiCellId.h"
-#include "InDetReadoutGeometry/SiReadoutCellId.h"
-#include "TrkSurfaces/RectangleBounds.h"
-
-#include <cmath>
-
-namespace InDetDD {
-
-using std::abs;
-
-// Constructor with parameters:
-
-PixelModuleDesign::PixelModuleDesign(const double thickness,
-				     const int circuitsPerColumn,
-				     const int circuitsPerRow,
-				     const int cellColumnsPerCircuit,
-				     const int cellRowsPerCircuit,
-				     const int diodeColumnsPerCircuit,
-				     const int diodeRowsPerCircuit,
-				     std::shared_ptr<const PixelDiodeMatrix> matrix,
-				     InDetDD::CarrierType carrierType,
-				     int readoutSide,
-				     bool is3D) :
-
-  SiDetectorDesign(thickness, 
-		   true, true, true, // phi,eta,depth axes symmetric
-		   carrierType,
-		   readoutSide),
-  m_diodeMap(matrix),
-  m_readoutScheme(circuitsPerColumn,circuitsPerRow,
-		  cellColumnsPerCircuit,cellRowsPerCircuit,
-		  diodeColumnsPerCircuit,diodeRowsPerCircuit),
-  m_bounds(),
-  m_is3D(is3D)
-{
-}
-
-// Returns distance to nearest detector edge 
-// +ve = inside
-// -ve = outside
-void
-PixelModuleDesign::distanceToDetectorEdge(const SiLocalPosition & localPosition,
-					  double & etaDist, double & phiDist) const
-{ 
-  // This assume element is centered at 0,0 
-  // As the calculation is symmetric around 0,0 we only have to test it for one side.
-  double xEta = abs(localPosition.xEta());
-  double xPhi = abs(localPosition.xPhi());
-
-  double xEtaEdge = 0.5*length();
-  double xPhiEdge = 0.5*width();
-
-  // Distance to top/bottom
-  etaDist = xEtaEdge - xEta;
-  
-  // Distance to right/left edge
-  phiDist = xPhiEdge - xPhi;
-
-}
- 
-SiDiodesParameters PixelModuleDesign::parameters(const SiCellId & cellId) const
-{
-  return m_diodeMap.parameters(cellId);
-}
-
-SiLocalPosition PixelModuleDesign::localPositionOfCell(const SiCellId & cellId) const
-{
-  return m_diodeMap.parameters(cellId).centre(); 
-}
-
-
-// Helper method for stereo angle computation
-HepGeom::Vector3D<double> PixelModuleDesign::phiMeasureSegment(const SiLocalPosition&) const
-{
-  HepGeom::Vector3D<double> segment;
-  segment[etaAxis()]=1;
-  return segment;
-}
-
-// Special method for SCT (irrelevant here):
-std::pair<SiLocalPosition,SiLocalPosition> PixelModuleDesign::endsOfStrip(const SiLocalPosition &position) const
-{
-  return std::pair<SiLocalPosition,SiLocalPosition>(position,position);
-}
- 
-  
-// Methods to calculate length of a module
-double PixelModuleDesign::length() const
-{
-  return m_diodeMap.length();  
-}
-
-// Methods to calculate average width of a module
-double PixelModuleDesign::width() const
-{
-  return m_diodeMap.width();
-}
-
-// Methods to calculate minimum width of a module
-double PixelModuleDesign::minWidth() const
-{
-  return width();
-}
-
-// Methods to calculate maximum width of a module
-double PixelModuleDesign::maxWidth() const
-{
-  return width();
-}
-
-
-// Method to calculate eta width from a column range
-double PixelModuleDesign::widthFromColumnRange(const int colMin, const int colMax) const 
-{
-  SiCellId idMin(0, colMin);
-  SiCellId idMax(0, colMax);
-  
-  double minEta = parameters(idMin).xEtaMin(); 
-  double maxEta = parameters(idMax).xEtaMax();
-  
-  return fabs(maxEta-minEta);
-}
-
-// Method to calculate phi width from a row range
-double PixelModuleDesign::widthFromRowRange(const int rowMin, const int rowMax) const 
-{
-
-  SiCellId idMin(rowMin, 0);
-  SiCellId idMax(rowMax, 0);
-  double minPhi = parameters(idMin).xPhiMin();
-  double maxPhi = parameters(idMax).xPhiMax(); 
-
-  return fabs(maxPhi-minPhi);
-}
-
-// Pitch in phi direction
-double 
-PixelModuleDesign::phiPitch() const
-{
-  // Average pitch. 
-  return width() / rows();
-}
-
-// Pitch in phi direction
-double 
-PixelModuleDesign::phiPitch(const SiLocalPosition &) const
-{
-  // Cheat since we know its constant.
-  return phiPitch();
-}
-
-// Pitch in eta direction
-double 
-PixelModuleDesign::etaPitch() const
-{
-  // Average pitch
-  return length() / columns();
-}
-
-SiCellId PixelModuleDesign::cellIdOfPosition(const SiLocalPosition & localPosition) const
-{
-  return m_diodeMap.cellIdOfPosition(localPosition);
-}
-
-
-int PixelModuleDesign::numberOfConnectedCells(const SiReadoutCellId & readoutId) const
-{
-  return m_readoutScheme.numberOfConnectedCells(readoutId);
-}
-
-SiCellId 
-PixelModuleDesign::connectedCell(const SiReadoutCellId & readoutId, int number) const
-{
-  return m_readoutScheme.connectedCell(readoutId, number);
-}
-
-SiCellId 
-PixelModuleDesign::gangedCell(const SiCellId & cellId) const
-{
-  return m_readoutScheme.gangedCell(cellId);  
-}
-
-SiReadoutCellId
-PixelModuleDesign::readoutIdOfCell(const SiCellId & cellId) const
-{
-  return m_readoutScheme.readoutIdOfCell(cellId);
-}
-
-
-SiReadoutCellId 
-PixelModuleDesign::readoutIdOfPosition(const SiLocalPosition & localPos) const
-{
-  return m_readoutScheme.readoutIdOfCell(m_diodeMap.cellIdOfPosition(localPos));
-}
-
-// Given row and column index of diode, returns position of diode center
-// ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId & cellId) or 
-// rawLocalPositionOfCell method in SiDetectorElement.
-// DEPRECATED (but used in numerous places)
-SiLocalPosition PixelModuleDesign::positionFromColumnRow(const int column, const int row) const
-{
-  return localPositionOfCell(SiCellId(row,column));
-}
- 
-
-const Trk::SurfaceBounds & 
-PixelModuleDesign::bounds() const
-{
-  // We create on demand as width and length are 0 when PixeModuleDesign first gets
-  // created.
-  if (not m_bounds) m_bounds.set(std::make_unique<Trk::RectangleBounds>(0.5*width(), 0.5*length()));
-  return *m_bounds;
-}
-
-
-
-void PixelModuleDesign::setGeneralLayout()
-{
-  m_diodeMap.setGeneralLayout();
-}
-
-SiCellId 
-PixelModuleDesign::cellIdInRange(const SiCellId & cellId) const
-{
-  return m_diodeMap.cellIdInRange(cellId);
-}
-
-
-} // namespace InDetDD
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelMultipleConnection1D.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelMultipleConnection1D.cxx
deleted file mode 100755
index d2f6d11c815..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelMultipleConnection1D.cxx
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelMultipleConnection1D.cxx 
-//   Implementation file for class PixelMultipleConnection1D
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-// Version 1.1 05/04/2001 David Calvet
-// 06/02/2008 Grant Gorfine
-///////////////////////////////////////////////////////////////////
-
-#include "InDetReadoutGeometry/PixelMultipleConnection1D.h"
-#include <iostream>
-
-namespace InDetDD {
-
-// Constructor with parameters:
-PixelMultipleConnection1D::PixelMultipleConnection1D(const int lowerIndex,
-						     const std::vector<int> &connections) 
-  : m_lowerDiode(0),
-    m_upperDiode(-1),
-    m_lowerReadout(0),
-    m_upperReadout(-1)
-{
-  set(lowerIndex, connections);
-}
-
-PixelMultipleConnection1D::PixelMultipleConnection1D() 
-  : m_lowerDiode(0),
-    m_upperDiode(-1),
-    m_lowerReadout(0),
-    m_upperReadout(-1)
-{}
- 
-void
-PixelMultipleConnection1D::set(const int lowerIndex,
-			       const std::vector<int> &connections) 
-{
-
-  // extract lower and upper diode and readout cell numbers from connections vector
-  bool firstDiode = true;
-  bool firstReadout = true;
-  for(unsigned int index = 0; index < connections.size(); ++index) {
-    int readout = connections[index];
-    int diode = lowerIndex + index;
-    if (firstDiode && readout != diode) {
-      m_lowerDiode = diode; 
-      m_upperDiode = diode; 
-      firstDiode = false;
-    }
-    if (firstReadout) {
-      m_lowerReadout=readout;
-      m_upperReadout=readout;
-      firstReadout = false;
-    }
-    if (readout<m_lowerReadout) m_lowerReadout=readout;
-    if (readout>m_upperReadout) m_upperReadout=readout;
-    if (readout != diode && diode < m_lowerDiode) m_lowerDiode = diode; 
-    if (readout != diode && diode > m_upperDiode) m_upperDiode = diode; 
-  }
-
-  // Fource readout range to be include diode range (this is generally already the case)
-  if (m_lowerReadout > m_lowerDiode) m_lowerReadout = m_lowerDiode;
-  if (m_upperReadout < m_upperDiode) m_upperReadout = m_upperDiode;
-
-  m_diodeToReadout.resize(m_upperDiode - m_lowerDiode + 1);
-  m_readoutToDiode.resize(m_upperReadout - m_lowerReadout + 1);
-
-  // First fill primary cell. ie diode and readout the same.
-  for(unsigned int index = 0; index < connections.size(); ++index) {
-    int readout = connections[index];
-    int diode = lowerIndex + index;
-    if (readout == diode)  m_readoutToDiode[readout-m_lowerReadout].push_back(diode);
-  }
-
-  
-  // Now the rest of readoutToDiode ie diode and readout not the same.
-  // Fill also diodeToReadout
-  for(unsigned int index = 0; index < connections.size(); ++index) {
-    int readout = connections[index];
-    int diode = lowerIndex + index;
-    if (readout != diode)  m_readoutToDiode[readout - m_lowerReadout].push_back(diode);
-    if (diode >= m_lowerDiode && diode <= m_upperDiode) m_diodeToReadout[diode - m_lowerDiode] = readout;
-  }
-
-  // Created ganged map. If the diode is ganged it points to the other diode.
-  m_diodeGanged.resize(m_upperReadout - m_lowerReadout + 1);
-  for(int iDiode = m_lowerReadout; iDiode <=  m_upperReadout; iDiode++) {
-    // Fill with the same index which indicates its not ganged.
-    m_diodeGanged[iDiode - m_lowerReadout] = iDiode;
-    int readout = iDiode;
-    if (!outsideDiode(iDiode)) readout = readoutOfDiode(iDiode);
-    if (numberOfConnectedCells(readout) >= 2) {
-      int cell0 = connectedCell(readout, 0);
-      int cell1 = connectedCell(readout, 1);
-      if (iDiode == cell0) {
-	m_diodeGanged[iDiode - m_lowerReadout] = cell1;
-      } else {
-	m_diodeGanged[iDiode - m_lowerReadout] = cell0;
-      }
-    }
-  }
-
-  // For debugging only
-  //debugPrintout();
-}
-
-void PixelMultipleConnection1D::debugPrintout() 
-{
-  // Debug printout
-  std::cout << "m_lowerDiode = " << m_lowerDiode << std::endl;
-  std::cout << "m_upperDiode = " << m_upperDiode << std::endl;
-  std::cout << "m_lowerReadout = " << m_lowerReadout << std::endl;
-  std::cout << "m_upperReadout = " << m_upperReadout << std::endl;
-  std::cout << "m_readoutToDiode: ";
-  for (unsigned int i = 0; i < m_readoutToDiode.size(); i++) {
-    std::cout << "(" << m_lowerReadout + i << ": ";
-    for (unsigned int j = 0; j < m_readoutToDiode[i].size(); j++) {
-      std::cout << m_readoutToDiode[i][j] << " ";
-    }
-    std::cout << ") ";
-  }
-  std::cout << std::endl;
-  
-  for (unsigned int i = 0; i < m_diodeToReadout.size(); i++) {
-    std::cout << "(" << m_lowerDiode + i << ": " << m_diodeToReadout[i] << ") ";
-  }
-  std::cout << std::endl;
-  
-  for (unsigned int i = 0; i < m_diodeGanged.size(); i++) {
-    std::cout << "(" << m_lowerReadout + i << ": " << m_diodeGanged[i] << ") ";
-  }
-  std::cout << std::endl;
-}
-
-  
-
-} // namespace InDetDD
diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelReadoutScheme.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelReadoutScheme.cxx
deleted file mode 100755
index e0e80ff52f8..00000000000
--- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelReadoutScheme.cxx
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-///////////////////////////////////////////////////////////////////
-// PixelReadoutScheme.cxx
-//   Implementation file for class PixelReadoutScheme
-///////////////////////////////////////////////////////////////////
-// (c) ATLAS Pixel Detector software
-///////////////////////////////////////////////////////////////////
-// Version 2.1 08/06/2001 David Calvet
-// Modified: Grant Gorfine
-///////////////////////////////////////////////////////////////////
-
-#include "InDetReadoutGeometry/PixelReadoutScheme.h"
-#include "InDetReadoutGeometry/SiCellId.h"
-#include "InDetReadoutGeometry/SiReadoutCellId.h"
-
-namespace InDetDD {
-
-// Constructor with parameters:
-PixelReadoutScheme::PixelReadoutScheme(const int circuitsPerColumn,
-				       const int circuitsPerRow,
-				       const int cellColumnsPerCircuit,
-				       const int cellRowsPerCircuit,
-				       const int diodeColumnsPerCircuit,
-				       const int diodeRowsPerCircuit) :
-  m_numberOfCircuits(circuitsPerColumn*circuitsPerRow),
-  m_columnsPerCircuit(cellColumnsPerCircuit),
-  m_rowsPerCircuit(cellRowsPerCircuit),
-  m_columns(circuitsPerRow*diodeColumnsPerCircuit),
-  m_rows(circuitsPerColumn*diodeRowsPerCircuit)
-{}
-
-
-
-// Number of cells connected to this readout. 2 means its ganged.
-int 
-PixelReadoutScheme::numberOfConnectedCells(const SiReadoutCellId & readoutId) const
-{
-  if (!readoutId.isValid()) return 0;
-  
-  // Do quick check to see if it is outside ganged pixel range.
-  int phiIndex = readoutId.phiIndex();
-  if (m_rowConnections.outsideReadout(phiIndex)) return 1;
-  
-  return m_rowConnections.numberOfConnectedCells(phiIndex);
-  
-}
-
-// Id of diodes connected to this readout. 0 is the primary cell.
-SiCellId 
-PixelReadoutScheme::connectedCell(const SiReadoutCellId & readoutId, unsigned int number) const
-{
-  if (!readoutId.isValid()) return SiCellId();
-  
-  // Do quick check to see if it is outside ganged pixel range.
-  int phiIndex = readoutId.phiIndex();
-  if (m_rowConnections.outsideReadout(phiIndex)) return readoutId;
-
-  int numConnected = m_rowConnections.numberOfConnectedCells(phiIndex);
-  if (!numConnected || static_cast<int>(number) >= numConnected) return SiCellId();
-
-  int newPhiIndex = m_rowConnections.connectedCell(phiIndex, number);
-  return SiCellId(newPhiIndex, readoutId.etaIndex());
-}  
-
-// Id of the readout cell for this diode.
-SiReadoutCellId
-PixelReadoutScheme::readoutIdOfCell(const SiCellId & cellId) const
-{
-  if (!cellId.isValid()) return SiReadoutCellId();
-
-  int phiIndex = cellId.phiIndex();
-  int newPhiIndex = phiIndex;
-  if (!m_rowConnections.outsideDiode(phiIndex)) {
-    newPhiIndex = m_rowConnections.readoutOfDiode(phiIndex);
-  } 
-  
-  return SiReadoutCellId(newPhiIndex, cellId.etaIndex()); 
-
-}
-
-SiCellId
-PixelReadoutScheme::gangedCell(const SiCellId & cellId) const
-{
-  if (!cellId.isValid()) return cellId;
-  int phiIndex = cellId.phiIndex();
-  if (m_rowConnections.outsideReadout(phiIndex)) return SiCellId(); // Invalid ID
-  int newPhiIndex = m_rowConnections.gangedCell(phiIndex); 
-  if (newPhiIndex == phiIndex) return SiCellId(); // Invalid ID
-  return SiCellId(newPhiIndex, cellId.etaIndex());
-}
-
-
-void PixelReadoutScheme::addMultipleRowConnection(const int lowerIndex,
-						  const std::vector<int> &connections)
-{
- 
-  m_rowConnections.set(lowerIndex, connections);
-}
-
-
-} // namespace InDetDD
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/CMakeLists.txt b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/CMakeLists.txt
index 586366eb529..2cfa3cf3e04 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/CMakeLists.txt
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/CMakeLists.txt
@@ -44,6 +44,7 @@ atlas_depends_on_subdirs(
    Event/EventPrimitives
    InnerDetector/InDetDetDescr/InDetIdentifier
    InnerDetector/InDetDetDescr/InDetReadoutGeometry
+   InnerDetector/InDetDetDescr/PixellReadoutGeometry
    MuonSpectrometer/MuonDetDescr/MuonAGDDDescription
    MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry
    MuonSpectrometer/MuonIdHelpers
@@ -123,7 +124,7 @@ foreach( name CscMcDataCnv_p1_test CscSimDataCnv_p1_test
       SOURCES test/${name}.cxx
       LINK_LIBRARIES ${GEOMODELCORE_LIBRARIES} GaudiKernel TrkSurfaces TrkEventTPCnv TestTools
       StoreGateLib TPTools AGDDKernel AtlasDetDescr 
-      IdDict IdDictDetDescr IdDictParser InDetIdentifier InDetReadoutGeometry
+      IdDict IdDictDetDescr IdDictParser InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry
       MuonAGDDDescription MuonReadoutGeometry MuonIdHelpersLib
       TrkEventPrimitives TrkPseudoMeasurementOnTrack MuonEventTPCnv AthenaKernel
       LOG_IGNORE_PATTERN "MultiRange built successfully|element hash max"
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/test/make_dd.icc b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/test/make_dd.icc
index 265dfe3e4ec..c1589ca24c6 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/test/make_dd.icc
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/test/make_dd.icc
@@ -18,7 +18,7 @@
 #include "MuonReadoutGeometry/TgcReadoutElement.h"
 #include "MuonReadoutGeometry/sTgcReadoutElement.h"
 #include "MuonReadoutGeometry/MMReadoutElement.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 #include "InDetReadoutGeometry/TRT_DetectorManager.h"
 #include "IdDictDetDescr/IdDictManager.h"
diff --git a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
index 93c1417b49c..e34fc393bf5 100644
--- a/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
+++ b/Reconstruction/iPat/iPatTrackFinder/CMakeLists.txt
@@ -19,6 +19,7 @@ atlas_depends_on_subdirs( PUBLIC
                           PRIVATE
                           InnerDetector/InDetConditions/InDetBeamSpotService
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           MagneticField/MagFieldInterfaces
                           Reconstruction/iPat/iPatGeometry
                           Reconstruction/iPat/iPatTrackParameters
@@ -41,7 +42,7 @@ atlas_add_component( iPatTrackFinder
                      src/TrackFinder.cxx
                      src/TrackManager.cxx
                      src/components/*.cxx
-                     LINK_LIBRARIES AthenaBaseComps Identifier EventPrimitives GaudiKernel InDetPrepRawData iPatInterfaces iPatTrack InDetReadoutGeometry MagFieldInterfaces iPatGeometry iPatTrackParameters iPatUtility TrkPrepRawData TrkSpacePoint VxVertex EventContainers)
+                     LINK_LIBRARIES AthenaBaseComps Identifier EventPrimitives GaudiKernel InDetPrepRawData iPatInterfaces iPatTrack InDetReadoutGeometry PixelReadoutGeometry MagFieldInterfaces iPatGeometry iPatTrackParameters iPatUtility TrkPrepRawData TrkSpacePoint VxVertex EventContainers)
 
 # Install files from the package:
 atlas_install_headers( iPatTrackFinder )
diff --git a/Reconstruction/iPat/iPatTrackFinder/src/FinderTolerances.cxx b/Reconstruction/iPat/iPatTrackFinder/src/FinderTolerances.cxx
index b2842186ef9..9f461a77650 100755
--- a/Reconstruction/iPat/iPatTrackFinder/src/FinderTolerances.cxx
+++ b/Reconstruction/iPat/iPatTrackFinder/src/FinderTolerances.cxx
@@ -12,7 +12,7 @@
 
 #include "GaudiKernel/Incident.h"
 #include "GaudiKernel/SystemOfUnits.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "MagFieldInterfaces/IMagFieldSvc.h"
 #include "iPatTrackFinder/FinderTolerances.h"
 #include "iPatUtility/VertexRegion.h"
diff --git a/Tracking/Acts/ActsGeometry/CMakeLists.txt b/Tracking/Acts/ActsGeometry/CMakeLists.txt
index 54fc8386ae0..5901df1655c 100755
--- a/Tracking/Acts/ActsGeometry/CMakeLists.txt
+++ b/Tracking/Acts/ActsGeometry/CMakeLists.txt
@@ -9,6 +9,7 @@ atlas_depends_on_subdirs( PUBLIC
                           DetectorDescription/Identifier
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           Control/AthenaBaseComps
                           AthenaKernel
                           DetectorDescription/GeoModel/GeoModelUtilities
diff --git a/Tracking/Acts/ActsGeometry/src/ActsAlignmentCondAlg.cxx b/Tracking/Acts/ActsGeometry/src/ActsAlignmentCondAlg.cxx
index bfde8c7b4d3..bc59d59d1c3 100644
--- a/Tracking/Acts/ActsGeometry/src/ActsAlignmentCondAlg.cxx
+++ b/Tracking/Acts/ActsGeometry/src/ActsAlignmentCondAlg.cxx
@@ -11,7 +11,7 @@
 #include "GaudiKernel/EventIDRange.h"
 #include "GaudiKernel/ICondSvc.h"
 #include "GeoModelKernel/GeoAlignableTransform.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 #include "InDetReadoutGeometry/TRT_DetectorManager.h"
 #include "StoreGate/StoreGateSvc.h"
diff --git a/Tracking/Acts/ActsGeometry/src/GeomShiftCondAlg.cxx b/Tracking/Acts/ActsGeometry/src/GeomShiftCondAlg.cxx
index 0d83ab11578..cdc13680051 100644
--- a/Tracking/Acts/ActsGeometry/src/GeomShiftCondAlg.cxx
+++ b/Tracking/Acts/ActsGeometry/src/GeomShiftCondAlg.cxx
@@ -11,7 +11,7 @@
 #include "EventInfo/EventInfo.h"
 #include "EventInfo/EventID.h"
 #include "GeoModelKernel/GeoAlignableTransform.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 #include "InDetReadoutGeometry/TRT_DetectorManager.h"
 #include "GeoPrimitives/CLHEPtoEigenConverter.h"
diff --git a/Trigger/TrigFTK/FTK_DataProviderSvc/CMakeLists.txt b/Trigger/TrigFTK/FTK_DataProviderSvc/CMakeLists.txt
index 67b020acafa..4c829b0dcf3 100644
--- a/Trigger/TrigFTK/FTK_DataProviderSvc/CMakeLists.txt
+++ b/Trigger/TrigFTK/FTK_DataProviderSvc/CMakeLists.txt
@@ -34,6 +34,7 @@ atlas_depends_on_subdirs( PUBLIC
                           InnerDetector/InDetConditions/PixelConditionsTools
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetRecTools/InDetRecToolInterfaces
                           Tracking/TrkEvent/TrkEventPrimitives
                           Tracking/TrkEvent/TrkParameters
@@ -60,12 +61,12 @@ atlas_add_library( FTK_DataProviderSvcLib
                    PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
                    LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps xAODTracking GaudiKernel InDetPrepRawData InDetRIO_OnTrack TrkTrack FTK_DataProviderInterfaces TrigFTK_RawData StoreGateLib SGtests
-                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} ${EIGEN_LIBRARIES} AtlasDetDescr GeoPrimitives IRegionSelector RoiDescriptor EventInfo GeneratorObjects InDetIdentifier InDetReadoutGeometry InDetRecToolInterfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTrackSummary TrkTruthData TrkFitterInterfaces TrkVertexFitterInterfaces  TrkFitterUtils TrkToolInterfaces PixelConditionsData)
+                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} ${EIGEN_LIBRARIES} AtlasDetDescr GeoPrimitives IRegionSelector RoiDescriptor EventInfo GeneratorObjects InDetIdentifier InDetReadoutGeometry PixelReadoutGeometrt InDetRecToolInterfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTrackSummary TrkTruthData TrkFitterInterfaces TrkVertexFitterInterfaces  TrkFitterUtils TrkToolInterfaces PixelConditionsData)
 
 atlas_add_component( FTK_DataProviderSvc
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} ${EIGEN_LIBRARIES} AthenaBaseComps StoreGateLib SGtests xAODTracking GaudiKernel InDetPrepRawData InDetRIO_OnTrack TrkTrack FTK_DataProviderInterfaces TrigFTK_RawData AtlasDetDescr GeoPrimitives IRegionSelector RoiDescriptor EventInfo GeneratorObjects InDetIdentifier InDetReadoutGeometry InDetRecToolInterfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTrackSummary TrkTruthData TrkFitterInterfaces TrkVertexFitterInterfaces TrkFitterUtils TrkToolInterfaces FTK_DataProviderSvcLib PixelConditionsData)
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} ${EIGEN_LIBRARIES} AthenaBaseComps StoreGateLib SGtests xAODTracking GaudiKernel InDetPrepRawData InDetRIO_OnTrack TrkTrack FTK_DataProviderInterfaces TrigFTK_RawData AtlasDetDescr GeoPrimitives IRegionSelector RoiDescriptor EventInfo GeneratorObjects InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetRecToolInterfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTrackSummary TrkTruthData TrkFitterInterfaces TrkVertexFitterInterfaces TrkFitterUtils TrkToolInterfaces FTK_DataProviderSvcLib PixelConditionsData)
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/Trigger/TrigFTK/FTK_DataProviderSvc/src/FTK_DataProviderSvc.cxx b/Trigger/TrigFTK/FTK_DataProviderSvc/src/FTK_DataProviderSvc.cxx
index d69956cb9dd..04f9d71d1ee 100644
--- a/Trigger/TrigFTK/FTK_DataProviderSvc/src/FTK_DataProviderSvc.cxx
+++ b/Trigger/TrigFTK/FTK_DataProviderSvc/src/FTK_DataProviderSvc.cxx
@@ -8,7 +8,7 @@
 #include "InDetIdentifier/PixelID.h"
 #include "StoreGate/ReadCondHandle.h"
 #include "InDetBeamSpotService/IBeamCondSvc.h"
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h"
diff --git a/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt b/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt
index c04aedccbae..9f72cb8b24a 100644
--- a/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt
+++ b/Trigger/TrigFTK/FTK_RecTools/CMakeLists.txt
@@ -34,6 +34,7 @@ atlas_depends_on_subdirs( PUBLIC
                           InnerDetector/InDetConditions/PixelConditionsData
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetDetDescr/PixelGeoModel
                           InnerDetector/InDetRecTools/SiClusterizationTool
                           Tracking/TrkDetDescr/TrkSurfaces )
@@ -50,12 +51,12 @@ atlas_add_library( FTK_RecToolsLib
                    PUBLIC_HEADERS FTK_RecTools
 		   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
 		   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES}  ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives xAODTracking TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData TrkVxEdmCnvLib TrigFTKSimLib InDetPrepRawData InDetRIO_OnTrack TrkParameters TrkToolInterfaces TrkAmbiguityProcessorLib StoreGateLib SGtests EventPrimitives InDetIdentifier InDetReadoutGeometry SiClusterizationToolLib TrkSurfaces PixelConditionsData)
+                   LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES}  ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives xAODTracking TrkTrack VxVertex FTK_DataProviderInterfaces TrigFTK_RawData TrkVxEdmCnvLib TrigFTKSimLib InDetPrepRawData InDetRIO_OnTrack TrkParameters TrkToolInterfaces TrkAmbiguityProcessorLib StoreGateLib SGtests EventPrimitives InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry SiClusterizationToolLib TrkSurfaces PixelConditionsData)
 
 atlas_add_component( FTK_RecTools
                      src/*.cxx src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
 		     PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES}  ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives xAODTracking TrkTrack VxVertex TrkVxEdmCnvLib FTK_DataProviderInterfaces TrigFTK_RawData TrigFTKSimLib TrkParameters FTK_RecToolsLib InDetPrepRawData InDetRIO_OnTrack TrkParameters TrkToolInterfaces TrkAmbiguityProcessorLib StoreGateLib SGtests EventPrimitives InDetIdentifier InDetReadoutGeometry SiClusterizationToolLib TrkSurfaces PixelConditionsData)
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES}  ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives xAODTracking TrkTrack VxVertex TrkVxEdmCnvLib FTK_DataProviderInterfaces TrigFTK_RawData TrigFTKSimLib TrkParameters FTK_RecToolsLib InDetPrepRawData InDetRIO_OnTrack TrkParameters TrkToolInterfaces TrkAmbiguityProcessorLib StoreGateLib SGtests EventPrimitives InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry SiClusterizationToolLib TrkSurfaces PixelConditionsData)
 
 
diff --git a/Trigger/TrigFTK/FTK_RecTools/src/FTK_HashIDTool.cxx b/Trigger/TrigFTK/FTK_RecTools/src/FTK_HashIDTool.cxx
index caae36097a9..9b23a9351d6 100644
--- a/Trigger/TrigFTK/FTK_RecTools/src/FTK_HashIDTool.cxx
+++ b/Trigger/TrigFTK/FTK_RecTools/src/FTK_HashIDTool.cxx
@@ -13,7 +13,7 @@
 #include "AtlasDetDescr/AtlasDetectorID.h"
 #include "InDetIdentifier/SCT_ID.h"
 #include "InDetIdentifier/PixelID.h"
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h"
diff --git a/Trigger/TrigFTK/FTK_RecTools/src/FTK_PixelClusterOnTrackTool.cxx b/Trigger/TrigFTK/FTK_RecTools/src/FTK_PixelClusterOnTrackTool.cxx
index f56b243a475..87cdc8273b6 100644
--- a/Trigger/TrigFTK/FTK_RecTools/src/FTK_PixelClusterOnTrackTool.cxx
+++ b/Trigger/TrigFTK/FTK_RecTools/src/FTK_PixelClusterOnTrackTool.cxx
@@ -12,7 +12,7 @@
 ///////////////////////////////////////////////////////////////////
 
 #include "FTK_RecTools/FTK_PixelClusterOnTrackTool.h"
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetIdentifier/PixelID.h"
 #include "TrkSurfaces/PlaneSurface.h"
 #include "EventPrimitives/EventPrimitives.h"
diff --git a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/CMakeLists.txt b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/CMakeLists.txt
index c8acfcaa426..07fd249e4f2 100644
--- a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/CMakeLists.txt
+++ b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/CMakeLists.txt
@@ -26,6 +26,7 @@ atlas_depends_on_subdirs( PUBLIC
                           InnerDetector/InDetRecEvent/InDetRIO_OnTrack
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDecr/PixelReadoutGeometry
                           Tracking/TrkEvent/TrkTrack
                           Tracking/TrkEvent/TrkTrackSummary 
                           Trigger/TrigFTK/FTK_RecToolInterfaces
@@ -40,12 +41,12 @@ atlas_add_library( TrigFTK_RawDataAlgsLib
                    PUBLIC_HEADERS TrigFTK_RawDataAlgs
                    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
                    LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel TrkEventPrimitives FTK_DataProviderInterfaces TrigFTKPool TrigFTK_RawData PileUpToolsLib TrigFTKSimLib InDetRIO_OnTrack 
-                   PRIVATE_LINK_LIBRARIES AtlasDetDescr EventInfo xAODTracking xAODTruth InDetIdentifier InDetReadoutGeometry TrkTrack TrkTrackSummary TrkToolInterfaces VxVertex PixelConditionsData )
+                   PRIVATE_LINK_LIBRARIES AtlasDetDescr EventInfo xAODTracking xAODTruth InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry TrkTrack TrkTrackSummary TrkToolInterfaces VxVertex PixelConditionsData )
 
 atlas_add_component( TrigFTK_RawDataAlgs
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps PileUpToolsLib GaudiKernel TrkEventPrimitives  FTK_DataProviderInterfaces TrigFTKPool TrigFTKSimLib InDetRIO_OnTrack TrigFTK_RawData AtlasDetDescr EventInfo xAODTracking  xAODTruth InDetIdentifier InDetReadoutGeometry TrkTrack TrkTrackSummary VxVertex TrigFTK_RawDataAlgsLib PixelConditionsData TrkToolInterfaces)
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps PileUpToolsLib GaudiKernel TrkEventPrimitives  FTK_DataProviderInterfaces TrigFTKPool TrigFTKSimLib InDetRIO_OnTrack TrigFTK_RawData AtlasDetDescr EventInfo xAODTracking  xAODTruth InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry TrkTrack TrkTrackSummary VxVertex TrigFTK_RawDataAlgsLib PixelConditionsData TrkToolInterfaces)
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTKTrackMakerMT.cxx b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTKTrackMakerMT.cxx
index 4b0c7f6c6c5..7804c07f411 100644
--- a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTKTrackMakerMT.cxx
+++ b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTKTrackMakerMT.cxx
@@ -22,7 +22,7 @@
 
 #include "InDetIdentifier/SCT_ID.h"
 #include "InDetIdentifier/PixelID.h"
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h"
diff --git a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTK_RDO_MonitorAlgo.cxx b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTK_RDO_MonitorAlgo.cxx
index 97b9db6ae4b..923b3d5880f 100644
--- a/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTK_RDO_MonitorAlgo.cxx
+++ b/Trigger/TrigFTK/TrigFTK_RawDataAlgs/src/FTK_RDO_MonitorAlgo.cxx
@@ -10,7 +10,7 @@
 #include "InDetIdentifier/PixelID.h"
 #include "InDetIdentifier/SCT_ID.h"
 
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h"
diff --git a/Trigger/TrigTools/TrigFTKTrackConverter/CMakeLists.txt b/Trigger/TrigTools/TrigFTKTrackConverter/CMakeLists.txt
index bdd94f17bba..962f4278770 100644
--- a/Trigger/TrigTools/TrigFTKTrackConverter/CMakeLists.txt
+++ b/Trigger/TrigTools/TrigFTKTrackConverter/CMakeLists.txt
@@ -23,6 +23,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Generators/GeneratorObjects
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetRecEvent/InDetRIO_OnTrack
                           Tracking/TrkEvent/TrkEventPrimitives
                           Tracking/TrkEvent/TrkParameters
@@ -38,7 +39,7 @@ atlas_add_component( TrigFTKTrackConverter
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${EIGEN_LIBRARIES} ${HEPMC_LIBRARIES} AthenaBaseComps GaudiKernel TrkFitterInterfaces TrkFitterUtils TrigFTKSimLib StoreGateLib SGtests AtlasDetDescr GeoPrimitives GeneratorObjects InDetIdentifier InDetReadoutGeometry InDetRIO_OnTrack TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTruthData PixelConditionsData)
+                     LINK_LIBRARIES ${EIGEN_LIBRARIES} ${HEPMC_LIBRARIES} AthenaBaseComps GaudiKernel TrkFitterInterfaces TrkFitterUtils TrigFTKSimLib StoreGateLib SGtests AtlasDetDescr GeoPrimitives GeneratorObjects InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetRIO_OnTrack TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkTruthData PixelConditionsData)
 
 # Install files from the package:
 atlas_install_headers( TrigFTKTrackConverter )
diff --git a/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKClusterConverterTool.cxx b/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKClusterConverterTool.cxx
index a77f682b302..f62957fb71a 100644
--- a/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKClusterConverterTool.cxx
+++ b/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKClusterConverterTool.cxx
@@ -30,7 +30,7 @@
 #include "TrigFTKTrackConverter/TrigFTKTrackConverter.h"
 #include "TrigFTKTrackConverter/TrigFTKClusterConverterTool.h"
 
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h" 
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h" 
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h" 
diff --git a/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKTrackConverter.cxx b/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKTrackConverter.cxx
index 8b53af2d99a..d03efce28b0 100644
--- a/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKTrackConverter.cxx
+++ b/Trigger/TrigTools/TrigFTKTrackConverter/src/TrigFTKTrackConverter.cxx
@@ -31,7 +31,7 @@
 #include "TrigFTKTrackConverter/TrigFTKClusterConverterTool.h"
 
 
-#include "InDetReadoutGeometry/PixelModuleDesign.h"
+#include "PixelReadoutGeometry/PixelModuleDesign.h"
 #include "InDetReadoutGeometry/SCT_ModuleSideDesign.h" 
 #include "InDetReadoutGeometry/SCT_BarrelModuleSideDesign.h" 
 #include "InDetReadoutGeometry/SCT_ForwardModuleSideDesign.h" 
diff --git a/Trigger/TrigTools/TrigInDetRecoTools/CMakeLists.txt b/Trigger/TrigTools/TrigInDetRecoTools/CMakeLists.txt
index 1276f85f0c2..d2184aac482 100644
--- a/Trigger/TrigTools/TrigInDetRecoTools/CMakeLists.txt
+++ b/Trigger/TrigTools/TrigInDetRecoTools/CMakeLists.txt
@@ -29,6 +29,7 @@ atlas_depends_on_subdirs( PUBLIC
                           InnerDetector/InDetConditions/InDetBeamSpotService
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelRedoutGeometry
                           InnerDetector/InDetRecEvent/InDetRIO_OnTrack
                           InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData
                           Tracking/TrkDetDescr/TrkSurfaces
@@ -47,7 +48,7 @@ atlas_add_component( TrigInDetRecoTools
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} AthenaBaseComps GaudiKernel InDetPrepRawData SiSpacePoint InDetRecToolInterfaces TrkSpacePoint TrkTrack TrigInDetEvent TrigInDetPattRecoEvent TrigSteeringEvent AthenaKernel GeoPrimitives IRegionSelector ByteStreamCnvSvcBaseLib EventInfo InDetIdentifier InDetReadoutGeometry InDetRIO_OnTrack SiSPSeededTrackFinderData TrkSurfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkSegment TrigTimeAlgsLib TrkEventUtils)
+                     LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} AthenaBaseComps GaudiKernel InDetPrepRawData SiSpacePoint InDetRecToolInterfaces TrkSpacePoint TrkTrack TrigInDetEvent TrigInDetPattRecoEvent TrigSteeringEvent AthenaKernel GeoPrimitives IRegionSelector ByteStreamCnvSvcBaseLib EventInfo InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetRIO_OnTrack SiSPSeededTrackFinderData TrkSurfaces TrkEventPrimitives TrkParameters TrkRIO_OnTrack TrkSegment TrigTimeAlgsLib TrkEventUtils)
 
 # Install files from the package:
 atlas_install_headers( TrigInDetRecoTools )
diff --git a/Trigger/TrigTools/TrigInDetRecoTools/src/TrigL2LayerSetPredictorTool.cxx b/Trigger/TrigTools/TrigInDetRecoTools/src/TrigL2LayerSetPredictorTool.cxx
index 0f93896df25..28fedc8e8ef 100644
--- a/Trigger/TrigTools/TrigInDetRecoTools/src/TrigL2LayerSetPredictorTool.cxx
+++ b/Trigger/TrigTools/TrigInDetRecoTools/src/TrigL2LayerSetPredictorTool.cxx
@@ -8,7 +8,7 @@
 #include "InDetIdentifier/PixelID.h"
 
 #include "InDetReadoutGeometry/SiDetectorElement.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 
 #include "TrigL2LayerSetPredictorTool.h"
diff --git a/Trigger/TrigTools/TrigOnlineSpacePointTool/CMakeLists.txt b/Trigger/TrigTools/TrigOnlineSpacePointTool/CMakeLists.txt
index c14b579defb..e039bfc686f 100644
--- a/Trigger/TrigTools/TrigOnlineSpacePointTool/CMakeLists.txt
+++ b/Trigger/TrigTools/TrigOnlineSpacePointTool/CMakeLists.txt
@@ -17,6 +17,7 @@ atlas_depends_on_subdirs( PRIVATE
                           InnerDetector/InDetConditions/SCT_ConditionsTools
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetDetDescr/PixelCabling
                           InnerDetector/InDetDetDescr/SCT_Cabling
                           InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv
@@ -44,7 +45,7 @@ atlas_add_component( TrigOnlineSpacePointTool
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps IRegionSelector InDetByteStreamErrors ByteStreamData ByteStreamData_test GaudiKernel InDetByteStreamErrors InDetIdentifier InDetReadoutGeometry SCT_CablingLib InDetRawData InDetPrepRawData SiClusterizationToolLib TrkPrepRawData TrigInDetEvent TrigSteeringEvent AtlasDetDescr ByteStreamCnvSvcBaseLib SCT_ConditionsData TrkSpacePoint TrigTimeAlgsLib PixelCablingLib )
+                     LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps IRegionSelector InDetByteStreamErrors ByteStreamData ByteStreamData_test GaudiKernel InDetByteStreamErrors InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry SCT_CablingLib InDetRawData InDetPrepRawData SiClusterizationToolLib TrkPrepRawData TrigInDetEvent TrigSteeringEvent AtlasDetDescr ByteStreamCnvSvcBaseLib SCT_ConditionsData TrkSpacePoint TrigTimeAlgsLib PixelCablingLib )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/FastPixelClusterization.h b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/FastPixelClusterization.h
index 535329ec018..fe5cc8dc6ee 100644
--- a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/FastPixelClusterization.h
+++ b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/FastPixelClusterization.h
@@ -8,7 +8,7 @@
 #include "TrkPrepRawData/PrepRawDataCLASS_DEF.h"
 #include "InDetRawData/PixelRDORawData.h"
 #include "InDetPrepRawData/PixelClusterCollection.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "Identifier/Identifier.h"
 #include "InDetCondTools/ISiLorentzAngleTool.h"
 
diff --git a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/PixelClusterCacheTool.cxx b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/PixelClusterCacheTool.cxx
index dbaa95d57af..a848d407a32 100644
--- a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/PixelClusterCacheTool.cxx
+++ b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/PixelClusterCacheTool.cxx
@@ -8,7 +8,7 @@
 #include "InDetIdentifier/PixelID.h"
 #include "Identifier/IdentifierHash.h" 
 
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 
 #include "InDetPrepRawData/SiClusterContainer.h"
 #include "InDetPrepRawData/PixelClusterCollection.h"
diff --git a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigL2LayerNumberTool.cxx b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigL2LayerNumberTool.cxx
index 4be575d6664..e96d3939d57 100644
--- a/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigL2LayerNumberTool.cxx
+++ b/Trigger/TrigTools/TrigOnlineSpacePointTool/src/TrigL2LayerNumberTool.cxx
@@ -5,7 +5,7 @@
 #include "InDetIdentifier/SCT_ID.h"
 #include "InDetIdentifier/PixelID.h" 
 #include "InDetReadoutGeometry/SiDetectorElement.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 
 #include "TrigL2LayerNumberTool.h"
diff --git a/graphics/GeometryJiveXML/CMakeLists.txt b/graphics/GeometryJiveXML/CMakeLists.txt
index 8e57bf2cbdd..01e7a782a00 100644
--- a/graphics/GeometryJiveXML/CMakeLists.txt
+++ b/graphics/GeometryJiveXML/CMakeLists.txt
@@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC
                           GaudiKernel
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           LArCalorimeter/LArGeoModel/LArReadoutGeometry
                           MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry
                           MuonSpectrometer/MuonIdHelpers
@@ -28,7 +29,7 @@ atlas_add_component( GeometryJiveXML
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps JiveXMLLib CaloDetDescrLib StoreGateLib SGtests GaudiKernel InDetIdentifier InDetReadoutGeometry LArReadoutGeometry MuonReadoutGeometry MuonIdHelpersLib TileDetDescr )
+                     LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps JiveXMLLib CaloDetDescrLib StoreGateLib SGtests GaudiKernel InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry LArReadoutGeometry MuonReadoutGeometry MuonIdHelpersLib TileDetDescr )
 
 # Install files from the package:
 atlas_install_headers( GeometryJiveXML )
diff --git a/graphics/GeometryJiveXML/src/GeometryWriter.cxx b/graphics/GeometryJiveXML/src/GeometryWriter.cxx
index 709e15434f2..0c245c80154 100755
--- a/graphics/GeometryJiveXML/src/GeometryWriter.cxx
+++ b/graphics/GeometryJiveXML/src/GeometryWriter.cxx
@@ -20,7 +20,7 @@
 // #include "GeoModelKernel/GeoTube.h"
 // #include "GeoModelKernel/GeoTrd.h"
 
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 #include "InDetReadoutGeometry/SiDetectorElement.h"
 #include "InDetReadoutGeometry/SiDetectorElementCollection.h"
diff --git a/graphics/VP1/VP1Systems/VP12DGeometrySystems/CMakeLists.txt b/graphics/VP1/VP1Systems/VP12DGeometrySystems/CMakeLists.txt
index b0ff149c010..30afa263496 100644
--- a/graphics/VP1/VP1Systems/VP12DGeometrySystems/CMakeLists.txt
+++ b/graphics/VP1/VP1Systems/VP12DGeometrySystems/CMakeLists.txt
@@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC
                           DetectorDescription/IdDictDetDescr
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           LArCalorimeter/LArGeoModel/LArReadoutGeometry
                           MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry
                           MuonSpectrometer/MuonIdHelpers
@@ -30,5 +31,5 @@ atlas_add_library( VP12DGeometrySystems
                    PUBLIC_HEADERS VP12DGeometrySystems
                    INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS}
                    LINK_LIBRARIES ${EIGEN_LIBRARIES} GeoPrimitives VP1Base StoreGateLib SGtests CaloDetDescrLib MuonIdHelpersLib
-                   PRIVATE_LINK_LIBRARIES ${GEOMODELCORE_LIBRARIES} IdDictDetDescr InDetIdentifier InDetReadoutGeometry LArReadoutGeometry MuonReadoutGeometry TileDetDescr )
+                   PRIVATE_LINK_LIBRARIES ${GEOMODELCORE_LIBRARIES} IdDictDetDescr InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry LArReadoutGeometry MuonReadoutGeometry TileDetDescr )
 
diff --git a/graphics/VP1/VP1Systems/VP12DGeometrySystems/src/StoreGateGeometryReader.cxx b/graphics/VP1/VP1Systems/VP12DGeometrySystems/src/StoreGateGeometryReader.cxx
index d804f34d9cc..5fc71871065 100644
--- a/graphics/VP1/VP1Systems/VP12DGeometrySystems/src/StoreGateGeometryReader.cxx
+++ b/graphics/VP1/VP1Systems/VP12DGeometrySystems/src/StoreGateGeometryReader.cxx
@@ -14,7 +14,7 @@
 #include "GeoModelKernel/GeoPVConstLink.h"
 #include "GeoModelKernel/GeoTrd.h"
 
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 #include "InDetReadoutGeometry/SiDetectorElement.h"
 #include "InDetReadoutGeometry/SiDetectorElementCollection.h"
diff --git a/graphics/VP1/VP1Systems/VP1RawDataSystems/CMakeLists.txt b/graphics/VP1/VP1Systems/VP1RawDataSystems/CMakeLists.txt
index eb6cf5aba69..7509b5a495d 100644
--- a/graphics/VP1/VP1Systems/VP1RawDataSystems/CMakeLists.txt
+++ b/graphics/VP1/VP1Systems/VP1RawDataSystems/CMakeLists.txt
@@ -15,6 +15,7 @@ atlas_depends_on_subdirs( PUBLIC
                           GaudiKernel
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/InDetReadoutGeometry
+			  InnerDetector/InDetDetDescr/PixelReadoutGeometry
                           InnerDetector/InDetRawEvent/InDetBCM_RawData
                           InnerDetector/InDetRawEvent/InDetRawData
                           graphics/VP1/VP1HEPVis
@@ -43,5 +44,5 @@ atlas_add_library( VP1RawDataSystems VP1RawDataSystems/*.h src/*.h src/*.cxx src
                    PRIVATE_INCLUDE_DIRS ${COIN3D_INCLUDE_DIRS}
                    FILES LUCID_RawEvent/LUCID_Digit.h
                    LINK_LIBRARIES ${EIGEN_LIBRARIES} GeoPrimitives VP1Base GL
-                   PRIVATE_LINK_LIBRARIES ${COIN3D_LIBRARIES} ${GEOMODELCORE_LIBRARIES} EventPrimitives LUCID_RawEvent GaudiKernel InDetIdentifier InDetReadoutGeometry InDetBCM_RawData InDetRawData VP1HEPVis VP1Utils )
+                   PRIVATE_LINK_LIBRARIES ${COIN3D_LIBRARIES} ${GEOMODELCORE_LIBRARIES} EventPrimitives LUCID_RawEvent GaudiKernel InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetBCM_RawData InDetRawData VP1HEPVis VP1Utils )
 
diff --git a/graphics/VP1/VP1Systems/VP1RawDataSystems/src/VP1RawDataHandle_PixelRDO.cxx b/graphics/VP1/VP1Systems/VP1RawDataSystems/src/VP1RawDataHandle_PixelRDO.cxx
index aca8c915228..9ee440a40a8 100644
--- a/graphics/VP1/VP1Systems/VP1RawDataSystems/src/VP1RawDataHandle_PixelRDO.cxx
+++ b/graphics/VP1/VP1Systems/VP1RawDataSystems/src/VP1RawDataHandle_PixelRDO.cxx
@@ -17,7 +17,7 @@
 #include "VP1Utils/VP1DetInfo.h"
 #include "VP1Utils/VP1LinAlgUtils.h"
 
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SiDetectorElement.h"
 #include "InDetRawData/PixelRDORawData.h"
 #include "InDetIdentifier/PixelID.h"
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/CMakeLists.txt b/graphics/VP1/VP1Systems/VP1TrackSystems/CMakeLists.txt
index 3a7af0a14da..044e0424a2e 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/CMakeLists.txt
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/CMakeLists.txt
@@ -29,6 +29,7 @@ atlas_depends_on_subdirs(
    ForwardDetectors/ForwardSimulation/ForwardRegion_SimEv
    InnerDetector/InDetDetDescr/InDetIdentifier
    InnerDetector/InDetDetDescr/InDetReadoutGeometry
+   InnerDetector/InDetDetDescr/PixelReadoutGeometry
    InnerDetector/InDetRecEvent/InDetPrepRawData
    InnerDetector/InDetRecEvent/InDetRIO_OnTrack
    InnerDetector/InDetSimEvent
@@ -83,7 +84,7 @@ atlas_add_library( VP1TrackSystems VP1TrackSystems/*.h src/*.cxx
    MuonIdHelpersLib MuonRecHelperToolsLib Qt5::Core Qt5::Gui
    PRIVATE_LINK_LIBRARIES ${COIN3D_LIBRARIES} ${CLHEP_LIBRARIES}
    ${HEPMC_LIBRARIES} AthContainers AtlasDetDescr EventPrimitives
-   ForwardRegion_SimEv InDetIdentifier InDetReadoutGeometry InDetPrepRawData
+   ForwardRegion_SimEv InDetIdentifier InDetReadoutGeometry PixelReadoutGeometry InDetPrepRawData
    InDetRIO_OnTrack InDetSimEvent MuonReadoutGeometry MuonChamberT0s
    MuonPrepRawData MuonRIO_OnTrack MuonSegment MuonSimEvent Particle
    TrkDetDescrUtils TrkDetElementBase TrkVolumes TrkCompetingRIOsOnTrack
diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/SimHitHandle_SiHit.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/SimHitHandle_SiHit.cxx
index 4fda1569d55..1e4b1ca4679 100644
--- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/SimHitHandle_SiHit.cxx
+++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/SimHitHandle_SiHit.cxx
@@ -20,7 +20,7 @@
 #include "InDetSimEvent/SiHit.h"
 #include "InDetReadoutGeometry/SiDetectorElement.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetIdentifier/PixelID.h"
 #include "InDetIdentifier/SCT_ID.h"
 #include "VP1TrackSystems/VP1TrackSanity.h"
diff --git a/graphics/VP1/VP1Utils/CMakeLists.txt b/graphics/VP1/VP1Utils/CMakeLists.txt
index 4745154d507..d3b3db5f610 100644
--- a/graphics/VP1/VP1Utils/CMakeLists.txt
+++ b/graphics/VP1/VP1Utils/CMakeLists.txt
@@ -27,6 +27,7 @@ atlas_depends_on_subdirs(
    DetectorDescription/Identifier
    InnerDetector/InDetDetDescr/InDetIdentifier
    InnerDetector/InDetDetDescr/InDetReadoutGeometry
+   InnerDetector/InDetDetDescr/PixelReadoutGeometry
    InnerDetector/InDetRecEvent/InDetRIO_OnTrack
    LArCalorimeter/LArGeoModel/LArReadoutGeometry
    MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry
@@ -62,7 +63,7 @@ atlas_add_library( VP1Utils VP1Utils/*.h src/*.cxx src/*.cpp
    PRIVATE_LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${COIN3D_LIBRARIES}
    ${EIGEN_LIBRARIES} CaloIdentifier CaloTTDetDescr CxxUtils AtlasDetDescr
    GeoModelUtilities GeoSpecialShapes Identifier InDetIdentifier
-   InDetReadoutGeometry InDetRIO_OnTrack LArReadoutGeometry
+   InDetReadoutGeometry PixelReadoutGeometry InDetRIO_OnTrack LArReadoutGeometry
    MuonReadoutGeometry MuonRIO_OnTrack TileDetDescr TrkSurfaces
    TrkRIO_OnTrack VP1HEPVis )
 endif()
diff --git a/graphics/VP1/VP1Utils/src/VP1DetInfo.cxx b/graphics/VP1/VP1Utils/src/VP1DetInfo.cxx
index 3e02f9e0bb4..2c940533699 100644
--- a/graphics/VP1/VP1Utils/src/VP1DetInfo.cxx
+++ b/graphics/VP1/VP1Utils/src/VP1DetInfo.cxx
@@ -22,7 +22,7 @@
 
 #include "GeoModelKernel/GeoPVConstLink.h"
 #include "InDetReadoutGeometry/TRT_DetectorManager.h"
-#include "InDetReadoutGeometry/PixelDetectorManager.h"
+#include "PixelReadoutGeometry/PixelDetectorManager.h"
 #include "InDetReadoutGeometry/SCT_DetectorManager.h"
 //#include "InDetServMatGeoModel/InDetServMatManager.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
-- 
GitLab