diff --git a/Reconstruction/RecJobTransforms/python/recoTransforms.py b/Reconstruction/RecJobTransforms/python/recoTransforms.py
index b5c79d635281483d480205b61d4ebd08b5ee2632..e1c8fce8be43cba6b0c6fcaa29e0aaca9a435bd8 100644
--- a/Reconstruction/RecJobTransforms/python/recoTransforms.py
+++ b/Reconstruction/RecJobTransforms/python/recoTransforms.py
@@ -2,7 +2,7 @@
 
 ## @brief Specialist reconstruction and bytestream transforms
 #  @author atlas-comp-jt-dev@cern.ch
-#  @version $Id: recoTransforms.py 609797 2014-08-01 14:51:02Z graemes $
+#  @version $Id: recoTransforms.py 611371 2014-08-12 09:21:15Z seuster $
 
 import os
 import re
@@ -68,11 +68,11 @@ class skimRawExecutor(scriptExecutor):
                         count += 1
                 except ValueError, e:
                     msg.warning("Failed to understand this line from master filter file: {0} {1}".format(line, e))
-                if count == 0:
-                    # If there are no matched events, create a bogus request for run and event 0 to keep
-                    # AtlCopyBSEvent.exe CLI
-                    msg.info("No events matched in this input file - empty RAW file output will be made")
-                    os.write(slimFF.fileno(), "0 0\n")
+            if count == 0:
+                # If there are no matched events, create a bogus request for run and event 0 to keep
+                # AtlCopyBSEvent.exe CLI
+                msg.info("No events matched in this input file - empty RAW file output will be made")
+                os.write(slimFF.fileno(), "0 0\n")
         msg.info("Matched {0} lines from the master filter file against input events; wrote these to {1}".format(count, slimmedFilterFile))
         
         # Build up the right command line for acmd.py
