ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MetaDataSvc Class Reference

Manages the content of the metadata stores. More...

#include <MetaDataSvc.h>

Inheritance diagram for MetaDataSvc:
Collaboration diagram for MetaDataSvc:

Classes

class  ToolLockGuard
 

Public Member Functions

 MetaDataSvc (const std::string &name, ISvcLocator *pSvcLocator)
 Standard Service Constructor. More...
 
virtual ~MetaDataSvc ()
 Destructor. More...
 
virtual StatusCode prepareOutput ()
 Makes the metadata store ready for output. More...
 
virtual void handle (const Incident &incident) override
 react to file incidents. More...
 
StatusCode transitionMetaDataFile (const std::string &outputConn, bool disconnect)
 Transition output metadata file - fire MeteDataStop incident to transition OutputStream and disconnect now if requested. More...
 
virtual StatusCode io_reinit () override
 Implements IIoComponent interface sets m_outputPrepared to false and prints some information. More...
 
StatusCode rootOpenAction (FILEMGR_CALLBACK_ARGS)
 
virtual StoreGateSvcoutputDataStore () const override final
 
virtual const std::string currentRangeID () const override final
 
CLID remapMetaContCLID (const CLID &item_id) const
 
void lockTools () const
 
void unlockTools () const
 
void recordHook (const std::type_info &) override
 
void removeHook (const std::type_info &) override
 
