The Gaudi Framework  master (d98a2936)
EvtStoreSvc Class Reference
Inheritance diagram for EvtStoreSvc:
Collaboration diagram for EvtStoreSvc:

Public Member Functions

CLID rootCLID () const override
 
const std::string & rootName () const override
 
StatusCode setDataLoader (IConversionSvc *svc, IDataProviderSvc *dpsvc) override
 
size_t allocateStore (int evtnumber) override
 Allocate a store partition for a given event number. More...
 
StatusCode freeStore (size_t partition) override
 Free a store partition. More...
 
size_t freeSlots () override
 
StatusCode selectStore (size_t partition) override
 Activate a partition object. The identifies the partition uniquely. More...
 
StatusCode clearStore () override
 
StatusCode clearStore (size_t partition) override
 Remove all data objects in one 'slot' of the data store. More...
 
StatusCode setNumberOfStores (size_t slots) override
 Set the number of event slots (copies of DataSvc objects). More...
 
size_t getNumberOfStores () const override
 
size_t getPartitionNumber (int eventnumber) const override
 Get the partition number corresponding to a given event. More...
 
bool exists (const DataObjID &id) override
 
StatusCode objectParent (const DataObject *, IRegistry *&) override
 
StatusCode objectParent (const IRegistry *, IRegistry *&) override
 
StatusCode objectLeaves (const DataObject *, std::vector< IRegistry * > &) override
 
StatusCode objectLeaves (const IRegistry *, std::vector< IRegistry * > &) override
 
StatusCode clearSubTree (std::string_view) override
 
StatusCode clearSubTree (DataObject *obj) override
 
StatusCode traverseSubTree (std::string_view, IDataStoreAgent *) override
 
StatusCode traverseSubTree (DataObject *obj, IDataStoreAgent *pAgent) override
 
StatusCode traverseTree (IDataStoreAgent *pAgent) override
 
StatusCode setRoot (std::string root_name, DataObject *pObject) override
 
StatusCode setRoot (std::string root_path, IOpaqueAddress *pRootAddr) override
 
StatusCode unregisterAddress (std::string_view) override
 
StatusCode unregisterAddress (IRegistry *, std::string_view) override
 
StatusCode registerAddress (std::string_view fullPath, IOpaqueAddress *pAddress) override
 
StatusCode registerAddress (IRegistry *parentObj, std::string_view objectPath, IOpaqueAddress *pAddress) override
 
StatusCode registerObject (std::string_view parentPath, std::string_view objectPath, DataObject *pObject) override
 
StatusCode registerObject (DataObject *parentObj, std::string_view objectPath, DataObject *pObject) override
 
StatusCode unregisterObject (std::string_view) override
 
StatusCode unregisterObject (DataObject *obj) override
 
StatusCode unregisterObject (DataObject *obj, std::string_view sr) override
 
StatusCode retrieveObject (IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
 
StatusCode findObject (IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
 
StatusCode findObject (std::string_view fullPath, DataObject *&pObject) override
 
StatusCode updateObject (IRegistry *) override
 
StatusCode updateObject (DataObject *) override
 
StatusCode addPreLoadItem (const DataStoreItem &) override
 
StatusCode removePreLoadItem (const DataStoreItem &) override
 
StatusCode resetPreLoad () override
 
StatusCode preLoad () override
 
StatusCode linkObject (IRegistry *, std::string_view, DataObject *) override
 
StatusCode linkObject (std::string_view, DataObject *) override
 
StatusCode unlinkObject (IRegistry *, std::string_view) override
 
StatusCode unlinkObject (DataObject *, std::string_view) override
 
StatusCode unlinkObject (std::string_view) override
 
StatusCode initialize () override
 
StatusCode finalize () override
 
- Public Member Functions inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IHiveWhiteBoard >
void const * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
- Public Member Functions inherited from Service
const std::string & name () const override
 Retrieve name of the service
More...
 
StatusCode configure () override
 
StatusCode initialize () override
 
StatusCode start () override
 
StatusCode stop () override
 
StatusCode finalize () override
 
StatusCode terminate () override
 
Gaudi::StateMachine::State FSMState () const override
 
Gaudi::StateMachine::State targetFSMState () const override
 
StatusCode reinitialize () override
 
StatusCode restart () override
 
StatusCode sysInitialize () override
 Initialize Service
More...
 
StatusCode sysStart () override
 Initialize Service
More...
 
StatusCode sysStop () override
 Initialize Service
More...
 
StatusCode sysFinalize () override
 Finalize Service
More...
 
StatusCode sysReinitialize () override
 Re-initialize the Service. More...
 
StatusCode sysRestart () override
 Re-initialize the Service. More...
 
 Service (std::string name, ISvcLocator *svcloc)
 Standard Constructor
More...
 
SmartIF< ISvcLocator > & serviceLocator () const override
 Retrieve pointer to service locator
More...
 
template<typename IFace = IService>
SmartIF< IFace > service (const std::string &name, bool createIf=true) const
 
template<class T >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
 
template<class T >
StatusCode declareTool (ToolHandle< T > &handle, bool createIf=true)
 
template<class T >
StatusCode declareTool (ToolHandle< T > &handle, const std::string &toolTypeAndName, bool createIf=true)
 Declare used tool. More...
 
template<class T >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none")
 
template<class T >
void addToolsArray (ToolHandleArray< T > &hndlArr)
 
const std::vector< IAlgTool * > & tools () const
 
SmartIF< IAuditorSvc > & auditorSvc () const
 The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 PropertyHolder ()=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
 Declare a PropertyBase instance setting name and documentation. More...
 
 requires (!Gaudi::Details::is_gaudi_property_v< TYPE >) Gaudi
 Helper to wrap a regular data member and use it as a regular property. More...
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property. More...
 
StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p) override
 set the property from another property with a different name More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p)
 Set the property from a property. More...
 
virtual StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p)=0
 Set the property from a property with a different name. More...
 
virtual StatusCode setProperty (const std::string &s)=0
 Set the property by string. More...
 
StatusCode setProperty (const std::string &name, const char *v)
 Special case for string literals. More...
 
StatusCode setProperty (const std::string &name, const std::string &v)
 Special case for std::string. More...
 
