ATLAS Offline Software
Loading...
Searching...
No Matches
G4AtlasUserActionConfig Namespace Reference

Functions

 OptionalUserActionCfg (flags)
 getOptionalUACfg (flags, userActionString)
 FullG4TrackProcessorUserActionToolCfg (flags, name="FullG4TrackProcessorUserActionTool", **kwargs)
 PhysicsValidationUserActionToolCfg (flags, name="ISFG4PhysicsValidationUserActionTool", **kwargs)
 MCTruthUserActionToolCfg (flags, name="ISFMCTruthUserActionTool", **kwargs)
 TrackProcessorUserActionToolCfg (flags, name="ISFG4TrackProcessorUserActionTool", **kwargs)
 PassBackG4TrackProcessorUserActionToolCfg (flags, name="PassBackG4TrackProcessorUserActionTool", **kwargs)
 ATLFAST_G4TrackProcessorUserActionToolCfg (flags, name="ATLFAST_G4TrackProcessorUserActionTool", **kwargs)
 getDefaultActions (flags)
 UserActionSvcCfg (flags, name="G4UA::UserActionSvc", **kwargs)
 CTBUserActionSvcCfg (flags, name="G4UA::CTBUserActionSvc", **kwargs)
 ISFUserActionSvcCfg (flags, name="G4UA::ISFUserActionSvc", **kwargs)
 ISFFullUserActionSvcCfg (flags, name="G4UA::ISFFullUserActionSvc", **kwargs)
 ISFPassBackUserActionSvcCfg (flags, name="G4UA::ISFPassBackUserActionSvc", **kwargs)
 ISF_ATLFAST_UserActionSvcCfg (flags, name="G4UA::ISF_ATLFAST_UserActionSvc", **kwargs)

Function Documentation

◆ ATLFAST_G4TrackProcessorUserActionToolCfg()

G4AtlasUserActionConfig.ATLFAST_G4TrackProcessorUserActionToolCfg ( flags,
name = "ATLFAST_G4TrackProcessorUserActionTool",
** kwargs )

Definition at line 91 of file G4AtlasUserActionConfig.py.

91def ATLFAST_G4TrackProcessorUserActionToolCfg(flags, name="ATLFAST_G4TrackProcessorUserActionTool", **kwargs):
92 result = ComponentAccumulator()
93 if flags.Sim.ISF.Simulator in [SimulationFlavour.PassBackG4MT, SimulationFlavour.ATLFASTIIMT, SimulationFlavour.ATLFAST3MT, SimulationFlavour.ATLFAST3MT_QS]:
94 kwargs.setdefault("ParticleBroker", "")
95 elif flags.Sim.ISF.Simulator in [SimulationFlavour.ATLFASTIIF_G4MS, SimulationFlavour.ATLFAST3F_G4MS]:
96 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
97 kwargs.setdefault("GeoIDSvc", result.getPrimaryAndMerge(ATLFAST_GeoIDSvcCfg(flags)))
98 kwargs.setdefault("PassBackEkinThreshold", 0.05*MeV)
99 kwargs.setdefault("KillBoundaryParticlesBelowThreshold", True)
100 tool = result.popToolsAndMerge(PassBackG4TrackProcessorUserActionToolCfg(flags, name, **kwargs))
101 result.setPrivateTools(tool)
102 return result
103
104
105# New function for all user action types

◆ CTBUserActionSvcCfg()

G4AtlasUserActionConfig.CTBUserActionSvcCfg ( flags,
name = "G4UA::CTBUserActionSvc",
** kwargs )

Definition at line 173 of file G4AtlasUserActionConfig.py.

173def CTBUserActionSvcCfg(flags, name="G4UA::CTBUserActionSvc", **kwargs):
174 result = ComponentAccumulator()
175 # FIXME migrate an alternative to this
176 generalActions = ( result.popToolsAndMerge(getDefaultActions(flags)) +
177 result.popToolsAndMerge(OptionalUserActionCfg(flags)) )
178 # This comment carried over from old style:
179 # FIXME: ADS these actions are not yet migrated to Hive
180 #if simFlags.SimLayout.get_Value()=="tb_LArH6_2004":
181 # eoe=["LArHitsH6EventAction"]+eoe
182 # eoe+=["LArGeoH62004EventAction"]
183 # if simFlags.LArTB_H6Step.statusOn:
184 # if simFlags.LArTB_H6Step.get_Value():
185 # stepping+=["LArGeoH62004SteppingAction"]
186 # event+=["RadLenNtuple"]
187 # eoe+=["RadLenNtuple"]
188 # stepping+=["RadLenNtuple"]
189
190 # New user action tools
191 kwargs.setdefault("UserActionTools", generalActions)
192
193 # placeholder for more advanced config, if needed
194 result.addService(CompFactory.G4UA.UserActionSvc(name, **kwargs), primary = True)
195 return result
196
197

