diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/SCT_Digitization/SCT_DigitizationTool.h b/InnerDetector/InDetDigitization/SCT_Digitization/SCT_Digitization/SCT_DigitizationTool.h
index 398e6863abebb757aa3e80595d5f4c2eb27f8f1c..2ceb2e7d4b9cc05e761bc214ff4e2e855299c544 100644
--- a/InnerDetector/InDetDigitization/SCT_Digitization/SCT_Digitization/SCT_DigitizationTool.h
+++ b/InnerDetector/InDetDigitization/SCT_Digitization/SCT_Digitization/SCT_DigitizationTool.h
@@ -141,6 +141,7 @@ private:
 
   std::vector<SiHitCollection*> m_hitCollPtrs;
 
+  SG::ReadHandleKey<SiHitCollection> m_hitsContainerKey{this, "InputSingleHitsName", "", "Input Single HITS name"};
   SG::WriteHandleKey<SCT_RDO_Container> m_rdoContainerKey{this, "OutputObjectName", "SCT_RDOs", "Output Object name"};
   SG::WriteHandle<SCT_RDO_Container> m_rdoContainer; //!< RDO container handle
   SG::WriteHandleKey<InDetSimDataCollection> m_simDataCollMapKey{this, "OutputSDOName", "SCT_SDO_Map", "Output SDO container name"};
diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py
index b78f88d810cdea3623e8daa4275c68764967916d..71ac7a7aecc3ca86a6eb11f00d2fb00f0f720d0d 100644
--- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py
+++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py
@@ -258,9 +258,13 @@ def SCT_DigitizationToolSplitNoMergePU(name="SCT_DigitizationToolSplitNoMergePU"
 
 def SCT_OverlayDigitizationTool(name="SCT_OverlayDigitizationTool",**kwargs):
     from OverlayCommonAlgs.OverlayFlags import overlayFlags
-    kwargs.setdefault("EvtStore", overlayFlags.evtStore())
-    kwargs.setdefault("OutputObjectName", overlayFlags.evtStore() + "+SCT_RDOs")
-    kwargs.setdefault("OutputSDOName", overlayFlags.evtStore() + "+SCT_SDO_Map")
+    if overlayFlags.isOverlayMT():
+        kwargs.setdefault("InputSingleHitsName", "SCT_Hits")
+        kwargs.setdefault("OutputObjectName", "StoreGateSvc+" + overlayFlags.sigPrefix() + "SCT_RDOs")
+        kwargs.setdefault("OutputSDOName", "StoreGateSvc+" + overlayFlags.sigPrefix() + "SCT_SDO_Map")
+    else:
+        kwargs.setdefault("OutputObjectName", overlayFlags.evtStore() + "+SCT_RDOs")
+        kwargs.setdefault("OutputSDOName", overlayFlags.evtStore() + "+SCT_SDO_Map")
     kwargs.setdefault("HardScatterSplittingMode", 0)
     return commonSCT_DigitizationConfig(name,**kwargs)
 
diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/src/SCT_DigitizationTool.cxx b/InnerDetector/InDetDigitization/SCT_Digitization/src/SCT_DigitizationTool.cxx
index 8234473e0e1f3267f55425c8a1d5e687769e535e..c97b07dc860a6152bbbc43fda4943c9a9f5260b4 100644
--- a/InnerDetector/InDetDigitization/SCT_Digitization/src/SCT_DigitizationTool.cxx
+++ b/InnerDetector/InDetDigitization/SCT_Digitization/src/SCT_DigitizationTool.cxx
@@ -107,6 +107,12 @@ StatusCode SCT_DigitizationTool::initialize() {
   } else {
     m_sct_RandomDisabledCellGenerator.disable();
   }
+  
+  // Initialize ReadHandleKey
+  if (!m_hitsContainerKey.key().empty()) {
+    ATH_MSG_INFO("Loading single input HITS");
+  }
+  ATH_CHECK(m_hitsContainerKey.initialize(!m_hitsContainerKey.key().empty()));
 
   // +++ Initialize WriteHandleKey
   ATH_CHECK(m_rdoContainerKey.initialize());
@@ -748,6 +754,23 @@ StatusCode SCT_DigitizationTool::getNextEvent() {
   //  get the container(s)
   typedef PileUpMergeSvc::TimedList<SiHitCollection>::type TimedHitCollList;
   // this is a list<pair<time_t, DataLink<SiHitCollection> >
+
+  // In case of single hits container just load the collection using read handles
+  if (!m_hitsContainerKey.key().empty()) {
+    SG::ReadHandle<SiHitCollection> hitCollection(m_hitsContainerKey);
+    if (!hitCollection.isValid()) {
+      ATH_MSG_ERROR("Could not get SCT SiHitCollection container " << hitCollection.name() << " from store " << hitCollection.store());
+      return StatusCode::FAILURE;
+    }
+
+    // create a new hits collection
+    m_thpcsi = new TimedHitCollection<SiHit>{1};
+    m_thpcsi->insert(0, hitCollection.cptr());
+    ATH_MSG_DEBUG("SiHitCollection found with " << hitCollection->size() << " hits");
+
+    return StatusCode::SUCCESS;
+  }
+
   TimedHitCollList hitCollList;
   unsigned int numberOfSiHits{0};
   if (not (m_mergeSvc->retrieveSubEvtsData(m_inputObjectName, hitCollList, numberOfSiHits).isSuccess()) and hitCollList.size() == 0) {
@@ -775,7 +798,7 @@ StatusCode SCT_DigitizationTool::getNextEvent() {
     }
     const SiHitCollection* p_collection{iColl->second};
     m_thpcsi->insert(iColl->first, p_collection);
-    ATH_MSG_DEBUG("SiTrackerHitCollection found with" << p_collection->size() << " hits"); // loop on the hit collections
+    ATH_MSG_DEBUG("SiTrackerHitCollection found with " << p_collection->size() << " hits"); // loop on the hit collections
   }
   return StatusCode::SUCCESS;
 }