ATLAS Offline Software
G4AtlasServicesConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentFactory import CompFactory
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
5 
6 from ExtraParticles.ExtraParticlesConfig import ExtraParticlesPhysicsToolCfg
7 from SimulationConfig.SimEnums import CavernBackground
8 from G4ExtraProcesses.G4ExtraProcessesConfig import G4EMProcessesPhysicsToolCfg
9 from G4StepLimitation.G4StepLimitationConfig import G4StepLimitationToolCfg
10 from TRT_TR_Process.TRT_TR_ProcessConfig import TRTPhysicsToolCfg
11 
12 
13 @AccumulatorCache
14 def PhysicsListSvcCfg(flags, name="PhysicsListSvc", **kwargs):
15  result = ComponentAccumulator()
16  PhysOptionList = [ result.popToolsAndMerge(G4StepLimitationToolCfg(flags)) ]
17  if flags.Sim.ISF.Simulator.isQuasiStable():
18  #Quasi stable particle simulation
19  PhysOptionList += [ result.popToolsAndMerge(ExtraParticlesPhysicsToolCfg(flags)) ] # FIXME more configuration required in this method
20  PhysOptionList += [ result.popToolsAndMerge(G4EMProcessesPhysicsToolCfg(flags)) ]
21  #PhysOptionList += flags.Sim.PhysicsOptions # FIXME Missing functionality
22  if flags.Detector.GeometryTRT:
23  PhysOptionList +=[ result.popToolsAndMerge(TRTPhysicsToolCfg(flags)) ]
24  if flags.Detector.GeometryLucid or flags.Detector.GeometryAFP or flags.Detector.GeometryZDC:
25  from LUCID_OpProcess.LUCID_OpProcessConfig import LucidPhysicsToolCfg
26  PhysOptionList +=[result.popToolsAndMerge(LucidPhysicsToolCfg(flags))]
27  kwargs.setdefault("PhysOption", PhysOptionList)
28  PhysDecaysList = []
29  kwargs.setdefault("PhysicsDecay", PhysDecaysList)
30  kwargs.setdefault("PhysicsList", flags.Sim.PhysicsList)
31  if 'PhysicsList' in kwargs:
32  if kwargs['PhysicsList'].endswith('_EMV') or kwargs['PhysicsList'].endswith('_EMX'):
33  raise RuntimeError( 'PhysicsList not allowed: '+kwargs['PhysicsList'] )
34 
35  kwargs.setdefault("GeneralCut", 1.)
36  if flags.Sim.CavernBackground not in [CavernBackground.Read, CavernBackground.Write]:
37  kwargs.setdefault("NeutronTimeCut", flags.Sim.NeutronTimeCut)
38  kwargs.setdefault("NeutronEnergyCut", flags.Sim.NeutronEnergyCut)
39  kwargs.setdefault("ApplyEMCuts", flags.Sim.ApplyEMCuts)
40  kwargs.setdefault("QuietMode", flags.Exec.QuietMode)
41 
44  """ --- ATLASSIM-3967 ---
45  these two options are replaced by SetNumberOfBinsPerDecade
46  which now controls both values.
47  """
48 
50  if flags.Sim.ISF.Simulator.usesFatras():
51  kwargs.setdefault("UnstableAntiNeutrons", True) # Fix for ATLASSIM-6634 - consider fixing for FullG4 also
52  result.addService(CompFactory.PhysicsListSvc(name, **kwargs), primary = True)
53  return result
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
G4ExtraProcessesConfig.G4EMProcessesPhysicsToolCfg
def G4EMProcessesPhysicsToolCfg(flags, name="G4EMProcessesPhysicsTool", **kwargs)
Definition: G4ExtraProcessesConfig.py:6
ExtraParticlesConfig.ExtraParticlesPhysicsToolCfg
def ExtraParticlesPhysicsToolCfg(flags, name="ExtraParticlesPhysicsTool", **kwargs)
Definition: ExtraParticlesConfig.py:9
G4AtlasServicesConfig.PhysicsListSvcCfg
def PhysicsListSvcCfg(flags, name="PhysicsListSvc", **kwargs)
Definition: G4AtlasServicesConfig.py:14
TRT_TR_ProcessConfig.TRTPhysicsToolCfg
def TRTPhysicsToolCfg(flags, name="TRTPhysicsTool", **kwargs)
Definition: TRT_TR_ProcessConfig.py:6
LUCID_OpProcessConfig.LucidPhysicsToolCfg
def LucidPhysicsToolCfg(flags, name="LucidPhysicsTool", **kwargs)
Definition: LUCID_OpProcessConfig.py:5
G4StepLimitationConfig.G4StepLimitationToolCfg
def G4StepLimitationToolCfg(flags, name="G4StepLimitationTool", **kwargs)
Definition: G4StepLimitationConfig.py:6