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

Public Member Functions

CLID rootCLID () const override
 
const std::stringrootName () 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 * 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::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
- Public Member Functions inherited from Service
const std::stringname () 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<class T >
StatusCode service (const std::string &name, const T *&psvc, bool createIf=true) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T >
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
 
template<typename IFace = IService>
SmartIF< IFace > service (const std::string &name, bool createIf=true) const
 
template<class T >
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
 Access a service by name and type, creating it if it doesn't already exist. More...
 
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, TYPE &value, const std::string &doc="none")
 Helper to wrap a regular data member and use it as a regular 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...
 
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 setProperty (const std::string &name, const TYPE &value)
 set the property form the value 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::stringm_rootName { this, "RootName", "/Event", "name of root entry" }
 
Gaudi::Property< bool > m_forceLeaves
 
Gaudi::Property< std::stringm_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_tm_poolSize { this, "PoolSize", 1024, "Initial per-event memory pool size [KiB]" }
 
Gaudi::Property< std::size_tm_estStoreBuckets
 
Gaudi::Accumulators::AveragingCounter< std::size_tm_usedPoolSize
 
Gaudi::Accumulators::AveragingCounter< std::size_tm_servedPoolAllocations
 
Gaudi::Accumulators::AveragingCounter< std::size_tm_usedPoolAllocations
 
Gaudi::Accumulators::AveragingCounter< std::size_tm_storeEntries
 
Gaudi::Accumulators::AveragingCounter< std::size_tm_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
 Standard Destructor
More...
 
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_auditInit { this, "AuditServices", false, "[[deprecated]] unused" }
 
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 237 of file EvtStoreSvc.cpp.

Member Function Documentation

◆ addPreLoadItem()

StatusCode EvtStoreSvc::addPreLoadItem ( const DataStoreItem item)
override

Definition at line 657 of file EvtStoreSvc.cpp.

657  {
658  auto i = std::find( m_preLoads.begin(), m_preLoads.begin(), item );
659  if ( i == m_preLoads.end() ) m_preLoads.push_back( item );
660  return StatusCode::SUCCESS;
661 }

◆ allocateStore()

size_t EvtStoreSvc::allocateStore ( int  evtnumber)
override

Allocate a store partition for a given event number.

Definition at line 421 of file EvtStoreSvc.cpp.

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

◆ clearStore() [1/2]

StatusCode EvtStoreSvc::clearStore ( )
override

Definition at line 482 of file EvtStoreSvc.cpp.

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

◆ clearStore() [2/2]

StatusCode EvtStoreSvc::clearStore ( size_t  partition)
override

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

Definition at line 467 of file EvtStoreSvc.cpp.

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

◆ clearSubTree() [1/2]

StatusCode EvtStoreSvc::clearSubTree ( DataObject obj)
inlineoverride

Definition at line 322 of file EvtStoreSvc.cpp.

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

◆ clearSubTree() [2/2]

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

Definition at line 475 of file EvtStoreSvc.cpp.

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

◆ exists()

bool EvtStoreSvc::exists ( const DataObjID id)
inlineoverride

Definition at line 311 of file EvtStoreSvc.cpp.

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

◆ fillStats()

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

Definition at line 254 of file EvtStoreSvc.cpp.

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

◆ finalize()

StatusCode EvtStoreSvc::finalize ( )
inlineoverride

Definition at line 397 of file EvtStoreSvc.cpp.

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

◆ findObject() [1/2]

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

Definition at line 648 of file EvtStoreSvc.cpp.

648  {
649  return retrieveObject( pDirectory, path, pObject );
650 }

◆ findObject() [2/2]

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

Definition at line 651 of file EvtStoreSvc.cpp.

651  {
652  return retrieveObject( nullptr, fullPath, pObject );
653 }

◆ freeSlots()

size_t EvtStoreSvc::freeSlots ( )
inlineoverride

Definition at line 304 of file EvtStoreSvc.cpp.

304 { return m_freeSlots.unsafe_size(); }

◆ freeStore()

StatusCode EvtStoreSvc::freeStore ( size_t  partition)
override

Free a store partition.

Definition at line 459 of file EvtStoreSvc.cpp.

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

◆ getNumberOfStores()

size_t EvtStoreSvc::getNumberOfStores ( ) const
inlineoverride

Definition at line 309 of file EvtStoreSvc.cpp.

309 { return m_slots; }

◆ getPartitionNumber()

size_t EvtStoreSvc::getPartitionNumber ( int  eventnumber) const
override

Get the partition number corresponding to a given event.

Definition at line 448 of file EvtStoreSvc.cpp.

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

◆ initialize()

StatusCode EvtStoreSvc::initialize ( )
inlineoverride

Definition at line 375 of file EvtStoreSvc.cpp.

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

◆ initStore()

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