◆ FullG4TrackProcessorUserActionToolCfg()

G4AtlasUserActionConfig.FullG4TrackProcessorUserActionToolCfg ( flags,
name = "FullG4TrackProcessorUserActionTool",
** kwargs )

Definition at line 48 of file G4AtlasUserActionConfig.py.

48def FullG4TrackProcessorUserActionToolCfg(flags, name="FullG4TrackProcessorUserActionTool", **kwargs):
49 result = ComponentAccumulator()
50 if flags.Sim.ISF.Simulator in [SimulationFlavour.FullG4MT, SimulationFlavour.FullG4MT_QS]:
51 tool = result.popToolsAndMerge(EntryLayerToolMTCfg(flags))
52 else:
53 tool = result.popToolsAndMerge(EntryLayerToolCfg(flags))
54 kwargs.setdefault("EntryLayerTool", result.addPublicTool(tool))
55 kwargs.setdefault("GeoIDSvc", result.getPrimaryAndMerge(GeoIDSvcCfg(flags)))
56 if flags.Detector.GeometryCavern:
57 kwargs.setdefault("TruthVolumeLevel", 2)
58 kwargs.setdefault("IsITkGeometry", flags.GeoModel.Run >= LHCPeriod.Run4)
59 result.setPrivateTools(CompFactory.G4UA.iGeant4.TrackProcessorUserActionFullG4Tool(name, **kwargs))
60 return result
61
62

◆ getDefaultActions()

G4AtlasUserActionConfig.getDefaultActions ( flags)

Definition at line 106 of file G4AtlasUserActionConfig.py.

106def getDefaultActions(flags):
107 result = ComponentAccumulator()
108
109 actions = []
110
111 # Sync actions should be added first
112 # TODO: have dedicated array/handle for sync actions instead of relying on order
113 if flags.Sim.UseG4Workers:
114 actions += [result.popToolsAndMerge(SyncPrimaryGeneratorActionToolCfg(flags)),
115 result.popToolsAndMerge(SyncRunActionToolCfg(flags)),
116 result.popToolsAndMerge(SyncEventActionToolCfg(flags))]
117
118 # System stacking action
119 actions += [result.popToolsAndMerge(AthenaStackingActionToolCfg(flags))]
120
121 # Some truth handling actions (and timing)
122 if not flags.Sim.ISFRun:
123 actions += [result.popToolsAndMerge(AthenaTrackingActionToolCfg(flags)),
124 result.popToolsAndMerge(MCTruthSteppingActionToolCfg(flags)),
125 result.popToolsAndMerge(G4SimTimerToolCfg(flags))]
126 # Track counter
127 actions += [result.popToolsAndMerge(G4TrackCounterToolCfg(flags))]
128
129 # Cosmic Perigee action
130 if flags.Beam.Type is BeamType.Cosmics and flags.Sim.CavernBackground is CavernBackground.Off:
131 actions += [CompFactory.G4UA.CosmicPerigeeActionTool()]
132 # Cosmic filter
133 if flags.Beam.Type is BeamType.Cosmics and not flags.Sim.ISFRun:
134 actions += [result.popToolsAndMerge(CosmicFilterToolCfg(flags))]
135 if flags.Sim.StoppedParticleFile:
136 actions += [result.popToolsAndMerge(StoppedParticleFilterToolCfg(flags)),
137 result.popToolsAndMerge(StoppedParticleActionToolCfg(flags))]
138 # Hit wrapper action
139 if flags.Sim.CavernBackground is CavernBackground.Read:
140 actions += [result.popToolsAndMerge(HitWrapperToolCfg(flags))]
141 # Photon killer
142 if flags.Sim.PhysicsList == "QGSP_BERT_HP":
143 actions += [CompFactory.G4UA.PhotonKillerTool()]
144 # Calo calibration default processing
145 if flags.Sim.CalibrationRun in [CalibrationRun.LArTile, CalibrationRun.LArTileZDC]:
146 actions += [result.popToolsAndMerge(CalibrationDefaultProcessingToolCfg(flags))]
147 if 'G4UserActions.G4UserActionsConfig.MonopoleLooperKillerToolCfg' not in flags.Sim.OptionalUserActionList:
148 actions += [result.popToolsAndMerge(LooperKillerToolCfg(flags))]
149
150 result.setPrivateTools(actions)
151 return result
152
153

◆ getOptionalUACfg()

G4AtlasUserActionConfig.getOptionalUACfg ( flags,
userActionString )
Execute a function to configure and optional UserAction