StatusCode setPropertyRepr (const std::string &n, const std::string &r) override
 set the property from name and value string representation More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (std::string_view name) const override
 get the property by name More...
 
StatusCode getProperty (std::string_view n, std::string &v) const override
 convert the property to the string More...
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties More...
 
bool hasProperty (std::string_view name) const override
 Return true if we have a property with the given name. More...
 
Gaudi::Details::PropertyBaseproperty (std::string_view name) const
 \fixme property and bindPropertiesTo should be protected More...
 
void bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc)
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level msgLevel () const
 get the cached level (originally extracted from the embedded MsgStream) More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 

Private Member Functions

std::size_t poolSize () const
 
void fillStats (Partition &p) const
 
void initStore (Partition &p) const
 

Private Attributes

Gaudi::Property< CLIDm_rootCLID { this, "RootCLID", 110 , "CLID of root entry" }
 
Gaudi::Property< std::string > m_rootName { this, "RootName", "/Event", "name of root entry" }
 
Gaudi::Property< bool > m_forceLeaves
 
Gaudi::Property< std::string > m_loader { this, "DataLoader", "EventPersistencySvc" }
 
Gaudi::Property< size_t > m_slots { this, "EventSlots", 1, "number of event slots" }
 
Gaudi::Property< bool > m_printPoolStats { this, "PrintPoolStats", false, "Print memory pool statistics" }
 
Gaudi::Property< std::size_t > m_poolSize { this, "PoolSize", 1024, "Initial per-event memory pool size [KiB]" }
 
Gaudi::Property< std::size_t > m_estStoreBuckets
 
Gaudi::Accumulators::AveragingCounter< std::size_t > m_usedPoolSize
 
Gaudi::Accumulators::AveragingCounter< std::size_t > m_servedPoolAllocations
 
Gaudi::Accumulators::AveragingCounter< std::size_t > m_usedPoolAllocations
 
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeEntries
 
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeBuckets
 
SmartIF< IConversionSvcm_dataLoader
 
std::vector< DataStoreItemm_preLoads
 Items to be pre-loaded. More...
 
std::vector< Synced< Partition > > m_partitions
 The actual store(s) More...
 
tbb::concurrent_queue< size_t > m_freeSlots
 
Gaudi::Property< std::vector< std::string > > m_inhibitPrefixes
 
Gaudi::Property< bool > m_followLinksToAncestors
 
std::string_view m_onlyThisID
 

Additional Inherited Members

- Public Types inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IHiveWhiteBoard >
using base_class = extends
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
- Public Types inherited from Service
using Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using base_class = CommonMessaging
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 
- Protected Member Functions inherited from Service
std::vector< IAlgTool * > & tools ()
 
 ~Service () override
 
int outputLevel () const
 get the Service's output level More...
 
- Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level setUpMessaging () const
 Set up local caches. More...
 
MSG::Level resetMessaging ()
 Reinitialize internal states. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 
- Protected Attributes inherited from Service
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::OFFLINE
 Service state
More...
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::OFFLINE
 Service state
More...
 
Gaudi::Property< int > m_outputLevel { this, "OutputLevel", MSG::NIL, "output level" }
 flag indicating whether ToolHandle tools have been added to m_tools More...
 
Gaudi::Property< bool > m_auditorInitialize { this, "AuditInitialize", false, "trigger auditor on initialize()" }
 
Gaudi::Property< bool > m_auditorStart { this, "AuditStart", false, "trigger auditor on start()" }
 
Gaudi::Property< bool > m_auditorStop { this, "AuditStop", false, "trigger auditor on stop()" }
 
Gaudi::Property< bool > m_auditorFinalize { this, "AuditFinalize", false, "trigger auditor on finalize()" }
 
Gaudi::Property< bool > m_auditorReinitialize { this, "AuditReinitialize", false, "trigger auditor on reinitialize()" }
 
Gaudi::Property< bool > m_auditorRestart { this, "AuditRestart", false, "trigger auditor on restart()" }
 
Gaudi::Property< bool > m_autoRetrieveTools
 
Gaudi::Property< bool > m_checkToolDeps
 
SmartIF< IAuditorSvcm_pAuditorSvc
 Auditor Service
More...
 

Detailed Description

Use a minimal event store implementation, and adds everything required to satisfy the IDataProviderSvc, IDataManagerSvc and IHiveWhiteBoard interfaces by throwing exceptions except when the functionality is really needed...

Author
Gerhard Raven
Version
1.0

Definition at line 235 of file EvtStoreSvc.cpp.

Member Function Documentation

◆ addPreLoadItem()

StatusCode EvtStoreSvc::addPreLoadItem ( const DataStoreItem item)
override

Definition at line 653 of file EvtStoreSvc.cpp.

653  {
654  auto i = std::find( m_preLoads.begin(), m_preLoads.begin(), item );
655  if ( i == m_preLoads.end() ) m_preLoads.push_back( item );
656  return StatusCode::SUCCESS;
657 }

◆ allocateStore()

size_t EvtStoreSvc::allocateStore ( int  evtnumber)
override

Allocate a store partition for a given event number.

Definition at line 419 of file EvtStoreSvc.cpp.

419  {
420  // take next free slot in the list
421  size_t slot = std::string::npos;
422  if ( m_freeSlots.try_pop( slot ) ) {
423  assert( slot != std::string::npos );
424  assert( slot < m_partitions.size() );
425  [[maybe_unused]] auto prev = m_partitions[slot].with_lock(
426  [evtnumber]( Partition& p ) { return std::exchange( p.eventNumber, evtnumber ); } );
427  assert( prev == -1 ); // or whatever value represents 'free'
428  }
429  return slot;
430 }

◆ clearStore() [1/2]

StatusCode EvtStoreSvc::clearStore ( )
override

Definition at line 480 of file EvtStoreSvc.cpp.

480  {
481  m_onlyThisID = {};
482  return fwd( [this]( Partition& p ) {
483  fillStats( p );
484  initStore( p ); // replace with a clean store
485  return StatusCode::SUCCESS;
486  } );
487 }

◆ clearStore() [2/2]

StatusCode EvtStoreSvc::clearStore ( size_t  partition)
override

Remove all data objects in one 'slot' of the data store.