Definition at line 266 of file EvtStoreSvc.cpp.

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

◆ linkObject() [1/2]

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

Definition at line 369 of file EvtStoreSvc.cpp.

369 { return dummy( __FUNCTION__ ); }

◆ linkObject() [2/2]

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

Definition at line 370 of file EvtStoreSvc.cpp.

370 { return dummy( __FUNCTION__ ); }

◆ objectLeaves() [1/2]

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

Definition at line 318 of file EvtStoreSvc.cpp.

318 { return dummy( __FUNCTION__ ); }

◆ objectLeaves() [2/2]

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

Definition at line 319 of file EvtStoreSvc.cpp.

319 { return dummy( __FUNCTION__ ); }

◆ objectParent() [1/2]

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

Definition at line 316 of file EvtStoreSvc.cpp.

316 { return dummy( __FUNCTION__ ); }

◆ objectParent() [2/2]

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

Definition at line 317 of file EvtStoreSvc.cpp.

317 { return dummy( __FUNCTION__ ); }

◆ poolSize()

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

Definition at line 252 of file EvtStoreSvc.cpp.

252 { return m_poolSize * 1024; }

◆ preLoad()

StatusCode EvtStoreSvc::preLoad ( )
override

Definition at line 667 of file EvtStoreSvc.cpp.

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

◆ registerAddress() [1/2]

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

Definition at line 555 of file EvtStoreSvc.cpp.

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

◆ registerAddress() [2/2]

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

Definition at line 552 of file EvtStoreSvc.cpp.

552  {
553  return registerAddress( nullptr, path, pAddr );
554 }

◆ registerObject() [1/2]

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

Definition at line 611 of file EvtStoreSvc.cpp.

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

◆ registerObject() [2/2]

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

Definition at line 605 of file EvtStoreSvc.cpp.

606  {
607  return parentPath.empty()
608  ? registerObject( nullptr, objectPath, pObject )
609  : registerObject( nullptr, std::string{ parentPath }.append( "/" ).append( objectPath ), pObject );
610 }

◆ removePreLoadItem()

StatusCode EvtStoreSvc::removePreLoadItem ( const DataStoreItem item)
override

Definition at line 662 of file EvtStoreSvc.cpp.

662  {
663  auto i = std::remove( m_preLoads.begin(), m_preLoads.begin(), item );
664  m_preLoads.erase( i, m_preLoads.end() );
665  return StatusCode::SUCCESS;
666 }

◆ resetPreLoad()

StatusCode EvtStoreSvc::resetPreLoad ( )
inlineoverride

Definition at line 363 of file EvtStoreSvc.cpp.

363  {
364  m_preLoads.clear();
365  return StatusCode::SUCCESS;
366  }

◆ retrieveObject()

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

Definition at line 636 of file EvtStoreSvc.cpp.

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

◆ rootCLID()

CLID EvtStoreSvc::rootCLID ( ) const
override

Definition at line 413 of file EvtStoreSvc.cpp.

413 { return m_rootCLID; }

◆ rootName()

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

Definition at line 414 of file EvtStoreSvc.cpp.

414 { return m_rootName; }

◆ selectStore()

StatusCode EvtStoreSvc::selectStore ( size_t  partition)
override

Activate a partition object. The identifies the partition uniquely.

Definition at line 454 of file EvtStoreSvc.cpp.

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

◆ setDataLoader()

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

Definition at line 415 of file EvtStoreSvc.cpp.

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

◆ setNumberOfStores()

StatusCode EvtStoreSvc::setNumberOfStores ( size_t  slots)
override

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

Definition at line 434 of file EvtStoreSvc.cpp.

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

◆ setRoot() [1/2]

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

Definition at line 512 of file EvtStoreSvc.cpp.

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

◆ setRoot() [2/2]

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

Definition at line 523 of file EvtStoreSvc.cpp.

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

◆ traverseSubTree() [1/2]

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

Definition at line 327 of file EvtStoreSvc.cpp.

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

◆ traverseSubTree() [2/2]

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

Definition at line 490 of file EvtStoreSvc.cpp.

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

◆ traverseTree()

StatusCode EvtStoreSvc::traverseTree ( IDataStoreAgent pAgent)
inlineoverride

Definition at line 330 of file EvtStoreSvc.cpp.

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

◆ unlinkObject() [1/3]

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

Definition at line 372 of file EvtStoreSvc.cpp.

372 { return dummy( __FUNCTION__ ); }

◆ unlinkObject() [2/3]

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

Definition at line 371 of file EvtStoreSvc.cpp.

371 { return dummy( __FUNCTION__ ); }

◆ unlinkObject() [3/3]

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

Definition at line 373 of file EvtStoreSvc.cpp.

373 { return dummy( __FUNCTION__ ); }

◆ unregisterAddress() [1/2]

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

