diff --git a/MagneticField/MagFieldConfig/python/BFieldConfigFlags.py b/MagneticField/MagFieldConfig/python/BFieldConfigFlags.py index ab355fd5fdcf195735a0116e92894776e43b83a3..a00c47bb5f613c3e54ad9be70373f5093ae9a459 100644 --- a/MagneticField/MagFieldConfig/python/BFieldConfigFlags.py +++ b/MagneticField/MagFieldConfig/python/BFieldConfigFlags.py @@ -1,42 +1,39 @@ # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags +from AthenaCommon.Logging import logging +msg = logging.getLogger('BFieldConfigFlags') #So far no attempt to auto-config field for MC or online-running # #The old-style config did auto-config the field for online based on IS -#(see https://gitlab.cern.ch/atlas/athena/-/blame/1802605a4ab69cab7ee3e53d75f162c7da99a944/Reconstruction/RecExample/RecExOnline/python/OnlineISConfiguration.py#L52) +#(see https://gitlab.cern.ch/atlas/athena/-/blob/1802605a4ab69cab7ee3e53d75f162c7da99a944/Reconstruction/RecExample/RecExOnline/python/OnlineISConfiguration.py#L52) # #The old-sytle config tried to auto-config the field based on in-file metadata, falling back to Geometry and Conditions tags. See -#(see https://gitlab.cern.ch/atlas/athena/-/blame/1802605a4ab69cab7ee3e53d75f162c7da99a944/Reconstruction/RecExample/RecExConfig/python/AutoConfiguration.py#L181 +#(see https://gitlab.cern.ch/atlas/athena/-/blob/1802605a4ab69cab7ee3e53d75f162c7da99a944/Reconstruction/RecExample/RecExConfig/python/AutoConfiguration.py#L181 -def _toroidFieldAutoCfg(prevFlags): +def _fieldAutoCfg(prevFlags): if prevFlags.Input.isMC or prevFlags.Common.isOnline: - return True + return [True,True] from CoolConvUtilities.MagFieldUtils import getFieldForRun lbs=prevFlags.Input.LumiBlockNumbers fieldStat=getFieldForRun(run=prevFlags.Input.RunNumbers[0],lumiblock=0 if len(lbs)==0 else lbs[0],quiet=True) - return (fieldStat.toroidCurrent()>1) + if fieldStat is None: + msg.error("Unable to get field status from DCS, assume both magnets ON") + return [True,True] + return [fieldStat.solenoidCurrent()>1, fieldStat.toroidCurrent()>1] -def _solenoidFieldAutoCfg(prevFlags): - if prevFlags.Input.isMC or prevFlags.Common.isOnline: - return True - - from CoolConvUtilities.MagFieldUtils import getFieldForRun - lbs=prevFlags.Input.LumiBlockNumbers - fieldStat=getFieldForRun(run=prevFlags.Input.RunNumbers[0],lumiblock=0 if len(lbs)==0 else lbs[0],quiet=True) - return (fieldStat.solenoidCurrent()>1) def createBFieldConfigFlags(): bcf=AthConfigFlags() # True when solenoid is on - bcf.addFlag("BField.solenoidOn", _solenoidFieldAutoCfg) + bcf.addFlag("BField.solenoidOn", lambda prevFlags : _fieldAutoCfg(prevFlags)[0]) # True when barrel toroid is on - bcf.addFlag("BField.barrelToroidOn", _toroidFieldAutoCfg) + bcf.addFlag("BField.barrelToroidOn", lambda prevFlags : _fieldAutoCfg(prevFlags)[1]) # True when endcap toroid is on - bcf.addFlag("BField.endcapToroidOn", _toroidFieldAutoCfg) + bcf.addFlag("BField.endcapToroidOn", lambda prevFlags : _fieldAutoCfg(prevFlags)[1]) return bcf