diff --git a/Control/AthenaConfiguration/python/AutoConfigFlags.py b/Control/AthenaConfiguration/python/AutoConfigFlags.py index b18ebd491b5880941135c1d867e4f99ccda54f41..cc58a4fb4b8a4e48c1f70bb960b5d66a69ebd7a8 100644 --- a/Control/AthenaConfiguration/python/AutoConfigFlags.py +++ b/Control/AthenaConfiguration/python/AutoConfigFlags.py @@ -37,20 +37,21 @@ def _initializeGeometryParameters(geoTag): dbGeomCursor = AtlasGeoDBInterface(geoTag) dbGeomCursor.ConnectAndBrowseGeoDB() - # FIXME: geometry parameter names need to be unique across systems! - params = {} - params.update(CommonGeoDB.InitializeGeometryParameters(dbGeomCursor)) - params.update(PixelGeoDB.InitializeGeometryParameters(dbGeomCursor)) - params.update(LArGeoDB.InitializeGeometryParameters(dbGeomCursor)) - params.update(MuonGeoDB.InitializeGeometryParameters(dbGeomCursor)) + params = { 'Common' : CommonGeoDB.InitializeGeometryParameters(dbGeomCursor), + 'Pixel' : PixelGeoDB.InitializeGeometryParameters(dbGeomCursor), + 'LAr' : LArGeoDB.InitializeGeometryParameters(dbGeomCursor), + 'Muon' : MuonGeoDB.InitializeGeometryParameters(dbGeomCursor) } return params @lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs -def GetDetDescrInfo(geoTag): - """Query geometry DB for detector description""" +def DetDescrInfo(geoTag): + """Query geometry DB for detector description. Returns dictionary with + detector description. Queries DB for each tag only once. + geoTag: gemometry tag (e.g. ATLAS-R2-2016-01-00-01) + """ detDescrInfo = _initializeGeometryParameters(geoTag) detDescrInfo["geomTag"] = geoTag return detDescrInfo diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py index 5960b079514a9e85b78a0e8e7eb4f6c9985c6055..886c1dadb2ba26121368cc6f1138182692bff239 100644 --- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py +++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py @@ -1,9 +1,7 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -from __future__ import print_function - from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.AutoConfigFlags import GetDetDescrInfo +from AthenaConfiguration.AutoConfigFlags import DetDescrInfo # This module is based upon Control/AthenaCommon/python/DetFlags.py # Only some flags have been migrated. A full list of what the old # DetFlags provided is given for reference below: @@ -56,13 +54,13 @@ def createDetectorConfigFlags(): dcf.addFlag('Detector.GeometryLAr', False) # Add separate em HEC and FCAL flags? dcf.addFlag('Detector.GeometryTile', False) - dcf.addFlag('Detector.GeometryCalo', lambda prevFlags : (prevFlags.Detector.GeometryLAr or prevFlags.Detector.GeometryTile)) - dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasCSC',"True")) + dcf.addFlag('Detector.GeometryCalo', lambda prevFlags : (prevFlags.Detector.GeometryLAr or prevFlags.Detector.GeometryTile)) + dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasCSC']) dcf.addFlag('Detector.GeometryMDT', False) dcf.addFlag('Detector.GeometryRPC', False) dcf.addFlag('Detector.GeometryTGC', False) - dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasSTGC',"True")) # Set default according to prevFlags.GeoModel.Run? - dcf.addFlag('Detector.GeometryMM', lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasMM',"True")) # Set default according to prevFlags.GeoModel.Run? + dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasSTGC']) + dcf.addFlag('Detector.GeometryMM', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasMM']) dcf.addFlag('Detector.GeometryMuon', lambda prevFlags : (prevFlags.Detector.GeometryCSC or prevFlags.Detector.GeometryMDT or prevFlags.Detector.GeometryRPC or prevFlags.Detector.GeometryTGC or prevFlags.Detector.GeometrysTGC or prevFlags.Detector.GeometryMM)) diff --git a/Control/AthenaConfiguration/python/GeoModelConfigFlags.py b/Control/AthenaConfiguration/python/GeoModelConfigFlags.py index 077dde3dfd56635d44c254c140d5d5cbea41733c..1c81c50711c90ff6275847f8559edbae2d32da7b 100644 --- a/Control/AthenaConfiguration/python/GeoModelConfigFlags.py +++ b/Control/AthenaConfiguration/python/GeoModelConfigFlags.py @@ -1,15 +1,35 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.AutoConfigFlags import GetFileMD, GetDetDescrInfo +from AthenaConfiguration.AutoConfigFlags import GetFileMD, DetDescrInfo def createGeoModelConfigFlags(): gcf=AthConfigFlags() + gcf.addFlag('GeoModel.Layout', 'atlas') # replaces global.GeoLayout - gcf.addFlag("GeoModel.AtlasVersion", lambda prevFlags : (prevFlags.Input.Files and prevFlags.Input.Files != ["_ATHENA_GENERIC_INPUTFILE_NAME_"] and GetFileMD(prevFlags.Input.Files).get("GeoAtlas",None)) or "ATLAS-R2-2016-01-00-01") # - gcf.addFlag("GeoModel.Align.Dynamic", lambda prevFlags : (not prevFlags.Detector.Simulate and not prevFlags.Input.isMC)) - gcf.addFlag("GeoModel.StripGeoType", lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('StripGeoType',"GMX")) # Based on CommonGeometryFlags.StripGeoType - gcf.addFlag("GeoModel.Run", lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('Run',"RUN2")) # Based on CommonGeometryFlags.Run (InDetGeometryFlags.isSLHC replaced by GeoModel.Run=="RUN4") - gcf.addFlag("GeoModel.Type", lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('GeoType',"UNDEFINED")) # Geometry type in {ITKLoI, ITkLoI-VF, etc...} - gcf.addFlag("GeoModel.IBLLayout", lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('IBLlayout',"UNDEFINED")) # IBL layer layout in {"planar", "3D", "noIBL", "UNDEFINED"} + + gcf.addFlag("GeoModel.AtlasVersion", + lambda prevFlags : ((prevFlags.Input.Files and + prevFlags.Input.Files != ["_ATHENA_GENERIC_INPUTFILE_NAME_"] and + GetFileMD(prevFlags.Input.Files).get("GeoAtlas",None)) + or "ATLAS-R2-2016-01-00-01")) + + gcf.addFlag("GeoModel.Align.Dynamic", + lambda prevFlags : not prevFlags.Detector.Simulate and not prevFlags.Input.isMC) + + gcf.addFlag("GeoModel.StripGeoType", + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Common']['StripGeoType']) + + gcf.addFlag("GeoModel.Run", + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Common']['Run']) + # Based on CommonGeometryFlags.Run (InDetGeometryFlags.isSLHC replaced by GeoModel.Run=="RUN4") + + gcf.addFlag("GeoModel.Type", + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Common']['GeoType']) + # Geometry type in {ITKLoI, ITkLoI-VF, etc...} + + gcf.addFlag("GeoModel.IBLLayout", + lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Pixel']['IBLlayout']) + # IBL layer layout in {"planar", "3D", "noIBL"} + return gcf diff --git a/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py b/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py index 030bacb86902094e962485c74d69b2fe710a8f56..b3109196b6c8311023728d9d93cd4c8771df204c 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py +++ b/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py @@ -1,7 +1,7 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.AutoConfigFlags import GetDetDescrInfo +from AthenaConfiguration.AutoConfigFlags import DetDescrInfo import re # Some comments from Ed about existing flags @@ -37,9 +37,9 @@ def createMuonConfigFlags(): mcf.addFlag("Muon.doMDTs",True) mcf.addFlag("Muon.doTGCs",True) mcf.addFlag("Muon.doRPCs",True) - mcf.addFlag("Muon.doCSCs",lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasCSC',"True")) - mcf.addFlag("Muon.doMicromegas",lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasMM',"True")) - mcf.addFlag("Muon.dosTGCs",lambda prevFlags : GetDetDescrInfo(prevFlags.GeoModel.AtlasVersion).get('HasSTGC',"True")) + mcf.addFlag("Muon.doCSCs",lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasCSC']) + mcf.addFlag("Muon.doMicromegas",lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasMM']) + mcf.addFlag("Muon.dosTGCs",lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasSTGC']) # stages of processing # 1. Digitization