Definition at line 465 of file EvtStoreSvc.cpp.

465  {
466  m_onlyThisID = {};
467  return m_partitions[partition].with_lock( [this]( Partition& p ) {
468  fillStats( p );
469  initStore( p ); // replace with a clean store
470  return StatusCode::SUCCESS;
471  } );
472 }

◆ clearSubTree() [1/2]

StatusCode EvtStoreSvc::clearSubTree ( DataObject obj)
inlineoverride

Definition at line 320 of file EvtStoreSvc.cpp.

320  {
321  return obj && obj->registry() ? clearSubTree( obj->registry()->identifier() ) : StatusCode::FAILURE;
322  }

◆ clearSubTree() [2/2]

StatusCode EvtStoreSvc::clearSubTree ( std::string_view  top)
override

Definition at line 473 of file EvtStoreSvc.cpp.

473  {
474  top = normalize_path( top, rootName() );
475  return fwd( [&]( Partition& p ) {
476  p.store->erase_if( [top]( const auto& value ) { return value.first.starts_with( top ); } );
477  return StatusCode::SUCCESS;
478  } );
479 }

◆ exists()

bool EvtStoreSvc::exists ( const DataObjID id)
inlineoverride

Definition at line 309 of file EvtStoreSvc.cpp.

309  {
310  DataObject* pObject{ nullptr };
311  return findObject( id.fullKey(), pObject ).isSuccess();
312  }

◆ fillStats()

void EvtStoreSvc::fillStats ( Partition &  p) const
inlineprivate

Definition at line 252 of file EvtStoreSvc.cpp.

252  {
253  if ( !m_printPoolStats ) return;
254  auto n_allocs = p.store->num_allocations();
255  if ( n_allocs ) {
256  m_storeEntries += p.store->size();
257  m_usedPoolSize += p.store->used_bytes();
258  m_storeBuckets += p.store->used_buckets();
259  m_usedPoolAllocations += p.store->used_blocks();
260  m_servedPoolAllocations += n_allocs;
261  }
262  }

◆ finalize()

StatusCode EvtStoreSvc::finalize ( )
inlineoverride

Definition at line 395 of file EvtStoreSvc.cpp.

395  {
396  if ( m_printPoolStats ) {
397  info() << "Mean memory pool usage: " << float( 1e-3f * float( m_usedPoolSize.mean() ) ) << " KiB serving "
398  << float( m_servedPoolAllocations.mean() ) << " allocations from " << float( m_usedPoolAllocations.mean() )
399  << " to produce " << float( m_storeEntries.mean() ) << " entries in " << float( m_storeBuckets.mean() )
400  << " buckets" << endmsg;
401  }
402  setDataLoader( nullptr, nullptr ).ignore(); // release
403  return extends::finalize();
404  }

◆ findObject() [1/2]

StatusCode EvtStoreSvc::findObject ( IRegistry pDirectory,
std::string_view  path,
DataObject *&  pObject 
)
override

Definition at line 644 of file EvtStoreSvc.cpp.

644  {
645  return retrieveObject( pDirectory, path, pObject );
646 }

◆ findObject() [2/2]

StatusCode EvtStoreSvc::findObject ( std::string_view  fullPath,
DataObject *&  pObject 
)
override

Definition at line 647 of file EvtStoreSvc.cpp.

647  {
648  return retrieveObject( nullptr, fullPath, pObject );
649 }

◆ freeSlots()

size_t EvtStoreSvc::freeSlots ( )
inlineoverride

Definition at line 302 of file EvtStoreSvc.cpp.

302 { return m_freeSlots.unsafe_size(); }

◆ freeStore()

StatusCode EvtStoreSvc::freeStore ( size_t  partition)
override

Free a store partition.

Definition at line 457 of file EvtStoreSvc.cpp.

457  {
458  assert( partition < m_partitions.size() );
459  auto prev = m_partitions[partition].with_lock( []( Partition& p ) { return std::exchange( p.eventNumber, -1 ); } );
460  if ( prev == -1 ) return StatusCode::FAILURE; // double free -- should never happen!
461  m_freeSlots.push( partition );
462  return StatusCode::SUCCESS;
463 }

◆ getNumberOfStores()

size_t EvtStoreSvc::getNumberOfStores ( ) const
inlineoverride

Definition at line 307 of file EvtStoreSvc.cpp.

307 { return m_slots; }

◆ getPartitionNumber()

size_t EvtStoreSvc::getPartitionNumber ( int  eventnumber) const
override

Get the partition number corresponding to a given event.

Definition at line 446 of file EvtStoreSvc.cpp.

446  {
447  auto i = std::find_if( begin( m_partitions ), end( m_partitions ),
448  with_lock( [eventnumber]( const Partition& p ) { return p.eventNumber == eventnumber; } ) );
449  return i != end( m_partitions ) ? std::distance( begin( m_partitions ), i ) : std::string::npos;
450 }

◆ initialize()

StatusCode EvtStoreSvc::initialize ( )
inlineoverride

Definition at line 373 of file EvtStoreSvc.cpp.

373  {
374  Entry::setDataProviderSvc( this );
375  extends::initialize().ignore();
376  if ( !setNumberOfStores( m_slots ).isSuccess() ) {
377  error() << "Cannot set number of slots" << endmsg;
378  return StatusCode::FAILURE;
379  }
380  m_partitions = std::vector<Synced<Partition>>( m_slots );
381  // m_partitions is now full of empty std::optionals, fill them now.
382  for ( auto& synced_p : m_partitions ) {
383  synced_p.with_lock( [this]( Partition& p ) { initStore( p ); } );
384  }
385  for ( size_t i = 0; i < m_slots; i++ ) { m_freeSlots.push( i ); }
386  selectStore( 0 ).ignore();
387 
388  auto loader = serviceLocator()->service( m_loader ).as<IConversionSvc>().get();
389  if ( !loader ) {
390  error() << "Cannot get IConversionSvc " << m_loader.value() << endmsg;
391  return StatusCode::FAILURE;
392  }
393  return setDataLoader( loader, nullptr );
394  }

◆ initStore()

void EvtStoreSvc::initStore ( Partition &  p) const
inlineprivate

Definition at line 264 of file EvtStoreSvc.cpp.