diff --git a/Reconstruction/RecJobTransforms/scripts/DigiMReco_trf.py b/Reconstruction/RecJobTransforms/scripts/DigiMReco_trf.py
deleted file mode 100755
index 92a5583443bd48b03fe276d7c6e047fa30efacde..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/DigiMReco_trf.py
+++ /dev/null
@@ -1,500 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__doc__ ="""Specialist transform to run digitisation, followed by multiple 
-reconstruction steps, each with configurable trigger menus. Individual ESDs
-are merged then AOD/TAG generated."""
-
-import shutil, ast, sys, os
-
-from PyJobTransformsCore.trf import Author,JobReport
-from SimuJobTransforms.Digi_trf import HITtoRDOJobTransform
-from RecJobTransforms.RDOtoRDOTrigger_trf import RDOtoRDOTriggerJobTransform
-from RecJobTransforms.RAWtoESD_trf import RAWtoESDJobTransform
-from RecJobTransforms.ESDtoAOD_trf import ESDtoAODJobTransform
-from PATJobTransforms.ESDtoDPD_trf import ESDtoDPDJobTransform
-from PATJobTransforms.MergePool_trf import MergePoolJobTransform
-from PATJobTransforms.ArgDicTools import DefaultConfigFromSysArgv
-from PATJobTransforms.BaseOfCompositeTrf import BaseOfCompositeTrf
-from PATJobTransforms.DQHistogramMerge_trf import DQHistogramMergeJobTransform
-from PyJobTransformsCore.trferr import TransformDefinitionError
-
-
-# Note0: ListOfDefaultPositionalKeys needs to be maintained by hand, to support 'grep' from ProdSys (arg!)
-# Note1: Adding preInclude_h2r/r2e/e2a (and co.) to the ListOfDefaultPositionalKeys is a particular hack for prodsys 
-#  to know that these are valid - it's not used at all by the trf, which does its usual mapping as key_substep 
-ListOfDefaultPositionalKeys=['inputHitsFile','outputRDOFile','outputESDFile','outputAODFile','outputTAGFile','outputHISTFile','outputDESD_MBIASFile','outputDESDM_EGAMMAFile','outputDESDM_MUONFile','outputDESD_CALJETFile','outputDESDM_TRACKFile','outputDESD_SGLELFile','outputDESD_SGLMUFile','outputDESDM_METFile','outputDESD_PHOJETFile','outputDESDM_RPVLLFile','outputNTUP_TOPEJETFile', 'outputNTUP_HSG5GAMHFile', 'outputNTUP_JETMETWZFile', 'outputNTUP_TRIGBJETFile', 'outputNTUP_BTAGD3PDFile', 'outputNTUP_SUSYFile', 'outputNTUP_SMTRILEPFile', 'outputNTUP_HIFile', 'outputNTUP_JETMETFULLFile', 'outputNTUP_PHYSICSFile', 'outputNTUP_SUSY01LEPFile', 'outputNTUP_PHOTONFile', 'outputNTUP_SMZEEFile', 'outputNTUP_PROMPTPHOTFile', 'outputNTUP_SMQCDFile', 'outputNTUP_FASTMONFile', 'outputNTUP_SMDYMUMUFile', 'outputNTUP_SMBKGEFile', 'outputNTUP_HSG5ZHMETFile', 'outputNTUP_JETMETEMCLFile', 'outputNTUP_HSG5ZHLLFile', 'outputNTUP_L1TGCFile', 'outputNTUP_SUSYLLPFile', 'outputNTUP_SMWMUNUFile', 'outputNTUP_BKGDFile', 'outputNTUP_SMWMUNUJJFile', 'outputNTUP_TOPBOOSTFile', 'outputNTUP_SMDILEPFile', 'outputNTUP_SMWENUFile', 'outputNTUP_HSG5ZBBFile', 'outputNTUP_SMWZFile', 'outputNTUP_HSG2File', 'outputNTUP_ENHBIASFile', 'outputNTUP_MCPFile', 'outputNTUP_HSG5WHFile', 'outputNTUP_SMWZSOFTFile', 'outputNTUP_TRIGMUFile', 'outputNTUP_SUSYSKIMFile', 'outputNTUP_TOPELFile', 'outputNTUP_TOPFile', 'outputNTUP_JETMETFile', 'outputNTUP_SMDYEEFile', 'outputNTUP_HIGHMULTFile', 'outputNTUP_HSG5GAMZFile', 'outputNTUP_HECNOISEFile', 'outputNTUP_TRIGFile', 'outputNTUP_SMWENUJJFile', 'outputNTUP_SCTFile', 'outputNTUP_WZFile', 'outputNTUP_LARNOISEFile', 'outputNTUP_L1CALOPROBFile', 'outputNTUP_TRTFile', 'outputNTUP_SMBKGMUFile', 'outputNTUP_SMZMUMUFile', 'outputNTUP_BTAGFile', 'outputNTUP_TOPMUFile', 'outputNTUP_ZPRIMEEEFile', 'outputNTUP_EGAMMAFile', 'outputNTUP_TAUSMALLFile', 'outputNTUP_MINBIASFile', 'outputNTUP_L1CALOFile', 'outputNTUP_TAUMEDIUMFile', 'outputNTUP_MUONFile', 'outputNTUP_TOPJETFile', 'outputNTUP_SUSY23LEPFile','outputNTUP_TRKVALIDFile','doRDOTrigger','tmpRDO','tmpESD','maxEvents','skipEvents', 'triggerConfigByRun','preInclude_h2r','postInclude_h2r','preExec_h2r','postExec_h2r','preInclude_r2e','postInclude_r2e','preExec_r2e','postExec_r2e','preInclude_e2a','postInclude_e2a','preExec_e2a','postExec_e2a','preInclude_rdo2rdotrig','postInclude_rdo2rdotrig','preExec_rdo2rdotrig','postExec_rdo2rdotrig','RunNumber','autoConfiguration','DBRelease','conditionsTag','beamType','extraParameter','geometryVersion','--ignoreerrors','--athenaopts','--omitvalidation','--extraignorefilter','numberOfLowPtMinBias', 'numberOfHighPtMinBias', 'numberOfBeamHalo', 'numberOfBeamGas', 'numberOfCavernBkg','LowPtMinbiasHitsFile','bunchSpacing', 'pileupInitialBunch', 'pileupFinalBunch', 'doAllNoise', 'AddCaloDigi', 'DataRunNumber','LucidOn', 'ALFAOn', 'ZDCOn', 'jobNumber','digiSeedOffset1','digiSeedOffset2','HighPtMinbiasHitsFile','beamGasHitsFile','beamHaloHitsFile','cavernHitsFile','samplingFractionDbTag','IgnoreConfigError','testPileUpConfig','digiRndmSvc','outputTXT_FTKIPFile','outputDESDM_ALLCELLSFile']
-
-# Default values of input/output types, for standard tests now set in PATJobTransforms/python/DefaultInputs.py
-
-class DigiMultiTriggerRecoTrf( BaseOfCompositeTrf ):
-    def __init__(self, inDic):
-
-        if '-h' in inDic or '--help' in inDic:
-            print '\n', sys.argv[0]
-            print __doc__
-            print "See: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/DigiMReco"
-            print "Prodsys understood keys are as follows:"
-            print ListOfDefaultPositionalKeys
-            sys.exit(0)
-        
-        BaseOfCompositeTrf.__init__(self,inputDic=inDic,ProdSysKeys=ListOfDefaultPositionalKeys,
-                                    name="DigiMultiReco_trf",                                    
-                                    authors = [ Author('Graeme A Stewart','graeme.andrew.stewart@cern.ch') ] ,
-                                    help = __doc__ )
-        
-        
-        # Remove arguments which are private to this transform
-        # This is a bt of a hack, but will be fixed properly in the 
-        # new trf version
-        self.stripPrivateArguments()
-
-        #Construct dictionaries
-        self.dicHitsToRDO=self.AddNewSubStep("h2r", self.runHitstoRDO)
-        self.dicRDOToRDOTrigger=self.AddNewSubStep("rdo2rdotrig",self.runRDOtoRDOtrigger)
-        self.dicRAWToESD=self.AddNewSubStep("r2e",self.runRAWtoESD)
-        self.dicESDMerge=self.AddNewSubStep("mrg",self.runESDMerge)        
-        self.dicESDToAOD=self.AddNewSubStep("e2a",self.runESDtoAOD)
-        self.dicESDToDPD=self.AddNewSubStep("e2d",self.runESDtoDPD)
-        
-        # Internal state for r2e sub-steps
-        self.esdOutputs = []
-        self.lastESDEvent = 0
-
-        # Collect all monitoring from substeps in this list for final merge
-        self.monHistOutputs = [] 
-        
-        # Parse the run or event dependent trigger configuration
-        self.parseTriggerConfig()            
-        
-        #Internal sub-step configuration (i.e. fill dictionaries)
-        self.ConfigureInternalSubSteps()
-        self.ConfigureInputOutputs()
-        self.CommonSpecialFinalConfig()
-
-
-    def runJob(self):
-        #initialization...
-        allOK=True
-        rdoOK=False
-        rdotrigOK=False
-        esdOK=False
-        mrgOK=False
-        aodOK=False
-        dpdEsdOK=False
-        DQMergeOK=False
-        report=JobReport()
-        report.setProducer('DigiMultiRecoTrf')
-        
-        # Useful check
-        print sys.argv[0], "DigiMReco_trf substep configuration:"
-        for k, v in self.ValidSubStepsDic.iteritems():
-            if self.SubStepIsExecuted(k):
-                print "%s substep will be executed" % k
-            else:
-                print "%s substep will be skipped" % k
-            print k, ":", v
-        
-        # First setup DBRelease if requested (do not propagate this arg to sub-transforms)
-        if self.inDic.has_key('DBRelease'):
-            self.getArgument('DBRelease').install()
-            
-
-        ########################
-        # HITS->RDO
-        if (allOK and self.SubStepIsExecuted('h2r')):
-            dic=self.dicHitsToRDO.copy()
-            print "HitsToRDO dic:",dic
-            RDO = HITtoRDOJobTransform(dic)
-            RDO._lastInChain=False
-            RDO.setParent(self)
-            RDO.setJobReportOptions('Summary')
-            reportRDO = RDO.exeArgDict( dic )
-            report.addReport( reportRDO )
-            rdoOK = ( reportRDO.exitCode() == 0 )
-            print "rdoOK is", rdoOK
-            allOK = (allOK and rdoOK)
-        else:
-            print "Skipping Hits->RDO step..."
-
-
-        ########################
-        # RDO->RDOTrigger
-        if (allOK and self.SubStepIsExecuted('rdo2rdotrig')):
-            dic=self.dicRDOToRDOTrigger.copy()
-            print "RDOtoRDOtrigger dic:",dic
-            RDOTrig = RDOtoRDOTriggerJobTransform(dic)
-            RDOTrig._lastInChain=False
-            RDOTrig.setParent(self)
-            RDOTrig.setJobReportOptions('Summary')
-            reportRDOTrig = RDOTrig.exeArgDict( dic )
-            report.addReport( reportRDOTrig )
-            rdotrigOK = ( reportRDOTrig.exitCode() == 0 )
-            print "rdotrigOK is ",rdotrigOK
-            allOK = (allOK and rdotrigOK)
-        else:
-            print "Skipping RDO->RDOTrigger step..."
-
-
-        
-        ########################
-        # RAW->ESD
-        if (allOK and self.SubStepIsExecuted('r2e')):
-            # eventTrigList is a list of tuples giving (Nevents, trigger)
-            eventTrigList = self.getEventTrigList()
-            print "Got eventTriggerList:", eventTrigList
-            if 'outputESDFile' in self.dicRAWToESD:
-                myESD = self.dicRAWToESD['outputESDFile']
-            else:
-                myESD = self.dicRAWToESD['tmpESD']
-            for eventCount, trigger in eventTrigList:
-                dic=self.dicRAWToESD.copy()
-                print "Orig RAWtoESD dic:",dic                
-                ## Now modify the dictionary for this subjob
-                # However, if there is only going to be one ESD then
-                # we produce it 'directly' and merging can be skipped
-                if len(eventTrigList) == 1:
-                    self.esdOutputs.append(myESD)
-                else:
-                    if 'outputESDFile' in dic:
-                        del dic['outputESDFile']
-                    dic['tmpESD'] = myESD + '.%03d' % (len(self.esdOutputs)+1)
-                    self.esdOutputs.append(dic['tmpESD'])
-                # Add monitoring if required
-                if 'outputDQMonitorFile' in dic:
-                    dic['outputDQMonitorFile'] += '.%03d' % (len(self.esdOutputs))
-                    self.monHistOutputs.append(dic['outputDQMonitorFile'])
-                # Special value of 0 for events disables any run/trigger configuration
-                if eventCount != 0:
-                    dic['skipEvents'] = self.lastESDEvent
-                    dic['maxEvents'] = eventCount
-                    dic['triggerConfig'] = trigger
-                # Add this here to stop it causing trouble in the digi step
-                self.addDropAndReload(dic)
-                print "New RAWtoESD dic:", dic
-
-                ESD = RAWtoESDJobTransform(dic)
-                ESD._lastInChain=False
-                ESD.setParent(self)
-                ESD.setJobReportOptions('Summary')
-                reportESD = ESD.exeArgDict( dic )
-                report.addReport( reportESD )
-                esdOK = ( reportESD.exitCode() == 0 )
-                print "esdOK for", self.esdOutputs[-1], "is", esdOK
-                allOK = (allOK and esdOK)
-                if not allOK:
-                    # Abort subsequent r2e steps if there is a problem
-                    break
-                self.lastESDEvent += eventCount
-        else:
-            print "Skipping RAW->ESD step..."
-
-        ########################
-        # ESD->MergeESD
-        # Only merge if there is more than 1 ESD file :-)
-        if (allOK and self.SubStepIsExecuted('mrg') and len(self.esdOutputs) > 1):
-            dic=self.dicESDMerge.copy()
-            dic['inputESDFile'] = ",".join(self.esdOutputs)
-            print "ESDMerge dic:",dic
-            MRG = MergePoolJobTransform(dic)
-            MRG._lastInChain=False
-            MRG.setParent(self)
-            MRG.setJobReportOptions('Summary')
-            reportMRG = MRG.exeArgDict( dic )
-            if 'outputESDFile' in dic:
-                self.addTriggerMetaData(reportMRG, dic['outputESDFile'])
-            report.addReport( reportMRG, mode='MERGE' )
-            mrgOK = ( reportMRG.exitCode() == 0 )
-            print "mrgOK is ", mrgOK
-            allOK = (allOK and mrgOK)
-        else:
-            print "Skipping ESD Merge step..."
-            
-
-
-        ########################
-        # ESD->AOD
-        if(allOK and self.SubStepIsExecuted('e2a')):
-            dic=self.dicESDToAOD.copy()
-            # Add this here to stop it causing trouble in the digi step
-            self.addDropAndReload(dic)
-            if 'outputDQMonitorFile' in dic:
-                self.monHistOutputs.append(dic['outputDQMonitorFile'])
-            print "ESDtoAOD dic:",dic
-            AOD = ESDtoAODJobTransform(dic)
-            AOD._lastInChain=False
-            AOD.setParent(self)
-            AOD.setJobReportOptions('Summary')
-            reportAOD = AOD.exeArgDict( dic )
-            # Ensure metadata is ok for our outputs
-            [ self.addTriggerMetaData(reportAOD, dic[key]) for key in dic.keys() if key.startswith('output')]
-            report.addReport( reportAOD, mode='MERGE' )
-            aodOK = ( reportAOD.exitCode() == 0 )
-            print "aodOK is ",aodOK
-            allOK = (allOK and aodOK)
-        else:
-            print "Skipping ESD->AOD step..."
-
-
-        ########################
-        # ESD->DPD
-        if(allOK and self.SubStepIsExecuted('e2d')):
-            dic=self.dicESDToDPD.copy()
-            # Add this here to stop it causing trouble in the digi step
-            self.addDropAndReload(dic)
-            print "ESDtoDPD dic:",dic
-            DPD = ESDtoDPDJobTransform(dic)
-            DPD._lastInChain=False
-            DPD.setParent(self)
-            DPD.setJobReportOptions('Summary')
-            reportDPD = DPD.exeArgDict( dic )
-            # Ensure metadata is ok for our outputs
-            [ self.addTriggerMetaData(reportDPD, dic[key]) for key in dic.keys() if key.startswith('output')]
-            report.addReport( reportDPD, mode='MERGE' )
-            dpdEsdOK = ( reportDPD.exitCode() == 0 )
-            print "dpdEsdOK is ",dpdEsdOK
-            allOK = (allOK and dpdEsdOK)
-        else:
-            print "Skipping ESD->DPD step..."
-            
-            
-        ##########################
-        # Monitoring file merging
-        if(allOK and self.inDic.has_key('outputHISTFile')):
-            dic={}
-            dic['inputFile']=self.monHistOutputs
-            dic['outputHISTFile']=self.inDic['outputHISTFile']
-            print "DQHistogramMerg dic:",dic
-            DQMerge = DQHistogramMergeJobTransform(dic)
-            DQMerge._lastInChain=False
-            DQMerge.setParent(self)
-            DQMerge.forceSingleProcess()
-            DQMerge.setJobReportOptions('Summary')
-            reportDQMerge = DQMerge.exeArgDict( dic )
-            report.addReport( reportDQMerge )
-            DQMergeOK = ( reportDQMerge.exitCode() == 0 )
-            print "DQMergeOK is ",DQMergeOK
-            allOK = (allOK and DQMergeOK)
-        else:
-            print "Skipping monitoring file merging step..."
-
-
-        return report
-    
-    
-    def addTriggerMetaData(self, jobReport, outputFileName):
-        '''Add special trigger configuration metadata to FileInfo objects in the job report'''
-        for f in jobReport.outputFiles():
-            if f.filename() == outputFileName and self.triggerConfType == 'run':
-                f.addMetaData({'triggerConfig' : self.privateDic['triggerConfigByRun']})
-                break
-        
-    
-    def stripPrivateArguments(self):
-        '''These are private arguments to this transform, only meaningful 
-         for this module. Keep them out of the trf framework for now
-         (but probably put them in medium term - but they are more complex than current var types, being
-         string representations of dictionaries or lists)'''
-        self.privateDic = {} 
-        for privateKey in ('triggerConfigByRun', 'triggerConfigByEvent'):
-            if privateKey in self.inDic:
-                self.privateDic[privateKey] = self.inDic[privateKey]
-                del self.inDic[privateKey]
-
-    
-    def parseTriggerConfig(self):
-        '''Look at input dictionary and decide which trigger configuration we have'''
-        if 'triggerConfigByRun' in self.privateDic and 'triggerConfigByEvent' in self.privateDic:
-            raise RuntimeError('You cannot specify both triggerConfigByRun and triggerConfigByEvent - pick one only.')
-        if 'triggerConfigByRun' in self.privateDic:
-            self.triggerConfType = 'run'
-            self.triggerConf = self.extractTrigConf(self.privateDic['triggerConfigByRun'], dict)
-        elif 'triggerConfigByEvent' in self.privateDic:
-            self.triggerConfType = 'event'
-            self.triggerConf = self.extractTrigConf(self.privateDic['triggerConfigByEvent'], list)
-        else:
-            # No trigger switches then...
-            self.triggerConfType = None
-            self.triggerConf = []
-
-
-    def extractTrigConf(self, triggerString, seqType):
-        '''Parse triggerConfigByRun or triggerConfigByEvent to get the runNumber/trigger or event/trigger mapping'''
-        try:
-            triggerConfig = ast.literal_eval(triggerString)
-            if not isinstance(triggerConfig, seqType):
-                raise RuntimeError('''Trying to extract trigger configuration from "%s" did not give the correct python object (is %s, should be %s)''' % (triggerString, type(triggerString), seqType))
-            for i in triggerConfig:
-                if seqType == dict:
-                    k = i
-                    v = triggerConfig[i]
-                else:
-                    k = i[0]
-                    v = i[1]
-                if not (isinstance(k, int) and k > 0):
-                    raise RuntimeError('Trigger configuration key %s is not a valid number' % k)
-                if not (isinstance(v, str)):
-                    raise RuntimeError('Trigger configuration value %s is not a trigger string' % v)
-        except (ValueError, SyntaxError), x:
-            raise RuntimeError('"%s" did not parse as a valid python object and caused an exception: %s' % (triggerString, x))
-        return triggerConfig
-    
-                
-    def getEventTrigList(self, fake=False):
-        '''Get list of event numbers with corresponding trigger setup'''
-        if fake:
-            return [(1, 'MCRECO:MC_pp_v2_tight_mc_prescale'), (1, 'MCRECO:MC_pp_v3_tight_mc_prescale')]
-        if self.triggerConfType == 'run':
-            # Need to import the event/runNumber lists
-            # This is generated by the h2r step - if that step is not run
-            # then this module needs to be present for the correct
-            # configuration to be found.
-            try:
-                sys.path.append(os.getcwd())
-                from RunDMCTriggerRunsInfo import listOfRunsEvents
-            except ImportError, x:
-                raise RuntimeError('Could not find RunDMCTriggerRunsInfo to get event/runNumber list: %s' % x)
-            # Loop over the RDO run/event list and fill in the correct trigger
-            # Assume that the runnumber:event list is available somehow as self.RunEventStructure
-            result = []
-            for runEventEntry in listOfRunsEvents:
-                try:
-                    if ( len(result) > 0 ) and ( self.triggerConf[runEventEntry['run']] == result[-1][1] ):
-                        # Same trigger configuration - so just extend the event span
-                        result[-1][0] += runEventEntry['evts']
-                    else:
-                        result.append([runEventEntry['evts'], self.triggerConf[runEventEntry['run']]])
-                except KeyError:
-                    raise RuntimeError('No trigger configuration for run number %d was found' % runEventEntry['run'])
-            return result
-        if self.triggerConfType == 'event':
-            # This is easy - just use the event/triggermap we have
-            return self.triggerConf
-        # No trigger conf found - set the special event value of 0, which processes the whole
-        # file with no special setup
-        return [(0,'')]
-
-
-    def ConfigureInternalSubSteps(self):
-        ## Treat special arguments here
-        # For us inputESDFile has to replicate the multiple file outputs of the r2e stages
-        # and these are used as inputs to the merge step.
-        if 'inputESDFile' in self.inDic:
-            self.esdOutputs = self.inDic['inputESDFile'].split(',')
-            
-        # Repeat the Reco_trf hack for monitoring histograms 
-        if self.inDic.has_key("outputHISTFile"):
-            self.dicRAWToESD['outputDQMonitorFile']="MonitorESD.root"
-            self.dicESDToAOD['outputDQMonitorFile']="MonitorAOD.root"
-            
-        self.ConfigureCommonInternalSubSteps()
-                
-
-    def ConfigureInputOutputs(self):
-        '''Daisy-chaining input->output'''
-
-        # First sanity check: we can only start from one of HITS, RDO or ESD
-        # Having more than one input type makes no sense
-        inputs = set(('inputHitsFile', 'inputRDOFile', 'inputESDFile')) & set(self.inDic.keys())
-        if len(inputs) > 1:
-            raise TransformDefinitionError, ('This transform can only take one primary input file. You cannot specify %s at the same time.' % 
-                                             ' and '.join(inputs))
-        if len(inputs) == 0:
-            raise TransformDefinitionError, 'One input file (HITS, RDO or ESD) must be specified.'
-
-        ## Now check that outputs are defined
-        # If necessary generate tmp filenames for RDO and ESD
-        # HITS->RDO?
-        if self.hasInput(self.dicHitsToRDO):
-            outputs = set(self.dicHitsToRDO.keys()) & set(('tmpRDO', 'outputRDOFile'))
-            if len(outputs) > 1:
-                raise TransformDefinitionError, 'Only one output from Hits to RDO can be used - illegal to have both %s' % ' and '.join(outputs)
-            if self.inDic.get('doRDOTrigger', 'false').lower() == 'true':
-                # Different logic if we do the RDO -> RDOTrigger substep 
-                if len(outputs) == 1:
-                    finalRDOtype = outputs.pop()
-                    self.dicHitsToRDO[finalRDOtype] = self.inDic[finalRDOtype]
-                    self.dicRDOToRDOTrigger['inputRDOFile'] = self.dicHitsToRDO[finalRDOtype]
-                    self.dicRDOToRDOTrigger['tmpRDO'] = self.inDic[finalRDOtype] + '.trigger'
-                    self.dicRAWToESD['inputRDOFile'] = self.dicRDOToRDOTrigger['tmpRDO']
-                else:
-                    print "Autosetting tmpRDO file"
-                    self.dicHitsToRDO['tmpRDO'] = self.dicRDOToRDOTrigger['inputRDOFile'] ='tmp.RDO.pool.root'
-                    self.dicRDOToRDOTrigger['tmpRDO'] = self.dicRAWToESD['inputRDOFile'] = 'tmp.RDO.pool.root.trigger'
-            else:
-                if len(outputs) == 1:
-                    self.dicRAWToESD['inputRDOFile'] = self.dicHitsToRDO[outputs.pop()]
-                else:
-                    print "Autosetting tmpRDO file"
-                    self.dicHitsToRDO['tmpRDO'] = self.dicRAWToESD['inputRDOFile'] ='tmp.RDO.pool.root'
-
-        # RDO->ESD?
-        if self.hasInput(self.dicRAWToESD):
-            if self.inDic.get('doRDOTrigger', 'false').lower() == 'true' and self.runHitstoRDO() == False:
-                self.dicRDOToRDOTrigger['tmpRDO'] = self.inDic['inputRDOFile'] + '.trigger'
-                self.dicRAWToESD['inputRDOFile'] = self.dicRDOToRDOTrigger['tmpRDO']
-            outputs = set(self.dicRAWToESD.keys()) & set(('tmpESD', 'outputESDFile'))
-            if len(outputs) > 1:
-                raise TransformDefinitionError, 'Only one output from RDO to ESD can be used - illegal to have both %s' % ' and '.join(outputs)
-            if len(outputs) == 1:
-                self.dicESDMerge['outputESDFile'] = self.dicESDToAOD['inputESDFile'] = self.dicESDToDPD['inputESDFile'] = self.dicRAWToESD[outputs.pop()]
-            else:
-                print "Autosetting tmpESD file"
-                self.dicRAWToESD['tmpESD'] = self.dicESDMerge['outputESDFile'] = self.dicESDToAOD['inputESDFile'] = self.dicESDToDPD['inputESDFile'] = 'tmp.ESD.pool.root'
-
-
-    def GetFirstSubStep(self):
-        # This transform only has two real starting points - HITS or RDO
-        # but support different entry points for debugging 
-        if self.runHitstoRDO():
-            return ["h2r"]
-        elif self.runRDOtoRDOtrigger():
-            return ['rdo2rdotrig']
-        elif self.runRAWtoESD():
-            return ["r2e"]
-        elif self.runESDMerge():
-            return ["mrg"]
-        return None
-
-    def runHitstoRDO(self):
-        return (self.hasInput(self.dicHitsToRDO) and self.hasOutput(self.dicHitsToRDO))
-    
-    def runRDOtoRDOtrigger(self):
-        return (self.hasInput(self.dicRDOToRDOTrigger) and self.hasOutput(self.dicRDOToRDOTrigger))
-
-    def runRAWtoESD(self):
-        return (self.hasInput(self.dicRAWToESD) and self.hasOutput(self.dicRAWToESD))
-
-    def runESDMerge(self):
-        # Always say we do this step, but at actual run time check if we have more than 1 ESD
-        return True
-
-    def runESDtoAOD(self):
-        return (self.hasInput(self.dicESDToAOD) and self.hasOutput(self.dicESDToAOD))
-    
-    def runESDtoDPD(self):
-        return (self.hasInput(self.dicESDToDPD) and self.hasOutput(self.dicESDToDPD))
-    
-    def addDropAndReload(self, dic):
-        '''Add --drop-and-reload to the athenaopts in the dictionary, as long as that's possible'''
-        athena_config_related_opts = ['--config-only','--drop-and-reload','--drop-configuration','--keep-configuration']
-        athena_current_opts=dic.get('--athenaopts','').split()
-        conflict_opts = set(athena_config_related_opts).intersection(set(athena_current_opts))
-        if not conflict_opts:
-            print "Appending '--drop-and-reload' to --athenaopts"
-            dic['--athenaopts']=' '.join(athena_current_opts+['--drop-and-reload'])
-        else:
-            print "User has specified '%s' to '--athenaopts', so not appending '--drop-and-reload'"%(' '.join(conflict_opts))
-
-    
-###############
-if __name__ == '__main__':
-    #Special preparation for command-line
-    import sys
-    from PATJobTransforms.ArgDicTools import BuildDicFromCommandLine
-    inDic=BuildDicFromCommandLine(sys.argv)
-    trf = DigiMultiTriggerRecoTrf(inDic)
-    trf._lastInChain=True
-    sys.exit(trf.exeArgDict(inDic).exitCode())
-
diff --git a/Reconstruction/RecJobTransforms/scripts/ESDtoAOD_trf.py b/Reconstruction/RecJobTransforms/scripts/ESDtoAOD_trf.py
deleted file mode 100755
index ae986909800f54bcd9d99fc21dfd09abc1e21f88..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/ESDtoAOD_trf.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__doc__ = """Make AOD's from ESD's using RecExCommon."""
-
-import glob
-import tarfile
-
-from PATJobTransforms.BaseOfBasicTrf import BaseOfBasicTrf
-from PyJobTransformsCore.trf import Author
-from PyJobTransformsCore.trfutil import jiveXMLtgz
-
-class ESDtoAODJobTransform( BaseOfBasicTrf ):
-    def __init__(self,inDic,lastInChain=True):
-        BaseOfBasicTrf.__init__(self,inDic,
-                                authors=[Author('David Cote','david.cote@cern.ch')],
-                                skeleton='RecJobTransforms/skeleton.ESDtoAOD.py' ,
-                                help = __doc__,lastInChain=lastInChain )
-        
-        self._addPostRunAction(self, prepend=True)
-
-
-    def matchEvents(self):
-        return self.matchEventsExpectEqual("inputESDFile","outputAODFile")
-   
-    
-    def postRunAction(self):
-        # Merge JiveXML files into a zip archive
-        print "Executing postRunActions for ESDtoAODJobTransform"
-        if 'outputTXT_JIVEXMLTGZFile' in self.inDic:
-            jiveXMLtgz(self.inDic['outputTXT_JIVEXMLTGZFile'])
-
-
-# executed if not imported
-if __name__ == '__main__':
-    #Special preparation for command-line
-    import sys
-    from PATJobTransforms.ArgDicTools import BuildDicFromCommandLine
-    inDic=BuildDicFromCommandLine(sys.argv)
-    #Construct and execute the transform
-    trf = ESDtoAODJobTransform(inDic)
-    sys.exit(trf.exeArgDict(inDic).exitCode())
diff --git a/Reconstruction/RecJobTransforms/scripts/RAWtoESD_trf.py b/Reconstruction/RecJobTransforms/scripts/RAWtoESD_trf.py
deleted file mode 100755
index e6dd0343a623ed9b6c5df45c38a4353a62c5a54c..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/RAWtoESD_trf.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__doc__ = """Run reconstruction and make ESD's from RDO or BS using RecExCommon."""
-
-from PATJobTransforms.BaseOfBasicTrf import BaseOfBasicTrf
-from PyJobTransformsCore.trf import Author
-from PyJobTransformsCore.trfutil import jiveXMLtgz
-
-class RAWtoESDJobTransform( BaseOfBasicTrf ):
-    def __init__(self,inDic,lastInChain=True):
-        BaseOfBasicTrf.__init__(self,inDic,
-                                authors=[Author('David Cote','david.cote@cern.ch')],
-                                skeleton='RecJobTransforms/skeleton.RAWtoESD.py' ,
-                                help = __doc__, lastInChain=lastInChain )
-
-        self._addPostRunAction(self, prepend=True)
-
-
-    def matchEvents(self):
-        #Note: _namedArgs has lower case keys 
-        if self._namedArgs.has_key("inputbsfile"):
-            self.logger().warning("MatchEvents currently not executed for input bytestream because of potentially skipped truncated events.")
-            return
-
-        return self.matchEventsExpectEqual("inputRDOFile","outputESDFile")
-
-    
-    def postRunAction(self):
-        # Merge JiveXML files into a zip archive
-        print "Executing postRunActions for RAWtoESDJobTransform"
-        if 'outputTXT_JIVEXMLTGZFile' in self.inDic:
-            jiveXMLtgz(self.inDic['outputTXT_JIVEXMLTGZFile'])
-
-
-# execute it if not imported
-if __name__ == '__main__':
-    #Special preparation for command-line
-    import sys
-    from PATJobTransforms.ArgDicTools import BuildDicFromCommandLine
-    inDic=BuildDicFromCommandLine(sys.argv)
-    #Construct and execute the transform
-    trf = RAWtoESDJobTransform(inDic)
-    sys.exit(trf.exeArgDict(inDic).exitCode())
diff --git a/Reconstruction/RecJobTransforms/scripts/RDOtoRDOTrigger_trf.py b/Reconstruction/RecJobTransforms/scripts/RDOtoRDOTrigger_trf.py
deleted file mode 100755
index 5b839d68196e51d0b3788a9ce71ee1ff510ce064..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/RDOtoRDOTrigger_trf.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__doc__ = """Run trigger only from RDO to RDOprime using RecExCommon."""
-
-from PATJobTransforms.BaseOfBasicTrf import BaseOfBasicTrf
-from PyJobTransformsCore.trf import Author
-
-class RDOtoRDOTriggerJobTransform( BaseOfBasicTrf ):
-    def __init__(self,inDic,lastInChain=True):
-        BaseOfBasicTrf.__init__(self,inDic,
-                                authors=[Author('Graeme A Stewart','graeme.andrew.stewart@cern.ch')],
-                                skeleton='RecJobTransforms/skeleton.RDOtoRDOtrigger.py' ,
-                                help = __doc__,lastInChain=lastInChain)
-
-
-    def matchEvents(self):
-        return self.matchEventsExpectEqual("inputRDOFile","outputRDOFile")
-
-
-def main():
-    #Special preparation for command-line
-    import sys
-    from PATJobTransforms.ArgDicTools import BuildDicFromCommandLine
-    inDic=BuildDicFromCommandLine(sys.argv)
-    #Construct and execute the transform
-    trf = RDOtoRDOTriggerJobTransform(inDic)
-    sys.exit(trf.exeArgDict(inDic).exitCode())
-
-
-# execute it if not imported
-if __name__ == '__main__':
-    main()
diff --git a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
index 45215415dc83d038ffdfb8b87daad3e937f2f066..548b3e83015485e08f597360409371e50a3c12ad 100755
--- a/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
+++ b/Reconstruction/RecJobTransforms/scripts/Reco_tf.py
@@ -3,7 +3,7 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
 ## Reco_tf.py - New transform re-implementation of the beast that is Reco_trf.
