From 8dc8c482c144bf8d81728ffef1134427119f1cb0 Mon Sep 17 00:00:00 2001 From: John Derek Chapman <chapman@hep.phy.cam.ac.uk> Date: Mon, 17 Feb 2025 09:49:54 +0000 Subject: [PATCH] Patches to FastCaloSim configurations Patches to FastCaloSim configurations --- .../G4AtlasAlg/python/G4AtlasAlgConfig.py | 18 +++++-------- .../G4AtlasTools/python/G4AtlasToolsConfig.py | 27 ++++++++++++++++--- .../ISF/ISF_Config/python/ISF_MainConfig.py | 11 ++------ .../python/ISF_Geant4ToolsConfig.py | 4 +++ 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfig.py b/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfig.py index 2f7363bf51ea..5c1df6d1b42a 100644 --- a/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfig.py +++ b/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfig.py @@ -2,7 +2,7 @@ from G4AtlasServices.G4AtlasServicesConfig import DetectorGeometrySvcCfg, PhysicsListSvcCfg from ISF_Services.ISF_ServicesConfig import TruthServiceCfg, InputConverterCfg from ISF_Services.ISF_ServicesCoreConfig import GeoIDSvcCfg -from G4AtlasTools.G4AtlasToolsConfig import SensitiveDetectorMasterToolCfg, FastSimulationMasterToolCfg, SimHitContainerListCfg +from G4AtlasTools.G4AtlasToolsConfig import SensitiveDetectorMasterToolCfg, FastSimulationMasterToolCfg from G4AtlasServices.G4AtlasUserActionConfig import UserActionSvcCfg from SimulationConfig.SimulationMetadata import writeSimulationParametersMetadata, readSimulationParameters from AthenaConfiguration.ComponentFactory import CompFactory @@ -31,19 +31,17 @@ def G4AtlasAlgCfg(flags, name="G4AtlasAlg", **kwargs): ## Don't drop the GeoModel kwargs.setdefault("ReleaseGeoModel", flags.Sim.ReleaseGeoModel) - + + from G4AtlasTools.G4AtlasToolsConfig import SimHitContainerListCfg, InputContainerListCfg + kwargs.setdefault("ExtraOutputs", SimHitContainerListCfg(flags) ) + kwargs.setdefault("ExtraInputs" , InputContainerListCfg(flags)) + from SimulationConfig.SimEnums import LArParameterization # Configure fast simulation if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: - kwargs.setdefault("ExtraInputs", - {('CaloDetDescrManager', 'ConditionStore+CaloDetDescrManager'), - ('LArfSamplSym', 'ConditionStore+LArfSamplSym'), - ('TileSamplingFraction', 'ConditionStore+TileSamplingFraction')}) # Set the path to the simplified calorimeter geometry for particle transport if provided if flags.Sim.SimplifiedGeoPath: kwargs.setdefault('SimplifiedGeoPath', flags.Sim.SimplifiedGeoPath) - - kwargs.setdefault("ExtraOutputs", SimHitContainerListCfg(flags)) ## Record the particle flux during the simulation kwargs.setdefault("RecordFlux", flags.Sim.RecordFlux) @@ -104,10 +102,6 @@ def G4AtlasAlgCfg(flags, name="G4AtlasAlg", **kwargs): # Set commands for the G4AtlasAlg kwargs.setdefault("G4Commands", flags.Sim.G4Commands) - from SimulationConfig.SimEnums import CalibrationRun - if flags.Sim.CalibrationRun in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC]: - # Needed to ensure that DeadMaterialCalibrationHitsMerger is scheduled correctly. - kwargs.setdefault("ExtraOutputs", [( 'CaloCalibrationHitContainer' , 'StoreGateSvc+LArCalibrationHitActive_DEAD' ), ( 'CaloCalibrationHitContainer' , 'StoreGateSvc+LArCalibrationHitDeadMaterial_DEAD' ), ( 'CaloCalibrationHitContainer' , 'StoreGateSvc+LArCalibrationHitInactive_DEAD' )]) result.addEventAlgo(CompFactory.G4AtlasAlg(name, **kwargs)) return result diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py index c5eeadfc83f0..b61f98271c40 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py @@ -304,20 +304,28 @@ def SimHitContainerListCfg(flags): from MuonG4SD.MuonG4SDConfig import SimHitContainerListCfg writtenContainers += SimHitContainerListCfg(flags) if flags.Detector.GeometryLAr: - if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('CALO', True)) or flags.Sim.LArParameterization is LArParameterization.FastCaloSim: writtenContainers += [("LArHitContainer", "LArHitEMB_G4")] writtenContainers += [("LArHitContainer", "LArHitEMEC_G4")] writtenContainers += [("LArHitContainer", "LArHitFCAL_G4")] writtenContainers += [("LArHitContainer", "LArHitHEC_G4")] + if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: + writtenContainers += [("LArHitContainer" , "LArHitHEC_FastCaloSim")] + writtenContainers += [("LArHitContainer" , "LArHitFCAL_FastCaloSim")] + writtenContainers += [("LArHitContainer" , "LArHitEMEC_FastCaloSim")] + writtenContainers += [("LArHitContainer" , "LArHitEMB_FastCaloSim")] else: writtenContainers += [("LArHitContainer", "LArHitEMB")] writtenContainers += [("LArHitContainer", "LArHitEMEC")] writtenContainers += [("LArHitContainer", "LArHitFCAL")] writtenContainers += [("LArHitContainer", "LArHitHEC")] if flags.Detector.GeometryTile: - if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('CALO', True)) or flags.Sim.LArParameterization is LArParameterization.FastCaloSim: writtenContainers += [("TileHitVector", "MBTSHits_G4")] writtenContainers += [("TileHitVector", "TileHitVec_G4")] + if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: + writtenContainers += [("TileHitVector" , "TileHitVec_FastCaloSim")] + writtenContainers += [("TileHitVector" , "MBTSHits_FastCaloSim")] else: writtenContainers += [("TileHitVector", "MBTSHits")] writtenContainers += [("TileHitVector", "TileHitVec")] @@ -331,7 +339,7 @@ def SimHitContainerListCfg(flags): if flags.Detector.EnableSCT: writtenContainers += [("SiHitCollection", "SCT_Hits")] from SimulationConfig.SimEnums import CalibrationRun - if flags.Sim.CalibrationRun in [CalibrationRun.LAr, CalibrationRun.LArTile]: + if flags.Sim.CalibrationRun in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC]: # Needed to ensure that DeadMaterialCalibrationHitsMerger is scheduled correctly. writtenContainers += [ ( 'CaloCalibrationHitContainer' , 'StoreGateSvc+LArCalibrationHitActive_DEAD' ), @@ -341,6 +349,17 @@ def SimHitContainerListCfg(flags): return writtenContainers + +def InputContainerListCfg(flags): + dependencies = [] + from SimulationConfig.SimEnums import LArParameterization + if flags.Sim.LArParameterization is LArParameterization.FastCaloSim: + dependencies+=[('CaloDetDescrManager', 'ConditionStore+CaloDetDescrManager'), + ('LArfSamplSym', 'ConditionStore+LArfSamplSym'), + ('TileSamplingFraction', 'ConditionStore+TileSamplingFraction')] + return dependencies + + def SensitiveDetectorListCfg(flags): result = ComponentAccumulator() tools = [] @@ -429,4 +448,4 @@ def EmptySensitiveDetectorMasterToolCfg(name="EmptySensitiveDetectorMasterTool", result = ComponentAccumulator() tool = result.popToolsAndMerge(CompFactory.SensitiveDetectorMasterTool(name, **kwargs)) result.setPrivateTools(tool) - return result \ No newline at end of file + return result diff --git a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py index 0cc21270d8e9..6920af0999f8 100644 --- a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py +++ b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py @@ -68,15 +68,8 @@ def Kernel_GenericSimulatorMTCfg(flags, name="ISF_Kernel_GenericSimulatorMT", ** kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads) kwargs.setdefault("InputEvgenCollection", "BeamTruthEvent") kwargs.setdefault("OutputTruthCollection", "TruthEvent") - from SimulationConfig.SimEnums import CalibrationRun - if flags.Sim.CalibrationRun in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC]: - # Needed to ensure that DeadMaterialCalibrationHitsMerger is scheduled correctly. - kwargs.setdefault("ExtraOutputs", [ - ( 'CaloCalibrationHitContainer', 'StoreGateSvc+LArCalibrationHitActive_DEAD' ), - ( 'CaloCalibrationHitContainer', 'StoreGateSvc+LArCalibrationHitDeadMaterial_DEAD' ), - ( 'CaloCalibrationHitContainer', 'StoreGateSvc+LArCalibrationHitInactive_DEAD' ) - ]) - + from G4AtlasTools.G4AtlasToolsConfig import InputContainerListCfg + kwargs.setdefault("ExtraInputs" , InputContainerListCfg(flags)) if flags.Sim.ISF.Simulator.isQuasiStable(): if "QuasiStablePatcher" not in kwargs: from BeamEffects.BeamEffectsAlgConfig import ZeroLifetimePositionerCfg diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py index 53beb13df480..12655067d6b6 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfig.py @@ -53,6 +53,10 @@ def Geant4ToolCfg(flags, name="ISF_Geant4Tool", **kwargs): # PhysicsListSvc kwargs.setdefault("PhysicsListSvc", acc.getPrimaryAndMerge(PhysicsListSvcCfg(flags)).name) + if flags.Sim.ISF.Simulator.isMT(): + from G4AtlasTools.G4AtlasToolsConfig import SimHitContainerListCfg + kwargs.setdefault("ExtraOutputs", SimHitContainerListCfg(flags) ) + # Workaround to keep other simulation flavours working while we migrate everything to be AthenaMT-compatible. from SimulationConfig.SimEnums import SimulationFlavour if flags.Sim.ISF.Simulator in [SimulationFlavour.ATLFAST3F_ACTSMT, SimulationFlavour.FullG4MT, SimulationFlavour.FullG4MT_QS, SimulationFlavour.PassBackG4MT, SimulationFlavour.ATLFAST3MT, SimulationFlavour.ATLFAST3MT_QS]: -- GitLab