The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
MultiStoreSvc Class Reference

Data service base class. More...

Inheritance diagram for MultiStoreSvc:
Collaboration diagram for MultiStoreSvc:

Classes

struct  tagROOT
 Root type (address or object) More...
 

Public Member Functions

CLID rootCLID () const override
 IDataManagerSvc: Accessor for root event CLID.
 
const std::string & rootName () const override
 Name for root Event.
 
StatusCode registerAddress (std::string_view path, ADDRESS *pAddr) override
 IDataManagerSvc: Register object address with the data store.
 
StatusCode registerAddress (IRegistry *parent, std::string_view path, ADDRESS *pAddr) override
 IDataManagerSvc: Register object address with the data store.
 
StatusCode unregisterAddress (std::string_view path) override
 IDataManagerSvc: Unregister object address from the data store.
 
StatusCode unregisterAddress (IRegistry *pParent, std::string_view path) override
 IDataManagerSvc: Unregister object address from the data store.
 
StatusCode objectLeaves (const OBJECT *pObject, std::vector< IRegistry * > &leaves) override
 Explore the object store: retrieve all leaves attached to the object.
 
StatusCode objectLeaves (const IRegistry *pObject, std::vector< IRegistry * > &leaves) override
 Explore the object store: retrieve all leaves attached to the object.
 
StatusCode objectParent (const OBJECT *pObject, IRegistry *&refpParent) override
 IDataManagerSvc: Explore the object store: retrieve the object's parent.
 
StatusCode objectParent (const IRegistry *pObject, IRegistry *&refpParent) override
 IDataManagerSvc: Explore the object store: retrieve the object's parent.
 
StatusCode clearSubTree (std::string_view path) override
 Remove all data objects below the sub tree identified.
 
StatusCode clearSubTree (OBJECT *pObject) override
 Remove all data objects below the sub tree identified.
 
StatusCode clearStore () override
 IDataManagerSvc: Remove all data objects in the data store.
 
StatusCode traverseSubTree (std::string_view path, AGENT *pAgent) override
 Analyze by traversing all data objects below the sub tree.
 
StatusCode traverseSubTree (OBJECT *pObject, AGENT *pAgent) override
 IDataManagerSvc: Analyze by traversing all data objects below the sub tree.
 
StatusCode traverseTree (AGENT *pAgent) override
 IDataManagerSvc: Analyze by traversing all data objects in the data store.
 
StatusCode setRoot (std::string path, OBJECT *pObj) override
 Initialize data store for new event by giving new event path and root object.
 
StatusCode setRoot (std::string path, ADDRESS *pAddr) override
 Initialize data store for new event by giving new event path and address of root object.
 
StatusCode setDataLoader (IConversionSvc *pDataLoader, IDataProviderSvc *dpsvc=nullptr) override
 IDataManagerSvc: Pass a default data loader to the service.
 
StatusCode addPreLoadItem (const DataStoreItem &item) override
 Add an item to the preload list.
 
StatusCode removePreLoadItem (const DataStoreItem &item) override
 Remove an item from the preload list.
 
StatusCode resetPreLoad () override
 Clear the preload list.
 
StatusCode preLoad () override
 load all preload items of the list
 
StatusCode registerObject (std::string_view parent, std::string_view obj, OBJECT *pObj) override
 Register object with the data store.
 
StatusCode registerObject (OBJECT *parent, std::string_view obj, OBJECT *pObj) override
 Register object with the data store.
 
StatusCode unregisterObject (std::string_view path) override
 Unregister object from the data store.
 
StatusCode unregisterObject (OBJECT *pObj) override
 Unregister object from the data store.
 
StatusCode unregisterObject (OBJECT *pObj, std::string_view path) override
 Unregister object from the data store.
 
StatusCode retrieveObject (IRegistry *parent, std::string_view path, OBJECT *&pObj) override
 Retrieve object from data store.
 
StatusCode findObject (std::string_view path, OBJECT *&pObj) override
 Find object identified by its full path in the data store.
 
StatusCode findObject (IRegistry *parent, std::string_view path, OBJECT *&pObj) override
 Find object identified by its full path in the data store.
 
StatusCode linkObject (IRegistry *from, std::string_view objPath, OBJECT *to) override
 Add a link to another object.
 
StatusCode linkObject (std::string_view fullPath, OBJECT *to) override
 Add a link to another object.
 
StatusCode unlinkObject (IRegistry *from, std::string_view objPath) override
 Remove a link to another object.
 
StatusCode unlinkObject (OBJECT *from, std::string_view objPath) override
 Remove a link to another object.
 
StatusCode unlinkObject (std::string_view path) override
 Remove a link to another object.
 
StatusCode updateObject (IRegistry *pDirectory) override
 Update object identified by its directory entry.
 
StatusCode updateObject (OBJECT *pObj) override
 Update object.
 
StatusCode create (CSTR &nam, CSTR &typ) override
 Create a partition object. The name identifies the partition uniquely.
 
StatusCode create (CSTR &nam, CSTR &typ, IInterface *&pPartition) override
 Create a partition object. The name identifies the partition uniquely.
 
StatusCode drop (CSTR &nam) override
 Drop a partition object. The name identifies the partition uniquely.
 
StatusCode drop (IInterface *pPartition) override
 Drop a partition object. The name identifies the partition uniquely.
 
StatusCode activate (CSTR &nam) override
 Activate a partition object. The name identifies the partition uniquely.
 
StatusCode activate (IInterface *pPartition) override
 Activate a partition object.
 