-# @version $Id: Reco_tf.py 597385 2014-05-16 07:32:27Z graemes $ 
+# @version $Id: Reco_tf.py 613111 2014-08-22 17:01:32Z graemes $ 
 
 import sys
 import time
@@ -22,7 +22,7 @@ from RecJobTransforms.recTransformUtils import addAllRecoArgs, addRecoSubsteps
 
 import PyJobTransforms.trfArgClasses as trfArgClasses
 
-ListOfDefaultPositionalKeys=['--AFPOn', '--ALFAOn', '--AMIConfig', '--AMITag', '--AddCaloDigi', '--DBRelease', '--DataRunNumber', '--FwdRegionOn', '--LucidOn', '--ZDCOn', '--asetup', '--athena', '--athenaopts', '--autoConfiguration', '--beamType', '--bunchSpacing', '--checkEventCount', '--command', '--conditionsTag', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--doAllNoise', '--env', '--eventAcceptanceEfficiency', '--execOnly', '--geometryVersion', '--ignoreErrors', '--ignoreFiles', '--ignorePatterns', '--imf', '--inputAODFile', '--inputBSFile', '--inputBeamGasHitsFile', '--inputBeamHaloHitsFile', '--inputCavernHitsFile', '--inputESDFile', '--inputEVNTFile', '--inputHITSFile', '--inputHighPtMinbiasHitsFile', '--inputLowPtMinbiasHitsFile', '--inputNTUP_COMMONFile', '--inputRDOFile', '--jobNumber', '--maxEvents', '--numberOfBeamGas', '--numberOfBeamHalo', '--numberOfCavernBkg', '--numberOfHighPtMinBias', '--numberOfLowPtMinBias', '--outputAODFile', '--outputAOD_RPRFile', '--outputAOD_SKIMFile', '--outputD2AODM_WMUNUFile', '--outputD2AODM_ZEEFile', '--outputD2AODM_ZMUMUFile', '--outputD2AOD_DIONIAFile', '--outputD2AOD_DIPHOFile', '--outputD2AOD_H4LFile', '--outputD2AOD_WENUFile', '--outputD2AOD_ZEEFile', '--outputD2ESDM_TRKJETFile', '--outputD2ESD_DIPHOFile', '--outputD2ESD_JPSIUPSMMFile', '--outputD2ESD_WENUFile', '--outputD2ESD_WMUNUFile', '--outputD2ESD_ZMMFile', '--outputDAODFile', '--outputDAODM_HIGHMJJFile', '--outputDAODM_SGLEMFile', '--outputDAODM_SGLMUFile', '--outputDAODM_SGLPHFile', '--outputDAODM_SGLTAUFile', '--outputDAOD_2EMFile', '--outputDAOD_2L2QHSG2File', '--outputDAOD_2LHSG2File', '--outputDAOD_2MUFile', '--outputDAOD_2PHFile', '--outputDAOD_4LHSG2File', '--outputDAOD_EGLOOSEFile', '--outputDAOD_ELLOOSE18File', '--outputDAOD_ELLOOSEFile', '--outputDAOD_EMJETFile', '--outputDAOD_EMMETFile', '--outputDAOD_EMMUFile', '--outputDAOD_EMTAUFile', '--outputDAOD_H4LBREMRECFile', '--outputDAOD_HIGHMDIJETFile', '--outputDAOD_HSG1File', '--outputDAOD_HSG2File', '--outputDAOD_HWWFile', '--outputDAOD_JETMETFile', '--outputDAOD_JPSIMUMUFile', '--outputDAOD_MUFile', '--outputDAOD_MUJETFile', '--outputDAOD_MUMETFile', '--outputDAOD_MUTAUFile', '--outputDAOD_ONIAMUMUFile', '--outputDAOD_PHLOOSEFile', '--outputDAOD_RNDMFile', '--outputDAOD_SKIMELFile', '--outputDAOD_SUSYEGAMMAFile', '--outputDAOD_SUSYJETSFile', '--outputDAOD_SUSYMUONSFile', '--outputDAOD_TAUJETFile', '--outputDAOD_TESTFile', '--outputDAOD_UPSIMUMUFile', '--outputDAOD_ZEEGAMMAFile', '--outputDAOD_ZMUMUGAMMAFile', '--outputDESDM_ALLCELLSFile', '--outputDESDM_BEAMSPOTFile', '--outputDESDM_EGAMMAFile', '--outputDESDM_METFile', '--outputDESDM_MUONFile', '--outputDESDM_RPVLLCCFile', '--outputDESDM_RPVLLFile', '--outputDESDM_TRACKFile', '--outputDESD_CALJETFile', '--outputDESD_CALOCOMMFile', '--outputDESD_COLLCANDFile', '--outputDESD_CTLFWJETFile', '--outputDESD_EGTAUCOMMFile', '--outputDESD_EMCLUSCOMMFile', '--outputDESD_FWJETFile', '--outputDESD_HIRAREFile', '--outputDESD_IDCOMMFile', '--outputDESD_IDPROJCOMMFile', '--outputDESD_MBIASFile', '--outputDESD_MUONCOMMFile', '--outputDESD_ONIAMUMUHIFile', '--outputDESD_PHOJETFile', '--outputDESD_PIXELCOMMFile', '--outputDESD_PRESCALEDFile', '--outputDESD_RANDOMCOMMFile', '--outputDESD_RPCCOMMFile', '--outputDESD_SCTCOMMFile', '--outputDESD_SGLELFile', '--outputDESD_SGLMUFile', '--outputDESD_SKIMELFile', '--outputDESD_TGCCOMMFile', '--outputDESD_TILECOMMFile', '--outputDNTUPFile', '--outputDRAW_IDPROJCOMMFile', '--outputDRAW_WENUFile', '--outputDRAW_WMUNUFile', '--outputDRAW_ZEEFile', '--outputDRAW_ZMUMUFile', '--outputESDFile', '--outputHISTFile', '--outputHIST_AODFile', '--outputNTUP_2L2QHSG2File', '--outputNTUP_2LHSG2File', '--outputNTUP_4LHSG2File', '--outputNTUP_BKGDFile', '--outputNTUP_BTAGD3PDFile', '--outputNTUP_BTAGEFFFile', '--outputNTUP_BTAGFULLFile', '--outputNTUP_BTAGGHOSTFile', '--outputNTUP_BTAGSLIMFile', '--outputNTUP_CLUSTERCORRECTIONFile', '--outputNTUP_COMMONFile', '--outputNTUP_EGAMMAFile', '--outputNTUP_EMBHHDNFile', '--outputNTUP_EMBHHIMFile', '--outputNTUP_EMBHHUPFile', '--outputNTUP_EMBLHDNFile', '--outputNTUP_EMBLHIMFile', '--outputNTUP_EMBLHUPFile', '--outputNTUP_EMBLLDNFile', '--outputNTUP_EMBLLIMFile', '--outputNTUP_EMBLLUPFile', '--outputNTUP_ENHBIASFile', '--outputNTUP_FASTMONFile', '--outputNTUP_HECNOISEFile', '--outputNTUP_HIFile', '--outputNTUP_HIGHMULTFile', '--outputNTUP_HSG2File', '--outputNTUP_HSG5GAMHFile', '--outputNTUP_HSG5GAMZFile', '--outputNTUP_HSG5WHFile', '--outputNTUP_HSG5WHQFile', '--outputNTUP_HSG5WHUFile', '--outputNTUP_HSG5ZBBFile', '--outputNTUP_HSG5ZHLLFile', '--outputNTUP_HSG5ZHLLUFile', '--outputNTUP_HSG5ZHMETFile', '--outputNTUP_HSG5ZHMETUFile', '--outputNTUP_IDVTXFile', '--outputNTUP_IDVTXLUMIFile', '--outputNTUP_JETMETEMCLFile', '--outputNTUP_JETMETFULLFile', '--outputNTUP_JETMETFile', '--outputNTUP_JETMETWZFile', '--outputNTUP_L1CALOFile', '--outputNTUP_L1CALOPROBFile', '--outputNTUP_L1TGCFile', '--outputNTUP_LARNOISEFile', '--outputNTUP_MCPFile', '--outputNTUP_MINBIASFile', '--outputNTUP_MUFASTFile', '--outputNTUP_MUONCALIBFile', '--outputNTUP_MUONFile', '--outputNTUP_PHOTONFile', '--outputNTUP_PHYSICSFile', '--outputNTUP_PHYSVALFile', '--outputNTUP_PROMPTPHOTFile', '--outputNTUP_SCTFile', '--outputNTUP_SMBKGEFile', '--outputNTUP_SMBKGMUFile', '--outputNTUP_SMDILEPFile', '--outputNTUP_SMDYEEFile', '--outputNTUP_SMDYMUMUFile', '--outputNTUP_SMLIGHTFile', '--outputNTUP_SMQCDFile', '--outputNTUP_SMTRILEPFile', '--outputNTUP_SMWENUFile', '--outputNTUP_SMWENUJJFile', '--outputNTUP_SMWMUNUFile', '--outputNTUP_SMWMUNUJJFile', '--outputNTUP_SMWZFile', '--outputNTUP_SMWZSOFTFile', '--outputNTUP_SMZEEFile', '--outputNTUP_SMZMUMUFile', '--outputNTUP_SUSY01LEPFile', '--outputNTUP_SUSY23LEPFile', '--outputNTUP_SUSY34LEPFile', '--outputNTUP_SUSYBOOSTFile', '--outputNTUP_SUSYFile', '--outputNTUP_SUSYLEPTAUFile', '--outputNTUP_SUSYLLPFile', '--outputNTUP_SUSYRAZORFile', '--outputNTUP_SUSYSKIMFile', '--outputNTUP_SUSYTAGFile', '--outputNTUP_SUSYTRUTHFile', '--outputNTUP_TAUFULLFile', '--outputNTUP_TAUFile', '--outputNTUP_TAUMEDIUMFile', '--outputNTUP_TAUSMALLFile', '--outputNTUP_TOPBOOSTFile', '--outputNTUP_TOPEJETFile', '--outputNTUP_TOPELFile', '--outputNTUP_TOPFile', '--outputNTUP_TOPJETFile', '--outputNTUP_TOPMUFile', '--outputNTUP_TPHSG2File', '--outputNTUP_TRIGBJETFile', '--outputNTUP_TRIGFile', '--outputNTUP_TRIGMUFile', '--outputNTUP_TRKVALIDFile', '--outputNTUP_TRTFile', '--outputNTUP_TRUTHFile', '--outputNTUP_WPRIMEENFile', '--outputNTUP_WPRIMEMNFile', '--outputNTUP_WZFile', '--outputNTUP_ZPRIMEEEFile', '--outputNTUP_ZPRIMEMMFile', '--outputRDOFile', '--outputTAGFile', '--pileupFinalBunch', '--pileupInitialBunch', '--postExec', '--postInclude', '--preExec', '--preInclude', '--reductionConf', '--reportName', '--reportType', '--runNumber', '--samplingFractionDbTag', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--skipFileValidation', '--skipInputFileValidation', '--skipOutputFileValidation', '--tcmalloc', '--testPileUpConfig', '--tmpRDO', '--trigFilterList', '--triggerConfig', '--validationFlags']
+ListOfDefaultPositionalKeys=['--AFPOn', '--ALFAOn', '--AMIConfig', '--AMITag', '--AddCaloDigi', '--DBRelease', '--DataRunNumber', '--FwdRegionOn', '--LucidOn', '--ZDCOn', '--argJSON', '--asetup', '--athena', '--athenaMPMergeTargetSize', '--athenaopts', '--autoConfiguration', '--beamType', '--bunchSpacing', '--checkEventCount', '--command', '--conditionsTag', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--execOnly', '--geometryVersion', '--ignoreErrors', '--ignoreFiles', '--ignorePatterns', '--imf', '--inputAODFile', '--inputBSFile', '--inputBeamGasHitsFile', '--inputBeamHaloHitsFile', '--inputCavernHitsFile', '--inputESDFile', '--inputEVNTFile', '--inputHITSFile', '--inputHighPtMinbiasHitsFile', '--inputLowPtMinbiasHitsFile', '--inputNTUP_COMMONFile', '--inputRDOFile', '--jobNumber', '--maxEvents', '--numberOfBeamGas', '--numberOfBeamHalo', '--numberOfCavernBkg', '--numberOfHighPtMinBias', '--numberOfLowPtMinBias', '--orphanKiller', '--outputAODFile', '--outputAOD_RPRFile', '--outputAOD_SKIMFile', '--outputBSFile', '--outputD2AODM_WMUNUFile', '--outputD2AODM_ZEEFile', '--outputD2AODM_ZMUMUFile', '--outputD2AOD_DIONIAFile', '--outputD2AOD_DIPHOFile', '--outputD2AOD_H4LFile', '--outputD2AOD_WENUFile', '--outputD2AOD_ZEEFile', '--outputD2ESDM_TRKJETFile', '--outputD2ESD_DIPHOFile', '--outputD2ESD_JPSIUPSMMFile', '--outputD2ESD_WENUFile', '--outputD2ESD_WMUNUFile', '--outputD2ESD_ZMMFile', '--outputDAODFile', '--outputDAODM_HIGHMJJFile', '--outputDAODM_SGLEMFile', '--outputDAODM_SGLMUFile', '--outputDAODM_SGLPHFile', '--outputDAODM_SGLTAUFile', '--outputDAOD_2EMFile', '--outputDAOD_2L2QHSG2File', '--outputDAOD_2LHSG2File', '--outputDAOD_2MUFile', '--outputDAOD_2PHFile', '--outputDAOD_4LHSG2File', '--outputDAOD_EGLOOSEFile', '--outputDAOD_ELLOOSE18File', '--outputDAOD_ELLOOSEFile', '--outputDAOD_EMJETFile', '--outputDAOD_EMMETFile', '--outputDAOD_EMMUFile', '--outputDAOD_EMTAUFile', '--outputDAOD_H4LBREMRECFile', '--outputDAOD_HIGHMDIJETFile', '--outputDAOD_HSG1File', '--outputDAOD_HSG2File', '--outputDAOD_HWWFile', '--outputDAOD_JETMETFile', '--outputDAOD_JPSIHSG2File', '--outputDAOD_JPSIMUMUFile', '--outputDAOD_MUFile', '--outputDAOD_MUJETFile', '--outputDAOD_MUMETFile', '--outputDAOD_MUTAUFile', '--outputDAOD_ONIAMUMUFile', '--outputDAOD_PHLOOSEFile', '--outputDAOD_RED_TEST1File', '--outputDAOD_RED_TEST2File', '--outputDAOD_RNDMFile', '--outputDAOD_SKIMELFile', '--outputDAOD_SUSYEGAMMAFile', '--outputDAOD_SUSYJETSFile', '--outputDAOD_SUSYMUONSFile', '--outputDAOD_TAUJETFile', '--outputDAOD_TESTFile', '--outputDAOD_UPSIMUMUFile', '--outputDAOD_ZEEGAMMAFile', '--outputDAOD_ZMUMUGAMMAFile', '--outputDESDM_ALLCELLSFile', '--outputDESDM_BEAMSPOTFile', '--outputDESDM_EGAMMAFile', '--outputDESDM_METFile', '--outputDESDM_MUONFile', '--outputDESDM_RPVLLCCFile', '--outputDESDM_RPVLLFile', '--outputDESDM_TRACKFile', '--outputDESD_CALJETFile', '--outputDESD_CALOCOMMFile', '--outputDESD_COLLCANDFile', '--outputDESD_CTLFWJETFile', '--outputDESD_EGTAUCOMMFile', '--outputDESD_EMCLUSCOMMFile', '--outputDESD_FWJETFile', '--outputDESD_HIRAREFile', '--outputDESD_IDCOMMFile', '--outputDESD_IDPROJCOMMFile', '--outputDESD_MBIASFile', '--outputDESD_MUONCOMMFile', '--outputDESD_ONIAMUMUHIFile', '--outputDESD_PHOJETFile', '--outputDESD_PIXELCOMMFile', '--outputDESD_PRESCALEDFile', '--outputDESD_RANDOMCOMMFile', '--outputDESD_RPCCOMMFile', '--outputDESD_SCTCOMMFile', '--outputDESD_SGLELFile', '--outputDESD_SGLMUFile', '--outputDESD_SKIMELFile', '--outputDESD_SLTTMUFile', '--outputDESD_TAUMUHFile', '--outputDESD_TGCCOMMFile', '--outputDESD_TILECOMMFile', '--outputDNTUPFile', '--outputDRAW_IDPROJCOMMFile', '--outputDRAW_WENUFile', '--outputDRAW_WMUNUFile', '--outputDRAW_ZEEFile', '--outputDRAW_ZMUMUFile', '--outputESDFile', '--outputHISTFile', '--outputHIST_AODFile', '--outputNTUP_2L2QHSG2File', '--outputNTUP_2LHSG2File', '--outputNTUP_4LHSG2File', '--outputNTUP_BKGDFile', '--outputNTUP_BTAGD3PDFile', '--outputNTUP_BTAGEFFFile', '--outputNTUP_BTAGFULLFile', '--outputNTUP_BTAGGHOSTFile', '--outputNTUP_BTAGSLIMFile', '--outputNTUP_CLUSTERCORRECTIONFile', '--outputNTUP_COMMONFile', '--outputNTUP_EGAMMAFile', '--outputNTUP_EMBHHDNFile', '--outputNTUP_EMBHHIMFile', '--outputNTUP_EMBHHUPFile', '--outputNTUP_EMBLHDNFile', '--outputNTUP_EMBLHIMFile', '--outputNTUP_EMBLHUPFile', '--outputNTUP_EMBLLDNFile', '--outputNTUP_EMBLLIMFile', '--outputNTUP_EMBLLUPFile', '--outputNTUP_ENHBIASFile', '--outputNTUP_FASTMONFile', '--outputNTUP_HECNOISEFile', '--outputNTUP_HIGHMULTFile', '--outputNTUP_HSG2File', '--outputNTUP_HSG5GAMHFile', '--outputNTUP_HSG5GAMZFile', '--outputNTUP_HSG5WHFile', '--outputNTUP_HSG5WHQFile', '--outputNTUP_HSG5WHUFile', '--outputNTUP_HSG5ZBBFile', '--outputNTUP_HSG5ZHLLFile', '--outputNTUP_HSG5ZHLLUFile', '--outputNTUP_HSG5ZHMETFile', '--outputNTUP_HSG5ZHMETUFile', '--outputNTUP_IDVTXFile', '--outputNTUP_IDVTXLUMIFile', '--outputNTUP_JETMETEMCLFile', '--outputNTUP_JETMETFULLFile', '--outputNTUP_JETMETFile', '--outputNTUP_JETMETWZFile', '--outputNTUP_L1CALOFile', '--outputNTUP_L1CALOPROBFile', '--outputNTUP_L1TGCFile', '--outputNTUP_LARNOISEFile', '--outputNTUP_MCPFile', '--outputNTUP_MINBIASFile', '--outputNTUP_MUFASTFile', '--outputNTUP_MUONCALIBFile', '--outputNTUP_MUONFile', '--outputNTUP_PHOTONFile', '--outputNTUP_PHYSICSFile', '--outputNTUP_PHYSVALFile', '--outputNTUP_PROMPTPHOTFile', '--outputNTUP_SCTFile', '--outputNTUP_SMBKGEFile', '--outputNTUP_SMBKGMUFile', '--outputNTUP_SMDILEPFile', '--outputNTUP_SMDYEEFile', '--outputNTUP_SMDYMUMUFile', '--outputNTUP_SMLIGHTFile', '--outputNTUP_SMQCDFile', '--outputNTUP_SMTRILEPFile', '--outputNTUP_SMWENUFile', '--outputNTUP_SMWENUJJFile', '--outputNTUP_SMWMUNUFile', '--outputNTUP_SMWMUNUJJFile', '--outputNTUP_SMWZFile', '--outputNTUP_SMWZSOFTFile', '--outputNTUP_SMZEEFile', '--outputNTUP_SMZMUMUFile', '--outputNTUP_SUSYLLPFile', '--outputNTUP_SUSYTRUTHFile', '--outputNTUP_TAUFULLFile', '--outputNTUP_TAUFile', '--outputNTUP_TAUMEDIUMFile', '--outputNTUP_TAUSMALLFile', '--outputNTUP_TOPBOOSTFile', '--outputNTUP_TPHSG2File', '--outputNTUP_TRIGBJETFile', '--outputNTUP_TRIGFile', '--outputNTUP_TRIGMUFile', '--outputNTUP_TRKVALIDFile', '--outputNTUP_TRTFile', '--outputNTUP_TRUTHFile', '--outputNTUP_WPRIMEENFile', '--outputNTUP_WPRIMEMNFile', '--outputNTUP_WZFile', '--outputNTUP_ZPRIMEEEFile', '--outputNTUP_ZPRIMEMMFile', '--outputRDOFile', '--outputTAGFile', '--parallelFileValidation', '--passThrough', '--pileupFinalBunch', '--pileupInitialBunch', '--postExec', '--postInclude', '--preExec', '--preInclude', '--reductionConf', '--reportName', '--reportType', '--runNumber', '--samplingFractionDbTag', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--skipFileValidation', '--skipInputFileValidation', '--skipOutputFileValidation', '--steering', '--tcmalloc', '--testPileUpConfig', '--tmpRDO', '--trigFilterList', '--trigStream', '--triggerConfig', '--validationFlags']
 
 @stdTrfExceptionHandler
 @sigUsrStackTrace
