1 """Main ISF tools configuration with ComponentAccumulator
3 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from SimulationConfig.SimulationMetadata
import writeSimulationParametersMetadata, readSimulationParameters
8 from ISF_Services.ISF_ServicesCoreConfig
import GeoIDSvcCfg
9 from ISF_Services.ISF_ServicesConfig
import (
10 InputConverterCfg, TruthServiceCfg,
11 ATLFAST_ParticleBrokerSvcCfg, ParticleBrokerSvcNoOrderingCfg
13 from ISF_Tools.ISF_ToolsConfig
import (
14 ParticleKillerToolCfg, EnergyParticleOrderingToolCfg,
15 ParticleOrderingToolCfg, MemoryMonitorToolCfg
17 from 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
33 from ISF_Geant4Tools.ISF_Geant4ToolsConfig
import (
34 ATLFAST_Geant4ToolCfg,
36 PassBackGeant4ToolCfg,
38 from ISF_Geant4CommonTools.ISF_Geant4CommonToolsConfig
import (
40 ATLFAST_EntryLayerToolMTCfg
42 AthSequencer=CompFactory.AthSequencer
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
52 if "GeoIDSvc" not in kwargs:
53 kwargs.setdefault(
"GeoIDSvc", acc.getPrimaryAndMerge(
GeoIDSvcCfg(flags)).name)
55 if "TruthRecordService" not in kwargs:
56 kwargs.setdefault(
"TruthRecordService", acc.getPrimaryAndMerge(
TruthServiceCfg(flags)).name)
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
73 if flags.Sim.ISF.Simulator.isQuasiStable():
74 if "QuasiStablePatcher" not in kwargs:
75 from BeamEffects.BeamEffectsAlgConfig
import ZeroLifetimePositionerCfg
77 if "InputConverter" not in kwargs:
78 kwargs.setdefault(
"InputConverter", acc.getPrimaryAndMerge(
InputConverterCfg(flags)).name)
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))
95 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"CaloSimulationSelectors",
"MSSimulationSelectors"])
96 if flags.Detector.GeometryCavern:
98 defaultG4SelectorRegions.add(
"CavernSimulationSelectors")
99 if defaultG4SelectorRegions - kwargs.keys():
102 for selectorRegion
in defaultG4SelectorRegions:
103 kwargs.setdefault(selectorRegion, [pubTool])
105 if "CavernSimulationSelectors" not in kwargs:
106 kwargs.setdefault(
"CavernSimulationSelectors",
116 if "SimulationTools" not in kwargs:
117 kwargs.setdefault(
"SimulationTools", [
129 kwargs.setdefault(
"SimulationTools", [
142 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"CaloSimulationSelectors",
"MSSimulationSelectors"])
143 if defaultG4SelectorRegions - kwargs.keys():
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",
154 if "SimulationTools" not in kwargs:
155 kwargs.setdefault(
"SimulationTools", [
160 if "ParticleOrderingTool" not in kwargs:
175 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"MSSimulationSelectors"])
176 if defaultG4SelectorRegions - kwargs.keys():
178 kwargs.setdefault(
"BeamPipeSimulationSelectors", [pubTool])
179 kwargs.setdefault(
"IDSimulationSelectors", [pubTool])
180 kwargs.setdefault(
"MSSimulationSelectors", [pubTool])
183 kwargs.setdefault(
"CaloSimulationSelectors", [
197 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig
import FastCaloSimV2ToolCfg
198 kwargs.setdefault(
"SimulationTools", [
216 defaultG4SelectorRegions =
set([
"BeamPipeSimulationSelectors",
"IDSimulationSelectors",
"MSSimulationSelectors"])
217 if defaultG4SelectorRegions - kwargs.keys():
219 kwargs.setdefault(
"BeamPipeSimulationSelectors", [pubTool])
220 kwargs.setdefault(
"IDSimulationSelectors", [pubTool])
221 kwargs.setdefault(
"MSSimulationSelectors", [pubTool])
224 kwargs.setdefault(
"CaloSimulationSelectors", [
236 kwargs.setdefault(
"CavernSimulationSelectors",
239 from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfig
import FastCaloSimV2ToolCfg
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
254 if "TruthRecordService" not in kwargs:
255 kwargs.setdefault(
"TruthRecordService", acc.getPrimaryAndMerge(
TruthServiceCfg(flags)).name)
257 if "MemoryMonitoringTool" not in kwargs:
258 kwargs.setdefault(
"MemoryMonitoringTool", acc.addPublicTool(acc.popToolsAndMerge(
MemoryMonitorToolCfg(flags))))
260 if "ParticleBroker" not in kwargs:
263 if flags.Sim.ISF.Simulator.isQuasiStable():
264 if "QuasiStablePatcher" not in kwargs:
265 from BeamEffects.BeamEffectsAlgConfig
import ZeroLifetimePositionerCfg
267 if "InputConverter" not in kwargs:
268 kwargs.setdefault(
"InputConverter", acc.getPrimaryAndMerge(
InputConverterCfg(flags)).name)
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))
288 kwargs.setdefault(
"IDSimulationSelectors", [ acc.addPublicTool(acc.popToolsAndMerge(
DefaultFatrasSelectorCfg(flags))) ])
289 kwargs.setdefault(
"CaloSimulationSelectors", [
316 kwargs.setdefault(
"BeamPipeSimulationSelectors", [ defPartKillerSelector ])
318 kwargs.setdefault(
"IDSimulationSelectors", [
320 defPartKillerSelector
323 kwargs.setdefault(
"CaloSimulationSelectors", [
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", [
353 from ISF_Tools.ISF_ToolsConfig
import CosmicEventFilterToolCfg
354 kwargs.setdefault(
"EventFilterTools" , [ acc.addPublicTool(acc.popToolsAndMerge(
CosmicEventFilterToolCfg(flags))) ] )
356 kwargs.setdefault(
"MaximumParticleVectorSize" , 1000000)
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)
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')