11 """Collect simulation metadata parameters as a dictionary"""
12 simMDlog = logging.getLogger(
'Sim_Metadata')
18 for flag
in sorted(flags._flagdict):
19 if flag.startswith(
"Sim."):
20 if "GenerationConfiguration" in flag:
23 if "Twiss" in flag
and not flags.Detector.GeometryForward:
26 if "UseShadowEvent" in flag
and not flags.Sim.UseShadowEvent:
29 if "VertexTimeWidth" in flag
and not flags.Sim.VertexTimeSmearing:
32 if "RunOnGPU" in flag
and not flags.Sim.ISF.Simulator.usesFastCaloSim():
35 if "FastCalo.ParamsInputFilename" in flag
and not flags.Sim.ISF.Simulator.usesFastCaloSim():
38 if "SimplifiedGeoPath" in flag
and not flags.Sim.SimplifiedGeoPath:
41 if "FastCalo.doPunchThrough" in flag
and not flags.Sim.FastCalo.doPunchThrough:
44 if "UseG4Workers" in flag:
48 key = flag.split(
".")[-1]
49 value = flags._get(flag)
50 if isinstance(value, FlagEnum):
52 if not isinstance(value, str):
55 simMDlog.info(
'SimulationMetaData: setting "%s" to be %s', key, value)
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'
65 from AthenaConfiguration.DetectorConfigFlags
import getEnabledDetectors
66 simDets = [
'Truth'] + getEnabledDetectors(flags)
67 simMDlog.info(
"Setting 'SimulatedDetectors' = %r", simDets)
68 params[
'SimulatedDetectors'] = repr(simDets)
71 params[
'hitFileMagicNumber'] =
'0'
74 params[
'Simulator'] = flags.Sim.ISF.Simulator.value
75 params[
'SimulationFlavour'] = flags.Sim.ISF.Simulator.value.replace(
'MT',
'')
78 params[
'Simulator'] =
'AtlasG4'
79 params[
'SimulationFlavour'] =
'AtlasG4'
82 if flags.Common.isOverlay
and flags.Overlay.DataOverlay:
83 params[
'IsDataOverlay'] =
'True'
96 simMDlog = logging.getLogger(
'Sim_Metadata')
97 myRunNumber, myEndRunNumber = getMinMaxRunNumbers(flags)
98 simMDlog.debug(
'Metadata BeginRun = %s', str(myRunNumber))
99 simMDlog.debug(
'Metadata EndRun = %s', str(myEndRunNumber))
101 if flags.IOVDb.WriteParametersAsMetaData:
103 from IOVDbMetaDataTools.ParameterWriterConfig
import writeParametersToMetaData
104 simMDlog.info(
'Writing simulation parameters directly to in-file metadata (bypassing SimParams.db)')
106 return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
109 from IOVDbMetaDataTools
import ParameterDbFiller
110 simMDlog.info(
'Writing simulation parameters to intermediate sqlite file (SimParams.db)')
112 dbFiller.setBeginRun(myRunNumber)
113 dbFiller.setEndRun(myEndRunNumber)
126 """Read simulation parameters metadata"""
127 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
128 from IOVDbSvc.IOVDbSvcConfig
import addFolders
132 if flags.IOVDb.WriteParametersAsMetaData
and not flags.Common.isOverlay:
133 return ComponentAccumulator()
136 if flags.Common.ProductionStep
in [ProductionStep.Simulation, ProductionStep.FastChain]:
138 return addFolders(flags, folderName, detDb=
"SimParams.db", db=
"SIMPARAM", className=
"AthenaAttributeList")
141 return addFolders(flags, folderName, className=
"AthenaAttributeList", tag=
"HEAD")