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

Functions

 load_files_for_quirks_scenario (flags)
 QuirksPhysicsToolCfg (flags, name="QuirksPhysicsTool", **kwargs)
 DebugSteppingActionToolCfg (flags, name="DebugSteppingActionTool", **kwargs)
 QuirksPreInclude (flags)
 QuirksCfg (flags)

Function Documentation

◆ DebugSteppingActionToolCfg()

DebugSteppingActionToolCfg ( flags,
name = "DebugSteppingActionTool",
** kwargs )

Definition at line 49 of file QuirksConfig.py.

49def DebugSteppingActionToolCfg(flags, name="DebugSteppingActionTool", **kwargs):
50 result = ComponentAccumulator()
51 # TODO UserActionConfig flag not yet migrated
52 # example custom configuration
53 # if name in flags.Sim.UserActionConfig.keys():
54 # for prop,value in flags.Sim.UserActionConfig[name].iteritems():
55 # kwargs.setdefault(prop,value)
56 result.setPrivateTools( CompFactory.G4UA.DebugSteppingActionTool(name, **kwargs) )
57 return result
58
59

◆ load_files_for_quirks_scenario()

load_files_for_quirks_scenario ( flags)

Definition at line 10 of file QuirksConfig.py.

10def load_files_for_quirks_scenario(flags):
11 from ExtraParticles.PDGHelpers import getPDGTABLE
12 if getPDGTABLE('PDGTABLE.MeV'):
13 quirk_firststring=1e-6 #mm
14 quirk_maxboost=1e-2
15 quirk_maxmerge=1e-6 #mm
16 quirk_debugenabled=False
17 quirk_debugdist=1000 #mm
18 quirk_debugsteps=1000
19 simdict = flags.Input.SpecialConfiguration
20 quirk_mass = float(simdict["MASS"])
21 quirk_charge = float(simdict["CHARGE"])
22 quirk_pdgid = int(simdict["PDGID"])
23 quirk_stringforce = float(simdict["STRINGFORCE"])
24
25 f = open('PDGTABLE.MeV', 'a')
26 f.write("M%8d %.8E +0.0E+00 -0.0E+00 Quirk +\n" % (quirk_pdgid, quirk_mass))
27 f.write("W%8d 0.E+00 +0.0E+00 -0.0E+00 Quirk +\n" % quirk_pdgid)
28 f.close()
29
30 if flags.Common.ProductionStep == ProductionStep.Simulation:
31 f = open('quirks_setup.txt', 'w')
32 for x in [quirk_mass, quirk_charge, quirk_pdgid, quirk_stringforce, quirk_firststring, quirk_maxboost, quirk_maxmerge, quirk_maxmerge]:
33 f.write(repr(x) + "\n")
34 if quirk_debugenabled:
35 f.write("1\n")
36 f.write(repr(quirk_debugdist) + "\n")
37 f.write(repr(quirk_debugsteps) + "\n")
38 else:
39 f.write("0\n")
40 f.close()
41
42

◆ QuirksCfg()

QuirksCfg ( flags)

Definition at line 74 of file QuirksConfig.py.

74def QuirksCfg(flags):
75 result = ComponentAccumulator()
76 if flags.Common.ProductionStep == ProductionStep.Simulation:
77 from G4AtlasServices.G4AtlasServicesConfig import PhysicsListSvcCfg
78 result.merge(PhysicsListSvcCfg(flags))
79
80 simdict = flags.Input.SpecialConfiguration
81 assert "MASS" in simdict
82 assert "CHARGE" in simdict
83 assert "PDGID" in simdict
84 assert "STRINGFORCE" in simdict
85 load_files_for_quirks_scenario(flags)
86 pdgcodes = eval(simdict['InteractingPDGCodes']) if 'InteractingPDGCodes' in simdict else []
87 from ExtraParticles.PDGHelpers import updateExtraParticleAcceptList
88 updateExtraParticleAcceptList('G4particle_acceptlist_ExtraParticles.txt', pdgcodes)
89
90 if flags.Common.ProductionStep == ProductionStep.Simulation:
91 from GaudiKernel.GaudiHandles import PrivateToolHandleArray
92 physicsOptions = PrivateToolHandleArray([ result.popToolsAndMerge(QuirksPhysicsToolCfg(flags)) ])
93 result.getService("PhysicsListSvc").PhysOption = physicsOptions + result.getService("PhysicsListSvc").PhysOption
94 return result

◆ QuirksPhysicsToolCfg()

QuirksPhysicsToolCfg ( flags,
name = "QuirksPhysicsTool",
** kwargs )

Definition at line 43 of file QuirksConfig.py.

43def QuirksPhysicsToolCfg(flags, name="QuirksPhysicsTool", **kwargs):
44 result = ComponentAccumulator()
45 result.setPrivateTools( CompFactory.QuirksPhysicsTool(name, **kwargs) )
46 return result
47
48

◆ QuirksPreInclude()

QuirksPreInclude ( flags)
Declare the quirk to the EVNT->G4 input filter, before the flags lock.

Definition at line 60 of file QuirksConfig.py.

60def QuirksPreInclude(flags):
61 """Declare the quirk to the EVNT->G4 input filter, before the flags lock."""
62 simdict = flags.Input.SpecialConfiguration
63 if "InteractingPDGCodes" not in simdict:
64 assert "PDGID" in simdict
65 CODE = int(simdict["PDGID"])
66 simdict['InteractingPDGCodes'] = str([CODE, -CODE])
67 flags.Input.SpecialConfiguration = simdict
68
69 killer = 'G4UserActions.G4UserActionsConfig.MonopoleLooperKillerToolCfg'
70 if killer not in flags.Sim.OptionalUserActionList:
71 flags.Sim.OptionalUserActionList += [killer]
72
73