StatusCode get (CSTR &nam, IInterface *&pPartition) const override
 Access a partition object. The name identifies the partition uniquely.
 
StatusCode activePartition (std::string &nam, IInterface *&pPartition) const override
 Access the active partition object.
 
StatusCode attachServices ()
 
StatusCode detachServices ()
 
StatusCode initialize () override
 Service initialisation.
 
StatusCode reinitialize () override
 Service initialisation.
 
StatusCode finalize () override
 Service initialisation.
 
 ~MultiStoreSvc () override
 Standard Destructor.
 
StatusCode preparePartitions ()
 Prepare partition for usage.
 
StatusCode clearPartitions ()
 Clear all partitions.
 
StatusCode makePartitions ()
 Create all partitions according to job options.
 
- Public Member Functions inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IPartitionControl >
void const * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast.
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface.
 
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames.
 
- Public Member Functions inherited from Service
const std::string & name () const override
 Retrieve name of the service.
 
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.
 
StatusCode sysStart () override
 Initialize Service.
 
StatusCode sysStop () override
 Initialize Service.
 
StatusCode sysFinalize () override
 Finalize Service.
 
StatusCode sysReinitialize () override
 Re-initialize the Service.
 
StatusCode sysRestart () override
 Re-initialize the Service.
 
 Service (std::string name, ISvcLocator *svcloc)
 Standard Constructor.
 
SmartIF< ISvcLocator > & serviceLocator () const override
 Retrieve pointer to service locator.
 
template<typename IFace = IService>
SmartIF< IFace > service (const std::string &name, bool createIf=true) const
 
template<class T>
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
 
template<class T>
StatusCode declareTool (ToolHandle< T > &handle, bool createIf=true)
 
template<class T>
StatusCode declareTool (ToolHandle< T > &handle, const std::string &toolTypeAndName, bool createIf=true)
 Declare used tool.
 
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.
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
StatusCode setProperty (const Gaudi::Details::PropertyBase &p)
 Set the property from a property.
 
StatusCode setProperty (const std::string &name, const char *v)
 Special case for string literals.
 
StatusCode setProperty (const std::string &name, const std::string &v)
 Special case for std::string.
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value
 
 PropertyHolder ()=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property.
 
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.
 
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.
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property.
 
StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p) override
 set the property from another property with a different name
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p)
 Set the property from a property.
 
StatusCode setProperty (const std::string &name, const char *v)
 Special case for string literals.
 
StatusCode setProperty (const std::string &name, const std::string &v)
 Special case for std::string.
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value
 
StatusCode setPropertyRepr (const std::string &n, const std::string &r) override
 set the property from name and value string representation
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property
 
const Gaudi::Details::PropertyBasegetProperty (std::string_view name) const override
 get the property by name
 
StatusCode getProperty (std::string_view n, std::string &v) const override
 convert the property to the string
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties
 
bool hasProperty (std::string_view name) const override
 Return true if we have a property with the given name.
 
Gaudi::Details::PropertyBaseproperty (std::string_view name) const
 \fixme property and bindPropertiesTo should be protected
 
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)
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor.
 
const SmartIF< IMessageSvc > & msgSvc () const
 The standard message service.
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream.
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts.
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS)
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL)
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR)
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR)
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING)
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO)
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG)
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE)
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO)
 

Protected Types

typedef std::vector< std::string > PartitionDefs
 
typedef std::map< std::string, Partition > Partitions
 

Protected Member Functions

template<typename Fun>
StatusCode fwd (Fun f)
 
- Protected Member Functions inherited from Service
std::vector< IAlgTool * > & tools ()
 
 ~Service () override
 
int outputLevel () const
 get the Service's output level
 
- Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level setUpMessaging () const
 Set up local caches.
 
MSG::Level resetMessaging ()
 Reinitialize internal states.
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream.
 

Protected Attributes

Gaudi::Property< CLIDm_rootCLID { this, "RootCLID", 110, "CLID of root entry" }
 
Gaudi::Property< std::string > m_rootName { this, "RootName", "/Event", "name of root entry" }
 
Gaudi::Property< PartitionDefsm_partitionDefs { this, "Partitions", {}, "datastore partition definitions" }
 
Gaudi::Property< std::string > m_loader { this, "DataLoader", "EventPersistencySvc", "data loader name" }
 
Gaudi::Property< std::string > m_defaultPartition { this, "DefaultPartition", "Default", "default partition name" }
 
SmartIF< IConversionSvcm_dataLoader
 Pointer to data loader service.
 
SmartIF< IAddressCreatorm_addrCreator
 Reference to address creator.
 
struct MultiStoreSvc::tagROOT m_root
 
Partition m_current
 Current partition.
 
Partitions m_partitions
 Datastore partitions.
 
- Protected Attributes inherited from Service
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::OFFLINE
 Service state.
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::OFFLINE
 Service state.
 
Gaudi::Property< int > m_outputLevel { this, "OutputLevel", MSG::NIL, "output level" }
 flag indicating whether ToolHandle tools have been added to m_tools
 
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.
 

Additional Inherited Members

- Public Types inherited from extends< Service, IDataProviderSvc, IDataManagerSvc, IPartitionControl >
using base_class
 Typedef to this class.
 
using extend_interfaces_base
 Typedef to the base of this class.
 
- 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
 Typedef used to refer to this class from derived classes, as in.
 
- Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using base_class
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids
 take union of the ext_iids of all Interfaces...
 

Detailed Description

Data service base class.

A data service manages the transient data stores and implements the IDataProviderSvc, the IDataManagerSvc and the IPartitionControl interfaces.

