ATLAS Offline Software
Loading...
Searching...
No Matches
ISF_Geant4ServicesConfig.py
Go to the documentation of this file.
1"""Geant4 services config for ISF with ComponentAccumulator
2
3Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import LHCPeriod
8from ISF_Geant4Tools.ISF_Geant4ToolsConfig import (
9 Geant4ToolCfg, FullGeant4ToolCfg, PassBackGeant4ToolCfg,
10 ATLFAST_Geant4ToolCfg
11)
12
13
14def Geant4SimCfg(flags, name="ISFG4SimSvc", **kwargs):
15 result = ComponentAccumulator()
16
17 G4_DDDBEnvelopeDefSvc = CompFactory.DetDescrDBEnvelopeSvc("G4EnvelopeDefSvc")
18 G4_DDDBEnvelopeDefSvc.DBBeamPipeNode = "BPipeEnvelopeG4"
19 G4_DDDBEnvelopeDefSvc.DBInDetNode = "InDetEnvelopeG4" if flags.GeoModel.Run < LHCPeriod.Run4 else "ITkEnvelopeG4"
20 G4_DDDBEnvelopeDefSvc.DBCaloNode = "CaloEnvelopeG4"
21 G4_DDDBEnvelopeDefSvc.DBMSNode = "MuonEnvelopeG4"
22 G4_DDDBEnvelopeDefSvc.DBCavernNode = "CavernEnvelopeG4"
23 result.addService(G4_DDDBEnvelopeDefSvc)
24
25 if "SimulatorTool" not in kwargs:
26 kwargs.setdefault("SimulatorTool", result.addPublicTool(result.popToolsAndMerge(Geant4ToolCfg(flags))))
27 kwargs.setdefault("Identifier", "Geant4")
28 result.addService(CompFactory.iGeant4.Geant4SimSvc(name, **kwargs), primary = True)
29 return result
30
31
32def FullGeant4SimCfg(flags, name="ISF_FullGeant4SimSvc", **kwargs):
33 result = ComponentAccumulator()
34 if "SimulatorTool" not in kwargs:
35 kwargs.setdefault("SimulatorTool", result.addPublicTool(result.popToolsAndMerge(FullGeant4ToolCfg(flags))))
36 svc = result.getPrimaryAndMerge(Geant4SimCfg(flags, name, **kwargs))
37 result.addService(svc, primary = True)
38 return result
39
40
41def PassBackGeant4SimCfg(flags, name="ISF_PassBackGeant4SimSvc", **kwargs):
42 result = ComponentAccumulator()
43 if "SimulatorTool" not in kwargs:
44 kwargs.setdefault("SimulatorTool", result.addPublicTool(result.popToolsAndMerge(PassBackGeant4ToolCfg(flags))))
45 svc = result.getPrimaryAndMerge(Geant4SimCfg(flags, name, **kwargs))
46 result.addService(svc, primary = True)
47 return result
48
49
50def ATLFAST_Geant4SimCfg(flags, name="ISF_ATLFAST_Geant4SimSvc", **kwargs):
51 result = ComponentAccumulator()
52 kwargs.setdefault("SimulatorTool", result.addPublicTool(result.popToolsAndMerge(ATLFAST_Geant4ToolCfg(flags))))
53 svc = result.getPrimaryAndMerge(PassBackGeant4SimCfg(flags, name, **kwargs))
54 result.addService(svc, primary = True)
55 return result
Geant4SimCfg(flags, name="ISFG4SimSvc", **kwargs)
ATLFAST_Geant4SimCfg(flags, name="ISF_ATLFAST_Geant4SimSvc", **kwargs)
FullGeant4SimCfg(flags, name="ISF_FullGeant4SimSvc", **kwargs)
PassBackGeant4SimCfg(flags, name="ISF_PassBackGeant4SimSvc", **kwargs)