The Gaudi Framework  v36r1 (3e2fb5a8)
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...
 
StatusCode setProperties ()
 
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, 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 {this, "ForceLeaves", false, "force creation of default leaves on registerObject"}
 
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 {this, "StoreBuckets", 100, "Estimated number of buckets in the store"}
 
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 {this, "AutoRetrieveTools", true, "retrieve all AlgTools during initialize"}
 
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 654 of file EvtStoreSvc.cpp.

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

◆ 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 boost::algorithm::starts_with( value.first, 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 ( LIKELY( !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 * 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 645 of file EvtStoreSvc.cpp.

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

◆ findObject() [2/2]

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

Definition at line 648 of file EvtStoreSvc.cpp.

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

◆ 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 ( UNLIKELY( 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  {
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  }
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 664 of file EvtStoreSvc.cpp.

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

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

◆ 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 608 of file EvtStoreSvc.cpp.

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

◆ registerObject() [2/2]

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

Definition at line 602 of file EvtStoreSvc.cpp.

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

◆ removePreLoadItem()

StatusCode EvtStoreSvc::removePreLoadItem ( const DataStoreItem item)
override

Definition at line 659 of file EvtStoreSvc.cpp.

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

◆ 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 633 of file EvtStoreSvc.cpp.

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

◆ 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 ( UNLIKELY( !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 ( UNLIKELY( !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  auto cmp = []( const Entry* lhs, const Entry* rhs ) { return lhs->identifier() < rhs->identifier(); };
492  std::set<const Entry*, decltype( cmp )> keys{std::move( cmp )};
493  for ( const auto& v : *p.store ) {
494  if ( boost::algorithm::starts_with( v.second.identifier(), top ) ) keys.insert( &v.second );
495  }
496  auto k = keys.begin();
497  while ( k != keys.end() ) {
498  const auto& id = ( *k )->identifier();
499  int level = std::count( id.begin(), id.end(), '/' );
500  bool accept = pAgent->analyse( const_cast<Entry*>( *( k++ ) ), level );
501  if ( !accept ) {
502  k = std::find_if_not( k, keys.end(),
503  [&id]( const auto& e ) { return boost::algorithm::starts_with( e->identifier(), 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 651 of file EvtStoreSvc.cpp.

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

◆ 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 {this, "StoreBuckets", 100, "Estimated number of buckets in the store"}
private

Definition at line 245 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 {this, "ForceLeaves", false, "force creation of default leaves on registerObject"}
private

Definition at line 240 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 241 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 244 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 243 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 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 242 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:71
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:25
std::string
STL class.
EvtStoreSvc::m_onlyThisID
std::string_view m_onlyThisID
Definition: EvtStoreSvc.cpp:291
std::move
T move(T... args)
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:355
ReadAndWriteWhiteBoard.loader
loader
Definition: ReadAndWriteWhiteBoard.py:46
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:633
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
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:473
EvtStoreSvc::m_servedPoolAllocations
Gaudi::Accumulators::AveragingCounter< std::size_t > m_servedPoolAllocations
Definition: EvtStoreSvc.cpp:246
GaudiException
Definition: GaudiException.h:31
EvtStoreSvc::m_storeBuckets
Gaudi::Accumulators::AveragingCounter< std::size_t > m_storeBuckets
Definition: EvtStoreSvc.cpp:247
std::distance
T distance(T... args)
conf.release
string release
Definition: conf.py:28
gaudirun.prefix
string prefix
Definition: gaudirun.py:343
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:308
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:252
GaudiPluginService.cpluginsvc.registry
def registry()
Definition: cpluginsvc.py:82
Gaudi::Functional::details::get
auto get(const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
Definition: FunctionalDetails.h:391
EvtStoreSvc::m_printPoolStats
Gaudi::Property< bool > m_printPoolStats
Definition: EvtStoreSvc.cpp:243
StatusCode
Definition: StatusCode.h:65
EvtStoreSvc::m_followLinksToAncestors
Gaudi::Property< bool > m_followLinksToAncestors
Definition: EvtStoreSvc.cpp:288
CLHEP::begin
double * begin(CLHEP::HepVector &v)
Definition: TupleAlg.cpp:45
Gaudi::Accumulators::AveragingAccumulatorBase::mean
auto mean() const
Definition: Accumulators.h:716
EvtStoreSvc::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: EvtStoreSvc.cpp:238
LIKELY
#define LIKELY(x)
Definition: Kernel.h:105
Gaudi::Property::value
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:240
EvtStoreSvc::initStore
void initStore(Partition &p) const
Definition: EvtStoreSvc.cpp:264
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:943
EvtStoreSvc::unregisterObject
StatusCode unregisterObject(std::string_view) override
Definition: EvtStoreSvc.cpp:651
EvtStoreSvc::m_preLoads
std::vector< DataStoreItem > m_preLoads
Items to be pre-loaded.
Definition: EvtStoreSvc.cpp:276
GaudiPython.Bindings.nullptr
nullptr
Definition: Bindings.py:74
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:203
std::remove
T remove(T... args)
gaudirun.level
level
Definition: gaudirun.py:346
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:602
StatusCode::ignore
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition: StatusCode.h:156
HistoDumpEx.v
v
Definition: HistoDumpEx.py:27
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:412
EvtStoreSvc::findObject
StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject) override
Definition: EvtStoreSvc.cpp:645
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:239
EvtStoreSvc::m_freeSlots
tbb::concurrent_queue< size_t > m_freeSlots
Definition: EvtStoreSvc.cpp:281
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
EvtStoreSvc::selectStore
StatusCode selectStore(size_t partition) override
Activate a partition object. The identifies the partition uniquely.
Definition: EvtStoreSvc.cpp:452
std::vector::begin
T begin(T... args)
std
STL namespace.
EvtStoreSvc::setDataLoader
StatusCode setDataLoader(IConversionSvc *svc, IDataProviderSvc *dpsvc) override
Definition: EvtStoreSvc.cpp:413
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:25
DataObject
Definition: DataObject.h:40
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
std::count
T count(T... args)
EvtStoreSvc::m_forceLeaves
Gaudi::Property< bool > m_forceLeaves
Definition: EvtStoreSvc.cpp:240
EvtStoreSvc::m_loader
Gaudi::Property< std::string > m_loader
Definition: EvtStoreSvc.cpp:241
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:244
IOTest.end
end
Definition: IOTest.py:123
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:101
EvtStoreSvc::m_slots
Gaudi::Property< size_t > m_slots
Definition: EvtStoreSvc.cpp:242
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:106
std::prev
T prev(T... args)
EvtStoreSvc::m_inhibitPrefixes
Gaudi::Property< std::vector< std::string > > m_inhibitPrefixes
Definition: EvtStoreSvc.cpp:283
AlgSequencer.top
top
Definition: AlgSequencer.py:31
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:245
std::unique_ptr
STL class.
std::partition
T partition(T... args)
EvtStoreSvc::poolSize
std::size_t poolSize() const
Definition: EvtStoreSvc.cpp:250
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:82
std::set
STL class.
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator
Definition: Service.cpp:335
StringKeyEx.keys
list keys
Definition: StringKeyEx.py:67
IConversionSvc
Definition: IConversionSvc.h:47
EvtStoreSvc::m_dataLoader
SmartIF< IConversionSvc > m_dataLoader
Definition: EvtStoreSvc.cpp:273