ATLAS Offline Software
Functions | Variables
python.SimulationMetadata Namespace Reference

Functions

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

Variables

 folderName
 

Function Documentation

◆ collectSimulationMetadata()

def python.SimulationMetadata.collectSimulationMetadata (   flags)
Collect simulation metadata parameters as a dictionary

Definition at line 10 of file SimulationMetadata.py.

10 def collectSimulationMetadata(flags):
11  """Collect simulation metadata parameters as a dictionary"""
12  simMDlog = logging.getLogger('Sim_Metadata')
13  params = {}
14 
15  #add all flags to the metadata
16  #todo - only add certain ones?
17  #in future this should be a ConfigFlags method...?
18  for flag in sorted(flags._flagdict): #only sim
19  if flag.startswith("Sim."):
20  if "GenerationConfiguration" in flag:
21  # This flag is only temporarily defined in the SimConfigFlags module
22  continue
23  if "Twiss" in flag and not flags.Detector.GeometryForward:
24  # The various Twiss flags should only be written out when Forward Detector simulation is enabled
25  continue
26  if "UseShadowEvent" in flag and not flags.Sim.UseShadowEvent:
27  # This flag is added temporarily to allow a new approach to quasi-stable particle simulation to be tested.
28  continue
29  if "VertexTimeWidth" in flag and not flags.Sim.VertexTimeSmearing:
30  # This flag is only written to metadata when vertex time smearing is enabled
31  continue
32  if "RunOnGPU" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
33  # This flag is only written to metadata when FastCaloSim/FastCaloGAN is enabled
34  continue
35  if "FastCalo.ParamsInputFilename" in flag and not flags.Sim.ISF.Simulator.usesFastCaloSim():
36  # This flag is only written to metadata when FastCaloSim/FastCaloGAN is enabled
37  continue
38  if "SimplifiedGeoPath" in flag and not flags.Sim.SimplifiedGeoPath:
39  # This flag is only written to metadata in case the FastCaloSim simplified geometry path is set
40  continue
41  if "FastCalo.doPunchThrough" in flag and not flags.Sim.FastCalo.doPunchThrough:
42  # This flag is only written to metadata in case PunchThroughG4Tool is set
43  continue
44 
45  key = flag.split(".")[-1] #use final part of flag as the key
46  value = flags._get(flag)
47  if isinstance(value, FlagEnum):
48  value = value.value
49  if not isinstance(value, str):
50  value = str(value)
51  params[key] = value
52  simMDlog.info('SimulationMetaData: setting "%s" to be %s', key, value)
53 
54  params['G4Version'] = flags.Sim.G4Version
55  params['RunType'] = 'atlas'
56  params['beamType'] = flags.Beam.Type.value
57  params['SimLayout'] = flags.GeoModel.AtlasVersion
58  params['MagneticField'] = 'AtlasFieldSvc' # TODO hard-coded for now for consistency with old-style configuration.
59 
60  #---------
61 
62  from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors
63  simDets = ['Truth'] + getEnabledDetectors(flags)
64  simMDlog.info("Setting 'SimulatedDetectors' = %r", simDets)
65  params['SimulatedDetectors'] = repr(simDets)
66 
67 
68  params['hitFileMagicNumber'] = '0'
69 
70  if flags.Sim.ISFRun:
71  params['Simulator'] = flags.Sim.ISF.Simulator.value
72  params['SimulationFlavour'] = flags.Sim.ISF.Simulator.value.replace('MT', '') # used by egamma
73  else:
74  # TODO hard-code for now, but set flag properly later
75  params['Simulator'] = 'AtlasG4'
76  params['SimulationFlavour'] = 'AtlasG4'
77 
78 
79  if flags.Common.isOverlay and flags.Overlay.DataOverlay:
80  params['IsDataOverlay'] = 'True'
81 
82  return params
83 
84 

◆ fillAtlasMetadata()

def python.SimulationMetadata.fillAtlasMetadata (   flags,
  dbFiller 
)
Fill ParameterDbFiller with simulation metadata (sqlite mode interface)

Definition at line 85 of file SimulationMetadata.py.

85 def fillAtlasMetadata(flags, dbFiller):
86  """Fill ParameterDbFiller with simulation metadata (sqlite mode interface)"""
87  params = collectSimulationMetadata(flags)
88  for key, value in params.items():
89  dbFiller.addSimParam(key, value)
90 
91 

◆ readSimulationParameters()

def python.SimulationMetadata.readSimulationParameters (   flags)
Read simulation parameters metadata

Definition at line 122 of file SimulationMetadata.py.

