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