ATLAS Offline Software
Loading...
Searching...
No Matches
G4RunManagementToolConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4from G4AtlasServices.G4AtlasUserActionConfig import UserActionSvcCfg
5from G4AtlasServices.G4AtlasServicesConfig import PhysicsListSvcCfg, UserLimitsSvcCfg
6from G4AtlasTools.G4GeometryToolConfig import G4AtlasDetectorConstructionToolCfg
7from SimulationConfig.SimEnums import LArParameterization
8
9def G4RunToolCfg(flags, name="G4RunTool", **kwargs):
10 result = ComponentAccumulator()
11
12 # Configure service handles
13 kwargs.setdefault("DetectorConstruction", result.popToolsAndMerge(G4AtlasDetectorConstructionToolCfg(flags)))
14 kwargs.setdefault("PhysicsListSvc", result.getPrimaryAndMerge(PhysicsListSvcCfg(flags)))
15 kwargs.setdefault("UserLimitsSvc", result.getPrimaryAndMerge(UserLimitsSvcCfg(flags)))
16 kwargs.setdefault("UserActionSvc", result.getPrimaryAndMerge(UserActionSvcCfg(flags)))
17 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
18 from G4AtlasTools.G4AtlasToolsConfig import PunchThroughG4ToolCfg
19 physics_initialization_tools = kwargs.setdefault("PhysicsInitializationTools", [])
20 physics_initialization_tools.append(result.addPublicTool(result.popToolsAndMerge(PunchThroughG4ToolCfg(flags))))
21
22 # Threading configuration
23 kwargs.setdefault("NG4threads", max(1, flags.Concurrency.NumThreads))
24 kwargs.setdefault("NG4eventsPerRun", 100000)
25
26 result.setPrivateTools(CompFactory.G4RunTool(name, **kwargs))
27 return result
#define max(a, b)
Definition cfImp.cxx:41
G4RunToolCfg(flags, name="G4RunTool", **kwargs)