diff --git a/Simulation/Digitization/python/DigiAlgConfig.py b/Simulation/Digitization/python/DigiAlgConfig.py
index 36ba4f89e7ef2935e98d26f97e395c0111b000e2..85e84c5a83c31b7ba847818104c94052e4afe63f 100644
--- a/Simulation/Digitization/python/DigiAlgConfig.py
+++ b/Simulation/Digitization/python/DigiAlgConfig.py
@@ -128,6 +128,82 @@ def getSplitInDetPileUpTools():
         PileUpToolsList += [ "TRTDigitizationToolPU" ]
     return PileUpToolsList
 
+def getSplitNoMergeInDetPileUpTools():
+    """ This is for testing the fast chain with full digitization in split PU mode without
+merging pileup
+    """
+    from AthenaCommon.DetFlags import DetFlags
+    PileUpToolsList = []
+    if DetFlags.digitize.BCM_on():
+        PileUpToolsList += [ "BCM_DigitizationTool" ]
+    if DetFlags.digitize.pixel_on():
+        PileUpToolsList += [ "PixelDigitizationTool" ]
+        PileUpToolsList += [ "PixelDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.SCT_on():
+        PileUpToolsList += [ "SCT_DigitizationTool" ]
+        PileUpToolsList += [ "SCT_DigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.TRT_on():
+        PileUpToolsList += [ "TRTDigitizationTool" ]
+        PileUpToolsList += [ "TRTDigitizationToolSplitNoMergePU" ]
+    return PileUpToolsList
+
+def getSplitNoMergeSFInDetPileUpTools():
+    """ This is for testing the fast chain with full digitization in split PU mode without
+merging pileup
+    """
+    from AthenaCommon.DetFlags import DetFlags
+    PileUpToolsList = []
+    if DetFlags.digitize.BCM_on():
+        PileUpToolsList += [ "BCM_DigitizationTool" ]
+    if DetFlags.digitize.pixel_on():
+        PileUpToolsList += [ "PixelDigitizationTool" ]
+        PileUpToolsList += [ "PixelFastDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.SCT_on():
+        PileUpToolsList += [ "SCT_DigitizationTool" ]
+        PileUpToolsList += [ "SCT_FastDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.TRT_on():
+        PileUpToolsList += [ "TRTDigitizationTool" ]
+        PileUpToolsList += [ "TRTFastDigitizationToolSplitNoMergePU" ]
+    return PileUpToolsList
+
+def getSplitNoMergeFSInDetPileUpTools():
+    """ This is for testing the fast chain with full digitization in split PU mode without
+merging pileup
+    """
+    from AthenaCommon.DetFlags import DetFlags
+    PileUpToolsList = []
+    if DetFlags.digitize.BCM_on():
+        PileUpToolsList += [ "BCM_DigitizationTool" ]
+    if DetFlags.digitize.pixel_on():
+        PileUpToolsList += [ "PixelFastDigitizationTool" ]
+        PileUpToolsList += [ "PixelDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.SCT_on():
+        PileUpToolsList += [ "SCT_FastDigitizationTool" ]
+        PileUpToolsList += [ "SCT_DigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.TRT_on():
+        PileUpToolsList += [ "TRTFastDigitizationTool" ]
+        PileUpToolsList += [ "TRTDigitizationToolSplitNoMergePU" ]
+    return PileUpToolsList
+
+def getSplitNoMergeFFInDetPileUpTools():
+    """ This is for testing the fast chain with full digitization in split PU mode without
+merging pileup
+    """
+    from AthenaCommon.DetFlags import DetFlags
+    PileUpToolsList = []
+    if DetFlags.digitize.BCM_on():
+        PileUpToolsList += [ "BCM_DigitizationTool" ]
+    if DetFlags.digitize.pixel_on():
+        PileUpToolsList += [ "PixelFastDigitizationTool" ]
+        PileUpToolsList += [ "PixelFastDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.SCT_on():
+        PileUpToolsList += [ "SCT_FastDigitizationTool" ]
+        PileUpToolsList += [ "SCT_FastDigitizationToolSplitNoMergePU" ]
+    if DetFlags.digitize.TRT_on():
+        PileUpToolsList += [ "TRTFastDigitizationTool" ]
+        PileUpToolsList += [ "TRTFastDigitizationToolSplitNoMergePU" ]
+    return PileUpToolsList
+
 def getStandardCaloPileUpTools():
     from AthenaCommon.DetFlags import DetFlags
     PileUpToolsList = []
@@ -234,6 +310,70 @@ def getSplitPileUpToolsList():
     PileUpToolsList += [ "MergeRecoTimingObjTool" ]
     return PileUpToolsList
 
+def getSplitNoMergePileUpToolsList():
+    PileUpToolsList = []
+    ## Truth information
+    PileUpToolsList += getStandardTruthPileUpTools()
+    ## Forward Detector Digitization
+    PileUpToolsList += getStandardForwardPileUpTools()
+    ## Inner Detector Digitization - non-standard
+    PileUpToolsList += getSplitNoMergeInDetPileUpTools()
+    ## Calo Digitization
+    PileUpToolsList += getStandardCaloPileUpTools()
+    ## Muon System Digitization
+    PileUpToolsList += getStandardMuonPileUpTools()
+    ## RecoTimingObj
+    PileUpToolsList += [ "MergeRecoTimingObjTool" ]
+    return PileUpToolsList
+
+def getSplitNoMergeSFPileUpToolsList():
+    PileUpToolsList = []
+    ## Truth information
+    PileUpToolsList += getStandardTruthPileUpTools()
+    ## Forward Detector Digitization
+    PileUpToolsList += getStandardForwardPileUpTools()
+    ## Inner Detector Digitization - non-standard
+    PileUpToolsList += getSplitNoMergeSFInDetPileUpTools()
+    ## Calo Digitization
+    PileUpToolsList += getStandardCaloPileUpTools()
+    ## Muon System Digitization
+    PileUpToolsList += getStandardMuonPileUpTools()
+    ## RecoTimingObj
+    PileUpToolsList += [ "MergeRecoTimingObjTool" ]
+    return PileUpToolsList
+
+def getSplitNoMergeFSPileUpToolsList():
+    PileUpToolsList = []
+    ## Truth information
+    PileUpToolsList += getStandardTruthPileUpTools()
+    ## Forward Detector Digitization
+    PileUpToolsList += getStandardForwardPileUpTools()
+    ## Inner Detector Digitization - non-standard
+    PileUpToolsList += getSplitNoMergeFSInDetPileUpTools()
+    ## Calo Digitization
+    PileUpToolsList += getStandardCaloPileUpTools()
+    ## Muon System Digitization
+    PileUpToolsList += getStandardMuonPileUpTools()
+    ## RecoTimingObj
+    PileUpToolsList += [ "MergeRecoTimingObjTool" ]
+    return PileUpToolsList
+
+def getSplitNoMergeFFPileUpToolsList():
+    PileUpToolsList = []
+    ## Truth information
+    PileUpToolsList += getStandardTruthPileUpTools()
+    ## Forward Detector Digitization
+    PileUpToolsList += getStandardForwardPileUpTools()
+    ## Inner Detector Digitization - non-standard
+    PileUpToolsList += getSplitNoMergeFFInDetPileUpTools()
+    ## Calo Digitization
+    PileUpToolsList += getStandardCaloPileUpTools()
+    ## Muon System Digitization
+    PileUpToolsList += getStandardMuonPileUpTools()
+    ## RecoTimingObj
+    PileUpToolsList += [ "MergeRecoTimingObjTool" ]
+    return PileUpToolsList
+
 def getStandardPileUpToolsAlg(name="StandardPileUpToolsAlg", **kwargs):
     kwargs.setdefault('PileUpTools', getStandardPileUpToolsList() )
     from Digitization.DigitizationFlags import digitizationFlags
@@ -283,3 +423,23 @@ def getStandardInTimeOnlyTruthPileUpToolsAlg(name="StandardInTimeOnlyTruthPileUp
     else:
         from PileUpComps.PileUpCompsConf import DigitizationAlg
         return DigitizationAlg(name, **kwargs)
+
+def getSplitNoMergePileUpToolsAlg(name="SplitNoMergePileUpToolsAlg", **kwargs):
+    kwargs.setdefault('PileUpTools', getSplitNoMergePileUpToolsList() )
+    from PileUpComps.PileUpCompsConf import DigitizationAlg
+    return DigitizationAlg(name, **kwargs)
+
+def getSplitNoMergeSFPileUpToolsAlg(name="SplitNoMergeSFPileUpToolsAlg", **kwargs):
+    kwargs.setdefault('PileUpTools', getSplitNoMergeSFPileUpToolsList() )
+    from PileUpComps.PileUpCompsConf import DigitizationAlg
+    return DigitizationAlg(name, **kwargs)
+
+def getSplitNoMergeFSPileUpToolsAlg(name="SplitNoMergeFSPileUpToolsAlg", **kwargs):
+    kwargs.setdefault('PileUpTools', getSplitNoMergeFSPileUpToolsList() )
+    from PileUpComps.PileUpCompsConf import DigitizationAlg
+    return DigitizationAlg(name, **kwargs)
+
+def getSplitNoMergeFFPileUpToolsAlg(name="SplitNoMergeFFPileUpToolsAlg", **kwargs):
+    kwargs.setdefault('PileUpTools', getSplitNoMergeFFPileUpToolsList() )
+    from PileUpComps.PileUpCompsConf import DigitizationAlg
+    return DigitizationAlg(name, **kwargs)
diff --git a/Simulation/Digitization/python/DigitizationConfigDb.py b/Simulation/Digitization/python/DigitizationConfigDb.py
index 18019027adf59f69ff3b3a4db7ed153e11feb9f6..c55668f0e0241817b87d6c46d5e73e2497d51401 100644
--- a/Simulation/Digitization/python/DigitizationConfigDb.py
+++ b/Simulation/Digitization/python/DigitizationConfigDb.py
@@ -29,12 +29,9 @@ addAlgorithm("Digitization.DigiAlgConfig.getFastPileUpToolsAlg"      , "FastPile
 addAlgorithm("Digitization.DigiAlgConfig.getSplitPileUpToolsAlg"     , "SplitPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getStandardSignalOnlyTruthPileUpToolsAlg"  , "StandardSignalOnlyTruthPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getStandardInTimeOnlyTruthPileUpToolsAlg"  , "StandardInTimeOnlyTruthPileUpToolsAlg")
+addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergePileUpToolsAlg"  , "SplitNoMergePileUpToolsAlg")
+addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeSFPileUpToolsAlg"  , "SplitNoMergeSFPileUpToolsAlg")
+addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFSPileUpToolsAlg"  , "SplitNoMergeFSPileUpToolsAlg")
+addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFFPileUpToolsAlg"  , "SplitNoMergeFFPileUpToolsAlg")
 
 addService("Digitization.PileUpMergeSvcConfig.getPileUpMergeSvc"     , "PileUpMergeSvc")
-## addTool("Digitization.PileUpMergeSvcConfig.getALFARange"             , "ALFARange" )
-## addTool("Digitization.PileUpMergeSvcConfig.getTRTRange"              , "TRTRange")
-## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeEM"            , "LArRangeEM")
-## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeHEC"           , "LArRangeHEC")
-## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeFCAL"          , "LArRangeFCAL")
-## addTool("Digitization.PileUpMergeSvcConfig.getsTgcRange"             ,  "sTgcRange")
-## addTool("Digitization.PileUpMergeSvcConfig.getMmRange"               , "MmRange")
diff --git a/Simulation/Digitization/python/DigitizationFlags.py b/Simulation/Digitization/python/DigitizationFlags.py
index d9e10f2c638930f12fa6ca2e6300539989efda59..a72d46cd5cbcf0bec33884919c78778a03f1bf19 100755
--- a/Simulation/Digitization/python/DigitizationFlags.py
+++ b/Simulation/Digitization/python/DigitizationFlags.py
@@ -40,6 +40,16 @@ class rndmSeedList(JobProperty):
     allowedTypes=['list']
     StoredValue=  []
 
+    def checkForExistingSeed(self, name):
+        """Ensure that each stream is only initialized once"""
+        found = False
+        seedlist = self.get_Value()
+        for iseed in seedlist:
+            found = iseed.startswith(name+" ")
+            if found:
+                break
+        return found
+
     def addSeed( self, name, seed1, seed2 ):
         """Add seeds to internal seedlist. Seeds will be incremented by offset values
         """
@@ -50,12 +60,7 @@ class rndmSeedList(JobProperty):
         logDigitizationFlags.info("Adding Digitization random number seed '" + newseed + "'")
 
         #ensure each stream only initialized once
-        found = False
-        for iseed in seedlist:
-            found = iseed.startswith(name+" ")
-            if found:
-                break
-
+        found = self.checkForExistingSeed(name)
         if found:
             logDigitizationFlags.error ("Initialization values for random number stream " + name + " already exist!")
         else:
diff --git a/Simulation/Digitization/python/RunDependentMCTaskIterator.py b/Simulation/Digitization/python/RunDependentMCTaskIterator.py
index bcdde770c87e2d50410b976891766e8272fc762b..cf14c1743e3536c03fccddb7a9ac1d3624461d96 100644
--- a/Simulation/Digitization/python/RunDependentMCTaskIterator.py
+++ b/Simulation/Digitization/python/RunDependentMCTaskIterator.py
@@ -24,8 +24,12 @@ def getRunLumiInfoFragment(jobnumber,task,maxEvents):
     else:
         hiMaxEvents=int((maxEvents-1)/2)
         loMaxEvents=int((maxEvents+1)/2)
-    hi_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu'],reverse=True),hiMaxEvents)
-    lo_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu']),loMaxEvents)
+    hi_mu_frag=[]
+    lo_mu_frag=[]
+    if hiMaxEvents > 0:
+        hi_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu'],reverse=True),hiMaxEvents)
+    if loMaxEvents > 0:
+        lo_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu']),loMaxEvents)        
     return sorted(sum([hi_mu_frag,lo_mu_frag],[]),key=lambda job: job['run'])
 
 def getFragment(jobnumber,task,maxEvents):
diff --git a/Simulation/Digitization/share/Digitization.py b/Simulation/Digitization/share/Digitization.py
index d4d9c104784a14839a84085328d34772ecfae208..de55df25ce8c4a879b9c3950991e65e6584a0b01 100755
--- a/Simulation/Digitization/share/Digitization.py
+++ b/Simulation/Digitization/share/Digitization.py
@@ -49,6 +49,11 @@ else :
     DetFlags.Truth_setOn()
     DetFlags.LVL1_setOn()
 
+checkOverlay = getattr(DetFlags, 'overlay', None)
+if checkOverlay is not None:
+    DetFlags.overlay.all_setOff()
+else:
+    logDigitization_flags.warning( 'DetFlags.overlay is not supported in this release' )
 DetFlags.simulate.all_setOff()
 DetFlags.makeRIO.all_setOff()
 DetFlags.writeBS.all_setOff()