Definition at line 336 of file EvtStoreSvc.cpp.

336 { return dummy( __FUNCTION__ ); };

◆ unregisterAddress() [2/2]

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

Definition at line 335 of file EvtStoreSvc.cpp.

335 { return dummy( __FUNCTION__ ); };

◆ unregisterObject() [1/3]

StatusCode EvtStoreSvc::unregisterObject ( DataObject obj)
inlineoverride

Definition at line 344 of file EvtStoreSvc.cpp.

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

◆ unregisterObject() [2/3]

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

Definition at line 347 of file EvtStoreSvc.cpp.

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

◆ unregisterObject() [3/3]

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

Definition at line 654 of file EvtStoreSvc.cpp.

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

◆ updateObject() [1/2]

StatusCode EvtStoreSvc::updateObject ( DataObject )
inlineoverride

Definition at line 359 of file EvtStoreSvc.cpp.

359 { return dummy( __FUNCTION__ ); }

◆ updateObject() [2/2]

StatusCode EvtStoreSvc::updateObject ( IRegistry )
inlineoverride

Definition at line 358 of file EvtStoreSvc.cpp.

358 { return dummy( __FUNCTION__ ); }

Member Data Documentation

◆ m_dataLoader

SmartIF<IConversionSvc> EvtStoreSvc::m_dataLoader
private

Definition at line 275 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 246 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 290 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 240 of file EvtStoreSvc.cpp.

◆ m_freeSlots

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

Definition at line 283 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 285 of file EvtStoreSvc.cpp.

◆ m_loader

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

Definition at line 242 of file EvtStoreSvc.cpp.

◆ m_onlyThisID

std::string_view EvtStoreSvc::m_onlyThisID
private

Definition at line 293 of file EvtStoreSvc.cpp.

◆ m_partitions

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

The actual store(s)

Definition at line 281 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 245 of file EvtStoreSvc.cpp.

◆ m_preLoads

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

Items to be pre-loaded.

Definition at line 278 of file EvtStoreSvc.cpp.

◆ m_printPoolStats

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

Definition at line 244 of file EvtStoreSvc.cpp.

◆ m_rootCLID

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

Definition at line 238 of file EvtStoreSvc.cpp.

◆ m_rootName

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

Definition at line 239 of file EvtStoreSvc.cpp.

◆ m_servedPoolAllocations

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

Definition at line 248 of file EvtStoreSvc.cpp.

◆ m_slots

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

Definition at line 243 of file EvtStoreSvc.cpp.

◆ m_storeBuckets

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

Definition at line 249 of file EvtStoreSvc.cpp.

◆ m_storeEntries

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

Definition at line 249 of file EvtStoreSvc.cpp.

◆ m_usedPoolAllocations

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

Definition at line 249 of file EvtStoreSvc.cpp.

◆ m_usedPoolSize

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