Definition at line 34 of file G4AtlasUserActionConfig.py.

34def getOptionalUACfg(flags, userActionString):
35 """Execute a function to configure and optional UserAction"""
36 parts = userActionString.split('.')
37 if len(parts) < 2:
38 raise ValueError('OptionalUserAction strings should be of the form Package.Module.Function or Package.Function if defined in __init__.py')
39 function = parts[-1]
40 module = '.'.join(parts[:-1])
41 from importlib import import_module
42 loaded_module = import_module(module)
43 function_def = getattr(loaded_module, function)
44 return function_def(flags)
45
46
47# Pulled in from ISF G4 to avoid circular dependence

◆ ISF_ATLFAST_UserActionSvcCfg()

G4AtlasUserActionConfig.ISF_ATLFAST_UserActionSvcCfg ( flags,
name = "G4UA::ISF_ATLFAST_UserActionSvc",
** kwargs )

Definition at line 241 of file G4AtlasUserActionConfig.py.

241def ISF_ATLFAST_UserActionSvcCfg(flags, name="G4UA::ISF_ATLFAST_UserActionSvc", **kwargs):
242 # this configuration needs ISFMCTruthUserAction and
243 # ATLFAST_G4TrackProcessorUserAction
244 tpAcc = ComponentAccumulator()
245 kwargs.setdefault("TrackProcessorUserAction",
246 [tpAcc.popToolsAndMerge(ATLFAST_G4TrackProcessorUserActionToolCfg(flags))])
247 result = ISFUserActionSvcCfg(flags, name, **kwargs)
248 result.merge(tpAcc)
249 return result

◆ ISFFullUserActionSvcCfg()

G4AtlasUserActionConfig.ISFFullUserActionSvcCfg ( flags,
name = "G4UA::ISFFullUserActionSvc",
** kwargs )

Definition at line 220 of file G4AtlasUserActionConfig.py.

220def ISFFullUserActionSvcCfg(flags, name="G4UA::ISFFullUserActionSvc", **kwargs):
221 # this configuration needs ISFMCTruthUserAction
222 # and FullG4TrackProcessorUserAction
223 tpAcc = FullG4TrackProcessorUserActionToolCfg(flags)
224 kwargs.setdefault("TrackProcessorUserAction", [tpAcc.popPrivateTools()])
225 result = ISFUserActionSvcCfg(flags, name, **kwargs)
226 result.merge(tpAcc)
227 return result
228
229

◆ ISFPassBackUserActionSvcCfg()

G4AtlasUserActionConfig.ISFPassBackUserActionSvcCfg ( flags,
name = "G4UA::ISFPassBackUserActionSvc",
** kwargs )

Definition at line 230 of file G4AtlasUserActionConfig.py.

230def ISFPassBackUserActionSvcCfg(flags, name="G4UA::ISFPassBackUserActionSvc", **kwargs):
231 # this configuration needs ISFMCTruthUserAction and
232 # PassBackG4TrackProcessorUserAction
233 tpAcc = ComponentAccumulator()
234 kwargs.setdefault("TrackProcessorUserAction",
235 [tpAcc.popToolsAndMerge(PassBackG4TrackProcessorUserActionToolCfg(flags))])
236 result = ISFUserActionSvcCfg(flags, name, **kwargs)
237 result.merge(tpAcc)
238 return result
239
240

◆ ISFUserActionSvcCfg()

G4AtlasUserActionConfig.ISFUserActionSvcCfg ( flags,
name = "G4UA::ISFUserActionSvc",
** kwargs )

Definition at line 198 of file G4AtlasUserActionConfig.py.

198def ISFUserActionSvcCfg(flags, name="G4UA::ISFUserActionSvc", **kwargs):
199 result = ComponentAccumulator()
200 TrackProcessorUserAction = kwargs.pop("TrackProcessorUserAction",[])
201
202 PhysicsValidationUserAction = []
203 if flags.Sim.ISF.ValidationMode:
204 PhysicsValidationUserAction = [result.popPrivateTools(PhysicsValidationUserActionToolCfg(flags))]
205
206 MCTruthUserAction = kwargs.pop("MCTruthUserAction",
207 [result.popToolsAndMerge(MCTruthUserActionToolCfg(flags))])
208
209 generalActions = ( TrackProcessorUserAction + MCTruthUserAction +
210 result.popToolsAndMerge(getDefaultActions(flags)) +
211 result.popToolsAndMerge(OptionalUserActionCfg(flags)) +
212 PhysicsValidationUserAction )
213
214 # New user action tools
215 kwargs.setdefault("UserActionTools", generalActions)
216 result.addService(CompFactory.G4UA.UserActionSvc(name, **kwargs), primary = True)
217 return result
218
219

