From d2f003248bc855b92b7a70e194321561cf94a79b Mon Sep 17 00:00:00 2001 From: John Chapman <John.Chapman@cern.ch> Date: Tue, 18 Feb 2025 08:49:54 +0100 Subject: [PATCH] Configuration fixes for Simulation configurations using Fatras (ATLASSIM-7425) --- .../HGTD_G4_SD/python/HGTD_G4_SDToolConfig.py | 4 +- .../MuonG4/MuonG4SD/python/MuonG4SDConfig.py | 32 ++++++++++--- .../python/SensitiveDetectorsCfg.py | 33 ++++++++++---- .../G4AtlasTools/python/G4AtlasToolsConfig.py | 45 ++++++++++++++++--- .../SimulationConfig/python/SimConfigFlags.py | 4 +- 5 files changed, 92 insertions(+), 26 deletions(-) diff --git a/HighGranularityTimingDetector/HGTD_G4/HGTD_G4_SD/python/HGTD_G4_SDToolConfig.py b/HighGranularityTimingDetector/HGTD_G4/HGTD_G4_SD/python/HGTD_G4_SDToolConfig.py index f1e6ed95e7d..d7463494370 100644 --- a/HighGranularityTimingDetector/HGTD_G4/HGTD_G4_SD/python/HGTD_G4_SDToolConfig.py +++ b/HighGranularityTimingDetector/HGTD_G4/HGTD_G4_SD/python/HGTD_G4_SDToolConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -9,7 +9,7 @@ def HgtdSensorSDCfg(flags, name="HgtdSensorSD", **kwargs): bare_collection_name = "HGTD_Hits" mergeable_collection_suffix = "_G4" merger_input_property = "HGTDHits" - region = "ID" + region = "ITk" acc, hits_collection_name = CollectionMergerCfg(flags, bare_collection_name, diff --git a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py index 50f5139bf27..e5c71cfb6f8 100644 --- a/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py +++ b/MuonSpectrometer/MuonG4/MuonG4SD/python/MuonG4SDConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator @@ -48,16 +48,34 @@ def SetupSensitiveDetectorsCfg(flags): def SimHitContainerListCfg(flags): simHitContainers = [] if flags.Detector.EnableMDT: - simHitContainers+=[("MDTSimHitCollection", "MDT_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("MDTSimHitCollection", "MDT_Hits_G4")] + else: + simHitContainers+=[("MDTSimHitCollection", "MDT_Hits")] if flags.Detector.EnableRPC: - simHitContainers+=[("RPCSimHitCollection", "RPC_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("RPCSimHitCollection", "RPC_Hits_G4")] + else: + simHitContainers+=[("RPCSimHitCollection", "RPC_Hits")] if flags.Detector.EnableTGC: - simHitContainers+=[("TGCSimHitCollection", "TGC_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("TGCSimHitCollection", "TGC_Hits_G4")] + else: + simHitContainers+=[("TGCSimHitCollection", "TGC_Hits")] if flags.Detector.EnableMM: - simHitContainers+=[("MMSimHitCollection", "MM_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("MMSimHitCollection", "MM_Hits_G4")] + else: + simHitContainers+=[("MMSimHitCollection", "MM_Hits")] if flags.Detector.EnablesTGC: - simHitContainers+=[("sTGCSimHitCollection", "sTGC_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("sTGCSimHitCollection", "sTGC_Hits_G4")] + else: + simHitContainers+=[("sTGCSimHitCollection", "sTGC_Hits")] if flags.Detector.EnableCSC: - simHitContainers+=[("CSCSimHitCollection", "CSC_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("CSCSimHitCollection", "CSC_Hits_G4")] + else: + simHitContainers+=[("CSCSimHitCollection", "CSC_Hits")] return simHitContainers diff --git a/MuonSpectrometer/MuonPhaseII/MuonG4/MuonSensitiveDetectorsR4/python/SensitiveDetectorsCfg.py b/MuonSpectrometer/MuonPhaseII/MuonG4/MuonSensitiveDetectorsR4/python/SensitiveDetectorsCfg.py index df9aafa6fe3..04706dc173b 100644 --- a/MuonSpectrometer/MuonPhaseII/MuonG4/MuonSensitiveDetectorsR4/python/SensitiveDetectorsCfg.py +++ b/MuonSpectrometer/MuonPhaseII/MuonG4/MuonSensitiveDetectorsR4/python/SensitiveDetectorsCfg.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -74,7 +74,7 @@ def SetupSensitiveDetectorsCfg(flags): if flags.Detector.EnableMDT: tools += [result.popToolsAndMerge(MdtSensitiveDetectorToolCfg(flags))] - + if flags.Detector.EnableRPC: tools += [result.popToolsAndMerge(RpcSensitiveDetectorToolCfg(flags))] @@ -91,14 +91,29 @@ def SetupSensitiveDetectorsCfg(flags): def SimHitContainerListCfg(flags): simHitContainers = [] if flags.Detector.EnableMDT: - simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMdtSimHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMdtSimHits_G4")] + else: + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMdtSimHits")] if flags.Detector.EnableMM: - simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMmSimHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMmSimHits_G4")] + else: + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMmSimHits")] if flags.Detector.EnableRPC: - simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawRpcSimHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawRpcSimHits_G4")] + else: + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawRpcSimHits")] if flags.Detector.EnableTGC: - simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawTgcSimHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawTgcSimHits_G4")] + else: + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawTgcSimHits")] if flags.Detector.EnablesTGC: - simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawStgcSimHits")] - - return simHitContainers \ No newline at end of file + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)): + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawStgcSimHits_G4")] + else: + simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawStgcSimHits")] + + return simHitContainers diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py index b61f98271c4..acd2861ca38 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import BeamType @@ -330,14 +330,47 @@ def SimHitContainerListCfg(flags): writtenContainers += [("TileHitVector", "MBTSHits")] writtenContainers += [("TileHitVector", "TileHitVec")] if flags.Detector.GeometryTRT: - writtenContainers += [("TRTUncompressedHitCollection", "TRTUncompressedHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ID', True)): + writtenContainers += [("TRTUncompressedHitCollection", "TRTUncompressedHits_G4")] + else: + writtenContainers += [("TRTUncompressedHitCollection", "TRTUncompressedHits")] if flags.Detector.EnableBCM: - writtenContainers += [("SiHitCollection", "BCMHits")] - writtenContainers += [("SiHitCollection", "BLMHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ID', True)): + writtenContainers += [("SiHitCollection", "BCMHits_G4")] + writtenContainers += [("SiHitCollection", "BLMHits_G4")] + else: + writtenContainers += [("SiHitCollection", "BCMHits")] + writtenContainers += [("SiHitCollection", "BLMHits")] if flags.Detector.EnablePixel: - writtenContainers += [("SiHitCollection", "PixelHits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ID', True)): + writtenContainers += [("SiHitCollection", "PixelHits_G4")] + else: + writtenContainers += [("SiHitCollection", "PixelHits")] if flags.Detector.EnableSCT: - writtenContainers += [("SiHitCollection", "SCT_Hits")] + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ID', True)): + writtenContainers += [("SiHitCollection", "SCT_Hits_G4")] + else: + writtenContainers += [("SiHitCollection", "SCT_Hits")] + if flags.Detector.EnableITkPixel: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ITk', True)): + writtenContainers += [("SiHitCollection", "ITkPixelHits_G4")] + else: + writtenContainers += [("SiHitCollection", "ITkPixelHits")] + if flags.Detector.EnableITkStrip: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ITk', True)): + writtenContainers += [("SiHitCollection", "ITkStripHits_G4")] + else: + writtenContainers += [("SiHitCollection", "ITkStripHits")] + if flags.Detector.EnablePLR: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ITk', True)): + writtenContainers += [("SiHitCollection", "PLR_Hits_G4")] + else: + writtenContainers += [("SiHitCollection", "PLR_Hits")] + if flags.Detector.EnableHGTD: + if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('ITk', True)): + writtenContainers += [("SiHitCollection", "HGTDHits_G4")] + else: + writtenContainers += [("SiHitCollection", "HGTDHits")] from SimulationConfig.SimEnums import CalibrationRun if flags.Sim.CalibrationRun in [CalibrationRun.LAr, CalibrationRun.LArTile, CalibrationRun.LArTileZDC]: # Needed to ensure that DeadMaterialCalibrationHitsMerger is scheduled correctly. diff --git a/Simulation/SimulationConfig/python/SimConfigFlags.py b/Simulation/SimulationConfig/python/SimConfigFlags.py index 99a8f9b3587..a159cc87a81 100644 --- a/Simulation/SimulationConfig/python/SimConfigFlags.py +++ b/Simulation/SimulationConfig/python/SimConfigFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags, isGaudiEnv from AthenaConfiguration.AutoConfigFlags import GetFileMD @@ -215,7 +215,7 @@ def createSimConfigFlags(): doID = True doITk = True doCALO = True - doMUON = True + doMUON = (prevFlags.Sim.ISF.Simulator not in [SimulationFlavour.ATLFAST3F_ACTSMT, ATLFAST3F_G4MS]) elif prevFlags.Sim.ISF.Simulator.usesFastCaloSim() or prevFlags.Sim.LArParameterization is LArParameterization.FastCaloSim: doID = False doITk = False -- GitLab