Definition at line 248 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:25
std::string
STL class.
cpluginsvc.registry
def registry()
Definition: cpluginsvc.py:83
EvtStoreSvc::m_onlyThisID
std::string_view m_onlyThisID
Definition: EvtStoreSvc.cpp:293
std::move
T move(T... args)
AtlasMCRecoFullPrecedenceDump.path
path
Definition: AtlasMCRecoFullPrecedenceDump.py:49
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
ReadAndWriteWhiteBoard.loader
loader
Definition: ReadAndWriteWhiteBoard.py:55
EvtStoreSvc::traverseSubTree
StatusCode traverseSubTree(std::string_view, IDataStoreAgent *) override
Definition: EvtStoreSvc.cpp:490
EvtStoreSvc::retrieveObject
StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
Definition: EvtStoreSvc.cpp:636
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:249
std::vector
STL class.
std::find
T find(T... args)
std::vector::size
T size(T... args)
EvtStoreSvc::clearSubTree
StatusCode clearSubTree(std::string_view) override
Definition: EvtStoreSvc.cpp:475
EvtStoreSvc::m_servedPoolAllocations
Gaudi::Accumulators::AveragingCounter< std::size_t > m_servedPoolAllocations
Definition: EvtStoreSvc.cpp:248
GaudiException
Definition: GaudiException.h:31
EvtStoreSvc::m_storeBuckets
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeBuckets
Definition: EvtStoreSvc.cpp:249
GaudiPartProp.decorators.get
get
decorate the vector of properties
Definition: decorators.py:283
std::distance
T distance(T... args)
conf.release
string release
Definition: conf.py:27
gaudirun.prefix
string prefix
Definition: gaudirun.py:361
std::any_of
T any_of(T... args)
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:315
CommonMessaging< implements< IService, IProperty, IStateful > >::msgLevel
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
Definition: CommonMessaging.h:148
Service::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: Service.h:62
std::vector::clear
T clear(T... args)
std::vector::push_back
T push_back(T... args)
EvtStoreSvc::fillStats
void fillStats(Partition &p) const
Definition: EvtStoreSvc.cpp:254
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:136
EvtStoreSvc::m_printPoolStats
Gaudi::Property< bool > m_printPoolStats
Definition: EvtStoreSvc.cpp:244
StatusCode
Definition: StatusCode.h:65
EvtStoreSvc::m_followLinksToAncestors
Gaudi::Property< bool > m_followLinksToAncestors
Definition: EvtStoreSvc.cpp:290
Gaudi::Accumulators::AveragingAccumulatorBase::mean
auto mean() const
Definition: Accumulators.h:759
EvtStoreSvc::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: EvtStoreSvc.cpp:238
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:237
EvtStoreSvc::initStore
void initStore(Partition &p) const
Definition: EvtStoreSvc.cpp:266
EvtStoreSvc::unregisterObject
StatusCode unregisterObject(std::string_view) override
Definition: EvtStoreSvc.cpp:654
EvtStoreSvc::m_preLoads
std::vector< DataStoreItem > m_preLoads
Items to be pre-loaded.
Definition: EvtStoreSvc.cpp:278
GaudiPython.Bindings.nullptr
nullptr
Definition: Bindings.py:87
std::vector::erase
T erase(T... args)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
std::remove
T remove(T... args)
gaudirun.level
level
Definition: gaudirun.py:364
Gaudi::StateMachine::RUNNING
@ RUNNING
Definition: StateMachine.h:26
EvtStoreSvc::registerObject
StatusCode registerObject(std::string_view parentPath, std::string_view objectPath, DataObject *pObject) override
Definition: EvtStoreSvc.cpp:605
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:117
EvtStoreSvc::rootName
const std::string & rootName() const override
Definition: EvtStoreSvc.cpp:414
EvtStoreSvc::findObject
StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
Definition: EvtStoreSvc.cpp:648
EvtStoreSvc::registerAddress
StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress) override
Definition: EvtStoreSvc.cpp:552
EvtStoreSvc::m_usedPoolSize
Gaudi::Accumulators::AveragingCounter< std::size_t > m_usedPoolSize
Definition: EvtStoreSvc.cpp:248
EvtStoreSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: EvtStoreSvc.cpp:239
EvtStoreSvc::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
Definition: EvtStoreSvc.cpp:283
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
Gaudi::Units::sr
constexpr double sr
Definition: SystemOfUnits.h:132
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:454
std::vector::begin
T begin(T... args)
std
STL namespace.
EvtStoreSvc::setDataLoader
StatusCode setDataLoader(IConversionSvc *svc, IDataProviderSvc *dpsvc) override
Definition: EvtStoreSvc.cpp:415
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:25
DataObject
Definition: DataObject.h:36
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:281
std::count
T count(T... args)
Properties.v
v
Definition: Properties.py:122
EvtStoreSvc::m_forceLeaves
Gaudi::Property< bool > m_forceLeaves
Definition: EvtStoreSvc.cpp:240
EvtStoreSvc::m_loader
Gaudi::Property< std::string > m_loader
Definition: EvtStoreSvc.cpp:242
Gaudi::Concurrency::ConcurrencyFlags::setNumConcEvents
static GAUDI_API void setNumConcEvents(const std::size_t &nE)
Definition: ConcurrencyFlags.h:69
std::vector::end
T end(T... args)
EvtStoreSvc::m_poolSize
Gaudi::Property< std::size_t > m_poolSize
Definition: EvtStoreSvc.cpp:245
IOTest.end
end
Definition: IOTest.py:125
EvtStoreSvc::m_storeEntries
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeEntries
Definition: EvtStoreSvc.cpp:249
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
EvtStoreSvc::m_slots
Gaudi::Property< size_t > m_slots
Definition: EvtStoreSvc.cpp:243
std::prev
T prev(T... args)
EvtStoreSvc::m_inhibitPrefixes
Gaudi::Property< std::vector< std::string > > m_inhibitPrefixes
Definition: EvtStoreSvc.cpp:285
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:434
EvtStoreSvc::m_estStoreBuckets
Gaudi::Property< std::size_t > m_estStoreBuckets
Definition: EvtStoreSvc.cpp:246
std::unique_ptr
STL class.
std::partition
T partition(T... args)
EvtStoreSvc::poolSize
std::size_t poolSize() const
Definition: EvtStoreSvc.cpp:252
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:78
Gaudi::cxx::with_lock
auto with_lock(Fun &&f)
Definition: SynchronizedValue.h:98
std::set
STL class.
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator
Definition: Service.cpp:335
IConversionSvc
Definition: IConversionSvc.h:47
EvtStoreSvc::m_dataLoader
SmartIF< IConversionSvc > m_dataLoader
Definition: EvtStoreSvc.cpp:275