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 "SimplifiedGeoPath" in flag and not flags.Sim.SimplifiedGeoPath:
43
44 continue
45 if "FastCalo.doPunchThrough" in flag and not flags.Sim.FastCalo.doPunchThrough:
46
47 continue
48 if "UseG4Workers" in flag:
49
50 continue
51
52 key = flag.split(".")[-1]
53 value = flags._get(flag)
54 if isinstance(value, FlagEnum):
55 value = value.value
56 if not isinstance(value, str):
57 value = str(value)
58 params[key] = value
59 simMDlog.info('SimulationMetaData: setting "%s" to be %s', key, value)
60
61 params['G4Version'] = flags.Sim.G4Version
62 params['RunType'] = 'atlas'
63 params['beamType'] = flags.Beam.Type.value
64 params['SimLayout'] = flags.GeoModel.AtlasVersion
65 params['MagneticField'] = 'AtlasFieldSvc'
66
67
68
69 from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors
70 simDets = ['Truth'] + getEnabledDetectors(flags)
71 simMDlog.info("Setting 'SimulatedDetectors' = %r", simDets)
72 params['SimulatedDetectors'] = repr(simDets)
73
74
75 params['hitFileMagicNumber'] = '0'
76
77 if flags.Sim.ISFRun:
78 params['Simulator'] = flags.Sim.ISF.Simulator.value
79 params['SimulationFlavour'] = flags.Sim.ISF.Simulator.value.replace('MT', '')
80 else:
81
82 params['Simulator'] = 'AtlasG4'
83 params['SimulationFlavour'] = 'AtlasG4'
84
85
86 if flags.Common.isOverlay and flags.Overlay.DataOverlay:
87 params['IsDataOverlay'] = 'True'
88
89 return params
90
91