264  {
265  if ( p.store ) {
266  // re-use the existing memory pool
267  p.store->reset();
268  } else {
269  p.store.emplace( m_estStoreBuckets, poolSize() );
270  }
271  }

◆ linkObject() [1/2]

StatusCode EvtStoreSvc::linkObject ( IRegistry ,
std::string_view  ,
DataObject  
)
inlineoverride

Definition at line 367 of file EvtStoreSvc.cpp.

367 { return dummy( __FUNCTION__ ); }

◆ linkObject() [2/2]

StatusCode EvtStoreSvc::linkObject ( std::string_view  ,
DataObject  
)
inlineoverride

Definition at line 368 of file EvtStoreSvc.cpp.

368 { return dummy( __FUNCTION__ ); }

◆ objectLeaves() [1/2]

StatusCode EvtStoreSvc::objectLeaves ( const DataObject ,
std::vector< IRegistry * > &   
)
inlineoverride

Definition at line 316 of file EvtStoreSvc.cpp.

316 { return dummy( __FUNCTION__ ); }

◆ objectLeaves() [2/2]

StatusCode EvtStoreSvc::objectLeaves ( const IRegistry ,
std::vector< IRegistry * > &   
)
inlineoverride

Definition at line 317 of file EvtStoreSvc.cpp.

317 { return dummy( __FUNCTION__ ); }

◆ objectParent() [1/2]

StatusCode EvtStoreSvc::objectParent ( const DataObject ,
IRegistry *&   
)
inlineoverride

Definition at line 314 of file EvtStoreSvc.cpp.

314 { return dummy( __FUNCTION__ ); }

◆ objectParent() [2/2]

StatusCode EvtStoreSvc::objectParent ( const IRegistry ,
IRegistry *&   
)
inlineoverride

Definition at line 315 of file EvtStoreSvc.cpp.

315 { return dummy( __FUNCTION__ ); }

◆ poolSize()

std::size_t EvtStoreSvc::poolSize ( ) const
inlineprivate

Definition at line 250 of file EvtStoreSvc.cpp.

250 { return m_poolSize * 1024; }

◆ preLoad()

StatusCode EvtStoreSvc::preLoad ( )
override

Definition at line 663 of file EvtStoreSvc.cpp.

663  {
664  for ( const auto& i : m_preLoads ) {
665  DataObject* pObj;
666  if ( msgLevel( MSG::DEBUG ) ) debug() << "Preloading " << i.path() << endmsg;
667  retrieveObject( nullptr, i.path(), pObj ).ignore();
668  }
669  return StatusCode::SUCCESS;
670 }

◆ registerAddress() [1/2]

StatusCode EvtStoreSvc::registerAddress ( IRegistry parentObj,
std::string_view  objectPath,
IOpaqueAddress pAddress 
)
override

Definition at line 552 of file EvtStoreSvc.cpp.

552  {
553  auto addr = std::unique_ptr<IOpaqueAddress>( pAddr );
554  if ( !addr ) return Status::INVALID_OBJ_ADDR; // Precondition: Address must be valid
555  if ( msgLevel( MSG::DEBUG ) ) {
556  debug() << "registerAddress( (IRegistry*)" << (void*)pReg << ", " << path << ", (IOpaqueAddress*)" << addr.get()
557  << "[ " << addr->par()[0] << ", " << addr->par()[1] << " ]"
558  << " )" << endmsg;
559  }
560  if ( path.empty() || path[0] != '/' ) return StatusCode::FAILURE;
561  if ( !m_onlyThisID.empty() && addr->par()[0] != m_onlyThisID ) {
562  if ( msgLevel( MSG::DEBUG ) )
563  debug() << "Attempt to load " << addr->par()[1] << " from file " << addr->par()[0] << " blocked -- different file"
564  << endmsg;
565  return StatusCode::SUCCESS;
566  }
567  if ( std::any_of(
568  m_inhibitPrefixes.begin(), m_inhibitPrefixes.end(),
569  [addrPath = addr->par()[1]]( std::string_view prefix ) { return addrPath.starts_with( prefix ); } ) ) {
570  if ( msgLevel( MSG::DEBUG ) )
571  debug() << "Attempt to load " << addr->par()[1] << " from file " << addr->par()[0] << " blocked -- path inhibited"
572  << endmsg;
573  return StatusCode::SUCCESS;
574  }
575 
576  auto object = createObj( *m_dataLoader, *addr ); // Call data loader
577  if ( !object ) return Status::INVALID_OBJECT;
578  auto fullpath = ( pReg ? pReg->identifier() : m_rootName.value() ) + std::string{ path };
579  // the data loader expects the path _including_ the root
580  LocalArena dummy_arena{ fullpath.size() + 1 };
581  auto dummy = Entry{ fullpath, {}, {}, &dummy_arena };
582  object->setRegistry( &dummy );
583  addr->setRegistry( &dummy );
584  auto status = m_dataLoader->fillObjRefs( addr.get(), object.get() );
585  if ( !status.isSuccess() ) return status;
586  // note: put will overwrite the registry in pObject to point at the
587  // one actually used -- so we do not dangle, pointing at dummy beyond its
588  // lifetime
589  if ( msgLevel( MSG::DEBUG ) ) {
590  auto ptr = object.get();
591  debug() << "registerAddress: " << std::quoted( normalize_path( fullpath, rootName() ) ) << " (DataObject*)"
592  << static_cast<void*>( ptr ) << ( ptr ? " -> " + System::typeinfoName( typeid( *ptr ) ) : std::string{} )
593  << endmsg;
594  }
595  fwd( [&]( Partition& p ) {
596  p.store->put( normalize_path( fullpath, rootName() ), std::move( object ), std::move( addr ) );
597  return StatusCode::SUCCESS;
598  } ).ignore();
599  return status;
600 }

◆ registerAddress() [2/2]

StatusCode EvtStoreSvc::registerAddress ( std::string_view  fullPath,
IOpaqueAddress pAddress 
)
override

Definition at line 549 of file EvtStoreSvc.cpp.

549  {
550  return registerAddress( nullptr, path, pAddr );
551 }

◆ registerObject() [1/2]

StatusCode EvtStoreSvc::registerObject ( DataObject parentObj,
std::string_view  objectPath,
DataObject pObject 
)
override