Author
Markus Frank
Sebastien Ponce
Version
1.0

Definition at line 106 of file MultiStoreSvc.cpp.

Member Typedef Documentation

◆ PartitionDefs

typedef std::vector<std::string> MultiStoreSvc::PartitionDefs
protected

Definition at line 108 of file MultiStoreSvc.cpp.

◆ Partitions

typedef std::map<std::string, Partition> MultiStoreSvc::Partitions
protected

Definition at line 109 of file MultiStoreSvc.cpp.

Constructor & Destructor Documentation

◆ ~MultiStoreSvc()

MultiStoreSvc::~MultiStoreSvc ( )
inlineoverride

Standard Destructor.

Definition at line 496 of file MultiStoreSvc.cpp.

496 {
497 setDataLoader( nullptr ).ignore();
499 clearStore().ignore();
501 }
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
StatusCode setDataLoader(IConversionSvc *pDataLoader, IDataProviderSvc *dpsvc=nullptr) override
IDataManagerSvc: Pass a default data loader to the service.
StatusCode resetPreLoad() override
Clear the preload list.
StatusCode clearPartitions()
Clear all partitions.
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition StatusCode.h:139

Member Function Documentation

◆ activate() [1/2]

StatusCode MultiStoreSvc::activate ( CSTR & nam)
inlineoverride

Activate a partition object. The name identifies the partition uniquely.

Definition at line 367 of file MultiStoreSvc.cpp.

367 {
368 auto i = m_partitions.find( nam );
369 if ( i != m_partitions.end() ) {
370 m_current = i->second;
371 return StatusCode::SUCCESS;
372 }
373 m_current = {};
375 }
Partition m_current
Current partition.
Partitions m_partitions
Datastore partitions.
constexpr static const auto SUCCESS
Definition StatusCode.h:99

◆ activate() [2/2]

StatusCode MultiStoreSvc::activate ( IInterface * pPartition)
inlineoverride

Activate a partition object.

Definition at line 378 of file MultiStoreSvc.cpp.

378 {
379 auto provider = SmartIF<IDataProviderSvc>( pPartition );
380 m_current = Partition();
381 if ( !provider ) return IInterface::Status::NO_INTERFACE;
382 auto i = std::find_if( std::begin( m_partitions ), std::end( m_partitions ),
383 [&]( Partitions::const_reference p ) { return p.second.dataProvider == provider; } );
385 m_current = i->second;
386 return StatusCode::SUCCESS;
387 }
@ NO_INTERFACE
Requested interface is not available.
Definition IInterface.h:306

◆ activePartition()

StatusCode MultiStoreSvc::activePartition ( std::string & nam,
IInterface *& pPartition ) const
inlineoverride

Access the active partition object.

Definition at line 401 of file MultiStoreSvc.cpp.

401 {
402 if ( m_current.dataProvider ) {
403 nam = m_current.name;
404 pPartition = m_current.dataProvider;
405 return StatusCode::SUCCESS;
406 }
407 nam.clear();
408 pPartition = nullptr;
410 }

◆ addPreLoadItem()

StatusCode MultiStoreSvc::addPreLoadItem ( const DataStoreItem & item)
inlineoverride

Add an item to the preload list.

Definition at line 251 of file MultiStoreSvc.cpp.

251 {
252 return fwd( [&]( IDataProviderSvc& svc ) { return svc.addPreLoadItem( item ); } );
253 }
virtual StatusCode addPreLoadItem(const DataStoreItem &item)=0
Add an item to the preload list.
StatusCode fwd(Fun f)

◆ attachServices()

StatusCode MultiStoreSvc::attachServices ( )
inline

Definition at line 412 of file MultiStoreSvc.cpp.