std::string removeStreamFromKey (std::string &key)
 check if the metadata object key contains Stream name (added by SharedWriter in MetaDataSvc) remove stream part from the key (i.e. More...
 
virtual std::set< std::string > getPerStreamKeysFor (const std::string &key) const override final
 Get all per-stream Key variants created for in-file metadata object with original key If no stream-specific keys are found, it returns the original key. More...
 
virtual StatusCode initialize () override
 initialize the metadata service at the beginning of the job More...
 
virtual StatusCode stop () override
 stop the metadata service More...
 
virtual StatusCode finalize () override
 finalize the metadata service at the end of the job More...
 
virtual StatusCode newMetadataSource (const Incident &)
 Fills the input metadata store with the content of the new input file. More...
 
virtual StatusCode retireMetadataSource (const Incident &)
 Allows metadata tools to act before an input file is closed. More...
 
virtual StatusCode prepareOutput (const std::string &outputName)
 Makes the metadata store ready for output with SharedWriter Calls the metaDataStop method of all MetaDataTool interfaces in m_metaDataTool. More...
 
virtual StatusCode shmProxy (const std::string &filename) override
 Loads file metadata from memory shared between streams in SharedWriter This function clears the input and output metadata stores. More...
 
StatusCode preLoadAddresses (StoreID::type, IAddressProvider::tadList &) override
 does nothing. More...
 
StatusCode loadAddresses (StoreID::type storeID, IAddressProvider::tadList &tads) override
 loads addresses of versioned metadata object. More...
 
StatusCode updateAddress (StoreID::type, SG::TransientAddress *, const EventContext &) override
 always fails More...
 

Private Member Functions

StatusCode addProxyToInputMetaDataStore (const std::string &tokenStr)
 
StatusCode initInputMetaDataStore (const std::string &fileName)
 Initialize input metadata store - can be called directly or via BeginInputFile incident. More...
 

Private Attributes

ServiceHandle< StoreGateSvcm_inputDataStore
 
ServiceHandle< StoreGateSvcm_outputDataStore
 
ServiceHandle< IAddressCreator > m_addrCrtr
 
ServiceHandle< IFileMgr > m_fileMgr
 
ServiceHandle< IIncidentSvc > m_incSvc
 
ServiceHandle< OutputStreamSequencerSvcm_outSeqSvc
 
ServiceHandle< IClassIDSvc > m_classIDSvc {"ClassIDSvc", name()}
 
long m_storageType
 
bool m_clearedInputDataStore
 
bool m_clearedOutputDataStore
 
bool m_allowMetaDataStop
 
bool m_outputPrepared
 
std::map< std::string, CLIDm_persToClid
 
std::set< CLIDm_handledClasses
 
const std::string m_streamInKeyMark = "__STREAM["
 marker string for embedding stream name in MetaData object keys for SharedWriter server More...
 
std::map< std::string, std::set< std::string > > m_streamKeys
 
StringProperty m_metaDataCont
 MetaDataContainer, POOL container name for MetaData. More...
 
ToolHandleArray< IMetaDataToolm_metaDataTools
 MetaDataTools, vector with the MetaData tools. More...
 

Detailed Description

Manages the content of the metadata stores.

This service orchestrates the reading of metadata from input files and its propagation to the output with the help of the IMetaDataTool interfaces in m_metaDataTools. The MetaDataSvc reacts to BeginInputFile and EndInputFile incidents. It relies on the AthenaPoolCnvSvc (or whatever persistency service) to call the the appropriate prepareOutput method when committing the MetaDataStore content to the output file.

On BeginInputFile it clears the InputMetaDataStore and populates it with content from the new input file. The beginInputFile methods of all tools are called to allow required actions on the metadata objects.

On EndInputFile the MetaDataSvc calls the endInputFile methods of all the interfaces in m_metaDataTools .

In jobs with multiple parallel output streams (SharedWriter) the metadata content from multiple streams is put into the output MetaDataStore. To do this the The MetaDataSvc accesses the memory shared with the output streams, and adds the content of their MetaDataStore to the shared InputMetaDataStore. This is done by the client calling shmProxy for each object to be added to the MetaDataStore. Afterwards the client must also fire BeginInputFile and EndInputFile incidents to allow the MetaDataTools to move their objects from the InputMetaDataStore to the MetaDataStore taking care of possible merges.

Example configuration:

ca.addService(CompFactory.StoreGateSvc("MetaDataStore"))
ca.addService(CompFactory.StoreGateSvc("InputMetaDataStore"))
metaDataSvc = CompFactory.MetaDataSvc("MetaDataSvc")
ca.addService(
CompFactory.ProxyProviderSvc(ProviderNames=["MetaDataSvc"]))
metaDataSvc.MetaDataTools += [someMetaDataTool]
See also
IMetaDataTool
AthenaPoolCnvSvc

Definition at line 84 of file MetaDataSvc.h.

Constructor & Destructor Documentation

◆ MetaDataSvc()

MetaDataSvc::MetaDataSvc ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Standard Service Constructor.

Definition at line 52 of file MetaDataSvc.cxx.

52  : base_class(name, pSvcLocator),
53  m_inputDataStore("StoreGateSvc/InputMetaDataStore", name),
54  m_outputDataStore("StoreGateSvc/MetaDataStore", name),
55  m_addrCrtr("AthenaPoolCnvSvc", name),
56  m_fileMgr("FileMgr", name),
57  m_incSvc("IncidentSvc", name),
58  m_outSeqSvc("OutputStreamSequencerSvc", name),
59  m_storageType(0L),
62  m_allowMetaDataStop(false),
63  m_outputPrepared(false),
64  m_persToClid() {
65  // declare properties
66  declareProperty("MetaDataContainer", m_metaDataCont = "");
67  declareProperty("MetaDataTools", m_metaDataTools);
68  declareProperty("CnvSvc", m_addrCrtr = ServiceHandle<IAddressCreator>("AthenaPoolCnvSvc", name));
69  // persistent class name to transient CLID map
70  m_persToClid.insert(std::pair<std::string, CLID>("DataHeader_p5", 222376821));
71  m_persToClid.insert(std::pair<std::string, CLID>("EventStreamInfo_p3", 167728019));
72  m_persToClid.insert(std::pair<std::string, CLID>("ByteStreamMetadataContainer_p1", 1076128893));
73  m_persToClid.insert(std::pair<std::string, CLID>("IOVMetaDataContainer_p1", 1316383046));
74  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::EventFormat_v1", 243004407));
75  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::CutBookkeeperContainer_v1", 1234982351));
76  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::CutBookkeeperAuxContainer_v1", 1147935274));
77  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TriggerMenuContainer_v1", 1107011239));
78  m_persToClid.insert(std::pair<std::string, CLID>("DataVector<xAOD::TriggerMenu_v1>", 1107011239));
79  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TriggerMenuAuxContainer_v1", 1212409402));
80  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TriggerMenuJsonContainer_v1", 1221262614));
81  m_persToClid.insert(std::pair<std::string, CLID>("DataVector<xAOD::TriggerMenuJson_v1>", 1221262614));
82  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TriggerMenuJsonAuxContainer_v1", 373045213));
83  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::LumiBlockRangeContainer_v1", 1115934851));
84  m_persToClid.insert(std::pair<std::string, CLID>("DataVector<xAOD::LumiBlockRange_v1>", 1115934851));
85  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::LumiBlockRangeAuxContainer_v1", 1251061086));
86  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::FileMetaData_v1", 178309087));
87  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::FileMetaDataAuxInfo_v1", 73252552));
88  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::RingSetConfContainer_v1", 1157997427));
89  m_persToClid.insert(std::pair<std::string, CLID>("DataVector<xAOD::RingSetConf_v1>", 1157997427));
90  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::RingSetConfAuxContainer_v1", 1307745126));
91  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TruthMetaDataContainer_v1", 1188015687));
92  m_persToClid.insert(std::pair<std::string, CLID>("DataVector<xAOD::TruthMetaData_v1>", 1188015687));
93  m_persToClid.insert(std::pair<std::string, CLID>("xAOD::TruthMetaDataAuxContainer_v1", 1094306618));
94 }

◆ ~MetaDataSvc()

MetaDataSvc::~MetaDataSvc ( )
virtual

Destructor.

Definition at line 96 of file MetaDataSvc.cxx.

96  {
97 }

Member Function Documentation

◆ addProxyToInputMetaDataStore()

StatusCode MetaDataSvc::addProxyToInputMetaDataStore ( const std::string &  tokenStr)
private

Definition at line 432 of file MetaDataSvc.cxx.

432  {
433  std::string fileName = tokenStr.substr(tokenStr.find("[FILE=") + 6);
434  leftString(fileName, ']');
435  std::string className = tokenStr.substr(tokenStr.find("[PNAME=") + 7);
436  leftString(className, ']');
437  std::string contName = tokenStr.substr(tokenStr.find("[CONT=") + 6);
438  leftString(contName,']');
439  std::size_t pos1 = contName.find('(');
440  std::string keyName = contName.substr(pos1 + 1, contName.size() - pos1 - 2);
441  std::size_t pos2 = keyName.find('/');
442  if (pos2 != std::string::npos) keyName = keyName.substr(pos2 + 1);
443  std::string numName = tokenStr.substr(tokenStr.find("[NUM=") + 5);
444  leftString(numName,']');
445  unsigned long num = 0;
446  std::istringstream iss(numName);
447  iss >> num;
448  CLID clid = m_persToClid[className];
449  if (clid == 167728019) { // EventStreamInfo, will change tool to combine input metadata, clearing things before...
450  bool foundTool = false;
451  for (auto iter = m_metaDataTools.begin(), iterEnd = m_metaDataTools.end(); iter != iterEnd; iter++) {
452  if ((*iter)->name() == "ToolSvc.CopyEventStreamInfo") foundTool = true;
453  }
454  if (!foundTool) {
455  if (serviceLocator()->existsService("CutFlowSvc")) {
456  ServiceHandle<IIncidentListener> cfSvc("CutFlowSvc", this->name()); // Disable CutFlowSvc by stopping its incidents.
457  if (cfSvc.retrieve().isSuccess()) {
458  ATH_MSG_INFO("Disabling incidents for: " << cfSvc.name());
459  m_incSvc->removeListener(cfSvc.get(), IncidentType::BeginInputFile);
460  m_incSvc->removeListener(cfSvc.get(), "MetaDataStop");
461  cfSvc.release().ignore();
462  }
463  }
464  if (serviceLocator()->existsService("xAODConfigSvc")) {
465  ServiceHandle<IIncidentListener> xcSvc("xAODConfigSvc", this->name()); // Disable xAODConfigSvc, fails for merging
466  if (xcSvc.retrieve().isSuccess()) {
467  ATH_MSG_INFO("Disabling incidents for: " << xcSvc.name());
468  m_incSvc->removeListener(xcSvc.get(), IncidentType::BeginInputFile);
469  m_incSvc->removeListener(xcSvc.get(), IncidentType::BeginEvent);
470  xcSvc.release().ignore();
471  }
472  }
473  }
474  }
475 
476  // make stream-unique keys for infile metadata objects
477  // AthenaOutputStream will use this to distribute objects to the right stream (and restore the original key)
478  if( clid == 178309087 ) { // FileMetaData
479  std::string newName = keyName + m_streamInKeyMark + fileName + "]";
480  ATH_MSG_DEBUG("Recording " << keyName << " as " << newName);
481  m_streamKeys[keyName].insert(newName);
482  keyName = std::move(newName);
483  }
484  if( clid == 73252552 ) { // FileMetaDataAuxInfo
485  std::string newName = keyName.substr(0, keyName.find(RootAuxDynIO::AUX_POSTFIX)) + m_streamInKeyMark
487  ATH_MSG_DEBUG("Recording " << keyName << " as " << newName);
488  m_streamKeys[keyName].insert(newName);
489  keyName = std::move(newName);
490  }
491  const std::string par[3] = { "SHM" , keyName , className };
492  const unsigned long ipar[2] = { num , 0 };
493  IOpaqueAddress* opqAddr = nullptr;
494  SG::DataProxy* dp = m_inputDataStore->proxy(clid, keyName);
495  if (dp != nullptr) {
496  ATH_MSG_DEBUG("Resetting duplicate proxy for: " << clid << "#" << keyName << " from file: " << fileName);
497  dp->reset();
498  }
499  if (!m_addrCrtr->createAddress(m_storageType, clid, par, ipar, opqAddr).isSuccess()) {
500  ATH_MSG_FATAL("addProxyToInputMetaDataStore: Cannot create address for " << tokenStr);
501  return(StatusCode::FAILURE);
502  }
503  if (m_inputDataStore->recordAddress(keyName, opqAddr).isFailure()) {
504  delete opqAddr; opqAddr = nullptr;
505  ATH_MSG_FATAL("addProxyToInputMetaDataStore: Cannot create proxy for " << tokenStr);
506  return(StatusCode::FAILURE);
507  }
508  if (m_inputDataStore->accessData(clid, keyName) == nullptr) {
509  ATH_MSG_FATAL("addProxyToInputMetaDataStore: Cannot access data for " << tokenStr);
510  return(StatusCode::FAILURE);
511  }
512  if (keyName.find(RootAuxDynIO::AUX_POSTFIX) != std::string::npos
513  && m_inputDataStore->symLink(clid, keyName, 187169987).isFailure()) {
514  ATH_MSG_WARNING("addProxyToInputMetaDataStore: Cannot symlink to AuxStore for " << tokenStr);
515  }
516  return(StatusCode::SUCCESS);
517 }

◆ currentRangeID()

const std::string MetaDataSvc::currentRangeID ( ) const
finaloverridevirtual

Definition at line 586 of file MetaDataSvc.cxx.

587 {
588  return m_outSeqSvc.isValid()? m_outSeqSvc->currentRangeID() : "";
589 }

◆ finalize()

StatusCode MetaDataSvc::finalize ( )
overridevirtual

finalize the metadata service at the end of the job

Definition at line 151 of file MetaDataSvc.cxx.

151  {
152  // Release IncidentService
153  if (!m_incSvc.release().isSuccess()) {
154  ATH_MSG_WARNING("Cannot release IncidentService.");
155  }
156  // Release FileMgr
157  if (!m_fileMgr.release().isSuccess()) {
158  ATH_MSG_WARNING("Cannot release FileMgr.");
159  }
160  // Release AddressCreator
161  if (!m_addrCrtr.release().isSuccess()) {
162  ATH_MSG_WARNING("Cannot release AddressCreator.");
163  }
164  // Release OutputMetaDataStore
165  if (!m_outputDataStore.release().isSuccess()) {
166  ATH_MSG_WARNING("Cannot release OutputMetaDataStore.");
167  }
168  // Release InputMetaDataStore
169  if (!m_inputDataStore.release().isSuccess()) {
170  ATH_MSG_WARNING("Cannot release InputMetaDataStore.");
171  }
172  return(StatusCode::SUCCESS);
173 }

◆ getPerStreamKeysFor()

std::set< std::string > MetaDataSvc::getPerStreamKeysFor ( const std::string &  key) const
finaloverridevirtual

Get all per-stream Key variants created for in-file metadata object with original key If no stream-specific keys are found, it returns the original key.

Definition at line 424 of file MetaDataSvc.cxx.

424  {
425  auto iter = m_streamKeys.find( key );
426  if( iter == m_streamKeys.end() ) {
427  return std::set<std::string>( {key} );
428  }
429  return iter->second;
430 }

◆ handle()

void MetaDataSvc::handle ( const Incident &  incident)
overridevirtual

react to file incidents.

calls newMetadataSource on BeginInputFile and retireMetadataSource on EndInputFile. Does

Parameters
incidentis expected to be BeginInputFile or EndInputFile

Definition at line 336 of file MetaDataSvc.cxx.

336  {
337  const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc);
338  if (fileInc == nullptr) {
339  ATH_MSG_ERROR("Unable to get FileName from EndInputFile incident");
340  return;
341  }
342  const std::string fileName = fileInc->fileName();
343  ATH_MSG_DEBUG("handle() " << inc.type() << " for " << fileName);
344 
345  if (inc.type() == "FirstInputFile") {
346  // Register open/close callback actions
347  using namespace boost::placeholders;
348  Io::bfcn_action_t boa = boost::bind(&MetaDataSvc::rootOpenAction, this, _1,_2);
349  if (m_fileMgr->regAction(boa, Io::OPEN).isFailure()) {
350  ATH_MSG_FATAL("Cannot register ROOT file open action with FileMgr.");
351  }
352  if (!initInputMetaDataStore(fileName).isSuccess()) {
353  ATH_MSG_WARNING("Unable to initialize InputMetaDataStore");
354  }
355  } else if (inc.type() == "BeginInputFile") {
356  if(newMetadataSource(inc).isFailure()) {
357  ATH_MSG_ERROR("Could not process new metadata source " << fileName);
358  }
359  } else if (inc.type() == "EndInputFile") {
360  if(retireMetadataSource(inc).isFailure()) {
361  ATH_MSG_ERROR("Could not retire metadata source " << fileName);
362  }
363  }
364 }