diff --git a/Reconstruction/RecJobTransforms/scripts/csc_MergeHIST_trf.py b/Reconstruction/RecJobTransforms/scripts/csc_MergeHIST_trf.py
deleted file mode 100755
index 9a1939ccc66e0bfecce58f3ea81f8e627d092068..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/csc_MergeHIST_trf.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-__doc__ = """Merge several input DMQ monitoring histogram files into a single output file. For merging of NTUPs please use MergeNTUP_trf.py"""
-
-from PyJobTransformsCore.trf import *
-from PyJobTransformsCore.full_trfarg import *
-from PyJobTransformsCore.trfutil import *
-from RecJobTransforms.RecConfig import recConfig
-
-class MergeHISTTransform( JobTransform ):
-    def __init__(self,lastInChain=True):
-        JobTransform.__init__(self,
-                              authors = [ Author('Max Baak', 'mbaak@cern.ch') ] ,
-                              skeleton='RecJobTransforms/skeleton.csc_MergeHIST_trf.py' ,
-                              help = __doc__ ,
-                              config = recConfig,lastInChain=lastInChain)
-
-        ## add arguments
-        self.add( InputMonitorHistArg(name='inputROOTFile'), default='NONE' )
-        self.add( MonitorHistArg(name='outputROOTFile'), default='NONE' )
-        self.add( JobConfigArg(package='RecJobTransforms'), default='NONE' )
-        
-
-## execute it if not imported
-if __name__ == '__main__':
-    trf = MergeHISTTransform()
-    sys.exit(trf.exeSysArgs().exitCode())
-
-## Example of command lines are:
-## csc_MergeHIST_trf.py inputROOTFile=$file1,$file2 outputROOTFile=$file3
-
diff --git a/Reconstruction/RecJobTransforms/scripts/streamtest_mixer_trf.py b/Reconstruction/RecJobTransforms/scripts/streamtest_mixer_trf.py
deleted file mode 100755
index fbc21d55509043f0762c2a5739458e736b3bd20f..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/scripts/streamtest_mixer_trf.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-__doc__ = """Run the streaming test."""
-
-from PyJobTransformsCore.trf import JobTransform
-from PyJobTransformsCore.full_trfarg import *
-from RecJobTransforms.streaming_arg import *
-from RecJobTransforms.MixStreamConfig import *
-
-class StreamMixingTransform(JobTransform):    
-    def __init__(self):
-        JobTransform.__init__(self,
-                              authors=[ Author('Ayana Holloway', 'ATHolloway@lbl.gov') ],
-                              skeleton='RecJobTransforms/skeleton_mixing_streamtest.py',
-                              help=__doc__,
-                              config=mixStreamConfig )
-
-        # Add runargs in order
-        self.add ( JobConfigArg(package='RecJobTransforms'))
-        self.add ( PartitionArg() )
-        self.add ( MaxEventsArg())
-        self.add ( RandomSeedArg('Seed for MixingEventSelector') )
-        self.add ( OutputRDOFileArg(name='theRDOFile'), default="test.pool.root" )
-        self.add ( OutputRDOFileArg(name='egammaRDOFile'), default="NONE" )
-        self.add ( OutputRDOFileArg(name='muonRDOFile'), default="NONE" )
-        self.add ( OutputRDOFileArg(name='jetRDOFile'), default="NONE" )
-        self.add ( OutputRDOFileArg(name='expressRDOFile'), default="NONE" )        
-        self.add ( TriggerConfigArg(), default='lumi1E31_no_prescale' )
-        self.add ( GeometryVersionArg(), default='CSC-ATLAS-01-02-00' )
-
-
-    def writeRunArgs(self):
-        #First clone old trf behavior
-        JobTransform.writeRunArgs(self);
-
-        #Now make a new command file for including.
-        f = file("./streamtest_mixer_partition_args.py" ,'w')
-        f.write( "#Derived run config from PartitionArgs\n" )
-        f.write( self.getArgument("partition").WritePartitionJobOptions() )
-        f.close()
-        
-# execute it if run as a script
-if __name__ == '__main__':
-    # make transform object
-    trf = StreamMixingTransform()
-    import sys
-    sys.exit( trf.exeSysArgs().exitCode() )
diff --git a/Reconstruction/RecJobTransforms/share/skeleton.MergePool_tf.py b/Reconstruction/RecJobTransforms/share/skeleton.MergePool_tf.py
index e442075f4f8b86a3dc567a6af9fd5245088202ec..d354c1ee899298044fe1c4b82fb7238d96a8e164 100644
--- a/Reconstruction/RecJobTransforms/share/skeleton.MergePool_tf.py
+++ b/Reconstruction/RecJobTransforms/share/skeleton.MergePool_tf.py
@@ -26,6 +26,15 @@ if hasattr(runArgs, "inputPOOL_MRG_INPUTFile"):
     else:
         recoLog.warning("No recognised data type for merge input and output ({0}). Merge setup may not be correct!".format(runArgs.inputPOOL_MRG_INPUTFileType))
 
+# DAOD comes in many flavours, so automate transforming this into a "standard" AOD argument
+DAOD_Input_Key = [ k for k in dir(runArgs) if k.startswith("inputDAOD") and k.endswith("File") ]
+if len(DAOD_Input_Key) is 1:
+    runArgs.inputAODFile = getattr(runArgs, DAOD_Input_Key[0])
+
+DAOD_Output_Key = [ k for k in dir(runArgs) if k.startswith("outputDAOD") and k.endswith("_MRGFile") ]
+if len(DAOD_Output_Key) is 1:
+    runArgs.outputAOD_MRGFile = getattr(runArgs, DAOD_Output_Key[0])
+        
 if hasattr(runArgs,"inputFile"): athenaCommonFlags.FilesInput.set_Value_and_Lock( runArgs.inputFile )
 if hasattr(runArgs,"inputAODFile"):
     rec.readAOD.set_Value_and_Lock( True )
diff --git a/Reconstruction/RecJobTransforms/share/skeleton.RAWtoESD.py b/Reconstruction/RecJobTransforms/share/skeleton.RAWtoESD.py
index 7d5c52260b172eef6dbcf33c8ed14d7c3897868f..0c932a38c8a442dd63ca461e0e5b48ea35c784a9 100644
--- a/Reconstruction/RecJobTransforms/share/skeleton.RAWtoESD.py
+++ b/Reconstruction/RecJobTransforms/share/skeleton.RAWtoESD.py
@@ -59,6 +59,10 @@ if hasattr(runArgs,"outputDRAW_WMUNUFile"):
     #simpleName = outputBSNameStripper(runArgs.outputDRAW_WMUNUFile)
     primDPD.WriteRAWPerfDPD_WMUNU.FileName = runArgs.outputDRAW_WMUNUFile
 
+if hasattr(runArgs,"trigFilterList"):
+    rec.doTriggerFilter.set_Value_and_Lock(True)
+    triggerListString = "|".join(runArgs.trigFilterList)
+    rec.triggerFilterList=triggerListString
 
 if hasattr(runArgs,"outputESDFile"):
     rec.doESD.set_Value_and_Lock( True )