diff --git a/Event/EventOverlay/EventOverlayJobTransforms/python/overlayTransformUtils.py b/Event/EventOverlay/EventOverlayJobTransforms/python/overlayTransformUtils.py
index cbd6df21caedf54fda617aac63611845497f47d7..c451564d61ae8490a13141b1eeb7e4a3b5e8785c 100644
--- a/Event/EventOverlay/EventOverlayJobTransforms/python/overlayTransformUtils.py
+++ b/Event/EventOverlay/EventOverlayJobTransforms/python/overlayTransformUtils.py
@@ -193,10 +193,16 @@ def addOverlayHITARMakerSubstep(executorSet):
     executorSet.add(BSJobSplitterExecutor(name = 'HITARMaker', skeletonFile = 'EventOverlayJobTransforms/skeleton.HITARMaker_tf.py', substep='HITARMaker',
                                           inData = ['TXT_EVENTID'], outData = ['TAR_CONFIG']))
 
-def addOverlay_PoolSubstep(executorSet):
-    executorSet.add(athenaExecutor(name = 'OverlayPool', skeletonFile = 'EventOverlayJobTransforms/skeleton.OverlayPool_tf.py',
-                                   substep = 'overlayPOOL', tryDropAndReload = False, perfMonFile = 'ntuple.pmon.gz',
-                                   inData = ['HITS', 'RDO_BKG'], outData = ['RDO', 'RDO_SGNL']))
+def addOverlay_PoolSubstep(executorSet, inRecoChain = False):
+    executor = athenaExecutor(name = 'OverlayPool', skeletonFile = 'EventOverlayJobTransforms/skeleton.OverlayPool_tf.py',
+                              substep = 'overlayPOOL', tryDropAndReload = False, perfMonFile = 'ntuple.pmon.gz',
+                              inData = [('HITS', 'RDO_BKG')], outData = ['RDO', 'RDO_SGNL'])
+
+    if inRecoChain:
+        executor.inData = []
+        executor.outData = []
+ 
+    executorSet.add(executor)
 
 def addOverlay_BSSubstep(executorSet):
     executorSet.add(athenaExecutor(name = 'OverlayBS', skeletonFile = 'EventOverlayJobTransforms/skeleton.OverlayBS_tf.py',
@@ -213,9 +219,9 @@ def appendOverlayBSFilterSubstep(trf):
     addOverlayBSFilterSubstep(executor)
     trf.appendToExecutorSet(executor)
 
-def appendOverlay_PoolSubstep(trf):
+def appendOverlay_PoolSubstep(trf, inRecoChain = False):
     executor = set()
-    addOverlay_PoolSubstep(executor)
+    addOverlay_PoolSubstep(executor, inRecoChain)
     trf.appendToExecutorSet(executor)
 
 def appendOverlay_BSSubstep(trf):
diff --git a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
index 3173f7a311d8b98abf0f17bdc4092f1f5d89e28a..5a4f61b881d4a123647c269fa061f80d768dba9a 100755
--- a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
+++ b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
@@ -80,6 +80,16 @@ def getTransform(RAWtoALL=False):
     except ImportError, e:
         msg.warning('Failed to import digitisation arguments ({0}). Digitisation substep will not be available.'.format(e))
         
+    # Again, protect core functionality from too tight a dependence on EventOverlay
+    try:
+        from EventOverlayJobTransforms.overlayTrfArgs import addOverlayTrfArgs, addOverlayPoolTrfArgs
+        from EventOverlayJobTransforms.overlayTransformUtils import appendOverlay_PoolSubstep
+        addOverlayTrfArgs(trf.parser)
+        addOverlayPoolTrfArgs(trf.parser)
+        appendOverlay_PoolSubstep(trf, True)
+    except ImportError, e:
+        msg.warning('Failed to import overlay arguments ({0}). Event overlay substep will not be available.'.format(e))
+    
     # Again, protect core functionality from too tight a dependence on PATJobTransforms
     try:
         from PATJobTransforms.PATTransformUtils import addPhysValidationFiles, addValidationArguments, appendPhysValidationSubstep
diff --git a/Tools/PyJobTransforms/python/trfArgClasses.py b/Tools/PyJobTransforms/python/trfArgClasses.py
index 82ae17b9c1bd01542d8d8f676a2a7055149f3ade..0794dfb1da08cd0738e7c5c4b965e5b999341ece 100644
--- a/Tools/PyJobTransforms/python/trfArgClasses.py
+++ b/Tools/PyJobTransforms/python/trfArgClasses.py
@@ -2057,11 +2057,14 @@ class argSubstepSteering(argSubstep):
     # usecases of steering. 
     # "no" - a convenience null option for production managers, does nothing
     # "doRDO_TRIG" - run split trigger for Reco_tf and friends
+    # "doOverlay" - run event overlay on premixed RDOs instead of standard HITtoRDO digitization
     # "afterburn" - run the B decay afterburner for event generation
     # "doRAWtoALL" - produce all DESDs and AODs directly from bytestream
     steeringAlises = {
                       'no': {},
                       'doRDO_TRIG': {'RAWtoESD': [('in', '-', 'RDO'), ('in', '+', 'RDO_TRIG'), ('in', '-', 'BS')]},
+                      'doOverlay': {'HITtoRDO': [('in', '-', 'HITS'), ('out', '-', 'RDO'), ('out', '-', 'RDO_FILT')],
+                                    'OverlayPool': [('in', '+', ('HITS', 'RDO_BKG')), ('out', '+', 'RDO')]},
                       'afterburn': {'generate': [('out', '-', 'EVNT')]},
                       'doRAWtoALL': {'RAWtoALL': [('in', '+', 'BS'), ('in', '+', 'RDO'), ('in', '+', 'RDO_FTK'),
                                                   ('in', '+', 'DRAW_ZMUMU'), ('in', '+', 'DRAW_ZEE'), ('in', '+', 'DRAW_EMU'), ('in', '+', 'DRAW_RPVLL'),