412 {
413 // Attach address creator facility
414 m_addrCreator = service( m_loader, true );
415 if ( !m_addrCreator ) {
416 error() << "Failed to retrieve data loader "
417 << "\"" << m_loader << "\"" << endmsg;
418 return StatusCode::FAILURE;
419 }
420 // Attach data loader facility
421 auto dataLoader = service<IConversionSvc>( m_loader, true );
422 if ( !dataLoader ) {
423 error() << "Failed to retrieve data loader "
424 << "\"" << m_loader << "\"" << endmsg;
425 return StatusCode::FAILURE;
426 }
427 auto sc = setDataLoader( dataLoader.get() );
428 if ( !sc.isSuccess() ) {
429 error() << "Failed to set data loader "
430 << "\"" << m_loader << "\"" << endmsg;
431 }
432 return sc;
433 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition MsgStream.h:198
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
SmartIF< IAddressCreator > m_addrCreator
Reference to address creator.
Gaudi::Property< std::string > m_loader
SmartIF< IFace > service(const std::string &name, bool createIf=true) const
Definition Service.h:79
constexpr static const auto FAILURE
Definition StatusCode.h:100

◆ clearPartitions()

StatusCode MultiStoreSvc::clearPartitions ( )
inline

Clear all partitions.

Definition at line 529 of file MultiStoreSvc.cpp.

529 {
530 for ( auto& i : m_partitions ) i.second.dataManager->clearStore().ignore();
531 m_partitions.clear();
532 return StatusCode::SUCCESS;
533 }

◆ clearStore()

StatusCode MultiStoreSvc::clearStore ( )
inlineoverride

IDataManagerSvc: Remove all data objects in the data store.

Definition at line 185 of file MultiStoreSvc.cpp.

185 {
186 for ( auto& i : m_partitions ) { i.second.dataManager->clearStore().ignore(); }
187 visit(
188 m_root.root,
189 []( auto* p ) {
190 if ( p ) p->release();
191 },
192 []( std::monostate ) {} );
193 m_root.root = {};
194 m_root.path.clear();
195 return StatusCode::SUCCESS;
196 }
struct MultiStoreSvc::tagROOT m_root

◆ clearSubTree() [1/2]

StatusCode MultiStoreSvc::clearSubTree ( OBJECT * pObject)
inlineoverride

Remove all data objects below the sub tree identified.

Definition at line 181 of file MultiStoreSvc.cpp.

181 {
182 return fwd( [&]( IDataManagerSvc& svc ) { return svc.clearSubTree( pObject ); } );
183 }
virtual StatusCode clearSubTree(std::string_view sub_path)=0
Remove all data objects below the sub tree identified by its full path name.

◆ clearSubTree() [2/2]

StatusCode MultiStoreSvc::clearSubTree ( std::string_view path)
inlineoverride

Remove all data objects below the sub tree identified.

Definition at line 177 of file MultiStoreSvc.cpp.

177 {
178 return fwd( [&]( IDataManagerSvc& svc ) { return svc.clearSubTree( path ); } );
179 }

◆ create() [1/2]

StatusCode MultiStoreSvc::create ( CSTR & nam,
CSTR & typ )
inlineoverride

Create a partition object. The name identifies the partition uniquely.

Definition at line 327 of file MultiStoreSvc.cpp.

327 {
328 IInterface* pPartition = nullptr;
329 return create( nam, typ, pPartition );
330 }
StatusCode create(CSTR &nam, CSTR &typ) override
Create a partition object. The name identifies the partition uniquely.

◆ create() [2/2]

StatusCode MultiStoreSvc::create ( CSTR & nam,
CSTR & typ,
IInterface *& pPartition )
inlineoverride

Create a partition object. The name identifies the partition uniquely.

Fix-Me
: In the old implementation the services were "unmanaged" (non-active)

Definition at line 332 of file MultiStoreSvc.cpp.

332 {
333 if ( get( nam, pPartition ).isSuccess() ) return IPartitionControl::Status::PARTITION_EXISTS;
335 auto isvc = serviceLocator()->service<IService>( typ );
336 if ( !isvc ) return IInterface::Status::NO_INTERFACE;
337 auto dataMgr = isvc.as<IDataManagerSvc>();
338 auto dataProv = isvc.as<IDataProviderSvc>();
339 if ( !dataMgr || !dataProv ) return IInterface::Status::NO_INTERFACE;
340 m_partitions.emplace( nam, Partition{ dataProv, dataMgr, nam } );
341 return StatusCode::SUCCESS;
342 }
virtual SmartIF< IService > & service(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true)=0
Returns a smart pointer to a service.
StatusCode get(CSTR &nam, IInterface *&pPartition) const override
Access a partition object. The name identifies the partition uniquely.
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition Service.cpp:336
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
Definition SmartIF.h:110

◆ detachServices()

StatusCode MultiStoreSvc::detachServices ( )
inline

Definition at line 435 of file MultiStoreSvc.cpp.

435 {
436 m_addrCreator.reset();
437 m_dataLoader.reset();
438 return StatusCode::SUCCESS;
439 }
SmartIF< IConversionSvc > m_dataLoader
Pointer to data loader service.

◆ drop() [1/2]

StatusCode MultiStoreSvc::drop ( CSTR & nam)
inlineoverride

Drop a partition object. The name identifies the partition uniquely.

Definition at line 345 of file MultiStoreSvc.cpp.

345 {
346 auto i = m_partitions.find( nam );
348 if ( i->second.dataManager == m_current.dataManager ) { m_current = Partition(); }
349 i->second.dataManager->clearStore().ignore();
350 m_partitions.erase( i );
351 return StatusCode::SUCCESS;
352 }

◆ drop() [2/2]

StatusCode MultiStoreSvc::drop ( IInterface * pPartition)
inlineoverride

Drop a partition object. The name identifies the partition uniquely.

Definition at line 355 of file MultiStoreSvc.cpp.

355 {
356 auto provider = SmartIF<IDataProviderSvc>( pPartition );
357 if ( !provider ) return IInterface::Status::NO_INTERFACE;
358 auto i = std::find_if( std::begin( m_partitions ), std::end( m_partitions ),
359 [&]( Partitions::const_reference p ) { return p.second.dataProvider == provider; } );
361 i->second.dataManager->clearStore().ignore();
362 m_partitions.erase( i );
363 return StatusCode::SUCCESS;
364 }

◆ finalize()

StatusCode MultiStoreSvc::finalize ( )
inlineoverride

Service initialisation.

Definition at line 481 of file MultiStoreSvc.cpp.

481 {
482 setDataLoader( nullptr ).ignore();
483 clearStore().ignore();
485 m_current = Partition();
487 return Service::finalize();
488 }
StatusCode detachServices()
StatusCode finalize() override
Definition Service.cpp:223

◆ findObject() [1/2]

StatusCode MultiStoreSvc::findObject ( IRegistry * parent,
std::string_view path,
OBJECT *& pObj )
inlineoverride

Find object identified by its full path in the data store.

Definition at line 295 of file MultiStoreSvc.cpp.

295 {
296 return fwd( [&]( IDataProviderSvc& svc ) { return svc.findObject( parent, path, pObj ); } );
297 }
virtual StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Find object identified by its directory entry.

◆ findObject() [2/2]

StatusCode MultiStoreSvc::findObject ( std::string_view path,
OBJECT *& pObj )
inlineoverride

Find object identified by its full path in the data store.

Definition at line 291 of file MultiStoreSvc.cpp.

291 {
292 return fwd( [&]( IDataProviderSvc& svc ) { return svc.retrieveObject( path, pObj ); } );
293 }
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.

◆ fwd()

template<typename Fun>
StatusCode MultiStoreSvc::fwd ( Fun f)
inlineprotected

Definition at line 133 of file MultiStoreSvc.cpp.

133 {
134 auto* svc = m_current.get<std::decay_t<detail::argument_t<Fun>>>();
135 return svc ? f( *svc ) : IDataProviderSvc::Status::INVALID_ROOT;
136 }

◆ get()

StatusCode MultiStoreSvc::get ( CSTR & nam,
IInterface *& pPartition ) const
inlineoverride

Access a partition object. The name identifies the partition uniquely.

Definition at line 390 of file MultiStoreSvc.cpp.

390 {
391 auto i = m_partitions.find( nam );
392 if ( i != m_partitions.end() ) {
393 pPartition = i->second.dataProvider;
394 return StatusCode::SUCCESS;
395 }
396 pPartition = nullptr;
398 }

◆ initialize()

StatusCode MultiStoreSvc::initialize ( )
inlineoverride

Service initialisation.

Definition at line 442 of file MultiStoreSvc.cpp.

442 {
443 // Nothing to do: just call base class initialisation
444 StatusCode sc = Service::initialize();
445 if ( !sc.isSuccess() ) return sc;
446 sc = makePartitions();
447 if ( !sc.isSuccess() ) {
448 error() << "Failed to connect to all store partitions." << endmsg;
449 return sc;
450 }
451 return attachServices();
452 }
StatusCode attachServices()
StatusCode makePartitions()
Create all partitions according to job options.
StatusCode initialize() override
Definition Service.cpp:118
bool isSuccess() const
Definition StatusCode.h:314

◆ linkObject() [1/2]

StatusCode MultiStoreSvc::linkObject ( IRegistry * from,
std::string_view objPath,
OBJECT * to )
inlineoverride

Add a link to another object.

Definition at line 299 of file MultiStoreSvc.cpp.

299 {
300 return fwd( [&]( IDataProviderSvc& svc ) { return svc.linkObject( from, objPath, to ); } );
301 }
virtual StatusCode linkObject(IRegistry *from, std::string_view objPath, DataObject *toObj)=0
Add a link to another object.

◆ linkObject() [2/2]

StatusCode MultiStoreSvc::linkObject ( std::string_view fullPath,
OBJECT * to )
inlineoverride

Add a link to another object.

Definition at line 303 of file MultiStoreSvc.cpp.

303 {
304 return fwd( [&]( IDataProviderSvc& svc ) { return svc.linkObject( fullPath, to ); } );
305 }

◆ makePartitions()

StatusCode MultiStoreSvc::makePartitions ( )
inline

Create all partitions according to job options.

Definition at line 536 of file MultiStoreSvc.cpp.

536 {
537 using Parser = Gaudi::Utils::AttribStringParser;
538 std::string typ, nam;
540 for ( auto part : m_partitionDefs ) {
541 for ( auto attrib : Parser( std::move( part ) ) ) {
542 switch ( ::toupper( attrib.tag[0] ) ) {
543 case 'N':
544 nam = std::move( attrib.value );
545 break;
546 case 'T':
547 typ = std::move( attrib.value );
548 break;
549 }
550 }
551 StatusCode sc = create( nam, typ );
552 if ( !sc.isSuccess() ) return sc;
553 if ( m_defaultPartition.empty() ) m_defaultPartition = nam;
554 }
555 return StatusCode::SUCCESS;
556 }
void toupper(std::string &s)
Gaudi::Property< std::string > m_defaultPartition
Gaudi::Property< PartitionDefs > m_partitionDefs

◆ objectLeaves() [1/2]

StatusCode MultiStoreSvc::objectLeaves ( const IRegistry * pObject,
std::vector< IRegistry * > & leaves )
inlineoverride

Explore the object store: retrieve all leaves attached to the object.

Definition at line 165 of file MultiStoreSvc.cpp.

165 {
166 return fwd( [&]( IDataManagerSvc& svc ) { return svc.objectLeaves( pObject, leaves ); } );
167 }
virtual StatusCode objectLeaves(const DataObject *pObject, std::vector< IRegistry * > &refLeaves)=0
Explore the object store: retrieve all leaves attached to the object The object is identified by its ...

◆ objectLeaves() [2/2]

StatusCode MultiStoreSvc::objectLeaves ( const OBJECT * pObject,
std::vector< IRegistry * > & leaves )
inlineoverride

Explore the object store: retrieve all leaves attached to the object.

Definition at line 161 of file MultiStoreSvc.cpp.

161 {
162 return fwd( [&]( IDataManagerSvc& svc ) { return svc.objectLeaves( pObject, leaves ); } );
163 }

◆ objectParent() [1/2]

StatusCode MultiStoreSvc::objectParent ( const IRegistry * pObject,
IRegistry *& refpParent )
inlineoverride

IDataManagerSvc: Explore the object store: retrieve the object's parent.

Definition at line 173 of file MultiStoreSvc.cpp.

173 {
174 return fwd( [&]( IDataManagerSvc& svc ) { return svc.objectParent( pObject, refpParent ); } );
175 }
virtual StatusCode objectParent(const DataObject *pObject, IRegistry *&refpParent)=0
IDataManagerSvc: Explore the object store: retrieve the object's parent.

◆ objectParent() [2/2]

StatusCode MultiStoreSvc::objectParent ( const OBJECT * pObject,
IRegistry *& refpParent )
inlineoverride

IDataManagerSvc: Explore the object store: retrieve the object's parent.

Definition at line 169 of file MultiStoreSvc.cpp.

169 {
170 return fwd( [&]( IDataManagerSvc& svc ) { return svc.objectParent( pObject, refpParent ); } );
171 }

◆ preLoad()

StatusCode MultiStoreSvc::preLoad ( )
inlineoverride

load all preload items of the list

Definition at line 263 of file MultiStoreSvc.cpp.

263 {
264 return fwd( [&]( IDataProviderSvc& svc ) { return svc.preLoad(); } );
265 }
virtual StatusCode preLoad()=0
Load all preload items of the list.

◆ preparePartitions()

StatusCode MultiStoreSvc::preparePartitions ( )
inline

Prepare partition for usage.

Definition at line 504 of file MultiStoreSvc.cpp.

504 {
505 StatusCode iret = StatusCode::SUCCESS;
506 for ( auto& i : m_partitions ) {
507 StatusCode sc = visit(
508 m_root.root,
509 [&]( ADDRESS* address ) -> StatusCode {
510 if ( !address ) return StatusCode::FAILURE;
511 ADDRESS* pAdd = nullptr;
512 ADDRESS* p = address;
513 auto sc = m_addrCreator->createAddress( p->svcType(), p->clID(), p->par(), p->ipar(), pAdd );
514 return sc.isSuccess() ? i.second.dataManager->setRoot( m_root.path, pAdd ) : sc;
515 },
516 [&]( OBJECT* object ) -> StatusCode {
517 if ( object && object->clID() == CLID_DataObject ) {
518 return i.second.dataManager->setRoot( m_root.path, new DataObject() );
519 }
520 return StatusCode::FAILURE;
521 },
522 []( std::monostate ) -> StatusCode { return StatusCode::FAILURE; } );
523 if ( !sc.isSuccess() ) iret = sc;
524 }
525 return iret;
526 }
DataObject OBJECT
IOpaqueAddress ADDRESS

◆ registerAddress() [1/2]

StatusCode MultiStoreSvc::registerAddress ( IRegistry * parent,
std::string_view path,
ADDRESS * pAddr )
inlineoverride

IDataManagerSvc: Register object address with the data store.

Definition at line 149 of file MultiStoreSvc.cpp.

149 {
150 return fwd( [&]( IDataManagerSvc& svc ) { return svc.registerAddress( parent, path, pAddr ); } );
151 }
virtual StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.

◆ registerAddress() [2/2]

StatusCode MultiStoreSvc::registerAddress ( std::string_view path,
ADDRESS * pAddr )
inlineoverride

IDataManagerSvc: Register object address with the data store.

Definition at line 145 of file MultiStoreSvc.cpp.

145 {
146 return fwd( [&]( IDataManagerSvc& svc ) { return svc.registerAddress( path, pAddr ); } );
147 }

◆ registerObject() [1/2]

StatusCode MultiStoreSvc::registerObject ( OBJECT * parent,
std::string_view obj,
OBJECT * pObj )
inlineoverride

Register object with the data store.

Definition at line 271 of file MultiStoreSvc.cpp.

271 {
272 return fwd( [&]( IDataProviderSvc& svc ) { return svc.registerObject( parent, obj, pObj ); } );
273 }
StatusCode registerObject(std::string_view fullPath, DataObject *pObject)
Register object with the data store.

◆ registerObject() [2/2]

StatusCode MultiStoreSvc::registerObject ( std::string_view parent,
std::string_view obj,
OBJECT * pObj )
inlineoverride

Register object with the data store.

Definition at line 267 of file MultiStoreSvc.cpp.

267 {
268 return fwd( [&]( IDataProviderSvc& svc ) { return svc.registerObject( parent, obj, pObj ); } );
269 }

◆ reinitialize()

StatusCode MultiStoreSvc::reinitialize ( )
inlineoverride

Service initialisation.

Definition at line 455 of file MultiStoreSvc.cpp.

455 {
456 StatusCode sc = Service::reinitialize();
457 if ( !sc.isSuccess() ) {
458 error() << "Enable to reinitialize base class" << endmsg;
459 return sc;
460 }
461 sc = detachServices();
462 if ( !sc.isSuccess() ) {
463 error() << "Failed to detach necessary services." << endmsg;
464 return sc;
465 }
466 sc = attachServices();
467 if ( !sc.isSuccess() ) {
468 error() << "Failed to attach necessary services." << endmsg;
469 return sc;
470 }
471 sc = makePartitions();
472 if ( !sc.isSuccess() ) {
473 error() << "Failed to connect to store partitions." << endmsg;
474 return sc;
475 }
476 // return
477 return StatusCode::SUCCESS;
478 }
StatusCode reinitialize() override
Definition Service.cpp:296

◆ removePreLoadItem()

StatusCode MultiStoreSvc::removePreLoadItem ( const DataStoreItem & item)
inlineoverride

Remove an item from the preload list.

Definition at line 255 of file MultiStoreSvc.cpp.

255 {
256 return fwd( [&]( IDataProviderSvc& svc ) { return svc.removePreLoadItem( item ); } );
257 }
virtual StatusCode removePreLoadItem(const DataStoreItem &item)=0
Remove an item from the preload list.

◆ resetPreLoad()

StatusCode MultiStoreSvc::resetPreLoad ( )
inlineoverride

Clear the preload list.

Definition at line 259 of file MultiStoreSvc.cpp.

259 {
260 return fwd( [&]( IDataProviderSvc& svc ) { return svc.resetPreLoad(); } );
261 }
virtual StatusCode resetPreLoad()=0
Clear the preload list.

◆ retrieveObject()

StatusCode MultiStoreSvc::retrieveObject ( IRegistry * parent,
std::string_view path,
OBJECT *& pObj )
inlineoverride

Retrieve object from data store.

Definition at line 287 of file MultiStoreSvc.cpp.

287 {
288 return fwd( [&]( IDataProviderSvc& svc ) { return svc.retrieveObject( parent, path, pObj ); } );
289 }

◆ rootCLID()

CLID MultiStoreSvc::rootCLID ( ) const
inlineoverride

IDataManagerSvc: Accessor for root event CLID.

Definition at line 140 of file MultiStoreSvc.cpp.

140{ return m_rootCLID; }
Gaudi::Property< CLID > m_rootCLID

◆ rootName()

const std::string & MultiStoreSvc::rootName ( ) const
inlineoverride

Name for root Event.

Definition at line 142 of file MultiStoreSvc.cpp.

142{ return m_rootName; }
Gaudi::Property< std::string > m_rootName

◆ setDataLoader()

StatusCode MultiStoreSvc::setDataLoader ( IConversionSvc * pDataLoader,
IDataProviderSvc * dpsvc = nullptr )
inlineoverride

IDataManagerSvc: Pass a default data loader to the service.

Definition at line 241 of file MultiStoreSvc.cpp.

241 {
242 m_dataLoader = pDataLoader;
243 if ( m_dataLoader )
244 if ( auto sc = m_dataLoader->setDataProvider( dpsvc ? dpsvc : this ); !sc ) return sc;
245 for ( auto& i : m_partitions ) {
246 if ( auto sc = i.second.dataManager->setDataLoader( m_dataLoader.get() ); !sc ) return sc;
247 }
248 return StatusCode::SUCCESS;
249 }

◆ setRoot() [1/2]

StatusCode MultiStoreSvc::setRoot ( std::string path,
ADDRESS * pAddr )
inlineoverride

Initialize data store for new event by giving new event path and address of root object.

Takes care to clear the store before reinitializing it

Definition at line 226 of file MultiStoreSvc.cpp.

226 {
227 visit(
228 m_root.root,
229 []( auto* p ) {
230 if ( p ) p->release();
231 },
232 []( std::monostate ) {} );
233 m_root.path = std::move( path );
234 m_root.root = pAddr;
235 if ( !pAddr ) return StatusCode::FAILURE;
236 pAddr->addRef();
237 if ( auto sc = preparePartitions(); !sc ) return sc;
239 }
virtual unsigned long addRef()=0
Add reference to object.
StatusCode preparePartitions()
Prepare partition for usage.
StatusCode activate(CSTR &nam) override
Activate a partition object. The name identifies the partition uniquely.

◆ setRoot() [2/2]

StatusCode MultiStoreSvc::setRoot ( std::string path,
OBJECT * pObj )
inlineoverride

Initialize data store for new event by giving new event path and root object.

Takes care to clear the store before reinitializing it

Definition at line 211 of file MultiStoreSvc.cpp.

211 {
212 visit(
213 m_root.root,
214 []( auto* p ) {
215 if ( p ) p->release();
216 },
217 []( std::monostate ) {} );
218 m_root.path = std::move( path );
219 m_root.root = pObj;
220 if ( auto sc = preparePartitions(); !sc ) return sc;
222 }

◆ traverseSubTree() [1/2]

StatusCode MultiStoreSvc::traverseSubTree ( OBJECT * pObject,
AGENT * pAgent )
inlineoverride

IDataManagerSvc: Analyze by traversing all data objects below the sub tree.

Definition at line 202 of file MultiStoreSvc.cpp.

202 {
203 return fwd( [&]( IDataManagerSvc& svc ) { return svc.traverseSubTree( pObject, pAgent ); } );
204 }
virtual StatusCode traverseSubTree(std::string_view sub_tree_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name.

◆ traverseSubTree() [2/2]

StatusCode MultiStoreSvc::traverseSubTree ( std::string_view path,
AGENT * pAgent )
inlineoverride

Analyze by traversing all data objects below the sub tree.

Definition at line 198 of file MultiStoreSvc.cpp.

198 {
199 return fwd( [&]( IDataManagerSvc& svc ) { return svc.traverseSubTree( path, pAgent ); } );
200 }

◆ traverseTree()

StatusCode MultiStoreSvc::traverseTree ( AGENT * pAgent)
inlineoverride

IDataManagerSvc: Analyze by traversing all data objects in the data store.

Definition at line 206 of file MultiStoreSvc.cpp.

206 {
207 return fwd( [&]( IDataManagerSvc& svc ) { return svc.traverseTree( pAgent ); } );
208 }
virtual StatusCode traverseTree(IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects in the data store.

◆ unlinkObject() [1/3]

StatusCode MultiStoreSvc::unlinkObject ( IRegistry * from,
std::string_view objPath )
inlineoverride

Remove a link to another object.

Definition at line 307 of file MultiStoreSvc.cpp.

307 {
308 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unlinkObject( from, objPath ); } );
309 }
virtual StatusCode unlinkObject(IRegistry *from, std::string_view objPath)=0
Remove a link to another object.

◆ unlinkObject() [2/3]

StatusCode MultiStoreSvc::unlinkObject ( OBJECT * from,
std::string_view objPath )
inlineoverride

Remove a link to another object.

Definition at line 311 of file MultiStoreSvc.cpp.

311 {
312 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unlinkObject( from, objPath ); } );
313 }

