diff --git a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
index 6a0b9e35717e92eabed64b111b811ddf6283c85d..cd0c9a454139d5906dd2e01ee0d1cc09b1697f76 100644
--- a/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
+++ b/Calorimeter/CaloDigiAlgs/python/CaloDigiAlgsConfig.py
@@ -1,5 +1,6 @@
 # Copyright (C) 2020-2021 CERN for the benefit of the FASER collaboration
 
+from re import VERBOSE
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 
@@ -12,9 +13,10 @@ def CaloWaveformDigitizationCfg(flags):
     acc = ComponentAccumulator()
 
     if not flags.Input.isMC:
-        return
+        return acc
 
     acc.merge(CaloWaveformDigiCfg(flags, "CaloWaveformDigiAlg"))
+    acc.merge(CaloWaveformDigitizationOutputCfg(flags))
     return acc
 
 # Return configured digitization algorithm from SIM hits
@@ -46,7 +48,8 @@ def CaloWaveformDigitizationOutputCfg(flags, **kwargs):
     ItemList = [
         "RawWaveformContainer#*"
     ]
-    acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
-    # ostream = acc.getEventAlgo("OutputStreamRDO")
-    # ostream.TakeItemsFromInput = True # Don't know what this does
+    acc.merge(OutputStreamCfg(flags, "RDO"))
+    ostream = acc.getEventAlgo("OutputStreamRDO")
+    ostream.TakeItemsFromInput = True # Copies all data from input file to output
+    ostream.ItemList += ItemList
     return acc
diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
index 718dcb4f398aa2ad110510c622dd159e81969a54..8e60aefaf9db417d6a583b2b2ee59dd279d1f05a 100644
--- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
+++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx
@@ -63,17 +63,17 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const {
   ATH_CHECK( caloHitHandle.isValid() );
   ATH_MSG_DEBUG("Found ReadHandle for CaloHitCollection " << m_caloHitContainerKey);
 
-  if (caloHitHandle->size() == 0) {
-    ATH_MSG_DEBUG("CaloHitCollection found with zero length!");
-    return StatusCode::SUCCESS;
-  }
-
   // Find the output waveform container
   SG::WriteHandle<RawWaveformContainer> waveformContainerHandle(m_waveformContainerKey, ctx);
   ATH_CHECK( waveformContainerHandle.record( std::make_unique<RawWaveformContainer>()) );
 
   ATH_MSG_DEBUG("WaveformsContainer '" << waveformContainerHandle.name() << "' initialized");
 
+  if (caloHitHandle->size() == 0) {
+    ATH_MSG_DEBUG("CaloHitCollection found with zero length!");
+    return StatusCode::SUCCESS;
+  }
+  
   // Digitise the hits
   CHECK( m_digiTool->digitise<CaloHitCollection>(caloHitHandle.ptr(),
 						  waveformContainerHandle.ptr(), m_kernel) );
diff --git a/Control/CalypsoExample/Digitization/scripts/faser_digi.py b/Control/CalypsoExample/Digitization/scripts/faser_digi.py
index b9d0708be4e7d8b5c443397c6df0826b3f95d2df..5ef818999634d592b21142b88ad2cee5c1a324f1 100755
--- a/Control/CalypsoExample/Digitization/scripts/faser_digi.py
+++ b/Control/CalypsoExample/Digitization/scripts/faser_digi.py
@@ -62,7 +62,7 @@ from CalypsoConfiguration.AllConfigFlags import ConfigFlags
 Configurable.configurableRun3Behavior = True
     
 # Flags for this job
-ConfigFlags.Input.isMC = False                   # Needed to bypass autoconfig
+ConfigFlags.Input.isMC = True                    # Needed to bypass autoconfig
 ConfigFlags.IOVDb.DatabaseInstance = "OFLP200"   # Use MC conditions for now
 
 ConfigFlags.Input.ProjectName = "mc20"
@@ -126,6 +126,12 @@ acc.merge(FaserGeometryCfg(ConfigFlags))
 from FaserSCT_Digitization.FaserSCT_DigitizationConfigNew import FaserSCT_DigitizationCfg
 acc.merge(FaserSCT_DigitizationCfg(ConfigFlags))
 
+from CaloDigiAlgs.CaloDigiAlgsConfig import CaloWaveformDigitizationCfg
+acc.merge(CaloWaveformDigitizationCfg(ConfigFlags))
+
+from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg
+acc.merge(ScintWaveformDigitizationCfg(ConfigFlags))
+
 # from WaveRecAlgs.WaveRecAlgsConfig import WaveformReconstructionCfg    
 # acc.merge(WaveformReconstructionCfg(ConfigFlags))
 
@@ -173,11 +179,11 @@ acc.merge(FaserSCT_DigitizationCfg(ConfigFlags))
 # print( acc.getEventAlgo("OutputStreamxAOD").ItemList )
 
 # Hack to avoid problem with our use of MC databases when isMC = False
-replicaSvc = acc.getService("DBReplicaSvc")
-replicaSvc.COOLSQLiteVetoPattern = ""
-replicaSvc.UseCOOLSQLite = True
-replicaSvc.UseCOOLFrontier = False
-replicaSvc.UseGeomSQLite = True
+# replicaSvc = acc.getService("DBReplicaSvc")
+# replicaSvc.COOLSQLiteVetoPattern = ""
+# replicaSvc.UseCOOLSQLite = True
+# replicaSvc.UseCOOLFrontier = False
+# replicaSvc.UseGeomSQLite = True
 
 # Configure verbosity    
 # ConfigFlags.dump()
diff --git a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
index 7c322060ab68f8580cc6b517743edf46209dee31..243e4493dd117e6758c894a7904115b3d3941ec3 100644
--- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
+++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py
@@ -21,12 +21,13 @@ def ScintWaveformDigitizationCfg(flags):
     acc = ComponentAccumulator()
 
     if not flags.Input.isMC:
-        return
+        return acc
 
     if "TB" not in flags.GeoModel.FaserVersion:
         acc.merge(ScintWaveformDigiCfg(flags, "TimingWaveformDigiAlg", "Trigger"))
     acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto"))
     acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower"))
+    acc.merge(ScintWaveformDigitizationOutputCfg(flags))
     return acc
 
 # Return configured digitization algorithm from SIM hits
@@ -58,7 +59,8 @@ def ScintWaveformDigitizationOutputCfg(flags, **kwargs):
     ItemList = [
         "RawWaveformContainer#*"
     ]
-    acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
-    # ostream = acc.getEventAlgo("OutputStreamRDO")
-    # ostream.TakeItemsFromInput = True # Don't know what this does
+    acc.merge(OutputStreamCfg(flags, "RDO"))
+    ostream = acc.getEventAlgo("OutputStreamRDO")
+    ostream.TakeItemsFromInput = True # Copies all data from input file to output
+    ostream.ItemList += ItemList
     return acc
diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
index 03c1873d11d4ecd83d2d8ad22eef07a76b7338a2..b25080419ad0a7ea64f3933a0eb3acfdfe4c7eac 100644
--- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
+++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx
@@ -64,17 +64,17 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const {
   ATH_CHECK( scintHitHandle.isValid() );
   ATH_MSG_DEBUG("Found ReadHandle for ScintHitCollection " << m_scintHitContainerKey);
 
-  if (scintHitHandle->size() == 0) {
-    ATH_MSG_DEBUG("ScintHitCollection found with zero length!");
-    return StatusCode::SUCCESS;
-  }
-
   // Find the output waveform container
   SG::WriteHandle<RawWaveformContainer> waveformContainerHandle(m_waveformContainerKey, ctx);
   ATH_CHECK( waveformContainerHandle.record( std::make_unique<RawWaveformContainer>()) );
 
   ATH_MSG_DEBUG("WaveformsContainer '" << waveformContainerHandle.name() << "' initialized");
 
+  if (scintHitHandle->size() == 0) {
+    ATH_MSG_DEBUG("ScintHitCollection found with zero length!");
+    return StatusCode::SUCCESS;
+  }
+
   // Digitise the hits
   CHECK( m_digiTool->digitise<ScintHitCollection>(scintHitHandle.ptr(),
 						  waveformContainerHandle.ptr(), m_kernel) );
diff --git a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py
index a4bd9fb2c54f97e9983106eb6743c00bb772e585..c9f267da7d9d2ba0c6bc973c3fa949b65c217ecc 100644
--- a/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py
+++ b/Tracker/TrackerDigitization/FaserSCT_Digitization/python/FaserSCT_DigitizationConfigNew.py
@@ -240,9 +240,10 @@ def FaserSCT_OutputCfg(flags):
     if flags.Digitization.TruthOutput:
         ItemList += ["TrackerSimDataCollection#*"]
         acc.merge(TruthDigitizationOutputCfg(flags))
-    acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
+    acc.merge(OutputStreamCfg(flags, "RDO"))
     ostream = acc.getEventAlgo("OutputStreamRDO")
     ostream.TakeItemsFromInput = True
+    ostream.ItemList += ItemList
     return acc