1 """Geant4 tools config for ISF with ComponentAccumulator
3 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from RngComps.RngCompsConfig
import AthRNGSvcCfg
8 from G4AtlasServices.G4AtlasServicesConfig
import (
11 from G4AtlasServices.G4AtlasUserActionConfig
import (
12 ISFUserActionSvcCfg, ISFFullUserActionSvcCfg,
13 ISFPassBackUserActionSvcCfg, ISF_ATLFAST_UserActionSvcCfg,
15 from G4AtlasTools.G4GeometryToolConfig
import (
16 G4AtlasDetectorConstructionToolCfg
18 from G4AtlasTools.G4AtlasToolsConfig
import (
20 SensitiveDetectorMasterToolCfg, FastSimulationMasterToolCfg
22 from ISF_Services.ISF_ServicesConfig
import (
29 acc.setPrivateTools(CompFactory.iGeant4.G4RunManagerHelper(name, **kwargs))
37 kwargs.setdefault(
"RandomNumberService", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)))
40 if "InputConverter" not in kwargs.keys():
41 kwargs.setdefault(
"InputConverter", acc.getPrimaryAndMerge(
InputConverterCfg(flags)))
43 if "UserActionSvc" not in kwargs.keys():
45 from SimulationConfig.SimEnums
import LArParameterization
46 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
47 from G4AtlasTools.G4AtlasToolsConfig
import PunchThroughG4ToolCfg
48 physics_initialization_tools = kwargs.setdefault(
"PhysicsInitializationTools", [])
49 physics_initialization_tools.append(acc.addPublicTool(acc.popToolsAndMerge(
PunchThroughG4ToolCfg(flags))))
51 kwargs.setdefault(
"RecordFlux", flags.Sim.RecordFlux)
53 kwargs.setdefault(
"QuietMode", flags.Exec.QuietMode)
55 kwargs.setdefault(
"MultiThreading", flags.Concurrency.NumThreads > 0)
57 kwargs.setdefault(
"G4Commands", flags.Sim.G4Commands)
58 kwargs.setdefault(
"PrintTimingInfo", flags.Sim.ISF.DoTimeMonitoring)
59 if "SenDetMasterTool" not in kwargs:
61 if "FastSimMasterTool" not in kwargs:
65 kwargs.setdefault(
"PhysicsListSvc", acc.getPrimaryAndMerge(
PhysicsListSvcCfg(flags)))
67 if flags.Sim.ISF.Simulator.isMT():
68 from G4AtlasTools.G4AtlasToolsConfig
import SimHitContainerListCfg
72 from SimulationConfig.SimEnums
import SimulationFlavour
73 if flags.Sim.ISF.Simulator
in [SimulationFlavour.ATLFAST3F_ACTSMT, SimulationFlavour.FullG4MT, SimulationFlavour.FullG4MT_QS, SimulationFlavour.PassBackG4MT, SimulationFlavour.ATLFAST3MT, SimulationFlavour.ATLFAST3MT_QS]:
75 acc.setPrivateTools(CompFactory.iGeant4.G4TransportTool(name, **kwargs))
77 kwargs.setdefault(
"G4RunManagerHelper", acc.addPublicTool(acc.popToolsAndMerge(
G4RunManagerHelperCfg(flags))))
78 acc.setPrivateTools(CompFactory.iGeant4.G4LegacyTransportTool(name, **kwargs))
85 FullGeant4Tool = acc.popToolsAndMerge(
Geant4ToolCfg(flags, name, **kwargs))
86 acc.setPrivateTools(FullGeant4Tool)
93 PassBackGeant4Tool = acc.popToolsAndMerge(
Geant4ToolCfg(flags, name, **kwargs))
94 acc.setPrivateTools(PassBackGeant4Tool)
101 PassBackGeant4Tool = acc.popToolsAndMerge(
Geant4ToolCfg(flags, name, **kwargs))
102 acc.setPrivateTools(PassBackGeant4Tool)