Definition at line 607 of file EvtStoreSvc.cpp.

607  {
608  if ( parentObj ) return StatusCode::FAILURE;
609  return fwd( [&, object = std::unique_ptr<DataObject>( pObject ),
610  path = normalize_path( path, rootName() )]( Partition& p ) mutable {
611  if ( m_forceLeaves ) {
612  auto dir = path;
613  for ( auto i = dir.rfind( '/' ); i != std::string_view::npos; i = dir.rfind( '/' ) ) {
614  dir = dir.substr( 0, i );
615  if ( !p.store->find( dir ) ) {
616  if ( msgLevel( MSG::DEBUG ) ) {
617  debug() << "registerObject: adding directory " << std::quoted( dir ) << endmsg;
618  }
619  p.store->put( dir, std::unique_ptr<DataObject>{} );
620  }
621  }
622  }
623  if ( msgLevel( MSG::DEBUG ) ) {
624  auto ptr = object.get();
625  debug() << "registerObject: " << std::quoted( path ) << " (DataObject*)" << static_cast<void*>( ptr )
626  << ( ptr ? " -> " + System::typeinfoName( typeid( *ptr ) ) : std::string{} ) << endmsg;
627  }
628  p.store->put( path, std::move( object ) );
629  return StatusCode::SUCCESS;
630  } );
631 }

◆ registerObject() [2/2]

StatusCode EvtStoreSvc::registerObject ( std::string_view  parentPath,
std::string_view  objectPath,
DataObject pObject 
)
override

Definition at line 601 of file EvtStoreSvc.cpp.

602  {
603  return parentPath.empty()
604  ? registerObject( nullptr, objectPath, pObject )
605  : registerObject( nullptr, std::string{ parentPath }.append( "/" ).append( objectPath ), pObject );
606 }

◆ removePreLoadItem()

StatusCode EvtStoreSvc::removePreLoadItem ( const DataStoreItem item)
override

Definition at line 658 of file EvtStoreSvc.cpp.

658  {
659  auto i = std::remove( m_preLoads.begin(), m_preLoads.begin(), item );
660  m_preLoads.erase( i, m_preLoads.end() );
661  return StatusCode::SUCCESS;
662 }

◆ resetPreLoad()

StatusCode EvtStoreSvc::resetPreLoad ( )
inlineoverride

Definition at line 361 of file EvtStoreSvc.cpp.

361  {
362  m_preLoads.clear();
363  return StatusCode::SUCCESS;
364  }

◆ retrieveObject()

StatusCode EvtStoreSvc::retrieveObject ( IRegistry pDirectory,
std::string_view  path,
DataObject *&  pObject 
)
override

Definition at line 632 of file EvtStoreSvc.cpp.

632  {
633  if ( pDirectory ) return StatusCode::FAILURE;
634  return fwd( [&]( Partition& p ) {
635  path = normalize_path( path, rootName() );
636  pObject = const_cast<DataObject*>( p.store->get( path ) );
637  if ( msgLevel( MSG::DEBUG ) ) {
638  debug() << "retrieveObject: " << std::quoted( path ) << " (DataObject*)" << (void*)pObject
639  << ( pObject ? " -> " + System::typeinfoName( typeid( *pObject ) ) : std::string{} ) << endmsg;
640  }
641  return pObject ? StatusCode::SUCCESS : StatusCode::FAILURE;
642  } );
643 }

◆ rootCLID()

CLID EvtStoreSvc::rootCLID ( ) const
override

Definition at line 411 of file EvtStoreSvc.cpp.

411 { return m_rootCLID; }

◆ rootName()

const std::string & EvtStoreSvc::rootName ( ) const
override

Definition at line 412 of file EvtStoreSvc.cpp.

412 { return m_rootName; }

◆ selectStore()

StatusCode EvtStoreSvc::selectStore ( size_t  partition)
override

Activate a partition object. The identifies the partition uniquely.

Definition at line 452 of file EvtStoreSvc.cpp.

452  {
453  s_current = &m_partitions[partition];
454  return StatusCode::SUCCESS;
455 }

◆ setDataLoader()

StatusCode EvtStoreSvc::setDataLoader ( IConversionSvc svc,
IDataProviderSvc dpsvc 
)
override

Definition at line 413 of file EvtStoreSvc.cpp.

413  {
414  m_dataLoader = pDataLoader;
415  if ( m_dataLoader ) m_dataLoader->setDataProvider( dpsvc ? dpsvc : this ).ignore();
416  return StatusCode::SUCCESS;
417 }

◆ setNumberOfStores()

StatusCode EvtStoreSvc::setNumberOfStores ( size_t  slots)
override

Set the number of event slots (copies of DataSvc objects).

Definition at line 432 of file EvtStoreSvc.cpp.

432  {
433  if ( slots < size_t{ 1 } ) {
434  error() << "Invalid number of slots (" << slots << ")" << endmsg;
435  return StatusCode::FAILURE;
436  }
438  error() << "Too late to change the number of slots!" << endmsg;
439  return StatusCode::FAILURE;
440  }
441  m_slots = slots;
443  return StatusCode::SUCCESS;
444 }

◆ setRoot() [1/2]

StatusCode EvtStoreSvc::setRoot ( std::string  root_name,
DataObject pObject 
)
override

Definition at line 509 of file EvtStoreSvc.cpp.

509  {
510  if ( msgLevel( MSG::DEBUG ) ) {
511  debug() << "setRoot( " << root_path << ", (DataObject*)" << (void*)pObject << " )" << endmsg;
512  }
513  if ( !fwd( []( Partition& p ) {
514  return p.store->empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
515  } ).isSuccess() ) {
516  throw GaudiException{ "setRoot called with non-empty store", "EvtStoreSvc", StatusCode::FAILURE };
517  }
518  return registerObject( nullptr, root_path, pObject );
519 }

◆ setRoot() [2/2]

StatusCode EvtStoreSvc::setRoot ( std::string  root_path,
IOpaqueAddress pRootAddr 
)
override

Definition at line 520 of file EvtStoreSvc.cpp.