◆ unlinkObject() [3/3]

StatusCode MultiStoreSvc::unlinkObject ( std::string_view path)
inlineoverride

Remove a link to another object.

Definition at line 315 of file MultiStoreSvc.cpp.

315 {
316 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unlinkObject( path ); } );
317 }

◆ unregisterAddress() [1/2]

StatusCode MultiStoreSvc::unregisterAddress ( IRegistry * pParent,
std::string_view path )
inlineoverride

IDataManagerSvc: Unregister object address from the data store.

Definition at line 157 of file MultiStoreSvc.cpp.

157 {
158 return fwd( [&]( IDataManagerSvc& svc ) { return svc.unregisterAddress( pParent, path ); } );
159 }
virtual StatusCode unregisterAddress(std::string_view fullPath)=0
Unregister object address from the data store.

◆ unregisterAddress() [2/2]

StatusCode MultiStoreSvc::unregisterAddress ( std::string_view path)
inlineoverride

IDataManagerSvc: Unregister object address from the data store.

Definition at line 153 of file MultiStoreSvc.cpp.

153 {
154 return fwd( [&]( IDataManagerSvc& svc ) { return svc.unregisterAddress( path ); } );
155 }

◆ unregisterObject() [1/3]

StatusCode MultiStoreSvc::unregisterObject ( OBJECT * pObj)
inlineoverride