◆ initialize()

StatusCode MetaDataSvc::initialize ( )
overridevirtual

initialize the metadata service at the beginning of the job

Definition at line 99 of file MetaDataSvc.cxx.

99  {
100  ATH_MSG_INFO("Initializing " << name());
101 
102  // Retrieve InputMetaDataStore
103  ATH_CHECK( m_inputDataStore.retrieve() );
104  // Retrieve OutputMetaDataStore
105  ATH_CHECK( m_outputDataStore.retrieve() );
106  // Retrieve AddressCreator
107  ATH_CHECK( m_addrCrtr.retrieve() );
108 
109  AthCnvSvc* cnvSvc = dynamic_cast<AthCnvSvc*>(m_addrCrtr.operator->());
110  if (cnvSvc) {
111  m_storageType = cnvSvc->repSvcType();
112  } else {
113  ATH_MSG_WARNING("Cannot get ConversionSvc Interface.");
114  }
115  // Get FileMgr
116  ATH_CHECK( m_fileMgr.retrieve() );
117 
118  // Set to be listener for end of event
119  ATH_CHECK( m_incSvc.retrieve() );
120 
121  ATH_CHECK( m_metaDataTools.retrieve() );
122  ATH_MSG_INFO("Found " << m_metaDataTools);
123 
124  m_incSvc->addListener(this, "FirstInputFile", 80, true);
125  m_incSvc->addListener(this, "BeginInputFile", 80, true);
126  m_incSvc->addListener(this, "EndInputFile", 10, true);
127 
128  // Register this service for 'I/O' events
129  ServiceHandle<IIoComponentMgr> iomgr("IoComponentMgr", this->name());
130  ATH_CHECK( iomgr.retrieve() );
131  ATH_CHECK( iomgr->io_register(this) );
132 
133  ServiceHandle<Gaudi::Interfaces::IOptionsSvc> joSvc("JobOptionsSvc", name());
134  if (!joSvc.retrieve().isSuccess()) {
135  ATH_MSG_WARNING("Cannot get JobOptionsSvc.");
136  } else {
137  if (joSvc->has("EventSelector.InputCollections")) {
138  // Get EventSelector to force in-time initialization and FirstInputFile incident
139  ServiceHandle<IEvtSelector> evtsel("EventSelector", this->name());
140  if (!evtsel.retrieve().isSuccess()) {
141  ATH_MSG_WARNING("Cannot get EventSelector.");
142  }
143  }
144  }
145  // retrieve the output sequences service (EventService) if available
146  m_outSeqSvc.retrieve().ignore();
147 
148  return(StatusCode::SUCCESS);
149 }

