12def G4RunAlgCfg(flags, name="G4RunAlg", **kwargs):
13 """Return ComponentAccumulator configured for Atlas G4 simulation, without output"""
14
15 result = ComponentAccumulator()
16 from SimulationConfig.SimEnums import LArParameterization
17 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
18
19
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")
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
39 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
40
41 if flags.Sim.SimplifiedGeoPath:
42 kwargs.setdefault('SimplifiedGeoPath', flags.Sim.SimplifiedGeoPath)
43
44
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
63 is_hive = flags.Concurrency.NumThreads > 0
64 if is_hive:
65
66
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
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
79 kwargs.setdefault("UserActionSvc", result.getPrimaryAndMerge(UserActionSvcCfg(flags)))
80
81
82 kwargs.setdefault("SenDetMasterTool", result.addPublicTool(result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(flags))))
83
84
85 kwargs.setdefault("FastSimMasterTool", result.addPublicTool(result.popToolsAndMerge(FastSimulationMasterToolCfg(flags))))
86
87
88 result.merge(writeSimulationParametersMetadata(flags))
89 result.merge(readSimulationParameters(flags))
90
91
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)