ATLAS Offline Software
ISF_Geant4ServicesConfig.py
Go to the documentation of this file.
1 """Geant4 services config for ISF with ComponentAccumulator
2 
3 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 """
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.Enums import LHCPeriod
8 from ISF_Geant4Tools.ISF_Geant4ToolsConfig import (
9  Geant4ToolCfg, FullGeant4ToolCfg, PassBackGeant4ToolCfg,
10  ATLFAST_Geant4ToolCfg
11 )
12 
13 
14 def 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 
32 def 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 
41 def 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 
50 def 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
ISF_Geant4ServicesConfig.FullGeant4SimCfg
def FullGeant4SimCfg(flags, name="ISF_FullGeant4SimSvc", **kwargs)
Definition: ISF_Geant4ServicesConfig.py:32
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.ISF_Geant4ToolsConfig.FullGeant4ToolCfg
def FullGeant4ToolCfg(flags, name="ISF_FullGeant4Tool", **kwargs)
Definition: ISF_Geant4ToolsConfig.py:68
ISF_Geant4ServicesConfig.Geant4SimCfg
def Geant4SimCfg(flags, name="ISFG4SimSvc", **kwargs)
Definition: ISF_Geant4ServicesConfig.py:14
python.ISF_Geant4ToolsConfig.Geant4ToolCfg
def Geant4ToolCfg(flags, name="ISF_Geant4Tool", **kwargs)
Definition: ISF_Geant4ToolsConfig.py:29
python.ISF_Geant4ToolsConfig.ATLFAST_Geant4ToolCfg
def ATLFAST_Geant4ToolCfg(flags, name="ISF_ATLFAST_Geant4Tool", **kwargs)
Definition: ISF_Geant4ToolsConfig.py:84
python.ISF_Geant4ToolsConfig.PassBackGeant4ToolCfg
def PassBackGeant4ToolCfg(flags, name="ISF_PassBackGeant4Tool", **kwargs)
Definition: ISF_Geant4ToolsConfig.py:76
ISF_Geant4ServicesConfig.ATLFAST_Geant4SimCfg
def ATLFAST_Geant4SimCfg(flags, name="ISF_ATLFAST_Geant4SimSvc", **kwargs)
Definition: ISF_Geant4ServicesConfig.py:50
ISF_Geant4ServicesConfig.PassBackGeant4SimCfg
def PassBackGeant4SimCfg(flags, name="ISF_PassBackGeant4SimSvc", **kwargs)
Definition: ISF_Geant4ServicesConfig.py:41