11def collectSimulationMetadata(flags):
12 """Collect simulation metadata parameters as a dictionary"""
13 simMDlog = logging.getLogger('Sim_Metadata')
14 params = {}
15
16
17
18
19 for flag in sorted(flags._flagdict):
20 if flag.startswith("Sim."):
21 if "GenerationConfiguration" in flag:
22
23 continue
24 if "Twiss" in flag and not flags.Detector.GeometryForward:
25
26 continue
27 if "UseShadowEvent" in flag and not flags.Sim.UseShadowEvent:
28
29 continue
30 if "VertexTimeWidth" in flag and not flags.Sim.VertexTimeSmearing:
31
32 continue
33 if "RunOnGPU" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
34
35 continue
36 if "FastCalo.ParamsInputFilename" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
37
38 continue
39 if "InDetParameterization" in flag and flags.Sim.InDetParameterization is not InDetParameterization.FatrasG4:
40
41 continue
42 if "InDetParameterization" in flag and flags.Sim.InDetParameterization is not InDetParameterization.AFatrasG4:
43
44 continue
45 if "ActsFatrasG4.DebugInjectParticle" in flag and not flags.Sim.ActsFatrasG4.DebugInjectParticle:
46
47 continue
48 if "SimplifiedGeoPath" in flag and not flags.Sim.SimplifiedGeoPath:
49
50 continue
51 if "FastCalo.doPunchThrough" in flag and not flags.Sim.FastCalo.doPunchThrough:
52
53 continue
54 if "UseG4Workers" in flag:
55
56 continue
57
58 key = flag.split(".")[-1]
59 value = flags._get(flag)
60 if isinstance(value, FlagEnum):
61 value = value.value
62 if not isinstance(value, str):
63 value = str(value)
64 params[key] = value
65 simMDlog.info('SimulationMetaData: setting "%s" to be %s', key, value)
66
67 params['G4Version'] = flags.Sim.G4Version
68 params['RunType'] = 'atlas'
69 params['beamType'] = flags.Beam.Type.value
70 params['SimLayout'] = flags.GeoModel.AtlasVersion
71 params['MagneticField'] = 'AtlasFieldSvc'
72
73
74
75 from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors
76 simDets = ['Truth'] + getEnabledDetectors(flags)
77 simMDlog.info("Setting 'SimulatedDetectors' = %r", simDets)
78 params['SimulatedDetectors'] = repr(simDets)
79
80
81 params['hitFileMagicNumber'] = '0'
82
83 if flags.Sim.ISFRun:
84 params['Simulator'] = flags.Sim.ISF.Simulator.value
85 params['SimulationFlavour'] = flags.Sim.ISF.Simulator.value.replace('MT', '')
86 else:
87
88 params['Simulator'] = 'AtlasG4'
89 params['SimulationFlavour'] = 'AtlasG4'
90
91
92 if flags.Common.isOverlay and flags.Overlay.DataOverlay:
93 params['IsDataOverlay'] = 'True'
94
95 return params
96
97