diff --git a/Control/AthenaConfiguration/python/AutoConfigFlags.py b/Control/AthenaConfiguration/python/AutoConfigFlags.py index 04fc71224d2856e41efb8c2725d09356879c92c5..3d04147a01bda3c38a5e952bd36b175e46f8cfa1 100644 --- a/Control/AthenaConfiguration/python/AutoConfigFlags.py +++ b/Control/AthenaConfiguration/python/AutoConfigFlags.py @@ -100,7 +100,7 @@ def DetDescrInfo(geoTag): @lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs -def getDefaultDetectors(geoTag): +def getDefaultDetectors(geoTag, includeForward=False): """Query geometry DB for detector description. Returns a set of detectors used in a geometry tag. @@ -143,6 +143,14 @@ def getDefaultDetectors(geoTag): if DetDescrInfo(geoTag)['Muon']['HasMM']: detectors.add('MM') + if includeForward: + detectors.add('Lucid') + if DetDescrInfo(geoTag)['Common']['Run'] not in ['RUN1']: + detectors.add('AFP') + detectors.add('ZDC') + detectors.add('ALFA') + detectors.add('FwdRegion') + return detectors diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py index 536290922c8c033347957b8886fd5264b802f123..c339fb1ad7cd46dff489c910660b2cef44d17497 100644 --- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py +++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py @@ -96,11 +96,11 @@ def createDetectorConfigFlags(): or prevFlags.Detector.GeometrysTGC or prevFlags.Detector.GeometryMM)) # Forward detectors (disabled by default) - dcf.addFlag('Detector.GeometryLucid', False) - dcf.addFlag('Detector.GeometryZDC', False) - dcf.addFlag('Detector.GeometryALFA', False) - dcf.addFlag('Detector.GeometryAFP', False) - dcf.addFlag('Detector.GeometryFwdRegion', False) + dcf.addFlag('Detector.GeometryLucid', lambda prevFlags : 'Lucid' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryZDC', lambda prevFlags : 'ZDC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryALFA', lambda prevFlags : 'ALFA' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryAFP', lambda prevFlags : 'AFP' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion, includeForward=not prevFlags.Input.isMC)) + dcf.addFlag('Detector.GeometryFwdRegion', lambda prevFlags : 'FwdRegion' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion, includeForward=not prevFlags.Input.isMC)) dcf.addFlag('Detector.GeometryForward', lambda prevFlags : (prevFlags.Detector.GeometryLucid or prevFlags.Detector.GeometryZDC or prevFlags.Detector.GeometryALFA or prevFlags.Detector.GeometryAFP or prevFlags.Detector.GeometryFwdRegion)) @@ -155,11 +155,11 @@ def createDetectorConfigFlags(): or prevFlags.Detector.EnablesTGC or prevFlags.Detector.EnableMM)) # Forward detectors (disabled by default) - dcf.addFlag('Detector.EnableLucid', False) - dcf.addFlag('Detector.EnableZDC', False) - dcf.addFlag('Detector.EnableALFA', False) - dcf.addFlag('Detector.EnableAFP', False) - dcf.addFlag('Detector.EnableFwdRegion', False) + dcf.addFlag('Detector.EnableLucid', lambda prevFlags : prevFlags.Detector.GeometryLucid) + dcf.addFlag('Detector.EnableZDC', lambda prevFlags : prevFlags.Detector.GeometryZDC) + dcf.addFlag('Detector.EnableALFA', lambda prevFlags : prevFlags.Detector.GeometryALFA) + dcf.addFlag('Detector.EnableAFP', lambda prevFlags : prevFlags.Detector.GeometryAFP) + dcf.addFlag('Detector.EnableFwdRegion', lambda prevFlags : prevFlags.Detector.GeometryFwdRegion) dcf.addFlag('Detector.EnableForward', lambda prevFlags : prevFlags.Detector.GeometryForward and (prevFlags.Detector.EnableLucid or prevFlags.Detector.EnableZDC or prevFlags.Detector.EnableALFA or prevFlags.Detector.EnableAFP diff --git a/Control/AthenaConfiguration/test/testDetectorFlags.py b/Control/AthenaConfiguration/test/testDetectorFlags.py index 442effe5ef7709ddf0dd3891567f97b3a433a513..70745640071c1daf8e75905cc6b5c8accf9d3295 100755 --- a/Control/AthenaConfiguration/test/testDetectorFlags.py +++ b/Control/AthenaConfiguration/test/testDetectorFlags.py @@ -4,6 +4,7 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList, enableDetectors, disableDetectors +ConfigFlags.Input.isMC = True ConfigFlags._loadDynaFlags('GeoModel') ConfigFlags._loadDynaFlags('Detector') diff --git a/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py b/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py index 4f6126cdbe53af8df786e521d80714bea51ded63..bdbdcc45412284e234e1e65b0a56a3cfeaba3610 100755 --- a/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py +++ b/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py @@ -8,12 +8,10 @@ # brief A script to test AFP_Digitization package. Mostly inspired by Digitization/DigitizationConfig_test.py, but includes switching AFP digitization on (it's off by default). To test it: # 0. setup athena enviroment -# 1a. run this script: +# 1. run this script: # $ python AFP_DigitizationConfig_test.py -# 1b. it's also possible to add some arguments: -# $ python AFP_DigitizationConfig_test.py Detector.EnableAFP=True # 2. you may want to continue with reconstruction: -# $ RecoSteeringTest.py --filesInput=myRDO.pool.root --RDO Reco.EnableAFP=True +# $ RecoSteeringTest.py --filesInput=myRDO.pool.root --RDO if __name__ == "__main__": @@ -30,8 +28,6 @@ if __name__ == "__main__": # Configure ConfigFlags.Input.Files = ["test.pool.root"] ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-RUN2-09" - ConfigFlags.Detector.EnableAFP = True - ConfigFlags.Detector.GeometryAFP = False ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.Concurrency.NumThreads = 1 ConfigFlags.Concurrency.NumConcurrentEvents=1 diff --git a/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py b/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py index 841cc5d15f21957ab35bf1f2c95c5649313833bf..c0bb49339545d1d327d8c0d0483ec29f916f566b 100644 --- a/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py +++ b/Reconstruction/RecJobTransforms/python/RecoConfigFlags.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.Enums import Format, LHCPeriod +from AthenaConfiguration.Enums import Format _all_domains = [ @@ -14,6 +14,7 @@ _all_domains = [ "Tau", "Met", "CaloRinger", + "AFP", "HI", "PostProcessing", ] @@ -72,11 +73,6 @@ def createRecoConfigFlags(): flags.addFlag("Reco.EnableHI", lambda prevFlags: "_hi" in prevFlags.Input.ProjectName) - # enable AFP only if running on data - flags.addFlag("Reco.EnableAFP", - lambda prevFlags: not prevFlags.Input.isMC and - prevFlags.GeoModel.Run is not LHCPeriod.Run1) - # common thinning and other post-processing flags.addFlag("Reco.EnablePostProcessing", True) flags.addFlag("Reco.PostProcessing.TRTAloneThinning", diff --git a/Reconstruction/RecJobTransforms/python/RecoSteering.py b/Reconstruction/RecJobTransforms/python/RecoSteering.py index c1f9d2f0f21a1783692e7bcbb53052112aac585c..09f362bdac4cc9f673fe36f6c752413e033d777e 100644 --- a/Reconstruction/RecJobTransforms/python/RecoSteering.py +++ b/Reconstruction/RecJobTransforms/python/RecoSteering.py @@ -184,7 +184,7 @@ def RecoSteering(flags): # AFP acc.flagPerfmonDomain('AFP') - if flags.Reco.EnableAFP: + if flags.Detector.EnableAFP: from ForwardRec.AFPRecConfig import AFPRecCfg acc.merge(AFPRecCfg(flags)) log.info("---------- Configured AFP reconstruction") diff --git a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py index 31e26fbaff978253b9ede957db5e88f07fa5e3eb..92994a09dc88511fac862980800c873e9a821e4f 100644 --- a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py @@ -6,7 +6,7 @@ from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, pr from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -def defaultSimulationFlags(ConfigFlags, detectors): +def defaultSimulationFlags(ConfigFlags): """Fill default simulation flags""" # TODO: how to autoconfigure those # Writing out CalibrationHits only makes sense if we are running FullG4 simulation without frozen showers @@ -19,10 +19,6 @@ def defaultSimulationFlags(ConfigFlags, detectors): ConfigFlags.Sim.ISFRun = False # Need to change this for G4AA and ISF! ConfigFlags.GeoModel.Align.Dynamic = False - # Setup detector flags - from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags - setupDetectorFlags(ConfigFlags, detectors, toggle_geometry=True) - def fromRunArgs(runArgs): from AthenaCommon.Logging import logging @@ -50,7 +46,7 @@ def fromRunArgs(runArgs): detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) # Setup common simulation flags - defaultSimulationFlags(ConfigFlags, detectors) + defaultSimulationFlags(ConfigFlags) # Beam Type if hasattr(runArgs,'beamType'): @@ -75,12 +71,12 @@ def fromRunArgs(runArgs): if ConfigFlags.Beam.Type is BeamType.Cosmics: ConfigFlags.Sim.ReadTR = True ConfigFlags.Sim.CosmicFilterVolumeNames = ['Muon'] - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern with a cosmic TR file + detectors.add('Cavern') # simulate the cavern with a cosmic TR file elif hasattr(runArgs,"trackRecordType") and runArgs.trackRecordType=="stopped": ConfigFlags.Sim.ReadTR = True log.error('Stopped Particle simulation is not supported yet') else: - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern + detectors.add('Cavern') # simulate the cavern ConfigFlags.Sim.CavernBackground = CavernBackground.Read else: # Common cases @@ -93,7 +89,7 @@ def fromRunArgs(runArgs): ConfigFlags.Sim.CosmicFilterVolumeNames = [getattr(runArgs, "CosmicFilterVolume", "InnerDetector")] ConfigFlags.Sim.CosmicFilterVolumeNames += [getattr(runArgs, "CosmicFilterVolume2", "NONE")] ConfigFlags.Sim.CosmicPtSlice = getattr(runArgs, "CosmicPtSlice", 'NONE') - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern when generating cosmics on-the-fly + detectors.add('Cavern') # simulate the cavern when generating cosmics on-the-fly log.debug('No inputEVNTFile provided. OK, as performing cosmics simulation.') if hasattr(runArgs, 'outputHITSFile'): @@ -115,7 +111,7 @@ def fromRunArgs(runArgs): pass else: #Case 1b) Cavern Background - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern + detectors.add('Cavern') # simulate the cavern ConfigFlags.Sim.CalibrationRun = CalibrationRun.Off ConfigFlags.Sim.CavernBackground = CavernBackground.Write if not (hasattr(runArgs, 'outputHITSFile') or hasattr(runArgs, "outputEVNT_TRFile")): @@ -124,6 +120,10 @@ def fromRunArgs(runArgs): if hasattr(runArgs, 'conditionsTag'): ConfigFlags.IOVDb.GlobalTag = runArgs.conditionsTag + # Setup detector flags + from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags + setupDetectorFlags(ConfigFlags, detectors, toggle_geometry=True) + # Setup perfmon flags from runargs from PerfMonComps.PerfMonConfigHelpers import setPerfmonFlagsFromRunArgs setPerfmonFlagsFromRunArgs(ConfigFlags, runArgs) diff --git a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py index 8288a3dc6ebf4f0eb289b03a9494df876bfcf335..bdb5455814df46176dbdf2d160a8222649e32573 100644 --- a/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/HITSMerge_Skeleton.py @@ -35,7 +35,7 @@ def fromRunArgs(runArgs): from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags - setupDetectorFlags(ConfigFlags, detectors, use_metadata=True, toggle_geometry=True) + setupDetectorFlags(ConfigFlags, detectors, use_metadata=True, toggle_geometry=True, keep_beampipe=True) # Pre-include processPreInclude(runArgs, ConfigFlags) diff --git a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py index 83f34a620a7eaf3234a021c4665a15993b09434d..61706132607ffe9033fa695051e412bee1b96966 100644 --- a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py @@ -6,7 +6,7 @@ from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, pr from SimuJobTransforms.CommonSimulationSteering import CommonSimulationCfg, specialConfigPreInclude, specialConfigPostInclude -def defaultSimulationFlags(ConfigFlags, detectors): +def defaultSimulationFlags(ConfigFlags): """Fill default simulation flags""" # TODO: how to autoconfigure those # Writing out CalibrationHits only makes sense if we are running FullG4 simulation without frozen showers @@ -20,17 +20,6 @@ def defaultSimulationFlags(ConfigFlags, detectors): ConfigFlags.Sim.ISFRun = True ConfigFlags.GeoModel.Align.Dynamic = False - # Fatras does not support simulating the BCM, so have to switch that off - if ConfigFlags.Sim.ISF.Simulator in [SimulationFlavour.ATLFASTIIFMT, SimulationFlavour.ATLFASTIIF_G4MS, SimulationFlavour.ATLFAST3F_G4MS]: - try: - detectors.remove('BCM') - except ValueError: - pass - - # Setup detector flags - from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags - setupDetectorFlags(ConfigFlags, detectors, toggle_geometry=True) - def fromRunArgs(runArgs): from AthenaCommon.Logging import logging @@ -58,7 +47,7 @@ def fromRunArgs(runArgs): detectors = getDetectorsFromRunArgs(ConfigFlags, runArgs) # Setup common simulation flags - defaultSimulationFlags(ConfigFlags, detectors) + defaultSimulationFlags(ConfigFlags) # Beam Type if hasattr(runArgs,'beamType'): @@ -83,12 +72,12 @@ def fromRunArgs(runArgs): if ConfigFlags.Beam.Type is BeamType.Cosmics: ConfigFlags.Sim.ReadTR = True ConfigFlags.Sim.CosmicFilterVolumeNames = ['Muon'] - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern with a cosmic TR file + detectors.add('Cavern') # simulate the cavern with a cosmic TR file elif hasattr(runArgs,"trackRecordType") and runArgs.trackRecordType=="stopped": ConfigFlags.Sim.ReadTR = True log.error('Stopped Particle simulation is not supported yet') else: - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern + detectors.add('Cavern') # simulate the cavern ConfigFlags.Sim.CavernBackground = CavernBackground.Read else: # Common cases @@ -101,7 +90,7 @@ def fromRunArgs(runArgs): ConfigFlags.Sim.CosmicFilterVolumeNames = [getattr(runArgs, "CosmicFilterVolume", "InnerDetector")] ConfigFlags.Sim.CosmicFilterVolumeNames += [getattr(runArgs, "CosmicFilterVolume2", "NONE")] ConfigFlags.Sim.CosmicPtSlice = getattr(runArgs, "CosmicPtSlice", 'NONE') - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern when generating cosmics on-the-fly + detectors.add('Cavern') # simulate the cavern when generating cosmics on-the-fly log.debug('No inputEVNTFile provided. OK, as performing cosmics simulation.') if hasattr(runArgs, 'outputHITSFile'): @@ -123,12 +112,16 @@ def fromRunArgs(runArgs): pass else: #Case 1b) Cavern Background - ConfigFlags.Detector.GeometryCavern = True # simulate the cavern + detectors.add('Cavern') # simulate the cavern ConfigFlags.Sim.CalibrationRun = CalibrationRun.Off ConfigFlags.Sim.CavernBackground = CavernBackground.Write if not (hasattr(runArgs, 'outputHITSFile') or hasattr(runArgs, "outputEVNT_TRFile")): raise RuntimeError('No outputHITSFile or outputEVNT_TRFile defined') + # Setup detector flags + from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags + setupDetectorFlags(ConfigFlags, detectors, toggle_geometry=True) + # Setup perfmon flags from runargs from PerfMonComps.PerfMonConfigHelpers import setPerfmonFlagsFromRunArgs setPerfmonFlagsFromRunArgs(ConfigFlags, runArgs) diff --git a/Simulation/SimuJobTransforms/python/SimulationHelpers.py b/Simulation/SimuJobTransforms/python/SimulationHelpers.py index ff1dd8331cc4c5799b0f3c01cd51c4dd0061c78f..a8b309e70438118b1e65271805d06e7b9642b940 100644 --- a/Simulation/SimuJobTransforms/python/SimulationHelpers.py +++ b/Simulation/SimuJobTransforms/python/SimulationHelpers.py @@ -8,7 +8,7 @@ def getDetectorsFromRunArgs(ConfigFlags, runArgs): detectors = runArgs.detectors else: from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors - detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion) + detectors = getDefaultDetectors(ConfigFlags.GeoModel.AtlasVersion, includeForward=False) # Support switching on Forward Detectors if hasattr(runArgs, 'LucidOn'): @@ -25,6 +25,14 @@ def getDetectorsFromRunArgs(ConfigFlags, runArgs): # if hasattr(runArgs, 'CavernOn'): # detectors = detectors+['Cavern'] + # Fatras does not support simulating the BCM, so have to switch that off + from SimulationConfig.SimEnums import SimulationFlavour + if ConfigFlags.Sim.ISF.Simulator in [SimulationFlavour.ATLFASTIIFMT, SimulationFlavour.ATLFASTIIF_G4MS, SimulationFlavour.ATLFAST3F_G4MS]: + try: + detectors.remove('BCM') + except ValueError: + pass + return detectors diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT_standalone_newJO.py b/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT_standalone_newJO.py index 6de2f0f07599b5769dc61f6829f365b271e7bd38..8a2ab7707f7d0407abb05b93e2114de8f4c5af85 100755 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT_standalone_newJO.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/runHLT_standalone_newJO.py @@ -44,6 +44,11 @@ flags.Trigger.enableL1CaloPhase1=False flags.Trigger.enableL1CaloLegacy=True flags.Concurrency.NumThreads = 1 +# Disable some forward detetors +flags.Detector.GeometryALFA = False +flags.Detector.GeometryFwdRegion = False +flags.Detector.GeometryLucid = False + # disable Prescales for initial dev phase to allow only few chains in the menu flags.Trigger.disableCPS=True diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py index fc68fc12bc3b1d5184fc007e8535c4cc2a2e53a2..d7984d848862da2e90d8be689657d220fd9789b2 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py @@ -416,6 +416,10 @@ DetFlags.BField_setOn() DetFlags.simulate.all_setOff() DetFlags.pileup.all_setOff() DetFlags.overlay.all_setOff() +# Disable some forward detetors +ConfigFlags.Detector.GeometryALFA = False +ConfigFlags.Detector.GeometryFwdRegion = False +ConfigFlags.Detector.GeometryLucid = False include ("RecExCond/AllDet_detDescr.py")