ATLAS Offline Software
G4UserActionsConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from SimulationConfig.SimEnums import CalibrationRun
6 
7 # this is a bit cumbersome, but it seems ike it is a lot easier to separate
8 # the getter functionality from all the rest (i.e. adding the action).
9 # This way, e.g., after the getter is called the tool is automatically added
10 # to the ToolSvc and can be assigned to a ToolHandle by the add function.
11 # Also, passing arguments to the getter (like "this is a system action") is not straightforward
12 
13 def AthenaStackingActionToolCfg(flags, name='G4UA::AthenaStackingActionTool', **kwargs):
14 
15  result = ComponentAccumulator()
16 
17  if "ATLAS" in flags.GeoModel.AtlasVersion:
18  kwargs.setdefault('KillAllNeutrinos', True)
19 
20  if flags.Sim.NRRThreshold and flags.Sim.NRRWeight:
21  if flags.Sim.CalibrationRun is not CalibrationRun.Off:
22  raise NotImplementedError("Neutron Russian Roulette should not be used in Calibration Runs.")
23  kwargs.setdefault('ApplyNRR', True)
24  kwargs.setdefault('NRRThreshold', flags.Sim.NRRThreshold)
25  kwargs.setdefault('NRRWeight', flags.Sim.NRRWeight)
26 
27  if flags.Sim.PRRThreshold and flags.Sim.PRRWeight:
28  if flags.Sim.CalibrationRun is not CalibrationRun.Off:
29  raise NotImplementedError("Photon Russian Roulette should not be used in Calibration Runs.")
30  kwargs.setdefault('ApplyPRR', True)
31  kwargs.setdefault('PRRThreshold', flags.Sim.PRRThreshold)
32  kwargs.setdefault('PRRWeight', flags.Sim.PRRWeight)
33  kwargs.setdefault('IsISFJob', flags.Sim.ISFRun)
34 
35  result.setPrivateTools( CompFactory.G4UA.AthenaStackingActionTool(name,**kwargs) )
36  return result
37 
38 
39 def AthenaTrackingActionToolCfg(flags, name='G4UA::AthenaTrackingActionTool', **kwargs):
40  result = ComponentAccumulator()
41  kwargs.setdefault('SecondarySavingLevel', 2)
42 
43  subDetLevel=1
44  if "ATLAS" in flags.GeoModel.AtlasVersion and flags.Detector.GeometryCavern:
45  subDetLevel=2
46 
47  kwargs.setdefault('SubDetVolumeLevel', subDetLevel)
48  result.setPrivateTools( CompFactory.G4UA.AthenaTrackingActionTool(name,**kwargs) )
49  return result
50 
51 
52 def LooperKillerToolCfg(flags, name='G4UA::LooperKillerTool', **kwargs):
53  result = ComponentAccumulator()
54  result.setPrivateTools(CompFactory.G4UA.LooperKillerTool(name, **kwargs))
55  return result
56 
57 
58 def MonopoleLooperKillerToolCfg(flags, name="G4UA::MonopoleLooperKillerTool", **kwargs):
59  kwargs.setdefault("MaxSteps", 2000000)
60  kwargs.setdefault("PrintSteps", 2)
61  kwargs.setdefault("VerboseLevel", 0)
62  kwargs.setdefault("BSM_Only", True)
63  return LooperKillerToolCfg(flags, name, **kwargs)
64 
65 
66 def G4SimTimerToolCfg(flags, name='G4UA::G4SimTimerTool', **kwargs):
67  result = ComponentAccumulator()
68  result.setPrivateTools(CompFactory.G4UA.G4SimTimerTool(name,**kwargs))
69  return result
70 
71 
72 def G4TrackCounterToolCfg(flags, name='G4UA::G4TrackCounterTool', **kwargs):
73  result = ComponentAccumulator()
74  result.setPrivateTools(CompFactory.G4UA.G4TrackCounterTool(name,**kwargs))
75  return result
76 
77 
78 def StoppedParticleActionToolCfg(flags, name="G4UA::StoppedParticleActionTool", **kwargs):
79  # Just have to set the stopping condition
80  result = ComponentAccumulator()
81  # TODO UserActionConfig not yet migrated
82  # example custom configuration
83  # if name in flags.Sim.UserActionConfig.keys():
84  # for prop,value in flags.Sim.UserActionConfig[name].iteritems():
85  # kwargs.setdefault(prop,value)
86  result.setPrivateTools(CompFactory.G4UA.StoppedParticleActionTool(name, **kwargs))
87  return result
88 
89 
90 def FixG4CreatorProcessToolCfg(flags, name="G4UA::FixG4CreatorProcessTool", **kwargs):
91  result = ComponentAccumulator()
92  result.setPrivateTools(CompFactory.G4UA.FixG4CreatorProcessTool(name, **kwargs))
93  return result
94 
95 
96 def HitWrapperToolCfg(flags, name="G4UA::HitWrapperTool", **kwargs):
97  result = ComponentAccumulator()
98  # TODO UserActionConfig flag not yet migrated
99  # example custom configuration
100  # if name in flags.Sim.UserActionConfig.keys():
101  # for prop,value in flags.Sim.UserActionConfig[name].iteritems():
102  # kwargs.setdefault(prop,value)
103  result.setPrivateTools(CompFactory.G4UA.HitWrapperTool(name, **kwargs))
104  return result
105 
106 
107 def LengthIntegratorToolCfg(flags, name="G4UA::UserActionSvc.LengthIntegratorTool", **kwargs):
108  THistSvc= CompFactory.THistSvc
109  result = ComponentAccumulator()
110  histsvc = THistSvc(name="THistSvc")
111  histsvc.Output = ["lengths DATAFILE='LengthIntegrator.root' OPT='RECREATE'"]
112  result.addService(histsvc)
113  kwargs.setdefault("HistoSvc", "THistSvc")
114  result.setPrivateTools(CompFactory.G4UA.LengthIntegratorTool(name, **kwargs))
115  return result
116 
117 def RadiationMapsMakerToolCfg(flags, name="G4UA::UserActionSvc.RadiationMapsMakerTool", **kwargs):
118  result = ComponentAccumulator()
119  kwargs.setdefault("ActivationFileName","Activations.txt")
120  kwargs.setdefault("NBinsDPhi",1)
121  kwargs.setdefault("NBinsTheta",1)
122  kwargs.setdefault("NBinsR3D",120)
123  kwargs.setdefault("NBinsZ3D",240)
124  kwargs.setdefault("NBinsPhi3D",28)
125  kwargs.setdefault("NBinsLogTimeCut",26)
126  kwargs.setdefault("PhiMinZoom",0.0)
127  kwargs.setdefault("PhiMaxZoom",22.5)
128  kwargs.setdefault("LogTMin",-3.0)
129  kwargs.setdefault("LogTMax",10.0)
130  kwargs.setdefault("ElemZMin",1)
131  kwargs.setdefault("ElemZMax",1)
132  result.setPrivateTools(CompFactory.G4UA.RadiationMapsMakerTool(name, **kwargs))
133  return result
134 
135 
136 def HIPKillerToolCfg(flags, name="G4UA::HIPKillerTool", **kwargs):
137  result = ComponentAccumulator()
138  result.setPrivateTools(CompFactory.G4UA.HIPKillerTool(name, **kwargs))
139  return result
140 
141 
142 def FastIDKillerToolCfg(flags, name="G4UA::FastIDKillerTool", **kwargs):
143  """
144  isDalek = True : kill all particles with kinetic energy below
145  'energyCut' leaving the ID envelope (R,Z).
146 
147  isDalek = False : kill all particles leaving the ID envelope
148  (R,Z), except e+-/gamma with total energy >= 'energyCut'
149  """
150  result = ComponentAccumulator()
151  # FIXME UserActionConfig not yet migrated
152  # example custom configuration
153  # if name in flags.Sim.UserActionConfig.keys():
154  # for prop,value in flags.Sim.UserActionConfig[name].iteritems():
155  # kwargs.setdefault(prop,value)
156  from AthenaCommon.SystemOfUnits import MeV, mm
157  kwargs.setdefault("energyCut", 100.*MeV) # Energy cut in MeV
158  kwargs.setdefault("isDalek", False)
159  kwargs.setdefault("R", 1150.*mm) # ID outer radius
160  kwargs.setdefault("Z", 3490.*mm) # ID maximum Z coordiate
161  result.setPrivateTools(CompFactory.G4UA.FastIDKillerTool(name, **kwargs))
162  return result
python.G4UserActionsConfig.HIPKillerToolCfg
def HIPKillerToolCfg(flags, name="G4UA::HIPKillerTool", **kwargs)
Definition: G4UserActionsConfig.py:136
SystemOfUnits
python.G4UserActionsConfig.AthenaStackingActionToolCfg
def AthenaStackingActionToolCfg(flags, name='G4UA::AthenaStackingActionTool', **kwargs)
Definition: G4UserActionsConfig.py:13
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.G4UserActionsConfig.StoppedParticleActionToolCfg
def StoppedParticleActionToolCfg(flags, name="G4UA::StoppedParticleActionTool", **kwargs)
Definition: G4UserActionsConfig.py:78
python.G4UserActionsConfig.LengthIntegratorToolCfg
def LengthIntegratorToolCfg(flags, name="G4UA::UserActionSvc.LengthIntegratorTool", **kwargs)
Definition: G4UserActionsConfig.py:107
python.G4UserActionsConfig.AthenaTrackingActionToolCfg
def AthenaTrackingActionToolCfg(flags, name='G4UA::AthenaTrackingActionTool', **kwargs)
Definition: G4UserActionsConfig.py:39
python.G4UserActionsConfig.FixG4CreatorProcessToolCfg
def FixG4CreatorProcessToolCfg(flags, name="G4UA::FixG4CreatorProcessTool", **kwargs)
Definition: G4UserActionsConfig.py:90
python.G4UserActionsConfig.MonopoleLooperKillerToolCfg
def MonopoleLooperKillerToolCfg(flags, name="G4UA::MonopoleLooperKillerTool", **kwargs)
Definition: G4UserActionsConfig.py:58
python.G4UserActionsConfig.HitWrapperToolCfg
def HitWrapperToolCfg(flags, name="G4UA::HitWrapperTool", **kwargs)
Definition: G4UserActionsConfig.py:96
Lb2Lll.THistSvc
THistSvc
Definition: Lb2Lll.py:216
python.G4UserActionsConfig.G4TrackCounterToolCfg
def G4TrackCounterToolCfg(flags, name='G4UA::G4TrackCounterTool', **kwargs)
Definition: G4UserActionsConfig.py:72
python.G4UserActionsConfig.RadiationMapsMakerToolCfg
def RadiationMapsMakerToolCfg(flags, name="G4UA::UserActionSvc.RadiationMapsMakerTool", **kwargs)
Definition: G4UserActionsConfig.py:117
python.G4UserActionsConfig.LooperKillerToolCfg
def LooperKillerToolCfg(flags, name='G4UA::LooperKillerTool', **kwargs)
Definition: G4UserActionsConfig.py:52
python.G4UserActionsConfig.FastIDKillerToolCfg
def FastIDKillerToolCfg(flags, name="G4UA::FastIDKillerTool", **kwargs)
Definition: G4UserActionsConfig.py:142
python.G4UserActionsConfig.G4SimTimerToolCfg
def G4SimTimerToolCfg(flags, name='G4UA::G4SimTimerTool', **kwargs)
Definition: G4UserActionsConfig.py:66