ATLAS Offline Software
Loading...
Searching...
No Matches
G4RunAlgConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from ISF_Services.ISF_ServicesConfig import TruthServiceCfg, InputConverterCfg
3from ISF_Services.ISF_ServicesCoreConfig import GeoIDSvcCfg
4from G4AtlasTools.G4AtlasToolsConfig import SensitiveDetectorMasterToolCfg, FastSimulationMasterToolCfg
5from G4RunManagement.G4RunManagementToolConfig import G4RunToolCfg
6from G4AtlasServices.G4AtlasUserActionConfig import UserActionSvcCfg
7from SimulationConfig.SimulationMetadata import writeSimulationParametersMetadata, readSimulationParameters
8from AthenaConfiguration.ComponentFactory import CompFactory
9from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
10
11
12def G4RunAlgCfg(flags, name="G4RunAlg", **kwargs):
13 """Return ComponentAccumulator configured for Atlas G4 simulation, without output"""
14 # wihout output
15 result = ComponentAccumulator()
16 from SimulationConfig.SimEnums import LArParameterization
17 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
18 # Add a dummy version of the SimKernel to the CA before adding the properly configured version
19 # Presently necessary for FastCaloSim to ensure the proper order of ISF_CollectionMerger
20 result.addEventAlgo(CompFactory.G4RunAlg(name, **kwargs))
21 kwargs.setdefault("UseShadowEvent", flags.Sim.UseShadowEvent)
22 if flags.Sim.UseShadowEvent and "TruthPreselectionTool" not in kwargs:
23 from ISF_HepMC_Tools.ISF_HepMC_ToolsConfig import TruthPreselectionToolCfg
24 kwargs.setdefault( "TruthPreselectionTool", result.popToolsAndMerge(TruthPreselectionToolCfg(flags)) )
25
26 kwargs.setdefault("InputTruthCollection", "BeamTruthEvent") #tocheck -are these string inputs?
27 kwargs.setdefault("OutputTruthCollection", "TruthEvent")
28
29
30
31 kwargs.setdefault("ReleaseGeoModel", flags.Sim.ReleaseGeoModel)
32
33 from G4AtlasTools.G4AtlasToolsConfig import SimHitContainerListCfg, InputContainerListCfg
34 kwargs.setdefault("ExtraOutputs", SimHitContainerListCfg(flags) )
35 kwargs.setdefault("ExtraInputs" , InputContainerListCfg(flags))
36
37 from SimulationConfig.SimEnums import LArParameterization
38 # Configure fast simulation
39 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
40 # Set the path to the simplified calorimeter geometry for particle transport if provided
41 if flags.Sim.SimplifiedGeoPath:
42 kwargs.setdefault('SimplifiedGeoPath', flags.Sim.SimplifiedGeoPath)
43
44 # Set the path to the simplified calorimeter geometry for particle transport if provided
45 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim and flags.Sim.SimplifiedGeoPath:
46 kwargs.setdefault("SimplifiedGeoPath", flags.Sim.SimplifiedGeoPath)
47
48 if flags.Sim.FlagAbortedEvents:
49
50 kwargs.setdefault("FlagAbortedEvents", flags.Sim.FlagAbortedEvents)
51 if flags.Sim.FlagAbortedEvents and flags.Sim.KillAbortedEvents:
52 print("WARNING When G4RunAlg.FlagAbortedEvents is True G4RunAlg.KillAbortedEvents should be False. Setting G4RunAlg.KillAbortedEvents = False now.")
53 kwargs.setdefault("KillAbortedEvents", False)
54
55
56 kwargs.setdefault("KillAbortedEvents", flags.Sim.KillAbortedEvents)
57
58 from RngComps.RngCompsConfig import AthRNGSvcCfg
59 kwargs.setdefault("AtRndmGenSvc",
60 result.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
61
62 # Multi-threading settinggs
63 is_hive = flags.Concurrency.NumThreads > 0
64 if is_hive:
65 # not needed with G4 event loop
66 # result.merge(G4ThreadPoolSvcCfg(flags))
67 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
68
69 kwargs.setdefault("TruthRecordService", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
70 kwargs.setdefault("GeoIDSvc", result.getPrimaryAndMerge(GeoIDSvcCfg(flags)))
71
72 #input converter
73 kwargs.setdefault("InputConverter", result.getPrimaryAndMerge(InputConverterCfg(flags)))
74 if flags.Sim.ISF.Simulator.isQuasiStable():
75 from BeamEffects.BeamEffectsAlgConfig import ZeroLifetimePositionerCfg
76 kwargs.setdefault("QuasiStablePatcher", result.getPrimaryAndMerge(ZeroLifetimePositionerCfg(flags)) )
77
78 #User action services (Slow...)
79 kwargs.setdefault("UserActionSvc", result.getPrimaryAndMerge(UserActionSvcCfg(flags)))
80
81 #sensitive detector master tool
82 kwargs.setdefault("SenDetMasterTool", result.addPublicTool(result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(flags))))
83
84 #fast simulation master tool
85 kwargs.setdefault("FastSimMasterTool", result.addPublicTool(result.popToolsAndMerge(FastSimulationMasterToolCfg(flags))))
86
87 #Write MetaData container and make it available to the job
88 result.merge(writeSimulationParametersMetadata(flags))
89 result.merge(readSimulationParameters(flags)) # for FileMetaData creation
90
91 # Configure G4RunTool with all the services that were moved from G4RunAlg
92 kwargs.setdefault("G4RunTool", result.addPublicTool(result.popToolsAndMerge(G4RunToolCfg(flags))))
93
94 result.addEventAlgo(CompFactory.G4RunAlg(name, **kwargs))
95
96 return result
void print(char *figname, TCanvas *c1)
G4RunAlgCfg(flags, name="G4RunAlg", **kwargs)