11def G4RunAlgCfg(flags, name="G4RunAlg", **kwargs):
12 """Return ComponentAccumulator configured for Atlas G4 simulation, without output"""
13
14 result = ComponentAccumulator()
15 from SimulationConfig.SimEnums import LArParameterization
16 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
17
18
19 result.addEventAlgo(CompFactory.G4RunAlg(name, **kwargs))
20 kwargs.setdefault("UseShadowEvent", flags.Sim.UseShadowEvent)
21 if flags.Sim.UseShadowEvent and "TruthPreselectionTool" not in kwargs:
22 from ISF_HepMC_Tools.ISF_HepMC_ToolsConfig import TruthPreselectionToolCfg
23 kwargs.setdefault( "TruthPreselectionTool", result.popToolsAndMerge(TruthPreselectionToolCfg(flags)) )
24
25 kwargs.setdefault("InputTruthCollection", "BeamTruthEvent")
26 kwargs.setdefault("OutputTruthCollection", "TruthEvent")
27
28
29
30 kwargs.setdefault("ReleaseGeoModel", flags.Sim.ReleaseGeoModel)
31
32 from G4AtlasTools.G4AtlasToolsConfig import SimHitContainerListCfg, InputContainerListCfg
33 kwargs.setdefault("ExtraOutputs", SimHitContainerListCfg(flags) )
34 kwargs.setdefault("ExtraInputs" , InputContainerListCfg(flags))
35
36 from SimulationConfig.SimEnums import LArParameterization
37
38 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim:
39
40 if flags.Sim.SimplifiedGeoPath:
41 kwargs.setdefault('SimplifiedGeoPath', flags.Sim.SimplifiedGeoPath)
42
43
44 if flags.Sim.LArParameterization is LArParameterization.FastCaloSim and flags.Sim.SimplifiedGeoPath:
45 kwargs.setdefault("SimplifiedGeoPath", flags.Sim.SimplifiedGeoPath)
46
47 if flags.Sim.FlagAbortedEvents:
48
49 kwargs.setdefault("FlagAbortedEvents", flags.Sim.FlagAbortedEvents)
50 if flags.Sim.FlagAbortedEvents and flags.Sim.KillAbortedEvents:
51 print(
"WARNING When G4RunAlg.FlagAbortedEvents is True G4RunAlg.KillAbortedEvents should be False. Setting G4RunAlg.KillAbortedEvents = False now.")
52 kwargs.setdefault("KillAbortedEvents", False)
53
54
55 kwargs.setdefault("KillAbortedEvents", flags.Sim.KillAbortedEvents)
56
57 from RngComps.RngCompsConfig import AthRNGSvcCfg
58 kwargs.setdefault("AtRndmGenSvc",
59 result.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
60
61
62 is_hive = flags.Concurrency.NumThreads > 0
63 if is_hive:
64
65
66 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
67
68 kwargs.setdefault("TruthRecordService", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
69
70
71 kwargs.setdefault("InputConverter", result.getPrimaryAndMerge(InputConverterCfg(flags)))
72 if flags.Sim.ISF.Simulator.isQuasiStable():
73 from BeamEffects.BeamEffectsAlgConfig import ZeroLifetimePositionerCfg
74 kwargs.setdefault("QuasiStablePatcher", result.getPrimaryAndMerge(ZeroLifetimePositionerCfg(flags)) )
75
76
77 kwargs.setdefault("UserActionSvc", result.getPrimaryAndMerge(UserActionSvcCfg(flags)))
78
79
80 kwargs.setdefault("SenDetMasterTool", result.addPublicTool(result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(flags))))
81
82
83 kwargs.setdefault("FastSimMasterTool", result.addPublicTool(result.popToolsAndMerge(FastSimulationMasterToolCfg(flags))))
84
85
86 result.merge(writeSimulationParametersMetadata(flags))
87 result.merge(readSimulationParameters(flags))
88
89
90 kwargs.setdefault("G4RunTool", result.addPublicTool(result.popToolsAndMerge(G4RunToolCfg(flags))))
91
92 result.addEventAlgo(CompFactory.G4RunAlg(name, **kwargs))
93
94 return result
void print(char *figname, TCanvas *c1)