◆ initInputMetaDataStore()

StatusCode MetaDataSvc::initInputMetaDataStore ( const std::string &  fileName)
private

Initialize input metadata store - can be called directly or via BeginInputFile incident.

Definition at line 519 of file MetaDataSvc.cxx.

519  {
520  ATH_MSG_DEBUG("initInputMetaDataStore: file name " << fileName);
521  m_clearedInputDataStore = false;
522  // Load proxies for InputMetaDataStore
523  if (m_metaDataCont.value().empty()) {
524  ATH_MSG_DEBUG("MetaDataSvc called without MetaDataContainer set.");
525  return(StatusCode::SUCCESS);
526  }
527  if (fileName.starts_with( "BSF:")) {
528  ATH_MSG_DEBUG("MetaDataSvc called for non ROOT file.");
529  } else if (fileName.compare(0, 3, "SHM")==0) {
530  ATH_MSG_DEBUG("MetaDataSvc called for shared memory.");
531  } else {
532  const std::string par[2] = { fileName, m_metaDataCont.value() + "(DataHeader)" };
533  const std::string parOld[2] = { fileName, m_metaDataCont.value() + "DataHeader" };
534  for (int verNumber = 0; verNumber < 100; verNumber++) {
535  SG::VersionedKey myVersKey(name(), verNumber);
536  if (m_inputDataStore->contains<DataHeader>(myVersKey)) {
537  ATH_MSG_DEBUG("initInputMetaDataStore: MetaData Store already contains DataHeader, key = " << myVersKey);
538  } else {
539  const unsigned long ipar[2] = { (unsigned long)verNumber , 0 };
540  IOpaqueAddress* opqAddr = nullptr;
541  if (!m_addrCrtr->createAddress(m_storageType, ClassID_traits<DataHeader>::ID(), par, ipar, opqAddr).isSuccess()) {
542  if (!m_addrCrtr->createAddress(m_storageType, ClassID_traits<DataHeader>::ID(), parOld, ipar, opqAddr).isSuccess()) {
543  break;
544  }
545  }
546  if (m_inputDataStore->recordAddress(myVersKey, opqAddr).isFailure()) {
547  delete opqAddr; opqAddr = nullptr;
548  ATH_MSG_WARNING("initInputMetaDataStore: Cannot create proxy for DataHeader, key = " << myVersKey);
549  }
550  }
551  }
552  std::list<SG::TransientAddress*> tList;
553  if (!loadAddresses(StoreID::METADATA_STORE, tList).isSuccess()) {
554  ATH_MSG_ERROR("Unable to load MetaData Proxies");
555  return StatusCode::FAILURE;
556  }
557  for (SG::TransientAddress* tad : tList) {
558  CLID clid = tad->clID();
559  ATH_MSG_VERBOSE("initInputMetaDataStore: add proxy for clid = " << clid << ", key = " << tad->name());
560  if (m_inputDataStore->contains(tad->clID(), tad->name())) {
561  ATH_MSG_DEBUG("initInputMetaDataStore: MetaData Store already contains clid = " << clid << ", key = " << tad->name());
562  } else {
563  if (!m_inputDataStore->recordAddress(tad->name(), tad->address())) {
564  ATH_MSG_ERROR("initInputMetaDataStore: Cannot create proxy for clid = " << clid << ", key = " << tad->name());
565  return StatusCode::FAILURE;
566  }
567  }
568 
569  for (CLID tclid : tad->transientID()) {
570  if (tclid != clid) {
571  if (m_inputDataStore->symLink (clid, tad->name(), tclid).isFailure()) {
572  ATH_MSG_WARNING("Cannot make autosymlink from " <<
573  clid << "/" << tad->name() << " to " << tclid);
574  }
575  }
576  }
577  delete tad;
578  }
579  tList.clear();
580  }
581  ATH_MSG_DEBUG("Loaded input meta data store proxies");
582  return(StatusCode::SUCCESS);
583 }

