12 """Collect simulation metadata parameters as a dictionary"""
13 simMDlog = logging.getLogger(
'Sim_Metadata')
19 for flag
in sorted(flags._flagdict):
20 if flag.startswith(
"Sim."):
21 if "GenerationConfiguration" in flag:
24 if "Twiss" in flag
and not flags.Detector.GeometryForward:
27 if "UseShadowEvent" in flag
and not flags.Sim.UseShadowEvent:
30 if "VertexTimeWidth" in flag
and not flags.Sim.VertexTimeSmearing:
33 if "RunOnGPU" in flag
and not flags.Sim.ISF.Simulator.usesFastCaloSim():
36 if "FastCalo.ParamsInputFilename" in flag
and not flags.Sim.ISF.Simulator.usesFastCaloSim():
39 if "InDetParameterization" in flag
and flags.Sim.InDetParameterization
is not InDetParameterization.FatrasG4:
42 if "SimplifiedGeoPath" in flag
and not flags.Sim.SimplifiedGeoPath:
45 if "FastCalo.doPunchThrough" in flag
and not flags.Sim.FastCalo.doPunchThrough:
48 if "UseG4Workers" in flag:
52 key = flag.split(
".")[-1]
53 value = flags._get(flag)
54 if isinstance(value, FlagEnum):
56 if not isinstance(value, str):
59 simMDlog.info(
'SimulationMetaData: setting "%s" to be %s', key, value)
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'
69 from AthenaConfiguration.DetectorConfigFlags
import getEnabledDetectors
70 simDets = [
'Truth'] + getEnabledDetectors(flags)
71 simMDlog.info(
"Setting 'SimulatedDetectors' = %r", simDets)
72 params[
'SimulatedDetectors'] = repr(simDets)
75 params[
'hitFileMagicNumber'] =
'0'
78 params[
'Simulator'] = flags.Sim.ISF.Simulator.value
79 params[
'SimulationFlavour'] = flags.Sim.ISF.Simulator.value.replace(
'MT',
'')
82 params[
'Simulator'] =
'AtlasG4'
83 params[
'SimulationFlavour'] =
'AtlasG4'
86 if flags.Common.isOverlay
and flags.Overlay.DataOverlay:
87 params[
'IsDataOverlay'] =
'True'
100 simMDlog = logging.getLogger(
'Sim_Metadata')
101 myRunNumber, myEndRunNumber = getMinMaxRunNumbers(flags)
102 simMDlog.debug(
'Metadata BeginRun = %s', str(myRunNumber))
103 simMDlog.debug(
'Metadata EndRun = %s', str(myEndRunNumber))
105 if flags.IOVDb.WriteParametersAsMetaData:
107 from IOVDbMetaDataTools.ParameterWriterConfig
import writeParametersToMetaData
108 simMDlog.info(
'Writing simulation parameters directly to in-file metadata (bypassing SimParams.db)')
110 return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
113 from IOVDbMetaDataTools
import ParameterDbFiller
114 simMDlog.info(
'Writing simulation parameters to intermediate sqlite file (SimParams.db)')
116 dbFiller.setBeginRun(myRunNumber)
117 dbFiller.setEndRun(myEndRunNumber)
130 """Read simulation parameters metadata"""
131 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
132 from IOVDbSvc.IOVDbSvcConfig
import addFolders
136 if flags.IOVDb.WriteParametersAsMetaData
and not flags.Common.isOverlay:
137 return ComponentAccumulator()
140 if flags.Common.ProductionStep
in [ProductionStep.Simulation, ProductionStep.FastChain]:
142 return addFolders(flags, folderName, detDb=
"SimParams.db", db=
"SIMPARAM", className=
"AthenaAttributeList")
145 return addFolders(flags, folderName, className=
"AthenaAttributeList", tag=
"HEAD")