Unregister object from the data store.

Definition at line 279 of file MultiStoreSvc.cpp.

279 {
280 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unregisterObject( pObj ); } );
281 }
virtual StatusCode unregisterObject(std::string_view fullPath)=0
Unregister object from the data store.

◆ unregisterObject() [2/3]

StatusCode MultiStoreSvc::unregisterObject ( OBJECT * pObj,
std::string_view path )
inlineoverride

Unregister object from the data store.

Definition at line 283 of file MultiStoreSvc.cpp.

283 {
284 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unregisterObject( pObj, path ); } );
285 }

◆ unregisterObject() [3/3]

StatusCode MultiStoreSvc::unregisterObject ( std::string_view path)
inlineoverride

Unregister object from the data store.

Definition at line 275 of file MultiStoreSvc.cpp.

275 {
276 return fwd( [&]( IDataProviderSvc& svc ) { return svc.unregisterObject( path ); } );
277 }

◆ updateObject() [1/2]

StatusCode MultiStoreSvc::updateObject ( IRegistry * pDirectory)
inlineoverride

Update object identified by its directory entry.

Definition at line 319 of file MultiStoreSvc.cpp.

319 {
320 return fwd( [&]( IDataProviderSvc& svc ) { return svc.updateObject( pDirectory ); } );
321 }
virtual StatusCode updateObject(IRegistry *pDirectory)=0
Update object identified by its directory entry.