◆ io_reinit()

StatusCode MetaDataSvc::io_reinit ( )
overridevirtual

Implements IIoComponent interface sets m_outputPrepared to false and prints some information.

Returns
SUCCESS
See also
IIoComponent

Definition at line 395 of file MetaDataSvc.cxx.

395  {
396  ATH_MSG_INFO("I/O reinitialization...");
397  ATH_MSG_DEBUG("Dumping InputMetaDataStore: " << m_inputDataStore->dump());
398  ATH_MSG_DEBUG("Dumping OutputMetaDataStore: " << m_outputDataStore->dump());
399  for (auto iter = m_metaDataTools.begin(),
400  last = m_metaDataTools.end(); iter != last; iter++) {
401  ATH_MSG_INFO("Attached MetaDataTool: " << (*iter)->name());
402  }
403  m_outputPrepared = false;
404  return(StatusCode::SUCCESS);
405 }

◆ loadAddresses()

StatusCode MetaDataSvc::loadAddresses ( StoreID::type  storeID,
IAddressProvider::tadList tads 
)
override

loads addresses of versioned metadata object.

loops over all versions of the DataHeader and adds addresses of objects from DataHeaderElements to the tads with a version corresponding to version number of the DataHeader that contained them.

See also
ObjectWithVersion
DataHeader
Parameters
storeID[IN] the identity of the store
tads[OUT] list of addresses to objects from versions keys
Returns
FAILURE the DataHeader could not be retrieved, else SUCCESS

Definition at line 185 of file MetaDataSvc.cxx.

185  {
186  if (storeID != StoreID::METADATA_STORE) { // should this (also) run in the INPUT_METADATA_STORE?
187  return(StatusCode::SUCCESS);
188  }
189  // Put Additional MetaData objects into Input MetaData Store using VersionedKey
190  std::list<SG::ObjectWithVersion<DataHeader> > allVersions;
191  StatusCode sc = m_inputDataStore->retrieveAllVersions(allVersions, name());
192  if (!sc.isSuccess()) {
193  ATH_MSG_WARNING("Could not retrieve all versions for DataHeader, will not read Metadata");
194  } else {
195  int verNumber = -1;
196  for (SG::ObjectWithVersion<DataHeader>& obj : allVersions) {
197  ++verNumber;
198  const DataHeader* dataHeader = obj.dataObject.cptr();
199  if (dataHeader == nullptr) {
200  ATH_MSG_ERROR("Could not get DataHeader, will not read Metadata");
201  return(StatusCode::FAILURE);
202  }
203  for (const DataHeaderElement& dhe : *dataHeader) {
204  const CLID clid = dhe.getPrimaryClassID();
205  if (clid != ClassID_traits<DataHeader>::ID()) {
206  SG::VersionedKey myVersObjKey(dhe.getKey(), verNumber);
207  std::string key = dhe.getKey();
208  if (verNumber != 0) key = myVersObjKey;
209  tads.push_back(dhe.getAddress(key));
210  }
211  }
212  }
213  }
214  return(StatusCode::SUCCESS);
215 }

◆ lockTools()

void MetaDataSvc::lockTools ( ) const

Definition at line 639 of file MetaDataSvc.cxx.

640 {
641  ATH_MSG_DEBUG("Locking metadata tools");
642  for(auto tool : m_metaDataTools ) {
643  ILockableTool *lockable = dynamic_cast<ILockableTool*>( tool.get() );
644  if( lockable ) lockable->lock_shared();
645  }
646 }

◆ newMetadataSource()

StatusCode MetaDataSvc::newMetadataSource ( const Incident &  inc)
virtual

Fills the input metadata store with the content of the new input file.

Once the GUID and name of the input file are determined from the incident this function blocks stopping the MetaDataSvc by setting m_allowMetaDataStop to false. Then attempts first to clear the input metadata store and prepare it for the metadata tools by calling initInputMetaDataStore. The loops over all MetaDataTool interfaces in m_metaDataTools and calls their beginInputFile implementations.

See also
initInputMetaDataStore()
m_metaDataTools
Parameters
incThe BeginInputFile incident fired on opening a new file
Returns
FAILURE when inc is not a file incident, the input metadata store cannot be set up, or a MetaDataTool fails. Otherwise SUCCESS.

Definition at line 217 of file MetaDataSvc.cxx.

218 {
219  const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc);
220  if (fileInc == nullptr) {
221  ATH_MSG_ERROR("Unable to get FileName from EndInputFile incident");
222  return StatusCode::FAILURE;
223  }
224  const std::string guid = fileInc->fileGuid();
225  const std::string fileName = fileInc->fileName();
226  m_allowMetaDataStop = false;
227  if (!fileName.starts_with( "BSF:")) {
228  // the input file is _not_ bytestream
230  if (!m_inputDataStore->clearStore().isSuccess()) {
231  ATH_MSG_WARNING("Unable to clear input MetaData Proxies");
232  }
234  }
235  if (!initInputMetaDataStore(fileName).isSuccess()) {
236  ATH_MSG_ERROR("Unable to initialize InputMetaDataStore");
237  return StatusCode::FAILURE;
238  }
239  }
240  StatusCode rc(StatusCode::SUCCESS);
241  for (auto it = m_metaDataTools.begin(); it != m_metaDataTools.end(); ++it) {
242  ATH_MSG_DEBUG(" calling beginInputFile on " << (*it)->name() << " for GUID \"" << guid << "\"");
243  if ( (*it)->beginInputFile(guid).isFailure() ) {
244  ATH_MSG_ERROR("Unable to call beginInputFile for " << (*it)->name());
245  rc = StatusCode::FAILURE;
246  }
247  }
248  return rc;
249 }

◆ outputDataStore()

virtual StoreGateSvc* MetaDataSvc::outputDataStore ( ) const
inlinefinaloverridevirtual

