ATLAS Offline Software
FileMetaDataCreatorTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Local include(s):
7 
8 // System include(s):
9 #include <algorithm>
10 #include <functional>
11 #include <memory>
12 #include <stdexcept>
13 #include <sstream>
14 #include <utility>
15 
16 // Athena metadata EDM:
19 #include "StoreGate/ReadHandle.h"
20 #include "StoreGate/WriteHandle.h"
23 
24 
25 namespace xAODMaker {
26 
29  ATH_CHECK(m_eventStore.retrieve());
30  ATH_CHECK(m_metaDataSvc.retrieve());
31  ATH_CHECK(m_inputMetaDataStore.retrieve());
32  ATH_CHECK(m_tagInfoMgr.retrieve());
33 
34  // If DataHeader key not specified, try determining it
35  if (m_dataHeaderKey.empty()) {
36  const auto *parentAlg = dynamic_cast< const INamedInterface* >(parent());
37  if (parentAlg)
38  m_dataHeaderKey = parentAlg->name();
39  }
40 
41  // Listen for the begin of an input file. Act after MetaDataSvc (prio 80) and
42  // TagInfoMgr (prio 50). That means the FileMetaDataTool be called first
43  ServiceHandle< IIncidentSvc > incidentSvc("IncidentSvc", name());
44  ATH_CHECK(incidentSvc.retrieve());
45  incidentSvc->addListener(this, "EndInputFile", 40);
46 
47  // Create a fresh object to fill
48  ATH_MSG_DEBUG("Creating new xAOD::FileMetaData object to fill");
49  m_info = std::make_unique< xAOD::FileMetaData >();
50  m_aux = std::make_unique< xAOD::FileMetaDataAuxInfo >();
51  m_info->setStore(m_aux.get());
52 
53  // FileMetaData has no content
54  m_filledNonEvent = false;
55  m_filledEvent = false;
56 
57  // Return gracefully:
58  return StatusCode::SUCCESS;
59  }
60 
61 void
62  FileMetaDataCreatorTool::handle(const Incident& inc) {
63  // gracefully ignore unexpected incident types
64  if (inc.type() == "EndInputFile") {
65  // Lock the tool while we work on the FileMetaData
66  std::lock_guard lock(m_toolMutex);
67  if (!updateFromNonEvent().isSuccess())
68  ATH_MSG_DEBUG("Failed to fill FileMetaData with non-event info");
69  }
70  }
71 
74  return StatusCode::SUCCESS;
75  }
76 
79  return StatusCode::SUCCESS;
80  }
81 
84  return StatusCode::SUCCESS;
85  }
86 
89  std::lock_guard lock(m_toolMutex);
90 
91  if (!m_filledNonEvent) {
92  ATH_MSG_DEBUG("Not writing empty or incomplete FileMetaData object");
93  return StatusCode::SUCCESS;
94  }
95 
96  // Set metadata with content created for given stream
97  for (const std::string& key : m_metaDataSvc->getPerStreamKeysFor(m_key)) {
98  // Remove any existing objects with this key
99  if (!m_metaDataSvc->contains<xAOD::FileMetaData>(key)) {
100  auto info = std::make_unique<xAOD::FileMetaData>();
101  auto aux = std::make_unique<xAOD::FileMetaDataAuxInfo>();
102  info->setStore(aux.get());
103  ATH_CHECK(m_metaDataSvc->record(std::move(info), key));
104  ATH_CHECK(m_metaDataSvc->record(std::move(aux), key + "Aux."));
105  }
106 
107  auto* output = m_metaDataSvc->tryRetrieve<xAOD::FileMetaData>(key);
108  if (output) {
109  // save event info that we've already had
110  float orig_mcProcID = -1;
111  std::vector<uint32_t> orig_runNumbers, orig_lumiBlocks;
112  if (!output->value(xAOD::FileMetaData::mcProcID, orig_mcProcID))
113  ATH_MSG_DEBUG("Could not get mcProcID");
114  if (!output->value("runNumbers", orig_runNumbers))
115  ATH_MSG_DEBUG("Could not get runNumbers");
116  if (!output->value("lumiBlocks", orig_lumiBlocks))
117  ATH_MSG_DEBUG("Could not get lumiBlocks");
118 
119  // Replace content in store with content created for this stream
120  *output = *m_info;
121  ATH_MSG_DEBUG("FileMetaData payload replaced in store with content created for this stream");
122  if (!m_filledEvent) {
123  // restore original event info if it was not filled for this stream
124  ATH_MSG_DEBUG("Event information was not filled, restoring what we had");
125  if (!output->setValue(xAOD::FileMetaData::mcProcID, orig_mcProcID))
126  ATH_MSG_DEBUG("Could not set " << xAOD::FileMetaData::mcProcID << " to " << orig_mcProcID);
127  if (!output->setValue("runNumbers", orig_runNumbers))
128  ATH_MSG_DEBUG("Could not restore runNumbers");
129  if (!output->setValue("lumiBlocks", orig_lumiBlocks))
130  ATH_MSG_DEBUG("Could not restore lumiBlocks");
131  }
132  } else {
133  ATH_MSG_DEBUG("cannot copy FileMetaData payload to output");
134  }
135  }
136 
137  return StatusCode::SUCCESS;
138 }
139 
142  return StatusCode::SUCCESS;
143  }
144 
147  // Lock the tool while working with FileMetaData
148  std::lock_guard lock(m_toolMutex);
149 
150  // Fill information from TagInfo and Simulation Parameters
151  if (!updateFromNonEvent().isSuccess())
152  ATH_MSG_DEBUG("Failed to fill FileMetaData with non-event info");
153 
154  // Sanity check
155  if (!(m_info && m_aux)) {
156  ATH_MSG_DEBUG("No xAOD::FileMetaData object to fill");
157  return StatusCode::SUCCESS;
158  }
159 
160  { // MC channel, run and/or lumi block numbers
161  const xAOD::EventInfo* eventInfo = nullptr;
162  StatusCode sc = StatusCode::FAILURE;
163 
164  if (m_eventStore->contains< xAOD::EventInfo >(m_eventInfoKey))
165  sc = m_eventStore->retrieve(eventInfo, m_eventInfoKey);
166  else if (m_eventStore->contains< xAOD::EventInfo >("Mc" + m_eventInfoKey))
167  sc = m_eventStore->retrieve(eventInfo, "Mc" + m_eventInfoKey);
168 
169  if (eventInfo && sc.isSuccess()) {
170  addUniqueValue("runNumbers", eventInfo->runNumber());
171  addUniqueValue("lumiBlocks", eventInfo->lumiBlock());
172  // Return if object has already been filled
173  if (m_filledEvent) return StatusCode::SUCCESS;
174 
175  try {
176  ATH_MSG_DEBUG("Retrieved " << m_eventInfoKey);
177 
179  const float id = static_cast< float >(eventInfo->mcChannelNumber());
180 
181  if (m_info->setValue(type, id))
182  ATH_MSG_DEBUG("setting " << type << " to " << id);
183  else
184  ATH_MSG_DEBUG("error setting " << type << " to " << id);
185  } catch (std::exception&) {
186  // Processing data not generated events
187  ATH_MSG_DEBUG("Failed to set " << xAOD::FileMetaData::mcProcID);
188  }
189  } else {
191  "Failed to retrieve " << m_eventInfoKey << " => cannot set "
193  << ", runNumbers, or lumiBlockNumbers");
194  }
195  }
196 
197  m_filledEvent = true;
198 
199  return StatusCode::SUCCESS;
200  }
201 
204 
205  // Have we already done this?
206  if (m_filledNonEvent) return StatusCode::SUCCESS;
207 
208  // Sanity check
209  if (!(m_info && m_aux)) {
210  ATH_MSG_DEBUG("No xAOD::FileMetaData object to fill");
211  return StatusCode::SUCCESS;
212  }
213 
215  m_tagInfoMgr->findTag("AtlasRelease"));
216 
217  set(xAOD::FileMetaData::amiTag, m_tagInfoMgr->findTag("AMITag"));
218 
220 
222  m_tagInfoMgr->findTag("IOVDbGlobalTag"));
223 
224  set(xAOD::FileMetaData::beamType, m_tagInfoMgr->findTag("beam_type"));
225 
226  set(xAOD::FileMetaData::mcCampaign, m_tagInfoMgr->findTag("mc_campaign"));
227 
228  set(xAOD::FileMetaData::generatorsInfo, m_tagInfoMgr->findTag("generators"));
229 
230  std::string beamEnergy = m_tagInfoMgr->findTag("beam_energy");
231  try {
233  std::stof(beamEnergy));
234  } catch (std::invalid_argument& e) {
235  ATH_MSG_DEBUG("beam energy \"" << beamEnergy << "\" tag could not be converted to float");
236  } catch (std::out_of_range& e) {
237  ATH_MSG_DEBUG("converted beam energy value (\"" << beamEnergy << "\") outside float range");
238  }
239 
240  std::string dataYear = m_tagInfoMgr->findTag("data_year");
241  if (!dataYear.empty()) {
242  try {
244  static_cast<uint32_t>(std::stoul(dataYear)));
245  } catch (std::invalid_argument& e) {
246  ATH_MSG_DEBUG("data year \"" << dataYear << "\" tag could not be converted to unsigned long");
247  } catch (std::out_of_range& e) {
248  ATH_MSG_DEBUG("converted data year value (\"" << dataYear << "\") outside unsigned long range");
249  }
250  }
251 
252  // Read simulation parameters
253  const IOVMetaDataContainer * simInfo = nullptr;
254  StatusCode sc = StatusCode::FAILURE;
256  sc = m_inputMetaDataStore->retrieve(simInfo, m_simInfoKey);
257  const coral::AttributeList * attrList = nullptr;
258  if (simInfo && sc.isSuccess())
259  for (const CondAttrListCollection* payload : *simInfo->payloadContainer())
260  for (const auto& itr : *payload)
261  attrList = &(itr.second);
262  if (attrList) {
263  { // set simulation flavor
264  std::string key = "SimulationFlavour";
265  std::string value = "none";
266  if (attrList->exists(key))
267  value = (*attrList)[key].data< std::string >();
268 
269  // remap simulation flavor "default" to "FullSim"
270  if (value == "default")
271  value = "FullSim";
272 
274  }
275 
276  { // set whether this is overlay
277  std::string key = "IsEventOverlayInputSim";
278  std::string attr = "False";
279  if (attrList->exists(key))
280  attr = (*attrList)[key].data< std::string >();
281  set(xAOD::FileMetaData::isDataOverlay, attr == "True");
282  }
283 
284  } else {
286  "Failed to retrieve " << m_simInfoKey << " => cannot set: "
287  << xAOD::FileMetaData::simFlavour << ", and "
289  << ". Trying to get them from input metadata store." );
290 
291  for (const std::string& key : m_metaDataSvc->getPerStreamKeysFor(m_key)) {
292  const xAOD::FileMetaData* input = nullptr;
293  input = m_inputMetaDataStore->tryConstRetrieve< xAOD::FileMetaData >(key);
294  if (input) {
295  std::string orig_simFlavour = "none";
296  if (!input->value(xAOD::FileMetaData::simFlavour, orig_simFlavour)) {
298  "Could not get xAOD::FileMetaData::simFlavour "
299  "from input metadata "
300  "store");
301  } else {
302  ATH_MSG_DEBUG("Retrieved from input metadata store: "
304  << orig_simFlavour);
305  set(xAOD::FileMetaData::simFlavour, orig_simFlavour);
306  }
307 
308  bool orig_isDataOverlay = false;
309  if (!input->value(xAOD::FileMetaData::isDataOverlay, orig_isDataOverlay)) {
311  "Could not get "
312  "xAOD::FileMetaData::isDataOverlay from input "
313  "metadata store");
314  } else {
315  ATH_MSG_DEBUG("Retrieved from input metadata store: "
317  << orig_isDataOverlay);
318  set(xAOD::FileMetaData::isDataOverlay, orig_isDataOverlay);
319  }
320  }
321  }
322  }
323 
324  if (m_filledNonEvent) return StatusCode::SUCCESS;
325 
326  { // get dataType
328  try {
329  if (m_info->setValue(type, m_dataHeaderKey.value()))
330  ATH_MSG_DEBUG("set " << type << " to " << m_dataHeaderKey.value());
331  else
332  ATH_MSG_DEBUG("error setting " << type << " to " << m_dataHeaderKey.value());
333  } catch (std::exception&) {
334  // This is unexpected
335  ATH_MSG_DEBUG("Failed to set " << xAOD::FileMetaData::dataType);
336  }
337  }
338 
339  // FileMetaData object has been filled with non event info
340  m_filledNonEvent = true;
341 
342  return StatusCode::SUCCESS;
343  }
344 
345 void
348  bool value) {
349  try {
350  if (m_info->setValue(key, value))
351  ATH_MSG_DEBUG("setting " << key << " to " << value);
352  else
353  ATH_MSG_DEBUG("error setting " << key << " to " << std::boolalpha << value
354  << std::noboolalpha);
355  } catch (std::exception&) {
356  // Processing data not generated events
357  ATH_MSG_DEBUG("Failed to set " << key);
358  }
359  }
360 
361 void
364  uint32_t value) {
365  try {
366  if (m_info->setValue(key, value))
367  ATH_MSG_DEBUG("setting " << key << " to " << value);
368  else
369  ATH_MSG_DEBUG("error setting " << key << " to " << value);
370  } catch (std::exception&) {
371  // Processing data not generated events
372  ATH_MSG_DEBUG("Failed to set " << key);
373  }
374  }
375 
376 void
379  float value) {
380  try {
381  if (m_info->setValue(key, value))
382  ATH_MSG_DEBUG("setting " << key << " to " << value);
383  else
384  ATH_MSG_DEBUG("error setting " << key << " to " << value);
385  } catch (std::exception&) {
386  // Processing data not generated events
387  ATH_MSG_DEBUG("Failed to set " << key);
388  }
389  }
390 
391 void
394  const std::string& value) {
395  if (value.empty()) return;
396  try {
397  if (m_info->setValue(key, value))
398  ATH_MSG_DEBUG("setting " << key << " to " << value);
399  else
400  ATH_MSG_DEBUG("error setting " << key << " to " << value);
401  } catch (std::exception&) {
402  // Processing data not generated events
403  ATH_MSG_DEBUG("Failed to set " << key);
404  }
405  }
406 
408  const std::string& type, uint32_t value) {
409  try {
410  std::vector<uint32_t> list;
411  if (m_info->value(type, list)) {
412  ATH_MSG_DEBUG("retrieved existing list of " << type);
413  } else {
414  ATH_MSG_DEBUG("adding new list for " << type);
415  }
416  // we want a sorted list of unique values (without using std::set)
417  std::sort(list.begin(), list.end());
418  auto it = std::lower_bound(list.begin(), list.end(), value);
419  if (it == list.end() || (*it) != value) {
420  list.insert(it, value);
421  ATH_MSG_DEBUG("added " << value << " to list of " << type);
422  }
423  if (!m_info->setValue(type, list)) {
424  ATH_MSG_WARNING("error updating list for " + type);
425  }
426  } catch (std::exception& e) {
427  // Processing generated events not data
428  ATH_MSG_WARNING(e.what());
429  }
430 }
431 
432 } // namespace xAODMaker
grepfile.info
info
Definition: grepfile.py:38
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
xAODMaker::FileMetaDataCreatorTool::postExecute
StatusCode postExecute() override
Fill the FileMetaData with event information.
Definition: FileMetaDataCreatorTool.cxx:146
IOVMetaDataContainer::payloadContainer
const IOVPayloadContainer * payloadContainer() const
Access to payload container.
Definition: IOVMetaDataContainer.h:141
xAODMaker::FileMetaDataCreatorTool::finalize
StatusCode finalize() override
Called at the end of AthenaOutputStream::finalize() (via release()).
Definition: FileMetaDataCreatorTool.cxx:141
xAODMaker::FileMetaDataCreatorTool::m_toolMutex
std::mutex m_toolMutex
creation of FileMetaData should happen on a single thread
Definition: FileMetaDataCreatorTool.h:168
xAODMaker::FileMetaDataCreatorTool::m_eventStore
ServiceHandle< StoreGateSvc > m_eventStore
DataHeader is produced by another OutputTool, so need StoreGateSvc.
Definition: FileMetaDataCreatorTool.h:130
xAODMaker::FileMetaDataCreatorTool::m_aux
std::unique_ptr< xAOD::FileMetaDataAuxInfo > m_aux
The auxiliary containing the created object.
Definition: FileMetaDataCreatorTool.h:159
xAODMaker::FileMetaDataCreatorTool::preFinalize
StatusCode preFinalize() override
Write the FileMetaData object to the MetaDataStore via the MetaDataSvc.
Definition: FileMetaDataCreatorTool.cxx:88
IOVMetaDataContainer
This class is a container for conditions data. It is intended to be used to store conditions data fro...
Definition: IOVMetaDataContainer.h:37
xAODMaker::FileMetaDataCreatorTool::preStream
StatusCode preStream() override
Called before actually streaming objects.
Definition: FileMetaDataCreatorTool.cxx:83
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
xAODMaker::FileMetaDataCreatorTool::m_key
Gaudi::Property< std::string > m_key
output key for produced xAOD::FileMetaData in MetaDataStore
Definition: FileMetaDataCreatorTool.h:90
skel.it
it
Definition: skel.GENtoEVGEN.py:396
FileMetaDataAuxInfo.h
athena.value
value
Definition: athena.py:124
xAOD::FileMetaData_v1::beamEnergy
@ beamEnergy
Beam energy [float].
Definition: FileMetaData_v1.h:70
FileMetaDataCreatorTool.h
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
xAODMaker
Definition: StoreGateSvc.h:72
xAODMaker::FileMetaDataCreatorTool::m_simInfoKey
Gaudi::Property< std::string > m_simInfoKey
Read simulation parameters.
Definition: FileMetaDataCreatorTool.h:106
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
AthenaAttributeList.h
xAODMaker::FileMetaDataCreatorTool::m_info
std::unique_ptr< xAOD::FileMetaData > m_info
The object created for this output stream.
Definition: FileMetaDataCreatorTool.h:156
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
xAOD::FileMetaData_v1::simFlavour
@ simFlavour
Fast or Full sim [string].
Definition: FileMetaData_v1.h:76
xAODMaker::FileMetaDataCreatorTool::handle
void handle(const Incident &) override
Handle BeginInputFile incident after MetaDataSvc.
Definition: FileMetaDataCreatorTool.cxx:62
xAOD::EventInfo_v1::mcChannelNumber
uint32_t mcChannelNumber() const
The MC generator's channel number.
xAODMaker::FileMetaDataCreatorTool::m_eventInfoKey
Gaudi::Property< std::string > m_eventInfoKey
Key for xAOD::EventInfo to update MC channel number.
Definition: FileMetaDataCreatorTool.h:114
xAOD::FileMetaData_v1::mcCampaign
@ mcCampaign
MC campaign [string].
Definition: FileMetaData_v1.h:80
WriteHandle.h
Handle class for recording to StoreGate.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAODMaker::FileMetaDataCreatorTool::updateFromNonEvent
StatusCode updateFromNonEvent()
Update from Simulation Parameters and TagInfo.
Definition: FileMetaDataCreatorTool.cxx:203
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
xAODMaker::FileMetaDataCreatorTool::m_inputMetaDataStore
ServiceHandle< StoreGateSvc > m_inputMetaDataStore
Access to the input metadata store.
Definition: FileMetaDataCreatorTool.h:136
calibdata.exception
exception
Definition: calibdata.py:496
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAODMaker::FileMetaDataCreatorTool::m_metaDataSvc
ServiceHandle< IAthMetaDataSvc > m_metaDataSvc
Use MetaDataSvc store interface to support output in EventService.
Definition: FileMetaDataCreatorTool.h:133
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
xAOD::FileMetaData_v1::mcProcID
@ mcProcID
Same as mc_channel_number [float].
Definition: FileMetaData_v1.h:74
xAOD::FileMetaData_v1::MetaDataType
MetaDataType
Pre-defined metadata value types.
Definition: FileMetaData_v1.h:54
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
xAODMaker::FileMetaDataCreatorTool::m_dataHeaderKey
Gaudi::Property< std::string > m_dataHeaderKey
Key for DataHeader in StoreGateSvc.
Definition: FileMetaDataCreatorTool.h:122
xAODMaker::FileMetaDataCreatorTool::postInitialize
StatusCode postInitialize() override
Definition: FileMetaDataCreatorTool.cxx:73
merge.output
output
Definition: merge.py:17
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
xAOD::FileMetaData_v1::amiTag
@ amiTag
AMI tag used to process the file the last time [string].
Definition: FileMetaData_v1.h:58
RunTileTBMonitoring.beamEnergy
beamEnergy
Definition: RunTileTBMonitoring.py:248
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
xAOD::FileMetaData_v1::geometryVersion
@ geometryVersion
Geometry version [string].
Definition: FileMetaData_v1.h:66
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAODMaker::FileMetaDataCreatorTool::m_filledNonEvent
bool m_filledNonEvent
FileMetaData has been filled with non-event info.
Definition: FileMetaDataCreatorTool.h:162
FileMetaData.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
xAOD::FileMetaData_v1::generatorsInfo
@ generatorsInfo
Generators information [string].
Definition: FileMetaData_v1.h:82
xAOD::FileMetaData_v1::beamType
@ beamType
Beam type [string].
Definition: FileMetaData_v1.h:72
xAODMaker::FileMetaDataCreatorTool::preExecute
StatusCode preExecute() override
Called at the beginning of AthenaOutputStream::execute().
Definition: FileMetaDataCreatorTool.cxx:78
xAOD::FileMetaData_v1::dataYear
@ dataYear
Data year [uint32_t].
Definition: FileMetaData_v1.h:84
xAODMaker::FileMetaDataCreatorTool::m_tagInfoMgr
ServiceHandle< ITagInfoMgr > m_tagInfoMgr
Access to TagInfoMgr for tags.
Definition: FileMetaDataCreatorTool.h:140
ReadHandle.h
Handle class for reading from StoreGate.
xAOD::FileMetaData_v1::isDataOverlay
@ isDataOverlay
Used data overlay for backgrounds [bool].
Definition: FileMetaData_v1.h:78
xAODMaker::FileMetaDataCreatorTool::initialize
StatusCode initialize() override
Definition: FileMetaDataCreatorTool.cxx:28
xAOD::FileMetaData_v1::conditionsTag
@ conditionsTag
Conditions version used for simulation/reconstruction [string].
Definition: FileMetaData_v1.h:68
xAOD::FileMetaData_v1::dataType
@ dataType
Data type that's in the file [string].
Definition: FileMetaData_v1.h:64
xAOD::FileMetaData_v1::productionRelease
@ productionRelease
Release that was used to make the file [string].
Definition: FileMetaData_v1.h:56
xAODMaker::FileMetaDataCreatorTool::m_filledEvent
bool m_filledEvent
FileMetaData has been filled with event information.
Definition: FileMetaDataCreatorTool.h:165
xAODMaker::FileMetaDataCreatorTool::set
void set(const xAOD::FileMetaData::MetaDataType, bool)
helper method to update FileMetaDataProperty with some checks
Definition: FileMetaDataCreatorTool.cxx:346
ServiceHandle< IIncidentSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
xAODMaker::FileMetaDataCreatorTool::addUniqueValue
void addUniqueValue(const std::string &type, uint32_t value)
helper function to add values to lists
Definition: FileMetaDataCreatorTool.cxx:407