◆ updateObject() [2/2]

StatusCode MultiStoreSvc::updateObject ( OBJECT * pObj)
inlineoverride

Update object.

Definition at line 323 of file MultiStoreSvc.cpp.

323 {
324 return fwd( [&]( IDataProviderSvc& svc ) { return svc.updateObject( pObj ); } );
325 }

Member Data Documentation

◆ m_addrCreator

SmartIF<IAddressCreator> MultiStoreSvc::m_addrCreator
protected

Reference to address creator.

Definition at line 120 of file MultiStoreSvc.cpp.

◆ m_current

Partition MultiStoreSvc::m_current
protected

Current partition.

Definition at line 127 of file MultiStoreSvc.cpp.

◆ m_dataLoader

SmartIF<IConversionSvc> MultiStoreSvc::m_dataLoader
protected

Pointer to data loader service.

Definition at line 118 of file MultiStoreSvc.cpp.

◆ m_defaultPartition

Gaudi::Property<std::string> MultiStoreSvc::m_defaultPartition { this, "DefaultPartition", "Default", "default partition name" }
protected

Definition at line 115 of file MultiStoreSvc.cpp.

115{ this, "DefaultPartition", "Default", "default partition name" };

◆ m_loader

Gaudi::Property<std::string> MultiStoreSvc::m_loader { this, "DataLoader", "EventPersistencySvc", "data loader name" }
protected

Definition at line 114 of file MultiStoreSvc.cpp.

114{ this, "DataLoader", "EventPersistencySvc", "data loader name" };

◆ m_partitionDefs

Gaudi::Property<PartitionDefs> MultiStoreSvc::m_partitionDefs { this, "Partitions", {}, "datastore partition definitions" }
protected

Definition at line 113 of file MultiStoreSvc.cpp.

113{ this, "Partitions", {}, "datastore partition definitions" };

◆ m_partitions

Partitions MultiStoreSvc::m_partitions
protected

Datastore partitions.

Definition at line 129 of file MultiStoreSvc.cpp.

◆ m_root

struct MultiStoreSvc::tagROOT MultiStoreSvc::m_root
protected

◆ m_rootCLID

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

Definition at line 111 of file MultiStoreSvc.cpp.

111{ this, "RootCLID", 110, "CLID of root entry" };

◆ m_rootName

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

Definition at line 112 of file MultiStoreSvc.cpp.

112{ this, "RootName", "/Event", "name of root entry" };

The documentation for this class was generated from the following file: