diff --git a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py index 9402340a5214cba9431602465a7786fea48076be..76244917200794c3377c11fb199eca0ffaad24cc 100644 --- a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py @@ -97,26 +97,11 @@ def fromRunArgs(runArgs): else: raise RuntimeError('No input HITS file defined') - if hasattr(runArgs, 'detectors'): - detectors = runArgs.detectors - else: - from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors - detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion) - - # Support switching on Forward Detectors - if hasattr(runArgs, 'LucidOn'): - detectors = detectors+['Lucid'] - if hasattr(runArgs, 'ZDCOn'): - detectors = detectors+['ZDC'] - if hasattr(runArgs, 'AFPOn'): - detectors = detectors+['AFP'] - if hasattr(runArgs, 'ALFAOn'): - detectors = detectors+['ALFA'] - if hasattr(runArgs, 'FwdRegionOn'): - detectors = detectors+['FwdRegion'] - - # Setup common simulation flags - defaultFilterHitFlags(ConfigFlags, detectors) + # Generate detector list and setup detector flags + from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs + detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) + from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList + setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True) ## from SimuJobTransforms.HitsFilePeeker import HitsFilePeeker ## HitsFilePeeker(runArgs, filterHitLog) @@ -128,7 +113,7 @@ def fromRunArgs(runArgs): else: ConfigFlags.Output.HITSFileName = runArgs.outputHITS_FILTFile else: - raise RuntimeError('No outputHITSFile defined') + raise RuntimeError('No outputHITS_FILTFile defined') # Pre-include processPreInclude(runArgs, ConfigFlags) diff --git a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py index 12b5b9e551bfbda2f6b5febfc16bc3b4bf03d56a..2a196a592e206d4f777dd81d7338cc03c2f9a6d5 100644 --- a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py @@ -38,26 +38,9 @@ def fromRunArgs(runArgs): from AthenaConfiguration.AllConfigFlags import ConfigFlags commonRunArgsToFlags(runArgs, ConfigFlags) - if hasattr(runArgs, 'detectors'): - detectors = runArgs.detectors - else: - from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors - detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion) - - # Support switching on simulation of Forward Detectors - if hasattr(runArgs, 'LucidOn'): - detectors = detectors+['Lucid'] - if hasattr(runArgs, 'ZDCOn'): - detectors = detectors+['ZDC'] - if hasattr(runArgs, 'AFPOn'): - detectors = detectors+['AFP'] - if hasattr(runArgs, 'ALFAOn'): - detectors = detectors+['ALFA'] - if hasattr(runArgs, 'FwdRegionOn'): - detectors = detectors+['FwdRegion'] - #TODO here support switching on Cavern geometry - #if hasattr(runArgs, 'CavernOn'): - # detectors = detectors+['Cavern'] + # Generate detector list + from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs + detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) if hasattr(runArgs, 'simulator'): ConfigFlags.Sim.ISF.Simulator = runArgs.simulator @@ -156,7 +139,7 @@ def fromRunArgs(runArgs): # Lock flags ConfigFlags.lock() - from CommonSimulationSteering import CommonSimulationCfg + from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg cfg = CommonSimulationCfg(ConfigFlags, log) # Post-include diff --git a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py new file mode 100644 index 0000000000000000000000000000000000000000..043a7b868e370d573426a996e4e45b178d9b69e2 --- /dev/null +++ b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py @@ -0,0 +1,84 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import sys +from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags +from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude + + +def fromRunArgs(runArgs): + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior = True + + from AthenaCommon.Logging import logging + log = logging.getLogger('HITSMerge_tf') + log.info('****************** STARTING HIT MERGING *****************') + + log.info('**** Transformation run arguments') + log.info(str(runArgs)) + + log.info('**** Setting-up configuration flags') + from AthenaConfiguration.AllConfigFlags import ConfigFlags + commonRunArgsToFlags(runArgs, ConfigFlags) + + if hasattr(runArgs, 'inputHITSFile'): + ConfigFlags.Input.Files = runArgs.inputHITSFile + else: + raise RuntimeError('No input HITS file defined') + + if hasattr(runArgs, 'outputHITS_MRGFile'): + if runArgs.outputHITS_MRGFile == 'None': + ConfigFlags.Output.HITSFileName = '' + # TODO decide if we need a specific HITS_MRGFileName flag + else: + ConfigFlags.Output.HITSFileName = runArgs.outputHITS_MRGFile + else: + raise RuntimeError('No outputHITS_MRGFile defined') + + # Generate detector list and setup detector flags + from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs + detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) + from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList + setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True) + + # Pre-include + processPreInclude(runArgs, ConfigFlags) + + # Pre-exec + processPreExec(runArgs, ConfigFlags) + + # Lock flags + ConfigFlags.lock() + + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + cfg = MainServicesCfg(ConfigFlags) + + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg + cfg.merge(PoolReadCfg(ConfigFlags)) + cfg.merge(PoolWriteCfg(ConfigFlags)) + + # Minor geometry dependencies + if ConfigFlags.Detector.GeometryLAr: + from LArGeoAlgsNV.LArGMConfig import LArGMCfg + cfg.merge(LArGMCfg(ConfigFlags)) + if ConfigFlags.Detector.GeometryTile: + from TileGeoModel.TileGMConfig import TileGMCfg + cfg.merge(TileGMCfg(ConfigFlags)) + + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + cfg.merge(OutputStreamCfg(ConfigFlags, 'HITS', disableEventTag=True)) + cfg.getEventAlgo('OutputStreamHITS').TakeItemsFromInput = True + + # Post-include + processPostInclude(runArgs, ConfigFlags, cfg) + + # Post-exec + processPostExec(runArgs, ConfigFlags, cfg) + + import time + tic = time.time() + # Run the final accumulator + sc = cfg.run() + log.info("Ran HITSMerge_tf in " + str(time.time()-tic) + " seconds") + + sys.exit(not sc.isSuccess()) diff --git a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py index b9aad23154e832671d576113131154c34b93d069..09ae87185c5bb8966d6019ed3006f7e0fa8a969d 100644 --- a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py @@ -48,26 +48,9 @@ def fromRunArgs(runArgs): from AthenaConfiguration.AllConfigFlags import ConfigFlags commonRunArgsToFlags(runArgs, ConfigFlags) - if hasattr(runArgs, 'detectors'): - detectors = runArgs.detectors - else: - from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors - detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion) - - # Support switching on simulation of Forward Detectors - if hasattr(runArgs, 'LucidOn'): - detectors = detectors+['Lucid'] - if hasattr(runArgs, 'ZDCOn'): - detectors = detectors+['ZDC'] - if hasattr(runArgs, 'AFPOn'): - detectors = detectors+['AFP'] - if hasattr(runArgs, 'ALFAOn'): - detectors = detectors+['ALFA'] - if hasattr(runArgs, 'FwdRegionOn'): - detectors = detectors+['FwdRegion'] - #TODO here support switching on Cavern geometry - #if hasattr(runArgs, 'CavernOn'): - # detectors = detectors+['Cavern'] + # Generate detector list + from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs + detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) if hasattr(runArgs, 'simulator'): ConfigFlags.Sim.ISF.Simulator = runArgs.simulator @@ -166,7 +149,7 @@ def fromRunArgs(runArgs): # Lock flags ConfigFlags.lock() - from CommonSimulationSteering import CommonSimulationCfg + from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg cfg = CommonSimulationCfg(ConfigFlags, log) # Post-include diff --git a/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py new file mode 100644 index 0000000000000000000000000000000000000000..a8f141bf4af2aa84efc105e36dc54d1329a85ef8 --- /dev/null +++ b/Simulation/SimuJobTransforms/python/RDOMerge_Skeleton.py @@ -0,0 +1,122 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import sys +from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags +from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude + + +def fromRunArgs(runArgs): + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior = True + + from AthenaCommon.Logging import logging + log = logging.getLogger('RDOMerge_tf') + log.info('****************** STARTING RDO MERGING *****************') + + log.info('**** Transformation run arguments') + log.info(str(runArgs)) + + log.info('**** Setting-up configuration flags') + from AthenaConfiguration.AllConfigFlags import ConfigFlags + commonRunArgsToFlags(runArgs, ConfigFlags) + + if hasattr(runArgs, "PileUpPresampling"): + from AthenaConfiguration.Enums import ProductionStep + ConfigFlags.Common.ProductionStep = ProductionStep.PileUpPresampling + + if hasattr(runArgs, 'inputRDOFile'): + ConfigFlags.Input.Files = runArgs.inputRDOFile + else: + raise RuntimeError('No input RDO file defined') + + if hasattr(runArgs, 'outputRDO_MRGFile'): + if runArgs.outputRDO_MRGFile == 'None': + ConfigFlags.Output.RDOFileName = '' + # TODO decide if we need a specific RDO_MRGFileName flag + else: + ConfigFlags.Output.RDOFileName = runArgs.outputRDO_MRGFile + else: + raise RuntimeError('No outputRDO_MRGFile defined') + + # Generate detector list and setup detector flags + from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs + detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) + from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList + setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True) + + # Pre-include + processPreInclude(runArgs, ConfigFlags) + + # Pre-exec + processPreExec(runArgs, ConfigFlags) + + # Lock flags + ConfigFlags.lock() + + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + cfg = MainServicesCfg(ConfigFlags) + + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg + cfg.merge(PoolReadCfg(ConfigFlags)) + cfg.merge(PoolWriteCfg(ConfigFlags)) + + # Geometry dependencies + if ConfigFlags.Detector.EnablePixel: + from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg + cfg.merge(PixelGeometryCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableSCT: + from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg + cfg.merge(SCT_GeometryCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableTRT: + from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg + cfg.merge(TRT_GeometryCfg(ConfigFlags)) + + if ConfigFlags.Detector.EnableITkPixel: + from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelGeometryCfg + cfg.merge(ITkPixelGeometryCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableITkStrip: + from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripGeometryCfg + cfg.merge(ITkStripGeometryCfg(ConfigFlags)) + + if ConfigFlags.Detector.EnableHGTD: + from HGTD_GeoModel.HGTD_GeoModelConfig import HGTD_GeometryCfg + cfg.merge(HGTD_GeometryCfg(ConfigFlags)) + + if ConfigFlags.Detector.EnableLAr: + from LArGeoAlgsNV.LArGMConfig import LArGMCfg + cfg.merge(LArGMCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableTile: + from TileGeoModel.TileGMConfig import TileGMCfg + cfg.merge(TileGMCfg(ConfigFlags)) + from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg + cfg.merge(TileCablingSvcCfg(ConfigFlags)) + + if ConfigFlags.Detector.EnableMuon: + from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg + cfg.merge(MuonGeoModelCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableRPC: + from MuonConfig.MuonCablingConfig import RPCCablingConfigCfg + cfg.merge(RPCCablingConfigCfg(ConfigFlags)) + + from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + cfg.merge(OutputStreamCfg(ConfigFlags, 'RDO')) + cfg.getEventAlgo('OutputStreamRDO').TakeItemsFromInput = True + + # Silence HepMcParticleLink warnings + from Digitization.DigitizationSteering import DigitizationMessageSvcCfg + cfg.merge(DigitizationMessageSvcCfg(ConfigFlags)) + + # Post-include + processPostInclude(runArgs, ConfigFlags, cfg) + + # Post-exec + processPostExec(runArgs, ConfigFlags, cfg) + + import time + tic = time.time() + # Run the final accumulator + sc = cfg.run() + log.info("Ran RDOMerge_tf in " + str(time.time()-tic) + " seconds") + + sys.exit(not sc.isSuccess()) diff --git a/Simulation/SimuJobTransforms/python/SimTransformUtils.py b/Simulation/SimuJobTransforms/python/SimTransformUtils.py index a3bf68cc5343c203ab321f70db553ac5dcb48850..db6bdd85856de6c795941b2dd21c75e5c68fc0e5 100644 --- a/Simulation/SimuJobTransforms/python/SimTransformUtils.py +++ b/Simulation/SimuJobTransforms/python/SimTransformUtils.py @@ -191,7 +191,8 @@ def addConfigurableSimSubstep(executorSet, confName, extraSkeleton, confSubStep, def addStandardHITSMergeSubstep(executorSet): executorSet.add(athenaExecutor(name = 'HITSMerge', substep="hitsmerge", skeletonFile = 'SimuJobTransforms/skeleton.HITSMerge.py', - tryDropAndReload = False, inputDataTypeCountCheck = ['HITS'])) + skeletonCA = 'SimuJobTransforms.HITSMerge_Skeleton', + tryDropAndReload = False, inputDataTypeCountCheck = ['HITS'])) def addAFII_HITSMergeSubstep(executorSet): executorSet.add(athenaExecutor(name = 'HITSMerge', substep="hitsmerge", skeletonFile = 'SimuJobTransforms/skeleton.HITSMerge.py', diff --git a/Simulation/SimuJobTransforms/python/SimulationHelpers.py b/Simulation/SimuJobTransforms/python/SimulationHelpers.py new file mode 100644 index 0000000000000000000000000000000000000000..96721e0dece288f2e4e6db227024ce5b7c665ae2 --- /dev/null +++ b/Simulation/SimuJobTransforms/python/SimulationHelpers.py @@ -0,0 +1,26 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +def getDetectorsFromRunArgs(ConfigFlags, runArgs): + """Generate detector list based on runtime arguments.""" + if hasattr(runArgs, 'detectors'): + detectors = runArgs.detectors + else: + from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors + detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion) + + # Support switching on Forward Detectors + if hasattr(runArgs, 'LucidOn'): + detectors = detectors+['Lucid'] + if hasattr(runArgs, 'ZDCOn'): + detectors = detectors+['ZDC'] + if hasattr(runArgs, 'AFPOn'): + detectors = detectors+['AFP'] + if hasattr(runArgs, 'ALFAOn'): + detectors = detectors+['ALFA'] + if hasattr(runArgs, 'FwdRegionOn'): + detectors = detectors+['FwdRegion'] + # TODO here support switching on Cavern geometry + # if hasattr(runArgs, 'CavernOn'): + # detectors = detectors+['Cavern'] + + return detectors diff --git a/Simulation/SimuJobTransforms/scripts/RDOMerge_tf.py b/Simulation/SimuJobTransforms/scripts/RDOMerge_tf.py index ff8e0ddf1095db03e7344511251097eceb461085..59c5f496b9f7440e26cfb3e9d0c0f056b4419880 100755 --- a/Simulation/SimuJobTransforms/scripts/RDOMerge_tf.py +++ b/Simulation/SimuJobTransforms/scripts/RDOMerge_tf.py @@ -36,6 +36,7 @@ def main(): def getTransform(): executorSet = set() executorSet.add(athenaExecutor(name = 'RDOMerge', skeletonFile = 'SimuJobTransforms/skeleton.RDOMerge.py', + skeletonCA = 'SimuJobTransforms.RDOMerge_Skeleton', inData = ['RDO'], outData = ['RDO_MRG'])) trf = transform(executor = executorSet) diff --git a/Tools/PyJobTransforms/python/trfArgClasses.py b/Tools/PyJobTransforms/python/trfArgClasses.py index 47bbcd90e8a65836e71c958785e608a948fa334a..5773aa6d012e32f513590c578b7477fa83577eef 100644 --- a/Tools/PyJobTransforms/python/trfArgClasses.py +++ b/Tools/PyJobTransforms/python/trfArgClasses.py @@ -1395,6 +1395,7 @@ class argHITSFile(argPOOLFile): 'HITS_MRG' : argHITSFile(output, type=self.type, io='output')} myMergeConf = executorConfig(myargdict, myDataDictionary) myMerger = athenaExecutor(name = mySubstepName, skeletonFile = 'SimuJobTransforms/skeleton.HITSMerge.py', + skeletonCA = 'SimuJobTransforms.HITSMerge_Skeleton', conf=myMergeConf, inData=set(['HITS']), outData=set(['HITS_MRG']), disableMP=True) myMerger.doAll(input=set(['HITS']), output=set(['HITS_MRG'])) @@ -1470,6 +1471,7 @@ class argRDOFile(argPOOLFile): 'RDO_MRG' : argHITSFile(output, type=self.type, io='output')} myMergeConf = executorConfig(myargdict, myDataDictionary) myMerger = athenaExecutor(name = 'RDOMergeAthenaMP{0}'.format(counter), skeletonFile = 'SimuJobTransforms/skeleton.RDOMerge.py', + skeletonCA = 'SimuJobTransforms.RDOMerge_Skeleton', conf=myMergeConf, inData=set(['RDO']), outData=set(['RDO_MRG']), disableMP=True) myMerger.doAll(input=set(['RDO']), output=set(['RDO_MRG'])) diff --git a/Tools/PyJobTransforms/scripts/Merge_tf.py b/Tools/PyJobTransforms/scripts/Merge_tf.py index 1971051cd331aa69814e161a24de4095d8d1212a..f56ff2006a08486358a4ca21c9d88571b7e45cd2 100755 --- a/Tools/PyJobTransforms/scripts/Merge_tf.py +++ b/Tools/PyJobTransforms/scripts/Merge_tf.py @@ -49,8 +49,6 @@ def getTransform(): inData = ['AOD_MRG'], outData = ['TAG'],)) executorSet.add(tagMergeExecutor(name = 'TAGFileMerge', exe = 'CollAppend', inData = set(['TAG']), outData = set(['TAG_MRG']))) executorSet.add(DQMergeExecutor(name = 'DQHistogramMerge', inData = [('HIST_ESD', 'HIST_AOD'), 'HIST'], outData = ['HIST_MRG'])) - executorSet.add(athenaExecutor(name = 'RDOMerge', skeletonFile = 'SimuJobTransforms/skeleton.RDOMerge.py', - inData = ['RDO'], outData = ['RDO_MRG'])) executorSet.add(bsMergeExecutor(name = 'RAWFileMerge', exe = 'file_merging', inData = set(['BS']), outData = set(['BS_MRG']))) executorSet.add(athenaExecutor(name = 'EVNTMerge', skeletonFile = 'PyJobTransforms/skeleton.EVNTMerge.py',inData = ['EVNT'], outData = ['EVNT_MRG'])) @@ -69,16 +67,30 @@ def getTransform(): addD3PDArguments(trf.parser, transform=trf, addD3PDMRGtypes=True) addExtraDPDTypes(trf.parser, transform=trf, NTUPMergerArgs = True) - # Add HITSMerge only if SimuJobTransforms is available + # Add HITSMerge and RDOMerge only if SimuJobTransforms is available try: from SimuJobTransforms.SimTransformUtils import addHITSMergeArguments addHITSMergeArguments(trf.parser) - simStepSet = set() - simStepSet.add(athenaExecutor(name = 'HITSMerge', substep="hitsmerge", skeletonFile = 'SimuJobTransforms/skeleton.HITSMerge.py', - tryDropAndReload = False, inData = ['HITS'], outData = ['HITS_MRG'])) - trf.appendToExecutorSet(list(simStepSet)[0]) + trf.appendToExecutorSet(athenaExecutor(name = 'HITSMerge', substep="hitsmerge", skeletonFile = 'SimuJobTransforms/skeleton.HITSMerge.py', + skeletonCA = 'SimuJobTransforms.HITSMerge_Skeleton', + tryDropAndReload = False, inData = ['HITS'], outData = ['HITS_MRG'])) + + trf.appendToExecutorSet(athenaExecutor(name = 'RDOMerge', skeletonFile = 'SimuJobTransforms/skeleton.RDOMerge.py', + skeletonCA = 'SimuJobTransforms.RDOMerge_Skeleton', + inData = ['RDO'], outData = ['RDO_MRG'])) + + trf.parser.defineArgGroup('RDOMerge_tf', 'RDO merge job specific options') + trf.parser.add_argument('--inputRDOFile', nargs='+', + type=trfArgClasses.argFactory(trfArgClasses.argRDOFile, io='input'), + help='Input RDO file', group='RDOMerge_tf') + trf.parser.add_argument('--outputRDO_MRGFile', '--outputRDOFile', + type=trfArgClasses.argFactory(trfArgClasses.argRDOFile, io='output'), + help='Output merged RDO file', group='RDOMerge_tf') + trf.parser.add_argument('--PileUpPresampling', + type=trfArgClasses.argFactory(trfArgClasses.argBool), + help='Run digitization with pile-up presampling configuration.', group='RDOMerge_tf') except ImportError as e: - msg.warning('Failed to import simulation arguments ({0}). HITSMerge will not be available.'.format(e)) + msg.warning('Failed to import simulation arguments ({0}). HITSMerge and RDOMerge will not be available.'.format(e)) return trf @@ -132,17 +144,6 @@ def addMyArgs(parser): type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output', runarg=True, type='hist'), help='Output DQ monitoring file', group='DQHistMerge_tf') - parser.defineArgGroup('RDOMerge_tf', 'RDO merge job specific options') - parser.add_argument('--inputRDOFile', nargs='+', - type=trfArgClasses.argFactory(trfArgClasses.argRDOFile, io='input'), - help='Input RDO file', group='RDOMerge_tf') - parser.add_argument('--outputRDO_MRGFile', '--outputRDOFile', - type=trfArgClasses.argFactory(trfArgClasses.argRDOFile, io='output'), - help='Output merged RDO file', group='RDOMerge_tf') - parser.add_argument('--PileUpPresampling', - type=trfArgClasses.argFactory(trfArgClasses.argBool), - help='Run digitization with pile-up presampling configuration.', group='RDOMerge_tf') - parser.defineArgGroup('RAWMerge_tf', 'RAWMerge specific options') parser.add_argument('--inputBSFile', nargs='+', type=trfArgClasses.argFactory(trfArgClasses.argBSFile, io='input'),