Definition at line 235 of file MetaDataSvc.h.

235  {
236  return &*m_outputDataStore;
237  }

◆ preLoadAddresses()

StatusCode MetaDataSvc::preLoadAddresses ( StoreID::type  ,
IAddressProvider::tadList  
)
inlineoverride

does nothing.

Parameters
storeID[IN] store ID, this function only preloads detector store addresses.
tads[OUT] list of the transient addresses which were preloaded.
Returns
SUCCESS

Definition at line 184 of file MetaDataSvc.h.

185  {
186  return StatusCode::SUCCESS;
187  }

◆ prepareOutput()

StatusCode MetaDataSvc::prepareOutput ( )
virtual

Makes the metadata store ready for output.

Calls the metaDataStop method of all MetaDataTool interfaces in m_metaDataTool. Then release the metadata tools. This implementation assumes SharedWriter is not being used.

Returns
SUCCESS unless a MetaDataTool fails, then FAILURE

Definition at line 271 of file MetaDataSvc.cxx.

272 {
273  StatusCode rc(StatusCode::SUCCESS);
274  // Check if already called
275  if (!m_outputPrepared) {
276  for (auto it = m_metaDataTools.begin(); it != m_metaDataTools.end(); ++it) {
277  ATH_MSG_DEBUG(" calling metaDataStop for " << (*it)->name());
278  if ( (*it)->metaDataStop().isFailure() ) {
279  ATH_MSG_ERROR("Unable to call metaDataStop for " << (*it)->name());
280  rc = StatusCode::FAILURE;
281  }
282  }
283  if (!m_metaDataTools.release().isSuccess()) {
284  ATH_MSG_WARNING("Cannot release " << m_metaDataTools);
285  }
286  }
287  m_outputPrepared=true;
288  return rc;
289 }

◆ recordHook()

void MetaDataSvc::recordHook ( const std::type_info &  typeInfo)
override

Definition at line 613 of file MetaDataSvc.cxx.

613  {
614  const std::string& typeName = System::typeinfoName(typeInfo);
615  ATH_MSG_VERBOSE("Handling record event of type " << typeName);
616 
617  CLID itemID = 0;
618  if (m_classIDSvc->getIDOfTypeInfoName(typeName, itemID).isSuccess()) {
619  auto result = m_handledClasses.insert(itemID);
620  if (result.second)
621  ATH_MSG_DEBUG("MetaDataSvc will handle " << typeName
622  << " ClassID: " << itemID);
623  }
624 }

◆ remapMetaContCLID()

CLID MetaDataSvc::remapMetaContCLID ( const CLID item_id) const

Definition at line 592 of file MetaDataSvc.cxx.

593 {
594  auto it = m_handledClasses.find(itemID);
595  if (it == m_handledClasses.end()) {
596  ATH_MSG_DEBUG("Not translating metadata item ID #" << itemID);
597  return itemID;
598  }
599 
600  std::string itemName;
601  CLID contID = 0;
602  if (m_classIDSvc->getTypeNameOfID(itemID, itemName).isSuccess()) {
603  const std::string contName = "MetaCont<" + itemName + ">";
604  ATH_MSG_DEBUG("Transforming " << contName << " to " << itemName
605  << " for output");
606  if (m_classIDSvc->getIDOfTypeName(contName, contID).isSuccess())
607  return contID;
608  }
609 
610  return itemID;
611 }

◆ removeHook()

void MetaDataSvc::removeHook ( const std::type_info &  typeInfo)
override

Definition at line 626 of file MetaDataSvc.cxx.

626  {
627  const std::string& typeName = System::typeinfoName(typeInfo);
628  ATH_MSG_VERBOSE("Handling removal event of type " << typeName);
629 
630  CLID itemID = 0;
631  if (m_classIDSvc->getIDOfTypeInfoName(typeName, itemID).isSuccess()) {
632  if (0 < m_handledClasses.erase(itemID))
633  ATH_MSG_DEBUG("MetaDataSvc will no longer handle " << typeName
634  << " ClassID: " << itemID);
635  }
636 }

◆ removeStreamFromKey()

std::string MetaDataSvc::removeStreamFromKey ( std::string &  key)

check if the metadata object key contains Stream name (added by SharedWriter in MetaDataSvc) remove stream part from the key (i.e.

modify the parameter) and return it

Definition at line 413 of file MetaDataSvc.cxx.

413  {
414  size_t pos = key.find(m_streamInKeyMark);
415  if( pos==std::string::npos ) return "";
416  size_t epos = key.find(']', pos);
417  size_t spos = pos + m_streamInKeyMark.size();
418  std::string stream = key.substr( spos, epos - spos );
419  //cppcheck-suppress uselessCallsSubstr
420  key = key.substr(0, pos) + key.substr(epos+1);
421  return stream;
422 }

◆ retireMetadataSource()

StatusCode MetaDataSvc::retireMetadataSource ( const Incident &  inc)
virtual

Allows metadata tools to act before an input file is closed.

Grabs the file GUID then calls the the endInputFile method of all metadata tools in m_metaDataTools providing the GUID as argument.

Parameters
incis a file incident fired before closing an input file
Returns
SUCCESS unless a MetaDataTool fails, then FAILURE

Definition at line 251 of file MetaDataSvc.cxx.

252 {
253  const FileIncident* fileInc = dynamic_cast<const FileIncident*>(&inc);
254  if (fileInc == nullptr) {
255  ATH_MSG_ERROR("Unable to get FileName from EndInputFile incident");
256  return StatusCode::FAILURE;
257  }
258  const std::string guid = fileInc->fileGuid();
259  ATH_MSG_DEBUG("retireMetadataSource: " << fileInc->fileName());
260  for (auto it = m_metaDataTools.begin(); it != m_metaDataTools.end(); ++it) {
261  ATH_MSG_DEBUG(" calling endInputFile on " << (*it)->name() << " for GUID \"" << guid << "\"");
262  if ( (*it)->endInputFile(guid).isFailure() ) {
263  ATH_MSG_ERROR("Unable to call endInputFile for " << (*it)->name());
264  return StatusCode::FAILURE;
265  }
266  }
267  m_allowMetaDataStop = true;
268  return StatusCode::SUCCESS;
269 }