520  {
521  auto rootAddr = std::unique_ptr<IOpaqueAddress>( pRootAddr );
522  if ( msgLevel( MSG::DEBUG ) ) {
523  debug() << "setRoot( " << root_path << ", (IOpaqueAddress*)" << rootAddr.get();
524  if ( rootAddr ) debug() << "[ " << rootAddr->par()[0] << ", " << rootAddr->par()[1] << " ]";
525  debug() << " )" << endmsg;
526  }
527  if ( !fwd( []( Partition& p ) {
528  return p.store->empty() ? StatusCode::SUCCESS : StatusCode::FAILURE;
529  } ).isSuccess() ) {
530  throw GaudiException{ "setRoot called with non-empty store", "EvtStoreSvc", StatusCode::FAILURE };
531  }
532  if ( !rootAddr ) return Status::INVALID_OBJ_ADDR; // Precondition: Address must be valid
533  if ( !m_followLinksToAncestors ) m_onlyThisID = rootAddr->par()[0];
534  auto object = createObj( *m_dataLoader, *rootAddr ); // Call data loader
535  if ( !object ) return Status::INVALID_OBJECT;
536  if ( msgLevel( MSG::DEBUG ) ) { debug() << "Root Object " << root_path << " created " << endmsg; }
537  LocalArena dummy_arena{ root_path.size() + 1 };
538  auto dummy = Entry{ root_path, {}, {}, &dummy_arena };
539  object->setRegistry( &dummy );
540  rootAddr->setRegistry( &dummy );
541  auto status = m_dataLoader->fillObjRefs( rootAddr.get(), object.get() );
542  if ( status.isSuccess() ) {
543  auto pObject = object.get();
544  status = registerObject( nullptr, root_path, object.release() );
545  if ( status.isSuccess() ) pObject->registry()->setAddress( rootAddr.release() );
546  }
547  return status;
548 }

◆ traverseSubTree() [1/2]

StatusCode EvtStoreSvc::traverseSubTree ( DataObject obj,
IDataStoreAgent pAgent 
)
inlineoverride

Definition at line 325 of file EvtStoreSvc.cpp.

325  {
326  return ( obj && obj->registry() ) ? traverseSubTree( obj->registry()->identifier(), pAgent ) : StatusCode::FAILURE;
327  }

◆ traverseSubTree() [2/2]

StatusCode EvtStoreSvc::traverseSubTree ( std::string_view  top,
IDataStoreAgent pAgent 
)
override

Definition at line 488 of file EvtStoreSvc.cpp.

488  {
489  return fwd( [&]( Partition& p ) {
490  top = normalize_path( top, rootName() );
491  unsigned int nbSlashesInRootName = std::count( rootName().begin(), rootName().end(), '/' );
492  auto cmp = []( const Entry* lhs, const Entry* rhs ) { return lhs->identifier() < rhs->identifier(); };
493  std::set<const Entry*, decltype( cmp )> keys{ std::move( cmp ) };
494  for ( const auto& v : *p.store ) {
495  if ( v.second.identifier().starts_with( top ) ) keys.insert( &v.second );
496  }
497  auto k = keys.begin();
498  while ( k != keys.end() ) {
499  const auto& id = ( *k )->identifier();
500  int level = std::count( id.begin(), id.end(), '/' ) + nbSlashesInRootName;
501  bool accept = pAgent->analyse( const_cast<Entry*>( *( k++ ) ), level );
502  if ( !accept ) {
503  k = std::find_if_not( k, keys.end(), [&id]( const auto& e ) { return e->identifier().starts_with( id ); } );
504  }
505  }
506  return StatusCode::SUCCESS;
507  } );
508 }

◆ traverseTree()

StatusCode EvtStoreSvc::traverseTree ( IDataStoreAgent pAgent)
inlineoverride

Definition at line 328 of file EvtStoreSvc.cpp.

328 { return traverseSubTree( std::string_view{}, pAgent ); }

◆ unlinkObject() [1/3]

StatusCode EvtStoreSvc::unlinkObject ( DataObject ,
std::string_view   
)
inlineoverride

Definition at line 370 of file EvtStoreSvc.cpp.

370 { return dummy( __FUNCTION__ ); }

◆ unlinkObject() [2/3]

StatusCode EvtStoreSvc::unlinkObject ( IRegistry ,
std::string_view   
)
inlineoverride

Definition at line 369 of file EvtStoreSvc.cpp.

369 { return dummy( __FUNCTION__ ); }

◆ unlinkObject() [3/3]

StatusCode EvtStoreSvc::unlinkObject ( std::string_view  )
inlineoverride

Definition at line 371 of file EvtStoreSvc.cpp.

371 { return dummy( __FUNCTION__ ); }

◆ unregisterAddress() [1/2]

StatusCode EvtStoreSvc::unregisterAddress ( IRegistry ,
std::string_view   
)
inlineoverride

Definition at line 334 of file EvtStoreSvc.cpp.

334 { return dummy( __FUNCTION__ ); };

◆ unregisterAddress() [2/2]

StatusCode EvtStoreSvc::unregisterAddress ( std::string_view  )
inlineoverride

Definition at line 333 of file EvtStoreSvc.cpp.

333 { return dummy( __FUNCTION__ ); };

◆ unregisterObject() [1/3]

StatusCode EvtStoreSvc::unregisterObject ( DataObject obj)
inlineoverride

Definition at line 342 of file EvtStoreSvc.cpp.

342  {
343  return ( obj && obj->registry() ) ? unregisterObject( obj->registry()->identifier() ) : StatusCode::FAILURE;
344  }

◆ unregisterObject() [2/3]

StatusCode EvtStoreSvc::unregisterObject ( DataObject obj,
std::string_view  sr 
)
inlineoverride

Definition at line 345 of file EvtStoreSvc.cpp.

345  {
346  return !obj ? unregisterObject( sr )
347  : obj->registry() ? unregisterObject( ( obj->registry()->identifier() + '/' ).append( sr ) )
348  : StatusCode::FAILURE;
349  };

◆ unregisterObject() [3/3]

StatusCode EvtStoreSvc::unregisterObject ( std::string_view  sr)
override

Definition at line 650 of file EvtStoreSvc.cpp.

650  {
651  return fwd( [&]( Partition& p ) { return p.store->erase( sr ) != 0 ? StatusCode::SUCCESS : StatusCode::FAILURE; } );
652 }