◆ MCTruthUserActionToolCfg()

G4AtlasUserActionConfig.MCTruthUserActionToolCfg ( flags,
name = "ISFMCTruthUserActionTool",
** kwargs )

Definition at line 69 of file G4AtlasUserActionConfig.py.

69def MCTruthUserActionToolCfg(flags, name="ISFMCTruthUserActionTool", **kwargs):
70 result = ComponentAccumulator()
71 kwargs.setdefault("TruthRecordSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
72 result.setPrivateTools(CompFactory.G4UA.iGeant4.MCTruthUserActionTool(name, **kwargs))
73 return result
74
75

◆ OptionalUserActionCfg()

G4AtlasUserActionConfig.OptionalUserActionCfg ( flags)
flags.Sim.OptionalUserActionList = ['G4UserActions.G4UserActionsConfig.FixG4CreatorProcessToolCfg']

Definition at line 24 of file G4AtlasUserActionConfig.py.

24def OptionalUserActionCfg(flags):
25 """ flags.Sim.OptionalUserActionList = ['G4UserActions.G4UserActionsConfig.FixG4CreatorProcessToolCfg']"""
26 result = ComponentAccumulator()
27 optionalUserActions = []
28 for userActionString in flags.Sim.OptionalUserActionList:
29 optionalUserActions += [result.popToolsAndMerge(getOptionalUACfg(flags, userActionString))]
30 result.setPrivateTools(optionalUserActions)
31 return result
32
33

◆ PassBackG4TrackProcessorUserActionToolCfg()

G4AtlasUserActionConfig.PassBackG4TrackProcessorUserActionToolCfg ( flags,
name = "PassBackG4TrackProcessorUserActionTool",
** kwargs )

Definition at line 85 of file G4AtlasUserActionConfig.py.

85def PassBackG4TrackProcessorUserActionToolCfg(flags, name="PassBackG4TrackProcessorUserActionTool", **kwargs):
86 if flags.Sim.ISF.Simulator in [SimulationFlavour.PassBackG4MT]:
87 kwargs.setdefault("ParticleBroker", "")
88 return TrackProcessorUserActionToolCfg(flags, name, **kwargs)
89
90

◆ PhysicsValidationUserActionToolCfg()

G4AtlasUserActionConfig.PhysicsValidationUserActionToolCfg ( flags,
name = "ISFG4PhysicsValidationUserActionTool",
** kwargs )

Definition at line 63 of file G4AtlasUserActionConfig.py.

63def PhysicsValidationUserActionToolCfg(flags, name="ISFG4PhysicsValidationUserActionTool", **kwargs):
64 result = ComponentAccumulator()
65 result.setPrivateTools(CompFactory.G4UA.iGeant4.PhysicsValidationUserActionTool(name, **kwargs))
66 return result
67
68

◆ TrackProcessorUserActionToolCfg()

G4AtlasUserActionConfig.TrackProcessorUserActionToolCfg ( flags,
name = "ISFG4TrackProcessorUserActionTool",
** kwargs )

Definition at line 76 of file G4AtlasUserActionConfig.py.

76def TrackProcessorUserActionToolCfg(flags, name="ISFG4TrackProcessorUserActionTool", **kwargs):
77 result = ComponentAccumulator()
78 if "ParticleBroker" not in kwargs:
79 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ParticleBrokerSvcCfg(flags)))
80 kwargs.setdefault("GeoIDSvc", result.getPrimaryAndMerge(GeoIDSvcCfg(flags)))
81 result.setPrivateTools(CompFactory.G4UA.iGeant4.TrackProcessorUserActionPassBackTool(name, **kwargs))
82 return result
83
84

◆ UserActionSvcCfg()

G4AtlasUserActionConfig.UserActionSvcCfg ( flags,
name = "G4UA::UserActionSvc",
** kwargs )
Get the standard UA svc configurable with all default actions added.
This function is normally called by the configured factory, not users.

Definition at line 154 of file G4AtlasUserActionConfig.py.

154def UserActionSvcCfg(flags, name="G4UA::UserActionSvc", **kwargs):
155 """
156 Get the standard UA svc configurable with all default actions added.
157 This function is normally called by the configured factory, not users.
158 """
159 result = ComponentAccumulator()
160
161 generalActions = ( result.popToolsAndMerge(getDefaultActions(flags)) +
162 result.popToolsAndMerge(OptionalUserActionCfg(flags)) )
163
164 # New user action tools
165 kwargs.setdefault("UserActionTools", generalActions)
166
167 # placeholder for more advanced config, if needed
168 result.addService(CompFactory.G4UA.UserActionSvc(name, **kwargs), primary = True)
169
170 return result
171
172