122 def readSimulationParameters(flags):
123  """Read simulation parameters metadata"""
124  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
125  from IOVDbSvc.IOVDbSvcConfig import addFolders
126 
127  # Direct in-file metadata mode: IOVDbMetaDataTool populates ConditionStore from file metadata
128  # Exception: In overlay mode, always use IOVDbSvc since input files may not have parameters in metadata
129  if flags.IOVDb.WriteParametersAsMetaData and not flags.Common.isOverlay:
130  return ComponentAccumulator()
131 
132  # Sqlite mode: use IOVDbSvc to read and populate ConditionStore
133  if flags.Common.ProductionStep in [ProductionStep.Simulation, ProductionStep.FastChain]:
134  # Reading from intermediate sqlite file SimParams.db (during simulation job)
135  return addFolders(flags, folderName, detDb="SimParams.db", db="SIMPARAM", className="AthenaAttributeList")
136  else:
137  # Reading from input file metadata via IOVDbSvc
138  return addFolders(flags, folderName, className="AthenaAttributeList", tag="HEAD")
139 
140 

◆ writeSimulationParameters()

def python.SimulationMetadata.writeSimulationParameters (   flags)
Write digitization parameters metadata

Definition at line 141 of file SimulationMetadata.py.

141 def writeSimulationParameters(flags):
142  """Write digitization parameters metadata"""
143  from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg, addFolders
144  acc = IOVDbSvcCfg(flags, FoldersToMetaData=[folderName])
145  acc.merge(addFolders(flags, folderName, detDb="SimParams.db", db="SIMPARAM"))
146  return acc

◆ writeSimulationParametersMetadata()

def python.SimulationMetadata.writeSimulationParametersMetadata (   flags)

Definition at line 92 of file SimulationMetadata.py.

93  simMDlog = logging.getLogger('Sim_Metadata')
94  myRunNumber, myEndRunNumber = getMinMaxRunNumbers(flags)
95  simMDlog.debug('Metadata BeginRun = %s', str(myRunNumber))
96  simMDlog.debug('Metadata EndRun = %s', str(myEndRunNumber))
97 
98  if flags.IOVDb.WriteParametersAsMetaData:
99  # Direct in-file metadata mode: bypass intermediate sqlite files
100  from IOVDbMetaDataTools.ParameterWriterConfig import writeParametersToMetaData
101  simMDlog.info('Writing simulation parameters directly to in-file metadata (bypassing SimParams.db)')
102  params = collectSimulationMetadata(flags)
103  return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
104  else:
105  # Sqlite mode: write to SimParams.db intermediate file
106  from IOVDbMetaDataTools import ParameterDbFiller
107  simMDlog.info('Writing simulation parameters to intermediate sqlite file (SimParams.db)')
108  dbFiller = ParameterDbFiller.ParameterDbFiller()
109  dbFiller.setBeginRun(myRunNumber)
110  dbFiller.setEndRun(myEndRunNumber)
111 
112  fillAtlasMetadata(flags, dbFiller)
113 
114  #-------------------------------------------------
115  # Make the MetaData Db
116  #-------------------------------------------------
117  dbFiller.genSimDb()
118 
119  return writeSimulationParameters(flags)
120 
121 

Variable Documentation

◆ folderName

python.SimulationMetadata.folderName

Definition at line 7 of file SimulationMetadata.py.

DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename R::value_type > sorted(const R &r, PROJ proj={})
Helper function to create a sorted vector from an unsorted range.
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:342
python.SimulationMetadata.readSimulationParameters
def readSimulationParameters(flags)
Definition: SimulationMetadata.py:122
python.SimulationMetadata.writeSimulationParameters
def writeSimulationParameters(flags)
Definition: SimulationMetadata.py:141
python.DetectorConfigFlags.getEnabledDetectors
def getEnabledDetectors(flags, geometry=False)
Definition: DetectorConfigFlags.py:147
PyAthena::repr
std::string repr(PyObject *o)
returns the string representation of a python object equivalent of calling repr(o) in python
Definition: PyAthenaUtils.cxx:106
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:86
python.IOVDbSvcConfig.IOVDbSvcCfg
def IOVDbSvcCfg(flags, **kwargs)
Definition: IOVDbSvcConfig.py:28
python.SimulationMetadata.fillAtlasMetadata
def fillAtlasMetadata(flags, dbFiller)
Definition: SimulationMetadata.py:85
python.SimulationMetadata.writeSimulationParametersMetadata
def writeSimulationParametersMetadata(flags)
Definition: SimulationMetadata.py:92
python.ParameterWriterConfig.writeParametersToMetaData
def writeParametersToMetaData(flags, folderName, parameters, beginRun, endRun)
Definition: ParameterWriterConfig.py:6
python.SimulationMetadata.collectSimulationMetadata
def collectSimulationMetadata(flags)
Definition: SimulationMetadata.py:10
str
Definition: BTagTrackIpAccessor.cxx:11
python.EventIdOverrideConfig.getMinMaxRunNumbers
def getMinMaxRunNumbers(flags)
Definition: EventIdOverrideConfig.py:101