◆ updateObject() [1/2]

StatusCode EvtStoreSvc::updateObject ( DataObject )
inlineoverride

Definition at line 357 of file EvtStoreSvc.cpp.

357 { return dummy( __FUNCTION__ ); }

◆ updateObject() [2/2]

StatusCode EvtStoreSvc::updateObject ( IRegistry )
inlineoverride

Definition at line 356 of file EvtStoreSvc.cpp.

356 { return dummy( __FUNCTION__ ); }

Member Data Documentation

◆ m_dataLoader

SmartIF<IConversionSvc> EvtStoreSvc::m_dataLoader
private

Definition at line 273 of file EvtStoreSvc.cpp.

◆ m_estStoreBuckets

Gaudi::Property<std::size_t> EvtStoreSvc::m_estStoreBuckets
private
Initial value:
{ this, "StoreBuckets", 100,
"Estimated number of buckets in the store" }

Definition at line 244 of file EvtStoreSvc.cpp.

◆ m_followLinksToAncestors

Gaudi::Property<bool> EvtStoreSvc::m_followLinksToAncestors
private
Initial value:
{
this, "FollowLinksToAncestors", true,
"Load objects which reside in files other than the one corresponding to the root of the event store" }

Definition at line 288 of file EvtStoreSvc.cpp.

◆ m_forceLeaves

Gaudi::Property<bool> EvtStoreSvc::m_forceLeaves
private
Initial value:
{ this, "ForceLeaves", false,
"force creation of default leaves on registerObject" }

Definition at line 238 of file EvtStoreSvc.cpp.

◆ m_freeSlots

tbb::concurrent_queue<size_t> EvtStoreSvc::m_freeSlots
private

Definition at line 281 of file EvtStoreSvc.cpp.

◆ m_inhibitPrefixes

Gaudi::Property<std::vector<std::string> > EvtStoreSvc::m_inhibitPrefixes
private
Initial value:
{
this,
"InhibitedPathPrefixes",
{},
"Prefixes of TES locations that will not be loaded by the persistency service " }

Definition at line 283 of file EvtStoreSvc.cpp.

◆ m_loader

Gaudi::Property<std::string> EvtStoreSvc::m_loader { this, "DataLoader", "EventPersistencySvc" }
private

Definition at line 240 of file EvtStoreSvc.cpp.

◆ m_onlyThisID

std::string_view EvtStoreSvc::m_onlyThisID
private

Definition at line 291 of file EvtStoreSvc.cpp.

◆ m_partitions

std::vector<Synced<Partition> > EvtStoreSvc::m_partitions
private

The actual store(s)

Definition at line 279 of file EvtStoreSvc.cpp.

◆ m_poolSize

Gaudi::Property<std::size_t> EvtStoreSvc::m_poolSize { this, "PoolSize", 1024, "Initial per-event memory pool size [KiB]" }
private

Definition at line 243 of file EvtStoreSvc.cpp.

◆ m_preLoads

std::vector<DataStoreItem> EvtStoreSvc::m_preLoads
private

Items to be pre-loaded.

Definition at line 276 of file EvtStoreSvc.cpp.

◆ m_printPoolStats

Gaudi::Property<bool> EvtStoreSvc::m_printPoolStats { this, "PrintPoolStats", false, "Print memory pool statistics" }
private

Definition at line 242 of file EvtStoreSvc.cpp.

◆ m_rootCLID

Gaudi::Property<CLID> EvtStoreSvc::m_rootCLID { this, "RootCLID", 110 , "CLID of root entry" }
private

Definition at line 236 of file EvtStoreSvc.cpp.

◆ m_rootName

Gaudi::Property<std::string> EvtStoreSvc::m_rootName { this, "RootName", "/Event", "name of root entry" }
private

Definition at line 237 of file EvtStoreSvc.cpp.

◆ m_servedPoolAllocations

Gaudi::Accumulators::AveragingCounter<std::size_t> EvtStoreSvc::m_servedPoolAllocations
private

Definition at line 246 of file EvtStoreSvc.cpp.

◆ m_slots

Gaudi::Property<size_t> EvtStoreSvc::m_slots { this, "EventSlots", 1, "number of event slots" }
private

Definition at line 241 of file EvtStoreSvc.cpp.

◆ m_storeBuckets

Gaudi::Accumulators::AveragingCounter<std::size_t> EvtStoreSvc::m_storeBuckets
private

Definition at line 247 of file EvtStoreSvc.cpp.

◆ m_storeEntries

Gaudi::Accumulators::AveragingCounter<std::size_t> EvtStoreSvc::m_storeEntries
private

Definition at line 247 of file EvtStoreSvc.cpp.

◆ m_usedPoolAllocations

Gaudi::Accumulators::AveragingCounter<std::size_t> EvtStoreSvc::m_usedPoolAllocations
private

Definition at line 247 of file EvtStoreSvc.cpp.

◆ m_usedPoolSize

Gaudi::Accumulators::AveragingCounter<std::size_t> EvtStoreSvc::m_usedPoolSize
mutableprivate

Definition at line 246 of file EvtStoreSvc.cpp.


