1"""Main ISF tools configuration with ComponentAccumulator
3Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
7from SimulationConfig.SimulationMetadata
import writeSimulationParametersMetadata, readSimulationParameters
8from ISF_Services.ISF_ServicesCoreConfig
import GeoIDSvcCfg
9from ISF_Services.ISF_ServicesConfig
import (
10 InputConverterCfg, TruthServiceCfg,
11 ATLFAST_ParticleBrokerSvcCfg, ParticleBrokerSvcNoOrderingCfg
13from ISF_Tools.ISF_ToolsConfig
import (
14 ParticleKillerToolCfg, EnergyParticleOrderingToolCfg,
15 ParticleOrderingToolCfg, MemoryMonitorToolCfg
17from ISF_SimulationSelectors.ISF_SimulationSelectorsConfig
import (
18 DefaultATLFAST_Geant4SelectorCfg,
19 DefaultParticleKillerSelectorCfg,
20 EtaGreater5ParticleKillerSimSelectorCfg,
21 FullGeant4SelectorCfg,
22 MuonATLFAST_Geant4SelectorCfg,
23 PassBackGeant4SelectorCfg,
24 DefaultFastCaloSimV2SelectorCfg,
25 PionATLFAST_Geant4SelectorCfg,
26 ProtonATLFAST_Geant4SelectorCfg,
27 NeutronATLFAST_Geant4SelectorCfg,
28 ChargedKaonATLFAST_Geant4SelectorCfg,
29 KLongATLFAST_Geant4SelectorCfg,
30 DefaultFatrasSelectorCfg,
31 DefaultActsSelectorCfg
33from ISF_Geant4Tools.ISF_Geant4ToolsConfig
import (
34 ATLFAST_Geant4ToolCfg,
36 PassBackGeant4ToolCfg,
38from ISF_Geant4CommonTools.ISF_Geant4CommonToolsConfig
import (
40 ATLFAST_EntryLayerToolMTCfg
42AthSequencer=CompFactory.AthSequencer
46 acc = ComponentAccumulator()
47 kwargs.setdefault(
"UseShadowEvent", flags.Sim.UseShadowEvent)
48 if flags.Sim.UseShadowEvent
and "TruthPreselectionTool" not in kwargs:
49 from ISF_HepMC_Tools.ISF_HepMC_ToolsConfig
import TruthPreselectionToolCfg
50 kwargs.setdefault(
"TruthPreselectionTool", acc.popToolsAndMerge(TruthPreselectionToolCfg(flags)))
52 if "GeoIDSvc" not in kwargs:
53 kwargs.setdefault(
"GeoIDSvc", acc.getPrimaryAndMerge(GeoIDSvcCfg(flags)))
55 if "TruthRecordService" not in kwargs:
56 kwargs.setdefault(
"TruthRecordService", acc.getPrimaryAndMerge(TruthServiceCfg(flags)))
58 if "EntryLayerTool" not in kwargs:
59 kwargs.setdefault(
"EntryLayerTool", acc.addPublicTool(acc.popToolsAndMerge(EntryLayerToolMTCfg(flags))))
61 from AthenaConfiguration.Enums
import ProductionStep
62 if flags.Common.ProductionStep == ProductionStep.FastChain:
63 if flags.Digitization.PileUp:
64 OEsvc = CompFactory.StoreGateSvc(
"OriginalEvent_SG")
66 kwargs.setdefault(
"EvtStore", OEsvc.name)
68 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
69 kwargs.setdefault(
"InputEvgenCollection",
"BeamTruthEvent")
70 kwargs.setdefault(
"OutputTruthCollection",
"TruthEvent")
71 from G4AtlasTools.G4AtlasToolsConfig
import InputContainerListCfg
72 kwargs.setdefault(
"ExtraInputs" , InputContainerListCfg(flags))
73 if flags.Sim.ISF.Simulator.isQuasiStable():
74 if "QuasiStablePatcher" not in kwargs:
75 from BeamEffects.BeamEffectsAlgConfig
import ZeroLifetimePositionerCfg
76 kwargs.setdefault(
"QuasiStablePatcher", acc.getPrimaryAndMerge(ZeroLifetimePositionerCfg(flags)))
77 if "InputConverter" not in kwargs:
78 kwargs.setdefault(
"InputConverter", acc.getPrimaryAndMerge(InputConverterCfg(flags)))
80 if flags.Sim.ISF.ReSimulation:
81 acc.addSequence(
AthSequencer(
'SimSequence'), parentName=
'AthAlgSeq')
82 acc.addEventAlgo(CompFactory.ISF.SimKernelMT(name, **kwargs),
'SimSequence')
84 acc.addEventAlgo(CompFactory.ISF.SimKernelMT(name, **kwargs))
93 acc = ComponentAccumulator()
95 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"CaloSimulationSelectors",
"MSSimulationSelectors"])
96 if flags.Detector.GeometryCavern:
98 defaultG4SelectorRegions.add(
"CavernSimulationSelectors")
99 if defaultG4SelectorRegions - kwargs.keys():
100 pubTool = acc.addPublicTool(acc.popToolsAndMerge(FullGeant4SelectorCfg(flags)))
102 for selectorRegion
in defaultG4SelectorRegions:
103 kwargs.setdefault(selectorRegion, [pubTool])
105 if "CavernSimulationSelectors" not in kwargs:
106 kwargs.setdefault(
"CavernSimulationSelectors",
107 [acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags)))])
114 acc = ComponentAccumulator()
116 if "SimulationTools" not in kwargs:
117 kwargs.setdefault(
"SimulationTools", [
118 acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
119 acc.popToolsAndMerge(FullGeant4ToolCfg(flags))
127 acc = ComponentAccumulator()
129 kwargs.setdefault(
"SimulationTools", [
130 acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
131 acc.popToolsAndMerge(FullGeant4ToolCfg(flags))
139 acc = ComponentAccumulator()
142 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"CaloSimulationSelectors",
"MSSimulationSelectors"])
143 if defaultG4SelectorRegions - kwargs.keys():
144 passBackG4Selector = acc.addPublicTool(acc.popToolsAndMerge(PassBackGeant4SelectorCfg(flags)))
145 kwargs.setdefault(
"BeamPipeSimulationSelectors", [passBackG4Selector])
146 kwargs.setdefault(
"IDSimulationSelectors", [passBackG4Selector])
147 kwargs.setdefault(
"CaloSimulationSelectors", [passBackG4Selector])
148 kwargs.setdefault(
"MSSimulationSelectors", [passBackG4Selector])
150 if "CavernSimulationSelectors" not in kwargs:
151 kwargs.setdefault(
"CavernSimulationSelectors",
152 [acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags)))])
154 if "SimulationTools" not in kwargs:
155 kwargs.setdefault(
"SimulationTools", [
156 acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
157 acc.popToolsAndMerge(PassBackGeant4ToolCfg(flags))
160 if "ParticleOrderingTool" not in kwargs:
161 kwargs.setdefault(
"ParticleOrderingTool", acc.popToolsAndMerge(EnergyParticleOrderingToolCfg(flags)))
168 acc = ComponentAccumulator()
169 kwargs.setdefault(
"ParticleOrderingTool", acc.popToolsAndMerge(ParticleOrderingToolCfg(flags)))
171 kwargs.setdefault(
"EntryLayerTool", acc.addPublicTool(acc.popToolsAndMerge(ATLFAST_EntryLayerToolMTCfg(flags))))
175 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"MSSimulationSelectors"])
176 if defaultG4SelectorRegions - kwargs.keys():
177 pubTool = acc.addPublicTool(acc.popToolsAndMerge(DefaultATLFAST_Geant4SelectorCfg(flags)))
178 kwargs.setdefault(
"BeamPipeSimulationSelectors", [pubTool])
179 kwargs.setdefault(
"IDSimulationSelectors", [pubTool])
180 kwargs.setdefault(
"MSSimulationSelectors", [pubTool])
183 kwargs.setdefault(
"CaloSimulationSelectors", [
184 acc.addPublicTool(acc.popToolsAndMerge(MuonATLFAST_Geant4SelectorCfg(flags))),
185 acc.addPublicTool(acc.popToolsAndMerge(EtaGreater5ParticleKillerSimSelectorCfg(flags))),
186 acc.addPublicTool(acc.popToolsAndMerge(PionATLFAST_Geant4SelectorCfg(flags))),
187 acc.addPublicTool(acc.popToolsAndMerge(ProtonATLFAST_Geant4SelectorCfg(flags))),
188 acc.addPublicTool(acc.popToolsAndMerge(NeutronATLFAST_Geant4SelectorCfg(flags))),
189 acc.addPublicTool(acc.popToolsAndMerge(ChargedKaonATLFAST_Geant4SelectorCfg(flags))),
190 acc.addPublicTool(acc.popToolsAndMerge(KLongATLFAST_Geant4SelectorCfg(flags))),
191 acc.addPublicTool(acc.popToolsAndMerge(DefaultFastCaloSimV2SelectorCfg(flags)))
195 kwargs.setdefault(
"CavernSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags))) ])
197 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig
import FastCaloSimV2ToolCfg
198 kwargs.setdefault(
"SimulationTools", [
199 acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
200 acc.popToolsAndMerge(FastCaloSimV2ToolCfg(flags)),
201 acc.popToolsAndMerge(ATLFAST_Geant4ToolCfg(flags))
209 acc = ComponentAccumulator()
210 kwargs.setdefault(
"ParticleOrderingTool", acc.popToolsAndMerge(ParticleOrderingToolCfg(flags)))
212 kwargs.setdefault(
"EntryLayerTool", acc.addPublicTool(acc.popToolsAndMerge(ATLFAST_EntryLayerToolMTCfg(flags))))
216 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"MSSimulationSelectors"])
217 if defaultG4SelectorRegions - kwargs.keys():
218 pubTool = acc.addPublicTool(acc.popToolsAndMerge(DefaultATLFAST_Geant4SelectorCfg(flags)))
219 kwargs.setdefault(
"BeamPipeSimulationSelectors", [pubTool])
220 kwargs.setdefault(
"IDSimulationSelectors", [pubTool])
221 kwargs.setdefault(
"MSSimulationSelectors", [pubTool])
224 kwargs.setdefault(
"CaloSimulationSelectors", [
225 acc.addPublicTool(acc.popToolsAndMerge(MuonATLFAST_Geant4SelectorCfg(flags))),
226 acc.addPublicTool(acc.popToolsAndMerge(EtaGreater5ParticleKillerSimSelectorCfg(flags))),
227 acc.addPublicTool(acc.popToolsAndMerge(PionATLFAST_Geant4SelectorCfg(flags))),
228 acc.addPublicTool(acc.popToolsAndMerge(ProtonATLFAST_Geant4SelectorCfg(flags))),
229 acc.addPublicTool(acc.popToolsAndMerge(NeutronATLFAST_Geant4SelectorCfg(flags))),
230 acc.addPublicTool(acc.popToolsAndMerge(ChargedKaonATLFAST_Geant4SelectorCfg(flags))),
231 acc.addPublicTool(acc.popToolsAndMerge(KLongATLFAST_Geant4SelectorCfg(flags))),
232 acc.addPublicTool(acc.popToolsAndMerge(DefaultFastCaloSimV2SelectorCfg(flags)))
236 kwargs.setdefault(
"CavernSimulationSelectors",
237 [ acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags))) ])
239 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig
import FastCaloSimV2ToolCfg
240 kwargs.setdefault(
"SimulationTools", [ acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
241 acc.popToolsAndMerge(FastCaloSimV2ToolCfg(flags)),
242 acc.popToolsAndMerge(ATLFAST_Geant4ToolCfg(flags)) ])
248 acc = ComponentAccumulator()
249 kwargs.setdefault(
"UseShadowEvent", flags.Sim.UseShadowEvent)
250 if flags.Sim.UseShadowEvent
and "TruthPreselectionTool" not in kwargs:
251 from ISF_HepMC_Tools.ISF_HepMC_ToolsConfig
import TruthPreselectionToolCfg
252 kwargs.setdefault(
"TruthPreselectionTool", acc.popToolsAndMerge(TruthPreselectionToolCfg(flags)) )
254 if "TruthRecordService" not in kwargs:
255 kwargs.setdefault(
"TruthRecordService", acc.getPrimaryAndMerge(TruthServiceCfg(flags)))
257 if "MemoryMonitoringTool" not in kwargs:
258 kwargs.setdefault(
"MemoryMonitoringTool", acc.addPublicTool(acc.popToolsAndMerge(MemoryMonitorToolCfg(flags))))
260 if "ParticleBroker" not in kwargs:
261 kwargs.setdefault(
"ParticleBroker", acc.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
263 if flags.Sim.ISF.Simulator.isQuasiStable():
264 if "QuasiStablePatcher" not in kwargs:
265 from BeamEffects.BeamEffectsAlgConfig
import ZeroLifetimePositionerCfg
266 kwargs.setdefault(
"QuasiStablePatcher", acc.getPrimaryAndMerge(ZeroLifetimePositionerCfg(flags)) )
267 if "InputConverter" not in kwargs:
268 kwargs.setdefault(
"InputConverter", acc.getPrimaryAndMerge(InputConverterCfg(flags)))
270 kwargs.setdefault(
"InputHardScatterCollection",
"BeamTruthEvent")
271 kwargs.setdefault(
"OutputHardScatterTruthCollection",
"TruthEvent")
272 kwargs.setdefault(
"DoCPUMonitoring", flags.Sim.ISF.DoTimeMonitoring)
273 kwargs.setdefault(
"DoMemoryMonitoring", flags.Sim.ISF.DoMemoryMonitoring)
275 if flags.Sim.ISF.ReSimulation:
276 acc.addSequence(
AthSequencer(
'SimSequence'), parentName=
'AthAlgSeq')
277 acc.addEventAlgo(CompFactory.ISF.SimKernel(name, **kwargs),
'SimSequence')
279 acc.addEventAlgo(CompFactory.ISF.SimKernel(name, **kwargs))
284 acc = ComponentAccumulator()
287 kwargs.setdefault(
"BeamPipeSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags))) ])
288 kwargs.setdefault(
"IDSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultFatrasSelectorCfg(flags))) ])
289 kwargs.setdefault(
"CaloSimulationSelectors", [
290 acc.addPublicTool(acc.popToolsAndMerge(MuonATLFAST_Geant4SelectorCfg(flags))),
291 acc.addPublicTool(acc.popToolsAndMerge(EtaGreater5ParticleKillerSimSelectorCfg(flags))),
292 acc.addPublicTool(acc.popToolsAndMerge(PionATLFAST_Geant4SelectorCfg(flags))),
293 acc.addPublicTool(acc.popToolsAndMerge(ProtonATLFAST_Geant4SelectorCfg(flags))),
294 acc.addPublicTool(acc.popToolsAndMerge(NeutronATLFAST_Geant4SelectorCfg(flags))),
295 acc.addPublicTool(acc.popToolsAndMerge(ChargedKaonATLFAST_Geant4SelectorCfg(flags))),
296 acc.addPublicTool(acc.popToolsAndMerge(KLongATLFAST_Geant4SelectorCfg(flags))),
297 acc.addPublicTool(acc.popToolsAndMerge(DefaultFastCaloSimV2SelectorCfg(flags)))
299 kwargs.setdefault(
"MSSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultATLFAST_Geant4SelectorCfg(flags))) ])
300 kwargs.setdefault(
"CavernSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags))) ])
308 acc = ComponentAccumulator()
309 kwargs.setdefault(
"ParticleOrderingTool", acc.popToolsAndMerge(ParticleOrderingToolCfg(flags)))
311 kwargs.setdefault(
"EntryLayerTool", acc.addPublicTool(acc.popToolsAndMerge(ATLFAST_EntryLayerToolMTCfg(flags))))
315 defPartKillerSelector = acc.addPublicTool(acc.popToolsAndMerge(DefaultParticleKillerSelectorCfg(flags)))
316 kwargs.setdefault(
"BeamPipeSimulationSelectors", [ defPartKillerSelector ])
318 kwargs.setdefault(
"IDSimulationSelectors", [
319 acc.addPublicTool(acc.popToolsAndMerge(DefaultActsSelectorCfg(flags))),
320 defPartKillerSelector
323 kwargs.setdefault(
"CaloSimulationSelectors", [
324 acc.addPublicTool(acc.popToolsAndMerge(MuonATLFAST_Geant4SelectorCfg(flags))),
325 acc.addPublicTool(acc.popToolsAndMerge(EtaGreater5ParticleKillerSimSelectorCfg(flags))),
326 acc.addPublicTool(acc.popToolsAndMerge(PionATLFAST_Geant4SelectorCfg(flags))),
327 acc.addPublicTool(acc.popToolsAndMerge(ProtonATLFAST_Geant4SelectorCfg(flags))),
328 acc.addPublicTool(acc.popToolsAndMerge(NeutronATLFAST_Geant4SelectorCfg(flags))),
329 acc.addPublicTool(acc.popToolsAndMerge(ChargedKaonATLFAST_Geant4SelectorCfg(flags))),
330 acc.addPublicTool(acc.popToolsAndMerge(KLongATLFAST_Geant4SelectorCfg(flags))),
331 acc.addPublicTool(acc.popToolsAndMerge(DefaultFastCaloSimV2SelectorCfg(flags)))
334 kwargs.setdefault(
"MSSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(DefaultATLFAST_Geant4SelectorCfg(flags))) ])
336 kwargs.setdefault(
"CavernSimulationSelectors", [ defPartKillerSelector ])
338 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig
import FastCaloSimV2ToolCfg
339 from ISF_ActsTools.ISF_ActsToolsConfig
import ActsFatrasSimToolCfg
340 kwargs.setdefault(
"SimulationTools", [
341 acc.popToolsAndMerge(ActsFatrasSimToolCfg(flags)),
342 acc.popToolsAndMerge(ParticleKillerToolCfg(flags)),
343 acc.popToolsAndMerge(FastCaloSimV2ToolCfg(flags)),
344 acc.popToolsAndMerge(ATLFAST_Geant4ToolCfg(flags))
352 acc = ComponentAccumulator()
353 from ISF_Tools.ISF_ToolsConfig
import CosmicEventFilterToolCfg
354 kwargs.setdefault(
"EventFilterTools" , [ acc.addPublicTool(acc.popToolsAndMerge(CosmicEventFilterToolCfg(flags))) ] )
355 kwargs.setdefault(
"ParticleBroker", acc.getPrimaryAndMerge(ParticleBrokerSvcNoOrderingCfg(flags)))
356 kwargs.setdefault(
"MaximumParticleVectorSize" , 1000000)
357 pubTool = acc.addPublicTool(acc.popToolsAndMerge(FullGeant4SelectorCfg(flags)))
358 kwargs.setdefault(
"BeamPipeSimulationSelectors" , [ pubTool ] )
359 kwargs.setdefault(
"IDSimulationSelectors" , [ pubTool ] )
360 kwargs.setdefault(
"CaloSimulationSelectors" , [ pubTool ] )
361 kwargs.setdefault(
"MSSimulationSelectors" , [ pubTool ] )
362 kwargs.setdefault(
"CavernSimulationSelectors" , [ pubTool ] )
363 kwargs.setdefault(
"DoMemoryMonitoring",
False)
369 cfg = ComponentAccumulator()
371 cfg.merge(writeSimulationParametersMetadata(flags))
373 cfg.merge(readSimulationParameters(flags))
375 from SimulationConfig.SimEnums
import SimulationFlavour
376 if flags.Sim.ISF.Simulator
is SimulationFlavour.FullG4MT:
378 elif flags.Sim.ISF.Simulator
is SimulationFlavour.FullG4MT_QS:
380 elif flags.Sim.ISF.Simulator
is SimulationFlavour.PassBackG4MT:
382 elif flags.Sim.ISF.Simulator
is SimulationFlavour.ATLFAST3MT:
384 elif flags.Sim.ISF.Simulator
is SimulationFlavour.ATLFAST3MT_QS:
386 elif flags.Sim.ISF.Simulator
is SimulationFlavour.ATLFAST3F_G4MS:
388 elif flags.Sim.ISF.Simulator
is SimulationFlavour.ATLFAST3F_ACTSMT:
390 elif flags.Sim.ISF.Simulator
is SimulationFlavour.CosmicsG4:
393 raise ValueError(
'Unknown Simulator set, bailing out')
Kernel_GenericG4OnlyMTCfg(flags, name="ISF_Kernel_GenericG4OnlyMT", **kwargs)
Kernel_FullG4MTCfg(flags, name="ISF_Kernel_FullG4MT", **kwargs)
Kernel_GenericSimulatorMTCfg(flags, name="ISF_Kernel_GenericSimulatorMT", **kwargs)
Kernel_GenericSimulatorNoG4MTCfg(flags, name="ISF_Kernel_GenericSimulatorNoG4MT", **kwargs)
Kernel_ATLFAST3MTCfg(flags, name="ISF_Kernel_ATLFAST3MT", **kwargs)
Kernel_ATLFAST3F_ACTSMTCfg(flags, name="ISF_Kernel_ATLFAST3F_ACTSMT", **kwargs)
Kernel_ATLFAST3F_G4MSCfg(flags, name="ISF_Kernel_ATLFAST3F_G4MS", **kwargs)
Kernel_GenericSimulatorCfg(flags, name="ISF_Kernel_GenericSimulator", **kwargs)
Kernel_CosmicsG4Cfg(flags, name="ISF_Kernel_CosmicsG4", **kwargs)
Kernel_PassBackG4MTCfg(flags, name="ISF_Kernel_PassBackG4MT", **kwargs)
Kernel_ATLFAST3MT_QSCfg(flags, name="ISF_Kernel_ATLFAST3MT_QS", **kwargs)
Kernel_FullG4MT_QSCfg(flags, name="ISF_Kernel_FullG4MT_QS", **kwargs)