From cb1c0e48736ab7fd622bdfd45adf5f7f7c04180c Mon Sep 17 00:00:00 2001 From: Rupert Tombs <rt500@cam.ac.uk> Date: Tue, 14 Jul 2020 12:37:44 +0100 Subject: [PATCH] Link new config for tools. Move particlebrokers out of core to avoid circular imports. Add flake8. Avoid including excess GeoIDSvc instances with different names between AFII and otherwise. Thanks to JC --- .../ISF/ISF_Core/ISF_Services/CMakeLists.txt | 2 +- .../python/ISF_ServicesConfigNew.py | 38 ++++++++++++++++- .../python/ISF_ServicesCoreConfigNew.py | 28 +------------ .../ISF/ISF_Core/ISF_Tools/CMakeLists.txt | 2 +- .../ISF_Tools/python/ISF_ToolsConfigNew.py | 29 +++++++++---- .../python/ISF_Geant4CommonToolsConfigNew.py | 41 ++++++++++++------- .../ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt | 2 +- .../python/ISF_Geant4ToolsConfigNew.py | 3 +- 8 files changed, 92 insertions(+), 53 deletions(-) diff --git a/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt b/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt index 27dfefdb3c5..ac713fc23b9 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt +++ b/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt @@ -99,5 +99,5 @@ atlas_add_test( ISF_ServicesConfigNew_test set_target_properties( ISF_Services_TruthSvc_test PROPERTIES ENABLE_EXPORTS True ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py index 7cefb98f4f5..9e911a26c77 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py +++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py @@ -20,7 +20,10 @@ from ISF_HepMC_Tools.ISF_HepMC_ToolsConfigNew import ( ParticleSimWhiteListCfg, ) from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg - +from ISF_Geant4CommonTools.ISF_Geant4CommonToolsConfigNew import ( + EntryLayerToolCfg, AFIIEntryLayerToolCfg +) +from ISF_Tools.ISF_ToolsConfigNew import ParticleOrderingToolCfg def GenParticleFiltersToolCfg(ConfigFlags): result = ComponentAccumulator() @@ -64,6 +67,39 @@ def LongLivedInputConverterCfg(ConfigFlags, name="ISF_LongLivedInputConverter", return InputConverterCfg(name, **kwargs) +def ParticleBrokerSvcNoOrderingCfg(ConfigFlags, name="ISF_ParticleBrokerSvcNoOrdering", **kwargs): + result = EntryLayerToolCfg(ConfigFlags) + kwargs.setdefault("EntryLayerTool", result.popPrivateTools()) + kwargs.setdefault("GeoIDSvc", result.getService("ISF_GeoIDSvc")) + kwargs.setdefault("AlwaysUseGeoIDSvc", False) + kwargs.setdefault("ValidateGeoIDs", ConfigFlags.ISF.ValidationMode) + kwargs.setdefault("ValidationOutput", ConfigFlags.ISF.ValidationMode) + kwargs.setdefault("ValidationStreamName", "ParticleBroker") + + baracc = BarcodeSvcCfg(ConfigFlags) + kwargs.setdefault("BarcodeService", baracc.getPrimary()) + result.merge(baracc) + + result.addService(CompFactory.ISF.ParticleBrokerDynamicOnReadIn(name, **kwargs)) + return result + + +def ParticleBrokerSvcCfg(ConfigFlags, name="ISF_ParticleBrokerSvc", **kwargs): + # comment copied from old config + #kwargs.setdefault("ParticleOrderingTool", "ISF_InToOutSubDetOrderingTool") + result = ParticleOrderingToolCfg(ConfigFlags) + kwargs.setdefault("ParticleOrderingTool", result.popPrivateTools()) + result.merge(ParticleBrokerSvcNoOrderingCfg(name, **kwargs)) + return result + + +def AFIIParticleBrokerSvcCfg(ConfigFlags, name="ISF_AFIIParticleBrokerSvc", **kwargs): + result = AFIIEntryLayerToolCfg(ConfigFlags) + kwargs.setdefault("EntryLayerTool", result.popPrivateTools()) + result.merge(ParticleBrokerSvcCfg(name, **kwargs)) + return result + + # Generic Truth Service Configurations def TruthServiceCfg(ConfigFlags, **kwargs): """Return the TruthService config flagged by Sim.TruthStrategy""" diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py index 6dc3ea47bff..fac9ab538c0 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py +++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py @@ -8,34 +8,9 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.SystemOfUnits import mm from SubDetectorEnvelopes.SubDetectorEnvelopesConfigNew import EnvelopeDefSvcCfg -from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg from ISF_Tools.ISF_ToolsConfigNew import ParticleKillerToolCfg -def ParticleBrokerSvcNoOrderingCfg(ConfigFlags, name="ISF_ParticleBrokerSvcNoOrdering", **kwargs): - kwargs.setdefault("EntryLayerTool", "ISF_EntryLayerTool") # TODO - kwargs.setdefault("GeoIDSvc", "ISF_GeoIDSvc") # TODO - kwargs.setdefault("AlwaysUseGeoIDSvc", False) - kwargs.setdefault("ValidateGeoIDs", ConfigFlags.ISF.ValidationMode) - kwargs.setdefault("ValidationOutput", ConfigFlags.ISF.ValidationMode) - kwargs.setdefault("ValidationStreamName", "ParticleBroker") - result = BarcodeSvcCfg(ConfigFlags) - kwargs.setdefault("BarcodeService", result.getPrimary()) - result.addService(CompFactory.ISF.ParticleBrokerDynamicOnReadIn(name, **kwargs)) - return result - - -def ParticleBrokerSvcCfg(ConfigFlags, name="ISF_ParticleBrokerSvc", **kwargs): - #kwargs.setdefault("ParticleOrderingTool", "ISF_InToOutSubDetOrderingTool") - kwargs.setdefault("ParticleOrderingTool", "ISF_ParticleOrderingTool") # TODO - return ParticleBrokerSvcNoOrderingCfg(name, **kwargs) - - -def AFIIParticleBrokerSvcCfg(ConfigFlags, name="ISF_AFIIParticleBrokerSvc", **kwargs): - kwargs.setdefault("EntryLayerTool", "ISF_AFIIEntryLayerTool") # TODO - return ParticleBrokerSvcCfg(name, **kwargs) - - def ISFEnvelopeDefSvcCfg(ConfigFlags, name="ISF_ISFEnvelopeDefSvc", **kwargs): result = EnvelopeDefSvcCfg(ConfigFlags) # ATLAS common envlope definitions @@ -72,7 +47,8 @@ def AFIIGeoIDSvcCfg(ConfigFlags, name="ISF_AFIIGeoIDSvc", **kwargs): def ParticleKillerSvcCfg(ConfigFlags, name="ISF_ParticleKillerSvc", **kwargs): result = ComponentAccumulator() kwargs.setdefault("Identifier", "ParticleKiller") - kwargs.setdefault("SimulatorTool", ParticleKillerToolCfg(ConfigFlags)) + tool = result.popToolsAndMerge(ParticleKillerToolCfg(ConfigFlags)) + kwargs.setdefault("SimulatorTool", tool) svc = CompFactory.ISF.LegacySimSvc(name, **kwargs) result.addService(svc) return result diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt b/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt index 5b8165fe255..5546a231ded 100644 --- a/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt +++ b/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt @@ -12,5 +12,5 @@ atlas_add_component( ISF_Tools LINK_LIBRARIES GaudiKernel AthenaBaseComps AtlasDetDescr BarcodeInterfacesLib GeneratorObjects ISF_Event ISF_InterfacesLib TrackRecordLib ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py index 2b8c4355e8c..b985690499a 100644 --- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py +++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py @@ -2,6 +2,7 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """ +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.SystemOfUnits import MeV from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg @@ -15,7 +16,9 @@ def ParticleHelperCfg(flags, name="ISF_ParticleHelper", **kwargs): def MemoryMonitorToolCfg(flags, name="ISF_MemoryMonitor", **kwargs): - return CompFactory.ISF.MemoryMonitoringTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.MemoryMonitoringTool(name, **kwargs)) + return acc def EntryLayerFilterCfg(ConfigFlags, **kwargs): @@ -112,12 +115,16 @@ def CosmicEventFilterToolCfg(flags, name="ISF_CosmicEventFilter", **kwargs): kwargs.setdefault("PDG_ID", flags.Sim.CosmicFilterID) kwargs.setdefault("ptMin", flags.Sim.CosmicFilterPTmin) kwargs.setdefault("ptMax", flags.Sim.CosmicFilterPTmax) - return CompFactory.ISF.CosmicEventFilterTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.CosmicEventFilterTool(name, **kwargs)) + return acc def StoppedParticleFilterToolCfg(flags, name="ISF_StoppedParticleFilter", **kwargs): kwargs.setdefault("VolumeNames", ["StoppingPositions"]) - return CompFactory.ISF.CosmicEventFilterTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.CosmicEventFilterTool(name, **kwargs)) + return acc def InToOutSubDetOrderingToolCfg(flags, name="ISF_InToOutSubDetOrderingTool", **kwargs): @@ -127,7 +134,9 @@ def InToOutSubDetOrderingToolCfg(flags, name="ISF_InToOutSubDetOrderingTool", ** kwargs.setdefault("OrderCalo" , 10000 ) kwargs.setdefault("OrderMS" , 100 ) kwargs.setdefault("OrderCavern" , 1 ) - return CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs)) + return acc def ParticleOrderingToolCfg(flags, name="ISF_ParticleOrderingTool", **kwargs): @@ -136,12 +145,18 @@ def ParticleOrderingToolCfg(flags, name="ISF_ParticleOrderingTool", **kwargs): kwargs.setdefault("OrderCalo" , 1) kwargs.setdefault("OrderMS" , 1) kwargs.setdefault("OrderCavern" , 1) - return CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs)) + return acc def EnergyParticleOrderingToolCfg(flags, name="ISF_EnergyParticleOrderingTool", **kwargs): - return CompFactory.ISF.EnergyParticleOrderingTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.EnergyParticleOrderingTool(name, **kwargs)) + return acc def ParticleKillerToolCfg(flags, name="ISF_ParticleKillerTool", **kwargs): - return CompFactory.ISF.ParticleKillerSimTool(name, **kwargs) + acc = ComponentAccumulator() + acc.setPrivateTools(CompFactory.ISF.ParticleKillerSimTool(name, **kwargs)) + return acc diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py index ab18670d240..ef13934d41a 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py @@ -2,16 +2,19 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """ +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from ISF_Services.ISF_ServicesConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg +from ISF_Services.ISF_ServicesCoreConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg from ISF_Tools.ISF_ToolsConfigNew import EntryLayerFilterCfg def EntryLayerToolCfg(flags, name="ISF_EntryLayerTool", **kwargs): - acc = GeoIDSvcCfg(flags) - kwargs.setdefault("GeoIDSvc", acc.getService("ISF_GeoIDSvc")) - acc_filter = EntryLayerFilterCfg(flags) - kwargs.setdefault("ParticleFilters", [acc.popToolsAndMerge(acc_filter)]) + acc = ComponentAccumulator() + if "GeoIDSvc" not in kwargs: + acc.merge(GeoIDSvcCfg(flags)) + kwargs["GeoIDSvc"] = acc.getService("ISF_GeoIDSvc") + filt = acc.popToolsAndMerge(EntryLayerFilterCfg(flags)) + kwargs.setdefault("ParticleFilters", [filt]) if flags.Sim.DoFullChain: # TODO and DetFlags.pileup.any_on(): kwargs.setdefault("EvtStore", "OriginalEvent_SG") # For Fast Chain acc.setPrivateTools(CompFactory.ISF.EntryLayerTool(name, **kwargs)) @@ -19,10 +22,12 @@ def EntryLayerToolCfg(flags, name="ISF_EntryLayerTool", **kwargs): def EntryLayerToolMTCfg(flags, name="ISF_EntryLayerToolMT", **kwargs): - acc = GeoIDSvcCfg(flags) - kwargs.setdefault("GeoIDSvc", acc.getService("ISF_GeoIDSvc")) - acc_filter = EntryLayerFilterCfg(flags) - kwargs.setdefault("ParticleFilters", [acc.popToolsAndMerge(acc_filter)]) + acc = ComponentAccumulator() + if "GeoIDSvc" not in kwargs: + acc.merge(GeoIDSvcCfg(flags)) + kwargs["GeoIDSvc"] = acc.getService("ISF_GeoIDSvc") + filt = acc.popToolsAndMerge(EntryLayerFilterCfg(flags)) + kwargs.setdefault("ParticleFilters", [filt]) if flags.Sim.DoFullChain: # TODO and DetFlags.pileup.any_on(): kwargs.setdefault("EvtStore", "OriginalEvent_SG") # For Fast Chain acc.setPrivateTools(CompFactory.ISF.EntryLayerToolMT(name, **kwargs)) @@ -30,14 +35,20 @@ def EntryLayerToolMTCfg(flags, name="ISF_EntryLayerToolMT", **kwargs): def AFIIEntryLayerToolCfg(flags, name="ISF_AFIIEntryLayerTool", **kwargs): - acc = AFIIGeoIDSvcCfg(flags) - kwargs.setdefault("GeoIDSvc", acc.getService("ISF_AFIIGeoIDSvc")) - acc.merge(EntryLayerToolCfg(name, **kwargs)) + acc = ComponentAccumulator() + if "GeoIDSvc" not in kwargs: + acc.merge(AFIIGeoIDSvcCfg(flags)) + kwargs["GeoIDSvc"] = acc.getService("ISF_AFIIGeoIDSvc") + tool = acc.popToolsAndMerge(EntryLayerToolCfg(name, **kwargs)) + acc.setPrivateTools(tool) return acc def AFIIEntryLayerToolMTCfg(flags, name="ISF_AFIIEntryLayerToolMT", **kwargs): - acc = AFIIGeoIDSvcCfg(flags) - kwargs.setdefault("GeoIDSvc", acc.getService("ISF_AFIIGeoIDSvc")) - acc.merge(EntryLayerToolMTCfg(name, **kwargs)) + acc = ComponentAccumulator() + if "GeoIDSvc" not in kwargs: + acc.merge(AFIIGeoIDSvcCfg(flags)) + kwargs["GeoIDSvc"] = acc.getService("ISF_AFIIGeoIDSvc") + tool = acc.popToolsAndMerge(EntryLayerToolMTCfg(name, **kwargs)) + acc.setPrivateTools(tool) return acc diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt index 4b519f49a9d..a055119d2cf 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt @@ -26,5 +26,5 @@ atlas_add_component( ISF_Geant4Tools LINK_LIBRARIES ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib ${GEANT4_LIBRARIES} ${EIGEN_LIBRARIES} AthenaKernel GaudiKernel G4AtlasInterfaces AthenaBaseComps StoreGateLib SGtests AtlasDetDescr GeneratorObjects G4AtlasToolsLib G4AtlasAlgLib MCTruth SimHelpers ISF_Event ISF_InterfacesLib ISF_Geant4Event ISF_Geant4ToolsLib ) # Install files from the package: -atlas_install_python_modules( python/*.py ) +atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py index f132d21e71f..6d92ec8ecf0 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py @@ -5,8 +5,9 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.SystemOfUnits import MeV +from ISF_Services.ISF_ServicesCoreConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg from ISF_Services.ISF_ServicesConfigNew import ( - TruthServiceCfg, GeoIDSvcCfg, AFIIGeoIDSvcCfg, + TruthServiceCfg, ParticleBrokerSvcCfg, InputConverterCfg, LongLivedInputConverterCfg ) -- GitLab