ATLAS Offline Software
Loading...
Searching...
No Matches
python.SimulationMetadata Namespace Reference

Functions

 collectSimulationMetadata (flags)
 fillAtlasMetadata (flags, dbFiller)
 writeSimulationParametersMetadata (flags)
 readSimulationParameters (flags)
 writeSimulationParameters (flags)

Variables

str folderName = "/Simulation/Parameters"

Function Documentation

◆ collectSimulationMetadata()

collectSimulationMetadata ( flags)
Collect simulation metadata parameters as a dictionary

Definition at line 11 of file SimulationMetadata.py.

11def collectSimulationMetadata(flags):
12 """Collect simulation metadata parameters as a dictionary"""
13 simMDlog = logging.getLogger('Sim_Metadata')
14 params = {}
15
16 #add all flags to the metadata
17 #todo - only add certain ones?
18 #in future this should be a ConfigFlags method...?
19 for flag in sorted(flags._flagdict): #only sim
20 if flag.startswith("Sim."):
21 if "GenerationConfiguration" in flag:
22 # This flag is only temporarily defined in the SimConfigFlags module
23 continue
24 if "Twiss" in flag and not flags.Detector.GeometryForward:
25 # The various Twiss flags should only be written out when Forward Detector simulation is enabled
26 continue
27 if "UseShadowEvent" in flag and not flags.Sim.UseShadowEvent:
28 # This flag is added temporarily to allow a new approach to quasi-stable particle simulation to be tested.
29 continue
30 if "VertexTimeWidth" in flag and not flags.Sim.VertexTimeSmearing:
31 # This flag is only written to metadata when vertex time smearing is enabled
32 continue
33 if "RunOnGPU" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
34 # This flag is only written to metadata when FastCaloSim/FastCaloGAN is enabled
35 continue
36 if "FastCalo.ParamsInputFilename" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
37 # This flag is only written to metadata when FastCaloSim/FastCaloGAN is enabled
38 continue
39 if "InDetParameterization" in flag and flags.Sim.InDetParameterization is not InDetParameterization.FatrasG4:
40 # This flag is only written to metadata when FatrasG4 is enabled
41 continue
42 if "InDetParameterization" in flag and flags.Sim.InDetParameterization is not InDetParameterization.AFatrasG4:
43 # This flag is only written to metadata when AFatrasG4 is enabled
44 continue
45 if "ActsFatrasG4.DebugInjectParticle" in flag and not flags.Sim.ActsFatrasG4.DebugInjectParticle:
46 # This flag is only written to metadata when DebugInjectParticle is enabled
47 continue
48 if "SimplifiedGeoPath" in flag and not flags.Sim.SimplifiedGeoPath:
49 # This flag is only written to metadata in case the FastCaloSim simplified geometry path is set
50 continue
51 if "FastCalo.doPunchThrough" in flag and not flags.Sim.FastCalo.doPunchThrough:
52 # This flag is only written to metadata in case PunchThroughG4Tool is set
53 continue
54 if "UseG4Workers" in flag:
55 # This flag is still experimental, and should not be recorded in metadata yet
56 continue
57
58 key = flag.split(".")[-1] #use final part of flag as the key
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' # TODO hard-coded for now for consistency with old-style configuration.
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', '') # used by egamma
86 else:
87 # TODO hard-code for now, but set flag properly later
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

◆ fillAtlasMetadata()

fillAtlasMetadata ( flags,
dbFiller )
Fill ParameterDbFiller with simulation metadata (sqlite mode interface)

Definition at line 98 of file SimulationMetadata.py.

98def fillAtlasMetadata(flags, dbFiller):
99 """Fill ParameterDbFiller with simulation metadata (sqlite mode interface)"""
100 params = collectSimulationMetadata(flags)
101 for key, value in params.items():
102 dbFiller.addSimParam(key, value)
103
104

◆ readSimulationParameters()

readSimulationParameters ( flags)
Read simulation parameters metadata

Definition at line 135 of file SimulationMetadata.py.

135def readSimulationParameters(flags):
136 """Read simulation parameters metadata"""
137 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
138 from IOVDbSvc.IOVDbSvcConfig import addFolders
139
140 # Direct in-file metadata mode: IOVDbMetaDataTool populates ConditionStore from file metadata
141 # Exception: In overlay mode, always use IOVDbSvc since input files may not have parameters in metadata
142 if flags.IOVDb.WriteParametersAsMetaData and not flags.Common.isOverlay:
143 return ComponentAccumulator()
144
145 # Sqlite mode: use IOVDbSvc to read and populate ConditionStore
146 if flags.Common.ProductionStep in [ProductionStep.Simulation, ProductionStep.FastChain]:
147 # Reading from intermediate sqlite file SimParams.db (during simulation job)
148 return addFolders(flags, folderName, detDb="SimParams.db", db="SIMPARAM", className="AthenaAttributeList")
149 else:
150 # Reading from input file metadata via IOVDbSvc
151 return addFolders(flags, folderName, className="AthenaAttributeList", tag="HEAD")
152
153

◆ writeSimulationParameters()

writeSimulationParameters ( flags)
Write digitization parameters metadata

Definition at line 154 of file SimulationMetadata.py.

154def writeSimulationParameters(flags):
155 """Write digitization parameters metadata"""
156 from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg, addFolders
157 acc = IOVDbSvcCfg(flags, FoldersToMetaData=(folderName,))
158 acc.merge(addFolders(flags, folderName, detDb="SimParams.db", db="SIMPARAM"))
159 return acc

◆ writeSimulationParametersMetadata()

writeSimulationParametersMetadata ( flags)

Definition at line 105 of file SimulationMetadata.py.

105def writeSimulationParametersMetadata(flags):
106 simMDlog = logging.getLogger('Sim_Metadata')
107 myRunNumber, myEndRunNumber = getMinMaxRunNumbers(flags)
108 simMDlog.debug('Metadata BeginRun = %s', str(myRunNumber))
109 simMDlog.debug('Metadata EndRun = %s', str(myEndRunNumber))
110
111 if flags.IOVDb.WriteParametersAsMetaData:
112 # Direct in-file metadata mode: bypass intermediate sqlite files
113 from IOVDbMetaDataTools.ParameterWriterConfig import writeParametersToMetaData
114 simMDlog.info('Writing simulation parameters directly to in-file metadata (bypassing SimParams.db)')
115 params = collectSimulationMetadata(flags)
116 return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
117 else:
118 # Sqlite mode: write to SimParams.db intermediate file
119 from IOVDbMetaDataTools import ParameterDbFiller
120 simMDlog.info('Writing simulation parameters to intermediate sqlite file (SimParams.db)')
121 dbFiller = ParameterDbFiller.ParameterDbFiller()
122 dbFiller.setBeginRun(myRunNumber)
123 dbFiller.setEndRun(myEndRunNumber)
124
125 fillAtlasMetadata(flags, dbFiller)
126
127 #-------------------------------------------------
128 # Make the MetaData Db
129 #-------------------------------------------------
130 dbFiller.genSimDb()
131
132 return writeSimulationParameters(flags)
133
134

Variable Documentation

◆ folderName

str python.SimulationMetadata.folderName = "/Simulation/Parameters"

Definition at line 8 of file SimulationMetadata.py.