◆ rootOpenAction()

StatusCode MetaDataSvc::rootOpenAction ( FILEMGR_CALLBACK_ARGS  )

Definition at line 407 of file MetaDataSvc.cxx.

407  {
408  return(StatusCode::SUCCESS);
409 }

◆ stop()

StatusCode MetaDataSvc::stop ( )
overridevirtual

stop the metadata service

Definition at line 176 of file MetaDataSvc.cxx.

176  {
177  ATH_MSG_DEBUG("MetaDataSvc::stop()");
178  // Fire metaDataStopIncident
179  Incident metaDataStopIncident(name(), "MetaDataStop");
180  m_incSvc->fireIncident(metaDataStopIncident);
181  return(StatusCode::SUCCESS);
182 }

◆ transitionMetaDataFile()

StatusCode MetaDataSvc::transitionMetaDataFile ( const std::string &  outputConn,
bool  disconnect 
)

Transition output metadata file - fire MeteDataStop incident to transition OutputStream and disconnect now if requested.

Definition at line 368 of file MetaDataSvc.cxx.

369 {
370  ATH_MSG_DEBUG("transitionMetaDataFile: " << outputConn );
371 
372  // this is normally called through EndInputFile inc, simulate it for EvSvc
373  FileIncident inc("transitionMetaDataFile", "EndInputFile", "dummyMetaInputFileName", "");
375 
376  // Reset flag to allow calling prepareOutput again at next transition
377  m_outputPrepared = false;
378 
379  Incident metaDataStopIncident(name(), "MetaDataStop");
380  m_incSvc->fireIncident(metaDataStopIncident);
381 
382  if( disconnect ) {
383  AthCnvSvc* cnvSvc = dynamic_cast<AthCnvSvc*>(m_addrCrtr.operator->());
384  if (cnvSvc) {
385  if (!cnvSvc->disconnectOutput(outputConn).isSuccess()) {
386  ATH_MSG_WARNING("Cannot get disconnect Output Files");
387  }
388  }
389  }
390 
391  return(StatusCode::SUCCESS);
392 }

◆ unlockTools()

void MetaDataSvc::unlockTools ( ) const

Definition at line 649 of file MetaDataSvc.cxx.

650 {
651  ATH_MSG_DEBUG("Unlocking metadata tools");
652  for(auto tool : m_metaDataTools ) {
653  ILockableTool *lockable = dynamic_cast<ILockableTool*>( tool.get() );
654  if( lockable ) lockable->unlock_shared();
655  }
656 }

◆ updateAddress()

StatusCode MetaDataSvc::updateAddress ( StoreID::type  ,
SG::TransientAddress ,
const EventContext &   
)
inlineoverride

always fails

Parameters
storeID[IN] the identity of the store
tad[IN] transient address to be updated
ctx[IN] current event's context information
Returns
FAILURE

Definition at line 208 of file MetaDataSvc.h.

210  {
211  return StatusCode::FAILURE;
212  }

Member Data Documentation

◆ m_addrCrtr

ServiceHandle<IAddressCreator> MetaDataSvc::m_addrCrtr
private

Definition at line 300 of file MetaDataSvc.h.

◆ m_allowMetaDataStop

bool MetaDataSvc::m_allowMetaDataStop
private

Definition at line 309 of file MetaDataSvc.h.

◆ m_classIDSvc

ServiceHandle<IClassIDSvc> MetaDataSvc::m_classIDSvc {"ClassIDSvc", name()}
private

Definition at line 304 of file MetaDataSvc.h.

◆ m_clearedInputDataStore

bool MetaDataSvc::m_clearedInputDataStore
private

Definition at line 307 of file MetaDataSvc.h.

◆ m_clearedOutputDataStore

bool MetaDataSvc::m_clearedOutputDataStore
private

Definition at line 308 of file MetaDataSvc.h.

◆ m_fileMgr

ServiceHandle<IFileMgr> MetaDataSvc::m_fileMgr
private

Definition at line 301 of file MetaDataSvc.h.

◆ m_handledClasses

std::set<CLID> MetaDataSvc::m_handledClasses
private

Definition at line 313 of file MetaDataSvc.h.

◆ m_incSvc

ServiceHandle<IIncidentSvc> MetaDataSvc::m_incSvc
private

Definition at line 302 of file MetaDataSvc.h.

◆ m_inputDataStore

ServiceHandle<StoreGateSvc> MetaDataSvc::m_inputDataStore
private

Definition at line 298 of file MetaDataSvc.h.

◆ m_metaDataCont

StringProperty MetaDataSvc::m_metaDataCont
private

MetaDataContainer, POOL container name for MetaData.

Definition at line 321 of file MetaDataSvc.h.

◆ m_metaDataTools

ToolHandleArray<IMetaDataTool> MetaDataSvc::m_metaDataTools
private

MetaDataTools, vector with the MetaData tools.

Definition at line 323 of file MetaDataSvc.h.

◆ m_outputDataStore

ServiceHandle<StoreGateSvc> MetaDataSvc::m_outputDataStore
private

Definition at line 299 of file MetaDataSvc.h.

◆ m_outputPrepared

bool MetaDataSvc::m_outputPrepared
private

Definition at line 310 of file MetaDataSvc.h.

◆ m_outSeqSvc

ServiceHandle<OutputStreamSequencerSvc> MetaDataSvc::m_outSeqSvc
private

Definition at line 303 of file MetaDataSvc.h.

◆ m_persToClid

std::map<std::string, CLID> MetaDataSvc::m_persToClid
private

Definition at line 311 of file MetaDataSvc.h.

◆ m_storageType

long MetaDataSvc::m_storageType
private

Definition at line 306 of file MetaDataSvc.h.

◆ m_streamInKeyMark

const std::string MetaDataSvc::m_streamInKeyMark = "__STREAM["
private

marker string for embedding stream name in MetaData object keys for SharedWriter server

Definition at line 315 of file MetaDataSvc.h.

◆ m_streamKeys

std::map< std::string, std::set<std::string> > MetaDataSvc::m_streamKeys
private

Definition at line 317 of file MetaDataSvc.h.


The documentation for this class was generated from the following files:
TileDCSDataPlotter.dp
dp
Definition: TileDCSDataPlotter.py:840
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
get_generator_info.result
result
Definition: get_generator_info.py:21
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
RootAuxDynIO::AUX_POSTFIX
constexpr char AUX_POSTFIX[]
Common post-fix for the names of auxiliary containers in StoreGate.
Definition: RootAuxDynDefs.h:12
MetaDataSvc::m_storageType
long m_storageType
Definition: MetaDataSvc.h:306
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MetaDataSvc::m_metaDataTools
ToolHandleArray< IMetaDataTool > m_metaDataTools
MetaDataTools, vector with the MetaData tools.
Definition: MetaDataSvc.h:323
MetaDataSvc::m_clearedInputDataStore
bool m_clearedInputDataStore
Definition: MetaDataSvc.h:307
MetaDataSvc::m_clearedOutputDataStore
bool m_clearedOutputDataStore
Definition: MetaDataSvc.h:308
skel.it
it
Definition: skel.GENtoEVGEN.py:396
SG::TransientAddress
Definition: TransientAddress.h:32
ILockableTool::lock_shared
virtual void lock_shared() const =0
Lock the tool.
MetaDataSvc::m_inputDataStore
ServiceHandle< StoreGateSvc > m_inputDataStore
Definition: MetaDataSvc.h:298
MetaDataSvc::m_metaDataCont
StringProperty m_metaDataCont
MetaDataContainer, POOL container name for MetaData.
Definition: MetaDataSvc.h:321
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
JetTagCalibConfig.className
string className
Definition: JetTagCalibConfig.py:36
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition: DataHeader.h:36
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MetaDataSvc::m_outputPrepared
bool m_outputPrepared
Definition: MetaDataSvc.h:310
Athena::typeinfoName
std::string typeinfoName(const std::type_info &ti)
Convert a type_info to a demangled string.
Definition: AthenaKernel/src/ClassName.cxx:23
ILockableTool::unlock_shared
virtual void unlock_shared() const =0
Unlock the tool.
MetaDataSvc::newMetadataSource
virtual StatusCode newMetadataSource(const Incident &)
Fills the input metadata store with the content of the new input file.
Definition: MetaDataSvc.cxx:217
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition: DataHeader.h:124
MetaDataSvc::m_addrCrtr
ServiceHandle< IAddressCreator > m_addrCrtr
Definition: MetaDataSvc.h:300
MetaDataSvc::initInputMetaDataStore
StatusCode initInputMetaDataStore(const std::string &fileName)
Initialize input metadata store - can be called directly or via BeginInputFile incident.
Definition: MetaDataSvc.cxx:519
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MetaDataSvc::m_outputDataStore
ServiceHandle< StoreGateSvc > m_outputDataStore
Definition: MetaDataSvc.h:299
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::VersionedKey
a StoreGateSvc key with a version number. Notice that StoreGate does not order multiple instances of ...
Definition: SGVersionedKey.h:31
MetaDataSvc::m_allowMetaDataStop
bool m_allowMetaDataStop
Definition: MetaDataSvc.h:309
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:40
MetaDataSvc::m_streamKeys
std::map< std::string, std::set< std::string > > m_streamKeys
Definition: MetaDataSvc.h:317
ILockableTool
Provide an interface for locking and unlocking a tool externally.
Definition: ILockableTool.h:25
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MetaDataSvc::m_fileMgr
ServiceHandle< IFileMgr > m_fileMgr
Definition: MetaDataSvc.h:301
MetaDataSvc::retireMetadataSource
virtual StatusCode retireMetadataSource(const Incident &)
Allows metadata tools to act before an input file is closed.
Definition: MetaDataSvc.cxx:251
StoreID::METADATA_STORE
@ METADATA_STORE
Definition: StoreID.h:29
plotmaker.keyName
keyName
Definition: plotmaker.py:145
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
pool_uuid.guid
guid
Definition: pool_uuid.py:112
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
MetaDataSvc::m_incSvc
ServiceHandle< IIncidentSvc > m_incSvc
Definition: MetaDataSvc.h:302
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
MakeNewFileFromOldAndSubstitution.newName
dictionary newName
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:95
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
jobOptions.epos
epos
Definition: jobOptions.crmc.py:50
MetaDataSvc::rootOpenAction
StatusCode rootOpenAction(FILEMGR_CALLBACK_ARGS)
Definition: MetaDataSvc.cxx:407
MetaDataSvc::m_persToClid
std::map< std::string, CLID > m_persToClid
Definition: MetaDataSvc.h:311
ReadCalibFromCool.typeName
typeName
Definition: ReadCalibFromCool.py:477
AthCnvSvc::repSvcType
virtual long repSvcType() const override
Retrieve the class type of the data store the converter uses.
Definition: AthCnvSvc.cxx:143
AthCnvSvc::disconnectOutput
virtual StatusCode disconnectOutput(const std::string &output)
Disconnect output files from the service.
Definition: AthCnvSvc.cxx:408
SG::ObjectWithVersion
associate a data object with its VersionedKey The object is held by a ReadHandle to delay its retriev...
Definition: SGVersionedKey.h:17
MetaDataSvc::m_streamInKeyMark
const std::string m_streamInKeyMark
marker string for embedding stream name in MetaData object keys for SharedWriter server
Definition: MetaDataSvc.h:315
python.PyAthena.obj
obj
Definition: PyAthena.py:132
SG::DataProxy
Definition: DataProxy.h:45
AthCnvSvc
Definition: AthCnvSvc.h:66
MetaDataSvc::loadAddresses
StatusCode loadAddresses(StoreID::type storeID, IAddressProvider::tadList &tads) override
loads addresses of versioned metadata object.
Definition: MetaDataSvc.cxx:185
MetaDataSvc::m_classIDSvc
ServiceHandle< IClassIDSvc > m_classIDSvc
Definition: MetaDataSvc.h:304
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:355
ServiceHandle< IAddressCreator >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
MetaDataSvc::m_handledClasses
std::set< CLID > m_handledClasses
Definition: MetaDataSvc.h:313
MetaDataSvc::m_outSeqSvc
ServiceHandle< OutputStreamSequencerSvc > m_outSeqSvc
Definition: MetaDataSvc.h:303