From 212678c3426d9ce3f70616f4452d997931a8737d Mon Sep 17 00:00:00 2001
From: Tadej Novak <tadej.novak@cern.ch>
Date: Fri, 14 Aug 2020 17:21:54 +0200
Subject: [PATCH] Initial new-style transform prototype

---
 .../python/OverlayHelpers.py                  |  64 +++++++++
 .../python/OverlayHelpersLegacy.py            |  50 +++++++
 .../python/OverlaySkeleton.py                 | 125 ++++++++++++++++++
 .../python/OverlayTestHelpers.py              |  43 +-----
 .../python/OverlayTransformHelpers.py         |   7 +-
 .../scripts/Overlay_tf.py                     |   2 +-
 .../share/skeleton_LegacyOverlay.py           |  25 ++--
 .../OverlayConfiguration/test/OverlayTest.py  |   5 +-
 8 files changed, 263 insertions(+), 58 deletions(-)
 create mode 100644 Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
 create mode 100644 Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
 create mode 100644 Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py

diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
new file mode 100644
index 00000000000..4abd2753b69
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpers.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+"""Overlay configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+
+def OverlayMessageSvcCfg(flags):
+    """MessageSvc for overlay"""
+    MessageSvc = CompFactory.MessageSvc
+    acc = ComponentAccumulator()
+    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
+    return acc
+
+
+def setupOverlayDetectorFlags(configFlags, detectors):
+    """Setup Overlay detector flags"""
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayBCM = True
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayDBM = True
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayPixel = True
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlaySCT = True
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        configFlags.Detector.OverlayTRT = True
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayLAr = True
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayTile = True
+    if not detectors or 'L1Calo' in detectors:
+        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayCSC = True
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMDT = True
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayRPC = True
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayTGC = True
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlaysTGC = True
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        configFlags.Detector.OverlayMM = True
+
+
+def accFromFragment(acc_string, flags):
+    """Return initialized accumulator from post include fragment."""
+    parts = acc_string.split('.')
+    if len(parts) < 3:
+        raise ValueError('Post include should be of the form Package.Module.Function')
+
+    function = parts[-1]
+    module = '.'.join(parts[:-1])
+
+    from importlib import import_module
+    loaded_module = import_module(module)
+    function_def = getattr(loaded_module, function)
+
+    return function_def(flags)
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
new file mode 100644
index 00000000000..d49cbdf69cf
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+"""Overlay legacy configuration helpers
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+
+
+def setupOverlayLegacyDetectorFlags(detectors):
+    """Setup Overlay legacy detector flags"""
+    from AthenaCommon.DetFlags import DetFlags
+    if not detectors:
+        DetFlags.all_setOn()
+        DetFlags.bpipe_setOff()
+        DetFlags.FTK_setOff()
+        return DetFlags
+
+    # Truth is always on
+    DetFlags.Truth_setOn()
+
+    # Other subdetectors
+    if not detectors or 'BCM' in detectors or 'ID' in detectors:
+        DetFlags.BCM_setOn()
+    if not detectors or 'DBM' in detectors or 'ID' in detectors:
+        DetFlags.DBM_setOn()
+    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
+        DetFlags.pixel_setOn()
+    if not detectors or 'SCT' in detectors or 'ID' in detectors:
+        DetFlags.SCT_setOn()
+    if not detectors or 'TRT' in detectors or 'ID' in detectors:
+        DetFlags.TRT_setOn()
+    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.LAr_setOn()
+    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
+        DetFlags.Tile_setOn()
+    if not detectors or 'L1Calo' in detectors:
+        DetFlags.LVL1_setOn()
+    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
+        DetFlags.CSC_setOn()
+    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
+        DetFlags.MDT_setOn()
+    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
+        DetFlags.RPC_setOn()
+    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
+        DetFlags.TGC_setOn()
+    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
+        DetFlags.sTGC_setOn()
+    if not detectors or 'MM' in detectors or 'Muon' in detectors:
+        DetFlags.Micromegas_setOn()
+
+    return DetFlags
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
new file mode 100644
index 00000000000..6f9ab978101
--- /dev/null
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py
@@ -0,0 +1,125 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+import sys
+
+from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags, OverlayMessageSvcCfg
+
+
+def defaultOverlayFlags(configFlags, detectors):
+    """Fill default overlay flags"""
+    # TODO: how to autoconfigure those
+    configFlags.GeoModel.Align.Dynamic = False
+    configFlags.Digitization.DoCaloNoise = False
+    configFlags.Digitization.DoInnerDetectorNoise = False
+    configFlags.Digitization.DoDigiTruth = False
+    configFlags.LAr.OFCShapeFolder = "4samples1phase"
+    configFlags.LAr.ROD.DoOFCPileupOptimization = True
+    configFlags.LAr.ROD.nSamples = 4
+    configFlags.LAr.ROD.NumberOfCollisions = 20
+    configFlags.LAr.ROD.UseHighestGainAutoCorr = True
+    configFlags.Tile.BestPhaseFromCOOL = False
+    configFlags.Tile.correctTime = False
+    configFlags.Tile.zeroAmplitudeWithoutDigits = False
+
+    setupOverlayDetectorFlags(configFlags, detectors)
+
+
+def fromRunArgs(runArgs):
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = True
+
+    from AthenaCommon.Logging import logging
+    logOverlay = logging.getLogger('Overlay')
+    logOverlay.info('****************** STARTING OVERLAY *****************')
+
+    logOverlay.info('**** Transformation run arguments')
+    logOverlay.info(str(runArgs))
+
+    logOverlay.info('**** Setting-up configuration flags')
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    commonRunArgsToFlags(runArgs, ConfigFlags)
+
+    hasRDO_BKGInput = hasattr(runArgs, 'inputRDO_BKGFile')
+    hasBS_SKIMInput = hasattr(runArgs, 'inputBS_SKIMFile')
+
+    if not hasattr(runArgs, 'inputHITSFile'):
+        raise RuntimeError('No input HITS file defined')
+
+    if hasRDO_BKGInput and hasBS_SKIMInput:
+        raise RuntimeError('Both RDO_BKG and BS_SKIM are defined')
+    if not hasRDO_BKGInput and not hasBS_SKIMInput:
+        raise RuntimeError('Define one of RDO_BKG and BS_SKIM file types')
+
+    if hasRDO_BKGInput:
+        logOverlay.info('Running MC+MC overlay')
+        ConfigFlags.Overlay.DataOverlay = False
+        ConfigFlags.Input.isMC = True
+        ConfigFlags.Input.Files = runArgs.inputRDO_BKGFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputHITSFile
+    else:
+        logOverlay.info('Running MC+data overlay')
+        ConfigFlags.Overlay.DataOverlay = True
+        ConfigFlags.Input.isMC = False
+        ConfigFlags.Input.Files = runArgs.inputHITSFile
+        ConfigFlags.Input.SecondaryFiles = runArgs.inputBS_SKIMFile
+
+    if hasattr(runArgs, 'outputRDOFile'):
+        if runArgs.outputRDOFile == 'None':
+            ConfigFlags.Output.RDOFileName = ''
+        else:
+            ConfigFlags.Output.RDOFileName = runArgs.outputRDOFile
+    else:
+        raise RuntimeError('No output RDO file defined')
+
+    if hasattr(runArgs, 'outputRDO_SGNLFile'):
+        ConfigFlags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
+
+    # Autoconfigure enabled subdetectors
+    if hasattr(runArgs, 'detectors'):
+        detectors = runArgs.detectors
+    else:
+        detectors = None
+
+    # Setup digitization flags
+    from Digitization.DigitizationConfigFlags import digitizationRunArgsToFlags
+    digitizationRunArgsToFlags(runArgs, ConfigFlags)
+
+    # Setup common overlay flags
+    defaultOverlayFlags(ConfigFlags, detectors)
+
+    # Pre-exec
+    if hasattr(runArgs, 'preExec') and runArgs.preExec != 'NONE' and runArgs.preExec:
+        for cmd in runArgs.preExec:
+            exec(cmd)
+
+    # Pre-include
+    if hasattr(runArgs, 'preInclude') and runArgs.preInclude:
+        raise ValueError('preInclude not supported')
+
+    # TODO not parsed yet:
+    # '--fSampltag'
+    # '--triggerConfig'
+
+    # Lock flags
+    ConfigFlags.lock()
+
+    # Main overlay steering
+    from OverlayConfiguration.OverlaySteering import OverlayMainCfg
+    acc = OverlayMainCfg(ConfigFlags)
+    acc.merge(OverlayMessageSvcCfg(ConfigFlags))
+
+    # Post-include
+    if hasattr(runArgs, 'postInclude') and runArgs.postInclude:
+        from OverlayConfiguration.OverlayHelpers import accFromFragment
+        for fragment in runArgs.postInclude:
+            acc.merge(accFromFragment(fragment, ConfigFlags))
+
+    # Post-exec
+    if hasattr(runArgs, 'postExec') and runArgs.postExec != 'NONE' and runArgs.postExec:
+        for cmd in runArgs.postExec:
+            exec(cmd)
+
+    # Run the final accumulator
+    sc = acc.run()
+    sys.exit(not sc.isSuccess())
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
index 73bc0dff6b1..9c7db234860 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py
@@ -8,6 +8,7 @@ from argparse import ArgumentParser
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
+from OverlayConfiguration.OverlayHelpers import setupOverlayDetectorFlags
 
 
 def JobOptsDumperCfg(flags):
@@ -18,14 +19,6 @@ def JobOptsDumperCfg(flags):
     return acc
 
 
-def TestMessageSvcCfg(flags):
-    """MessageSvc for overlay"""
-    MessageSvc = CompFactory.MessageSvc
-    acc = ComponentAccumulator()
-    acc.addService(MessageSvc(setError=["HepMcParticleLink"]))
-    return acc
-
-
 def CommonTestArgumentParser(prog):
     """Common overlay test argument parser"""
     parser = ArgumentParser(prog=prog)
@@ -46,38 +39,6 @@ def CommonTestArgumentParser(prog):
     return parser
 
 
-def setupOverlayTestDetectorFlags(configFlags, detectors):
-    """Setup Overlay detector flags"""
-    if not detectors or 'BCM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayBCM = True
-    if not detectors or 'DBM' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayDBM = True
-    if not detectors or 'Pixel' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayPixel = True
-    if not detectors or 'SCT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlaySCT = True
-    if not detectors or 'TRT' in detectors or 'ID' in detectors:
-        configFlags.Detector.OverlayTRT = True
-    if not detectors or 'LAr' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayLAr = True
-    if not detectors or 'Tile' in detectors or 'Calo' in detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayTile = True
-    if not detectors or 'L1Calo' in detectors:
-        configFlags.Detector.OverlayL1Calo = not configFlags.Overlay.DataOverlay
-    if not detectors or 'CSC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayCSC = True
-    if not detectors or 'MDT' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMDT = True
-    if not detectors or 'RPC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayRPC = True
-    if not detectors or 'TGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayTGC = True
-    if not detectors or 'sTGC' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlaysTGC = True
-    if not detectors or 'MM' in detectors or 'Muon' in detectors:
-        configFlags.Detector.OverlayMM = True
-
-
 def defaultTestFlags(configFlags, args):
     """Fill default overlay flags for testing"""
     configFlags.GeoModel.Align.Dynamic = False