The documentation for this class was generated from the following file:
GaudiPython.Bindings.FAILURE
FAILURE
Definition: Bindings.py:84
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:22
cpluginsvc.registry
def registry()
Definition: cpluginsvc.py:83
EvtStoreSvc::m_onlyThisID
std::string_view m_onlyThisID
Definition: EvtStoreSvc.cpp:291
AtlasMCRecoFullPrecedenceDump.path
path
Definition: AtlasMCRecoFullPrecedenceDump.py:49
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
GaudiPartProp.decorators.std
std
Definition: decorators.py:32
ReadAndWriteWhiteBoard.loader
loader
Definition: ReadAndWriteWhiteBoard.py:55
EvtStoreSvc::traverseSubTree
StatusCode traverseSubTree(std::string_view, IDataStoreAgent *) override
Definition: EvtStoreSvc.cpp:488
EvtStoreSvc::retrieveObject
StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
Definition: EvtStoreSvc.cpp:632
IDataStoreAgent::analyse
virtual bool analyse(IRegistry *pObject, int level)=0
Analyse the data object.
EvtStoreSvc::m_usedPoolAllocations
Gaudi::Accumulators::AveragingCounter< std::size_t > m_usedPoolAllocations
Definition: EvtStoreSvc.cpp:247
EvtStoreSvc::clearSubTree
StatusCode clearSubTree(std::string_view) override
Definition: EvtStoreSvc.cpp:473
EvtStoreSvc::m_servedPoolAllocations
Gaudi::Accumulators::AveragingCounter< std::size_t > m_servedPoolAllocations
Definition: EvtStoreSvc.cpp:246
GaudiException
Definition: GaudiException.h:29
EvtStoreSvc::m_storeBuckets
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeBuckets
Definition: EvtStoreSvc.cpp:247
GaudiPartProp.decorators.get
get
decorate the vector of properties
Definition: decorators.py:283
conf.release
string release
Definition: conf.py:27
gaudirun.prefix
string prefix
Definition: gaudirun.py:361
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:260
CommonMessaging< implements< IService, IProperty, IStateful > >::msgLevel
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
Definition: CommonMessaging.h:147
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:55
EvtStoreSvc::fillStats
void fillStats(Partition &p) const
Definition: EvtStoreSvc.cpp:252
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:135
EvtStoreSvc::m_printPoolStats
Gaudi::Property< bool > m_printPoolStats
Definition: EvtStoreSvc.cpp:242
StatusCode
Definition: StatusCode.h:64
EvtStoreSvc::m_followLinksToAncestors
Gaudi::Property< bool > m_followLinksToAncestors
Definition: EvtStoreSvc.cpp:288
Gaudi::Accumulators::AveragingAccumulatorBase::mean
auto mean() const
Definition: Accumulators.h:746
EvtStoreSvc::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: EvtStoreSvc.cpp:236
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:229
EvtStoreSvc::initStore
void initStore(Partition &p) const
Definition: EvtStoreSvc.cpp:264
EvtStoreSvc::unregisterObject
StatusCode unregisterObject(std::string_view) override
Definition: EvtStoreSvc.cpp:650
EvtStoreSvc::m_preLoads
std::vector< DataStoreItem > m_preLoads
Items to be pre-loaded.
Definition: EvtStoreSvc.cpp:276
GaudiPython.Bindings.nullptr
nullptr
Definition: Bindings.py:87
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:198
gaudirun.level
level
Definition: gaudirun.py:364
Gaudi::StateMachine::RUNNING
@ RUNNING
Definition: StateMachine.h:25
EvtStoreSvc::registerObject
StatusCode registerObject(std::string_view parentPath, std::string_view objectPath, DataObject *pObject) override
Definition: EvtStoreSvc.cpp:601
StatusCode::ignore
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition: StatusCode.h:139
SmartIF::as
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
Definition: SmartIF.h:110
EvtStoreSvc::rootName
const std::string & rootName() const override
Definition: EvtStoreSvc.cpp:412
EvtStoreSvc::findObject
StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
Definition: EvtStoreSvc.cpp:644
EvtStoreSvc::registerAddress
StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress) override
Definition: EvtStoreSvc.cpp:549
EvtStoreSvc::m_usedPoolSize
Gaudi::Accumulators::AveragingCounter< std::size_t > m_usedPoolSize
Definition: EvtStoreSvc.cpp:246
EvtStoreSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: EvtStoreSvc.cpp:237
EvtStoreSvc::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
Definition: EvtStoreSvc.cpp:281
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:99
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
Gaudi::Units::sr
constexpr double sr
Definition: SystemOfUnits.h:131
StringKeyEx.keys
keys
Definition: StringKeyEx.py:64
EvtStoreSvc::selectStore
StatusCode selectStore(size_t partition) override
Activate a partition object. The identifies the partition uniquely.
Definition: EvtStoreSvc.cpp:452
EvtStoreSvc::setDataLoader
StatusCode setDataLoader(IConversionSvc *svc, IDataProviderSvc *dpsvc) override
Definition: EvtStoreSvc.cpp:413
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:24
DataObject
Definition: DataObject.h:37
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
EvtStoreSvc::m_partitions
std::vector< Synced< Partition > > m_partitions
The actual store(s)
Definition: EvtStoreSvc.cpp:279
Properties.v
v
Definition: Properties.py:122
EvtStoreSvc::m_forceLeaves
Gaudi::Property< bool > m_forceLeaves
Definition: EvtStoreSvc.cpp:238
EvtStoreSvc::m_loader
Gaudi::Property< std::string > m_loader
Definition: EvtStoreSvc.cpp:240
Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents
static GAUDI_API void setNumConcEvents(const std::size_t &nE)
Definition: ConcurrencyFlags.h:68
EvtStoreSvc::m_poolSize
Gaudi::Property< std::size_t > m_poolSize
Definition: EvtStoreSvc.cpp:243
IOTest.end
end
Definition: IOTest.py:125
EvtStoreSvc::m_storeEntries
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeEntries
Definition: EvtStoreSvc.cpp:247
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:100
EvtStoreSvc::m_slots
Gaudi::Property< size_t > m_slots
Definition: EvtStoreSvc.cpp:241
EvtStoreSvc::m_inhibitPrefixes
Gaudi::Property< std::vector< std::string > > m_inhibitPrefixes
Definition: EvtStoreSvc.cpp:283
AlgSequencer.top
top
Definition: AlgSequencer.py:37
EvtStoreSvc::setNumberOfStores
StatusCode setNumberOfStores(size_t slots) override
Set the number of event slots (copies of DataSvc objects).
Definition: EvtStoreSvc.cpp:432
EvtStoreSvc::m_estStoreBuckets
Gaudi::Property< std::size_t > m_estStoreBuckets
Definition: EvtStoreSvc.cpp:244
EvtStoreSvc::poolSize
std::size_t poolSize() const
Definition: EvtStoreSvc.cpp:250
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:79
Gaudi::cxx::with_lock
auto with_lock(Fun &&f)
Definition: SynchronizedValue.h:91
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator
Definition: Service.cpp:336
IConversionSvc
Definition: IConversionSvc.h:43
EvtStoreSvc::m_dataLoader
SmartIF< IConversionSvc > m_dataLoader
Definition: EvtStoreSvc.cpp:273