ATLAS Offline Software
Loading...
Searching...
No Matches
G4UserActionsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from 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
13def 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
39def 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
52def LooperKillerToolCfg(flags, name='G4UA::LooperKillerTool', **kwargs):
53 result = ComponentAccumulator()
54 result.setPrivateTools(CompFactory.G4UA.LooperKillerTool(name, **kwargs))
55 return result
56
57
58def 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
66def G4SimTimerToolCfg(flags, name='G4UA::G4SimTimerTool', **kwargs):
67 result = ComponentAccumulator()
68 result.setPrivateTools(CompFactory.G4UA.G4SimTimerTool(name,**kwargs))
69 return result
70
71
72def G4TrackCounterToolCfg(flags, name='G4UA::G4TrackCounterTool', **kwargs):
73 result = ComponentAccumulator()
74 result.setPrivateTools(CompFactory.G4UA.G4TrackCounterTool(name,**kwargs))
75 return result
76
77
78def 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
90def FixG4CreatorProcessToolCfg(flags, name="G4UA::FixG4CreatorProcessTool", **kwargs):
91 result = ComponentAccumulator()
92 result.setPrivateTools(CompFactory.G4UA.FixG4CreatorProcessTool(name, **kwargs))
93 return result
94
95
96def 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
107def 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
117def 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
136def HIPKillerToolCfg(flags, name="G4UA::HIPKillerTool", **kwargs):
137 result = ComponentAccumulator()
138 result.setPrivateTools(CompFactory.G4UA.HIPKillerTool(name, **kwargs))
139 return result
140
141
142def 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
LengthIntegratorToolCfg(flags, name="G4UA::UserActionSvc.LengthIntegratorTool", **kwargs)
FixG4CreatorProcessToolCfg(flags, name="G4UA::FixG4CreatorProcessTool", **kwargs)
RadiationMapsMakerToolCfg(flags, name="G4UA::UserActionSvc.RadiationMapsMakerTool", **kwargs)
AthenaTrackingActionToolCfg(flags, name='G4UA::AthenaTrackingActionTool', **kwargs)
AthenaStackingActionToolCfg(flags, name='G4UA::AthenaStackingActionTool', **kwargs)
LooperKillerToolCfg(flags, name='G4UA::LooperKillerTool', **kwargs)
StoppedParticleActionToolCfg(flags, name="G4UA::StoppedParticleActionTool", **kwargs)
HitWrapperToolCfg(flags, name="G4UA::HitWrapperTool", **kwargs)
MonopoleLooperKillerToolCfg(flags, name="G4UA::MonopoleLooperKillerTool", **kwargs)
G4SimTimerToolCfg(flags, name='G4UA::G4SimTimerTool', **kwargs)
HIPKillerToolCfg(flags, name="G4UA::HIPKillerTool", **kwargs)
G4TrackCounterToolCfg(flags, name='G4UA::G4TrackCounterTool', **kwargs)
FastIDKillerToolCfg(flags, name="G4UA::FastIDKillerTool", **kwargs)