diff --git a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/CMakeLists.txt b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/CMakeLists.txt
index 6339492e13648966168298c59f480ef05c1ad870..91e151492fe129b55071843e302a7558255e48ea 100644
--- a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/CMakeLists.txt
+++ b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/CMakeLists.txt
@@ -17,6 +17,7 @@ atlas_depends_on_subdirs( PUBLIC
                           InnerDetector/InDetConditions/TRT_ConditionsServices
                           InnerDetector/InDetDetDescr/InDetIdentifier
                           InnerDetector/InDetDetDescr/PixelReadoutGeometry
+			  InnerDetector/InDetDetDescr/SCT_ReadoutGeometry
                           InnerDetector/InDetDetDescr/TRT_ReadoutGeometry
                           InnerDetector/InDetRawEvent/InDetRawData
                           InnerDetector/InDetRawEvent/InDetSimData
@@ -36,7 +37,7 @@ atlas_add_component( InDetPrepRawDataToxAOD
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel AthenaBaseComps Identifier xAODTracking TRT_ConditionsServicesLib InDetIdentifier TRT_ReadoutGeometry PixelReadoutGeometry InDetRawData InDetSimData InDetPrepRawData InDetSimEvent TrkSurfaces TrkTruthData )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel AthenaBaseComps Identifier xAODTracking TRT_ConditionsServicesLib InDetIdentifier TRT_ReadoutGeometry PixelReadoutGeometry SCT_ReadoutGeometry InDetRawData InDetSimData InDetPrepRawData InDetSimEvent TrkSurfaces TrkTruthData )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
diff --git a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/SCT_PrepDataToxAOD.cxx b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/SCT_PrepDataToxAOD.cxx
index 8faa8bc6e6cf511ebf2fa0f7485cf92685c61065..c91301eb5974f2177f06c9769251260f6b0a560e 100644
--- a/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/SCT_PrepDataToxAOD.cxx
+++ b/InnerDetector/InDetEventCnv/InDetPrepRawDataToxAOD/src/SCT_PrepDataToxAOD.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -27,6 +27,7 @@
 
 #include "CLHEP/Geometry/Point3D.h"
 
+#include "SCT_ReadoutGeometry/SCT_ModuleSideDesign.h"
 
 
 /////////////////////////////////////////////////////////////////////
@@ -74,7 +75,6 @@ StatusCode SCT_PrepDataToxAOD::initialize()
     m_writeSDOs = false;
     m_writeSiHits = false;
   }
-
   return StatusCode::SUCCESS;
 }
 
@@ -439,13 +439,19 @@ std::vector<SiHit> SCT_PrepDataToxAOD::findAllHitsCompatibleWithCluster( const I
     averagePosition *= 0.5;
     Amg::Vector2D pos = de->hitLocalToLocal( averagePosition.z(), averagePosition.y() );
     InDetDD::SiCellId diode = de->cellIdOfPosition(pos);
-   
+    const InDetDD::SCT_ModuleSideDesign * sideDesign =  dynamic_cast<const InDetDD::SCT_ModuleSideDesign*>(&(de->design()));
+    int strip1d = diode.phiIndex(); //strip1d is number on a sensor going over all rows (if present)
+    int strip2d = strip1d; //strip2d is number on a given row on a sensor (so you need strip2d plus row to fully address)
+    if(sideDesign && strip1d>-1) strip2d = sideDesign->strip(strip1d); //assuming the dynamic_cast works, which it should, use the strip() method to allow rows to be taken into account (if present, otherwise strip1d and strip2d are anyway the same)                           
+      else{
+	ATH_MSG_DEBUG("Unable to convert strip1d "<<strip1d<<" for element "<<m_SCTHelper->show_to_string(clusterId)<<" at position (x,y) "<<pos.x()<<","<<pos.y()<<" - this is OK if it is a dead area, otherwise suspicious");
+	ATH_MSG_DEBUG("Element has extent (rmin,rmax,zmin,zmax,phimin,phimax) "<<de->rMin()<<","<<de->rMax()<<","<<de->zMin()<<","<<de->zMax()<<","<<de->phiMin()<<","<<de->phiMax());
+      }
+    
     for( const auto &hitIdentifier : prd->rdoList() ){
-      //if( abs( int(diode.etaIndex()) - m_SCTHelper->eta_index( hitIdentifier ) ) <=1 ) 
-      //if( abs( int(diode.phiIndex() - m_SCTHelper->phi_index( hitIdentifier ) ) <=1 ) 
-      ATH_MSG_DEBUG("Truth Strip " <<  diode.phiIndex() << " Cluster Strip " <<   m_SCTHelper->strip( hitIdentifier ) );
+      ATH_MSG_DEBUG("Truth Strip " <<  strip2d << " Cluster Strip " <<   m_SCTHelper->strip(hitIdentifier) );
 
-      if( abs( int(diode.phiIndex()) -  m_SCTHelper->strip( hitIdentifier ) ) <=1)
+      if( abs(strip2d -  m_SCTHelper->strip( hitIdentifier ) ) <=1)
       {
         multiMatchingHits.push_back(&siHit);   
         break;