@@ -118,7 +79,7 @@ def defaultTestFlags(configFlags, args):
     if args.outputSig:
         configFlags.Output.RDO_SGNLFileName = args.outputSig
 
-    setupOverlayTestDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
+    setupOverlayDetectorFlags(configFlags, args.detectors if 'detectors' in args else None)
 
 
 def postprocessAndLockFlags(configFlags, args):
diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
index a0cbaa1dd8b..f2634eaeb23 100644
--- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
+++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTransformHelpers.py
@@ -3,13 +3,17 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 
-from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argSubstep
+from PyJobTransforms.trfArgClasses import argBSFile, argFactory, argRDOFile, argString, argSubstep
 from PyJobTransforms.trfExe import athenaExecutor
 
 
 def addOverlayTrfArgs(parser):
     """Add common overlay command-line parser arguments."""
     parser.defineArgGroup('Overlay', 'Common Overlay Options')
+    parser.add_argument('--detectors',
+                        type=argFactory(argString),
+                        help='Detectors autoconfiguration string',
+                        group='Overlay')
     parser.add_argument('--outputRDO_SGNLFile', nargs='+',
                         type=argFactory(argRDOFile, io='output'),
                         help='The output RDO file of the MC signal alone',
@@ -52,6 +56,7 @@ def addOverlayArguments(parser):
 def addOverlaySubstep(executor_set, in_reco_chain=False):
     executor = athenaExecutor(name='Overlay',
                               skeletonFile='OverlayConfiguration/skeleton_LegacyOverlay.py',
+                              skeletonCA='OverlayConfiguration.OverlaySkeleton',
                               substep='overlay',
                               tryDropAndReload=False,
                               perfMonFile='ntuple.pmon.gz',
diff --git a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
index 6723fc838a0..73db14e41a8 100755
--- a/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
+++ b/Simulation/Overlay/OverlayConfiguration/scripts/Overlay_tf.py
@@ -19,7 +19,7 @@ msg.info('logging set in %s', sys.argv[0])
 
 
 # Prodsys hack...
-ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
+ListOfDefaultPositionalKeys = ['--AMIConfig', '--AMITag', '--AddCaloDigi', '--CA', '--DBRelease', '--PileUpPremixing', '--argJSON', '--asetup', '--athena', '--athenaMPEventsBeforeFork', '--athenaMPMergeTargetSize', '--athenaMPStrategy', '--athenaMPUseEventOrders', '--athenaopts', '--attempt', '--beamType', '--checkEventCount', '--command', '--conditionsTag', '--detectors', '--digiRndmSvc', '--digiSeedOffset1', '--digiSeedOffset2', '--digiSteeringConf', '--doAllNoise', '--dumpJSON', '--dumpPickle', '--env', '--eventAcceptanceEfficiency', '--eventService', '--execOnly', '--fSampltag', '--fileValidation', '--geometryVersion', '--ignoreErrors', '--ignoreFiles',
                                '--ignorePatterns', '--imf', '--inputBS_SKIMFile', '--inputFileValidation', '--inputHITSFile', '--inputRDO_BKGFile', '--jobid', '--maxEvents', '--multiprocess', '--multithreaded', '--outputFileValidation', '--outputRDOFile', '--outputRDO_FILTFile', '--outputRDO_SGNLFile', '--parallelFileValidation', '--postExec', '--postInclude', '--preExec', '--preInclude', '--reportName', '--reportType', '--runNumber', '--samplingFractionDbTag', '--sharedWriter', '--showGraph', '--showPath', '--showSteps', '--skipEvents', '--steering', '--taskid', '--tcmalloc', '--triggerConfig', '--valgrind', '--valgrindDefaultOpts', '--valgrindExtraOpts']
 
 
diff --git a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
index 39a6f8798a1..63e701386fd 100644
--- a/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
+++ b/Simulation/Overlay/OverlayConfiguration/share/skeleton_LegacyOverlay.py
@@ -46,8 +46,11 @@ if not hasRDO_BKGInput and not hasBS_SKIMInput:
 
 # Set overlay specifics
 globalflags.isOverlay.set_Value_and_Lock(True)
+# Force MT mode
+overlayFlags.isOverlayMT.set_Value_and_Lock(True)
 if hasRDO_BKGInput:
     logOverlay.info('Running MC+MC overlay')
+    overlayFlags.isDataOverlay.set_Value_and_Lock(False)
     globalflags.DataSource.set_Value_and_Lock('geant4')
 else:
     logOverlay.info('Running MC+data overlay')
@@ -59,10 +62,6 @@ else:
     from AthenaCommon.BeamFlags import jobproperties
     jobproperties.Beam.beamType.set_Value_and_Lock('collisions')
 
-overlayFlags.isDataOverlay.set_Value_and_Lock(False)
-# TODO: temporarily force MT
-overlayFlags.isOverlayMT.set_Value_and_Lock(True)
-
 # Common athena flags
 if hasattr(overlayArgs, 'skipEvents'):
     athenaCommonFlags.SkipEvents.set_Value_and_Lock(overlayArgs.skipEvents)
@@ -95,6 +94,10 @@ if hasattr(overlayArgs, 'geometryVersion'):
     globalflags.DetDescrVersion.set_Value_and_Lock(overlayArgs.geometryVersion)
 if hasattr(overlayArgs, 'conditionsTag'):
     globalflags.ConditionsTag.set_Value_and_Lock(overlayArgs.conditionsTag)
+if hasattr(overlayArgs, 'detectors'):
+    overlayDetectors = overlayArgs.detectors
+else:
+    overlayDetectors = None
 
 # Digitization flags
 if hasattr(overlayArgs, 'digiSeedOffset1'):
@@ -132,17 +135,13 @@ if 'DetFlags' in dir():
     logOverlay.warning(
         'DetFlags already defined! This means DetFlags should have been fully configured already..')
 else:
-    from AthenaCommon.DetFlags import DetFlags
-    DetFlags.all_setOn()
-    DetFlags.bpipe_setOff()
-    DetFlags.FTK_setOff()
+    from OverlayConfiguration.OverlayHelpersLegacy import setupOverlayLegacyDetectorFlags
+    DetFlags = setupOverlayLegacyDetectorFlags(overlayDetectors)
 
-    if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
-        DetFlags.LVL1_setOff()
-    else:
-        DetFlags.LVL1_setOn()
+if hasattr(overlayArgs, 'triggerConfig') and overlayArgs.triggerConfig == 'NONE':
+    DetFlags.LVL1_setOff()
 
-    DetFlags.digitize.LVL1_setOff()
+DetFlags.digitize.LVL1_setOff()
 
 from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags
 if not MuonGeometryFlags.hasCSC():
diff --git a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
index a238ed6196a..e166ed0bed1 100755
--- a/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
+++ b/Simulation/Overlay/OverlayConfiguration/test/OverlayTest.py
@@ -10,9 +10,10 @@ import sys
 from AthenaCommon.Configurable import Configurable
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
+from OverlayConfiguration.OverlayHelpers import OverlayMessageSvcCfg
 from OverlayConfiguration.OverlaySteering import OverlayMainCfg
 from OverlayConfiguration.OverlayTestHelpers import \
-    CommonTestArgumentParser, JobOptsDumperCfg, TestMessageSvcCfg, \
+    CommonTestArgumentParser, JobOptsDumperCfg, \
     defaultTestFlags, postprocessAndLockFlags, printAndRun
 
 # Set up logging and new style config
@@ -49,7 +50,7 @@ if args.profile:
     from PerfMonVTune.PerfMonVTuneConfig import VTuneProfilerServiceCfg
     acc.merge(VTuneProfilerServiceCfg(ConfigFlags))
 acc.merge(JobOptsDumperCfg(ConfigFlags))
-acc.merge(TestMessageSvcCfg(ConfigFlags))
+acc.merge(OverlayMessageSvcCfg(ConfigFlags))
 
 # dump pickle
 with open("ConfigOverlay.pkl", "wb") as f:
-- 
GitLab