| The Gaudi Framework v30r0 (c919700c)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
NTupleSvc Class Reference

NTuple service. More...

`#include <src/NTupleSvc/NTupleSvc.h>`

Inheritance diagram for NTupleSvc:
[legend]
Collaboration diagram for NTupleSvc:
[legend]

## Classes
struct | Connection

## Public Member Functions
StatusCode | initialize () override
| DataSvc overrides: Initialize the service. More...
StatusCode | reinitialize () override
| DataSvc overrides: reinitialize service. More...
StatusCode | finalize () override
| DataSvc overrides: stop the service. More...
IConversionSvc * | getDataLoader (IRegistry *pReg) override
| DataSvc overrides: Retrieve data loader. More...
NTuple::Directory * | createDirectory (DataObject *pParent, const std::string &title) override
| Create Ntuple directory and register it with the data store. More...
NTuple::Directory * | createDirectory (DataObject *pParent, long id) override
| Create Ntuple directory and register it with the data store. More...
NTuple::Directory * | createDirectory (const std::string &dirPath, long id) override
| Create Ntuple directory and register it with the data store. More...
NTuple::Directory * | createDirectory (const std::string &dirPath, const std::string &title) override
| Create Ntuple directory and register it with the data store. More...
NTuple::Directory * | createDirectory (const std::string &fullPath) override
| Create Ntuple directory and register it with the data store. More...
StatusCode | create (const CLID &typ, const std::string &title, NTuple::Tuple *&refpTuple) override
| Create requested N tuple (Hide constructor) More...
NTuple::Tuple * | book (const std::string &fullPath, const CLID &type, const std::string &title) override
| Book Ntuple and register it with the data store. More...
NTuple::Tuple * | book (const std::string &dirPath, const std::string &relPath, const CLID &type, const std::string &title) override
| Book Ntuple and register it with the data store. More...
NTuple::Tuple * | book (const std::string &dirPath, long id, const CLID &type, const std::string &title) override
| Book Ntuple and register it with the data store. More...
NTuple::Tuple * | book (DataObject *pParent, const std::string &relPath, const CLID &type, const std::string &title) override
| Book Ntuple and register it with the data store. More...
NTuple::Tuple * | book (DataObject *pParent, long id, const CLID &type, const std::string &title) override
| Book Ntuple and register it with the data store. More...
NTuple::Tuple * | access (const std::string &fullPath, const std::string &filename) override
| Access N tuple on disk. More...
StatusCode | save (const std::string &fullPath) override
| Save N tuple to disk. Must be called in order to close the ntuple file properly. More...
StatusCode | save (NTuple::Tuple *tuple) override
| Save N tuple to disk. Must be called in order to close the ntuple file properly. More...
StatusCode | save (DataObject *pParent, const std::string &relPath) override
| Save N tuple to disk. Must be called in order to close the ntuple file properly. More...
StatusCode | writeRecord (NTuple::Tuple *tuple) override
| Write single record to N tuple. More...
StatusCode | writeRecord (const std::string &fullPath) override
| Write single record to N tuple. More...
StatusCode | writeRecord (DataObject *pParent, const std::string &relPath) override
| Write single record to N tuple. More...
StatusCode | readRecord (NTuple::Tuple *tuple) override
| Read single record from N tuple. More...
StatusCode | readRecord (const std::string &fullPath) override
| Read single record from N tuple. More...
StatusCode | readRecord (DataObject *pParent, const std::string &relPath) override
| Read single record from N tuple. More...
bool | isConnected (const std::string &identifier) const override
| Check if a datasource is connected. More...
StatusCode | connect (const std::string &ident) override
| Add file to list I/O list. More...
StatusCode | connect (const std::string &ident, std::string &logname) override
| Add file to list I/O list. More...
StatusCode | disconnect (const std::string &nam) override
| Close open connection. More...
StatusCode | disconnectAll () override
| Close all open connections. More...
| NTupleSvc (const std::string &name, ISvcLocator *svc)
| Standard Constructor. More...
| ~NTupleSvc () override=default
| Standard Destructor. More...
Public Member Functions inherited from extends< DataSvc, INTupleSvc, IDataSourceMgr >
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::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from DataSvc
CLID | rootCLID () const override
| IDataManagerSvc: Accessor for root event CLID. More...
const std::string & | rootName () const override
| IDataManagerSvc: Accessor for root event name. More...
StatusCode | registerAddress (boost::string_ref fullPath, IOpaqueAddress *pAddress) override
| IDataManagerSvc: Register object address with the data store. More...
StatusCode | registerAddress (DataObject *parentObj, boost::string_ref objectPath, IOpaqueAddress *pAddress) override
| IDataManagerSvc: Register object address with the data store. More...
StatusCode | registerAddress (IRegistry *parentObj, boost::string_ref objectPath, IOpaqueAddress *pAddress) override
| IDataManagerSvc: Register object address with the data store. More...
StatusCode | unregisterAddress (boost::string_ref fullPath) override
| IDataManagerSvc: Unregister object address from the data store. More...
StatusCode | unregisterAddress (DataObject *pParent, boost::string_ref objPath) override
| IDataManagerSvc: Unregister object address from the data store. More...
StatusCode | unregisterAddress (IRegistry *pParent, boost::string_ref objPath) override
| IDataManagerSvc: Unregister object address from the data store. More...
StatusCode | objectLeaves (const DataObject *pObject, std::vector< IRegistry * > &refLeaves) override
| IDataManagerSvc: Explore the object store: retrieve all leaves attached to the object. More...
StatusCode | objectLeaves (const IRegistry *pRegistry, std::vector< IRegistry * > &refLeaves) override
| IDataManagerSvc: Explore the object store: retrieve all leaves attached to the object. More...
StatusCode | objectParent (const DataObject *pObject, IRegistry *&refpParent) override
| IDataManagerSvc: Explore the object store: retrieve the object's parent. More...
StatusCode | objectParent (const IRegistry *pRegistry, IRegistry *&refpParent) override
| IDataManagerSvc: Explore the object store: retrieve the object's parent. More...
StatusCode | clearSubTree (boost::string_ref sub_tree_path) override
| IDataManagerSvc: Remove all data objects below the sub tree identified by its full path name. More...
StatusCode | clearSubTree (DataObject *pObject) override
| IDataManagerSvc: Remove all data objects below the sub tree identified by the object. More...
StatusCode | clearStore () override
| IDataManagerSvc: Remove all data objects in the data store. More...
StatusCode | traverseSubTree (boost::string_ref sub_tree_path, IDataStoreAgent *pAgent) override
| IDataManagerSvc: Analyze by traversing all data objects below the sub tree identified by its full path name. More...
StatusCode | traverseSubTree (DataObject *pObject, IDataStoreAgent *pAgent) override
| IDataManagerSvc: Analyze by traversing all data objects below the sub tree. More...
StatusCode | traverseTree (IDataStoreAgent *pAgent) override
| IDataManagerSvc: Analyze by traversing all data objects in the data store. More...
StatusCode | setRoot (std::string root_name, DataObject *pRootObj) override
| Initialize data store for new event by giving new event path and root object. More...
virtual StatusCode | i_setRoot (std::string root_name, DataObject *pRootObj)
| Initialize data store for new event by giving new event path and root object. More...
StatusCode | setRoot (std::string root_path, IOpaqueAddress *pRootAddr) override
| Initialize data store for new event by giving new event path and address of root object. More...
virtual StatusCode | i_setRoot (std::string root_path, IOpaqueAddress *pRootAddr)
| Initialize data store for new event by giving new event path and address of root object. More...
StatusCode | setDataLoader (IConversionSvc *svc, IDataProviderSvc *dpsvc=nullptr) override
| IDataManagerSvc: IDataManagerSvc: Pass a default data loader to the service and optionally a data provider. More...
StatusCode | addPreLoadItem (const DataStoreItem &item) override
| Add an item to the preload list. More...
StatusCode | addPreLoadItem (std::string itemPath) override
| Add an item to the preload list. More...
StatusCode | removePreLoadItem (const DataStoreItem &item) override
| Remove an item from the preload list. More...
StatusCode | removePreLoadItem (std::string itemPath) override
| Add an item to the preload list. More...
StatusCode | resetPreLoad () override
| Clear the preload list. More...
virtual StatusCode | preLoad (int depth, int load_depth, DataObject *pObject)
| Execute one level of preloading and recursively load until the final level is reached. More...
StatusCode | preLoad () override
| load all preload items of the list More...
StatusCode | registerObject (boost::string_ref fullPath, DataObject *pObject) override
| Register object with the data store. More...
StatusCode | registerObject (boost::string_ref parentPath, boost::string_ref objPath, DataObject *pObject) override
| Register object with the data store. More...
StatusCode | registerObject (boost::string_ref parentPath, int item, DataObject *pObject) override
| Register object with the data store. More...
StatusCode | registerObject (DataObject *parentObj, boost::string_ref objPath, DataObject *pObject) override
| Register object with the data store. More...
StatusCode | registerObject (DataObject *parentObj, int item, DataObject *pObject) override
| Register object with the data store. More...
StatusCode | unregisterObject (boost::string_ref fullPath) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (boost::string_ref parentPath, boost::string_ref objectPath) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (boost::string_ref parentPath, int item) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (DataObject *pObject) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (DataObject *pObject, boost::string_ref objectPath) override
| Unregister object from the data store. More...
StatusCode | unregisterObject (DataObject *pObject, int item) override
| Unregister object from the data store. More...
StatusCode | retrieveObject (IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject) override
| Retrieve object from data store. More...
StatusCode | retrieveObject (boost::string_ref fullPath, DataObject *&pObject) override
| Retrieve object identified by its full path from the data store. More...
StatusCode | retrieveObject (boost::string_ref parentPath, boost::string_ref objPath, DataObject *&pObject) override
| Retrieve object from data store. More...
StatusCode | retrieveObject (boost::string_ref parentPath, int item, DataObject *&pObject) override
| Retrieve object from data store. More...
StatusCode | retrieveObject (DataObject *parentObj, boost::string_ref objPath, DataObject *&pObject) override
| Retrieve object from data store. More...
StatusCode | retrieveObject (DataObject *parentObj, int item, DataObject *&pObject) override
| Retrieve object from data store. More...
StatusCode | findObject (boost::string_ref fullPath, DataObject *&pObject) override
| Find object identified by its full path in the data store. More...
StatusCode | findObject (IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject) override
| Find object identified by its full path in the data store. More...
StatusCode | findObject (boost::string_ref parentPath, boost::string_ref objPath, DataObject *&pObject) override
| Find object in the data store. More...
StatusCode | findObject (boost::string_ref parentPath, int item, DataObject *&pObject) override
| Find object in the data store. More...
StatusCode | findObject (DataObject *parentObj, boost::string_ref objPath, DataObject *&pObject) override
| Find object in the data store. More...
StatusCode | findObject (DataObject *parentObj, int item, DataObject *&pObject) override
| Find object in the data store. More...
StatusCode | linkObject (IRegistry *from, boost::string_ref objPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | linkObject (boost::string_ref fromPath, boost::string_ref objPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | linkObject (DataObject *from, boost::string_ref objPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | linkObject (boost::string_ref fullPath, DataObject *to) override
| Add a link to another object. More...
StatusCode | unlinkObject (IRegistry *from, boost::string_ref objPath) override
| Remove a link to another object. More...
StatusCode | unlinkObject (boost::string_ref fromPath, boost::string_ref objPath) override
| Remove a link to another object. More...
StatusCode | unlinkObject (DataObject *fromObj, boost::string_ref objPath) override
| Remove a link to another object. More...
StatusCode | unlinkObject (boost::string_ref fullPath) override
| Remove a link to another object. More...
StatusCode | updateObject (IRegistry *pDirectory) override
| Update object identified by its directory entry. More...
StatusCode | updateObject (boost::string_ref updatePath) override
| Update object. More...
StatusCode | updateObject (DataObject *toUpdate) override
| Update object. More...
StatusCode | updateObject (boost::string_ref parentPath, boost::string_ref updatePath) override
| Update object. More...
StatusCode | updateObject (DataObject *pParent, boost::string_ref updatePath) override
| Update object. More...
StatusCode | initialize () override
| Service initialization. More...
StatusCode | reinitialize () override
| Service initialization. More...
StatusCode | finalize () override
| Service initialization. More...
| ~DataSvc () override
| Standard Destructor. More...
Public Member Functions inherited from extends< Service, IDataProviderSvc, IDataManagerSvc >
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::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
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
| ~PropertyHolder () override=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (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::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
Gaudi::Details::PropertyBase * | declareProperty (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::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &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 (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
const SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...
MSG::Level | msgLevel () const
| get the cached level (originally extracted from the embedded MsgStream) More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Protected Types
typedef std::vector< std::string > | DBaseEntries
typedef std::map< std::string, Connection > | Connections
typedef std::pair< std::string, std::string > | Prop

## Protected Member Functions
StatusCode | createService (const std::string &nam, const std::string &typ, const std::vector< Prop > &props, IConversionSvc *&pSvc)
| Create conversion service. More...
void | releaseConnection (Connection &c)
| Finalize single service. More...
StatusCode | attachTuple (const std::string &filename, const std::string &logname, const char typ, const long t)
| Attach output/input file. More...
StatusCode | updateDirectories ()
| Update directory data. More...
Protected Member Functions inherited from DataSvc
bool | checkRoot ()
| Check if root path is valid. More...
virtual DataObject * | createDefaultObject () const
| Create default objects in case forced creation of leaves is requested. More...
virtual StatusCode | loadObject (IRegistry *pNode)
| Invoke Persistency service to create transient object from its persistent representation. More...
virtual StatusCode | loadObject (IConversionSvc *pLoader, IRegistry *pNode)
| Invoke Persistency service to create transient object from its persistent representation. More...
StatusCode | retrieveEntry (DataSvcHelpers::RegistryEntry *pNode, boost::string_ref path, DataSvcHelpers::RegistryEntry *&pEntry)
| Retrieve registry entry from store. More...
DataObject * | handleDataFault (IRegistry *pReg, boost::string_ref path="")
| Invoke data fault handling if enabled. More...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | setUpMessaging ()
| 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
Gaudi::Property< DBaseEntries > | m_input {this, "Input", {}, "input streams"}
Gaudi::Property< DBaseEntries > | m_output {this, "Output", {}, "output streams"}
Connections | m_connections
| Container of connection points. More...
Protected Attributes inherited from DataSvc
SmartIF< IConversionSvc > | m_dataLoader = nullptr
| Pointer to data loader service. More...
SmartIF< IIncidentSvc > | m_incidentSvc = nullptr
| Pointer to incident service. More...
Gaudi::Property< CLID > | m_rootCLID {this, "RootCLID", 110 , "CLID of root entry"}
Gaudi::Property< std::string > | m_rootName {this, "RootName", "/Event", "name of root entry"}
Gaudi::Property< bool > | m_forceLeaves {this, "ForceLeaves", false, "force creation of default leaves on registerObject"}
Gaudi::Property< std::vector< std::string > > | m_inhibitPathes {this, "InhibitPathes", {}, "inhibited leaves"}
Gaudi::Property< bool > | m_enableFaultHdlr
Gaudi::Property< std::string > | m_faultName {this, "DataFaultName", "DataFault", "Name of the data fault incident"}
Gaudi::Property< bool > | m_enableAccessHdlr
Gaudi::Property< std::string > | m_accessName {this, "DataAccessName", "DataAccess", "Name of the data access incident"}
LoadItems | m_preLoads
| Items to be pre-loaded. More...
DataSvcHelpers::RegistryEntry * | m_root = nullptr
| Pointer to root entry. More...
DataSvcHelpers::InhibitMap * | m_inhibitMap = nullptr
| Map with object paths to be inhibited from loading. 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"}
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()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Additional Inherited Members
Public Types inherited from extends< DataSvc, INTupleSvc, IDataSourceMgr >
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 DataSvc
typedef std::vector< DataStoreItem > | LoadItems
| Define set of load items. More...
Public Types inherited from extends< Service, IDataProviderSvc, IDataManagerSvc >
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
typedef Gaudi::PluginService::Factory< IService *, const std::string &, ISvcLocator * > | Factory
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...

## Detailed Description

NTuple service.

See the Interface definition files for more detailed documentation of the implementing class. Base class: Gaudi/DataSvc/DataSvc.h Generic N tuple service interface: Gaudi/Interfaces/INTupleSvc.h Generic IAddressCreator interface: Gaudi/Interfaces/IAddressCreator.h Generic IConversionSvc interface: Gaudi/Interfaces/IConversionSvc.h

Author
  M.Frank

Definition at line 23 of file NTupleSvc.h.

## Member Typedef Documentation

typedef std::map<std::string, Connection> NTupleSvc::Connections
| protected

Definition at line 32 of file NTupleSvc.h.

typedef std::vector<std::string> NTupleSvc::DBaseEntries
| protected

Definition at line 31 of file NTupleSvc.h.

typedef std::pair<std::string, std::string> NTupleSvc::Prop
| protected

Definition at line 33 of file NTupleSvc.h.

## Constructor & Destructor Documentation

NTupleSvc::NTupleSvc | ( | const std::string & | name,
|  | ISvcLocator * | svc
| ) |  |

Standard Constructor.

Definition at line 62 of file NTupleSvc.cpp.

62 : base_class( name, svc )
63 {
64 m_rootName = "/NTUPLES";
65 m_rootCLID = CLID_DataObject;
66 }
DataSvc::m_rootCLID
Gaudi::Property< CLID > m_rootCLID
Definition: DataSvc.h:56
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
extends< DataSvc, INTupleSvc, IDataSourceMgr >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:15

NTupleSvc::~NTupleSvc | ( |  | ) |
| override default

Standard Destructor.

## Member Function Documentation

NTuple::Tuple * NTupleSvc::access | ( | const std::string & | fullPath,
|  | const std::string & | filename
| ) |  |
| override

Access N tuple on disk.

Definition at line 522 of file NTupleSvc.cpp.

522 { return nullptr; }

StatusCode NTupleSvc::attachTuple | ( | const std::string & | filename,
|  | const std::string & | logname,
|  | const char | typ,
|  | const long | t
| ) |  |
| protected

Attach output/input file.

Definition at line 462 of file NTupleSvc.cpp.

464 {
465 DataObject* p;
466 // First get the root object
467 StatusCode status = retrieveObject( m_rootName.value(), p );
468 if ( status.isSuccess() ) {
469 // Now add the registry entry to the store
470 std::string entryname = m_rootName;
471 entryname += '/';
472 entryname += logname;
473 GenericAddress* pA = new GenericAddress( t, CLID_NTupleFile, filename, entryname, 0, typ );
474 status = registerAddress( p, logname, pA );
475 if ( status.isSuccess() ) {
476 info() << "Added stream file:" << filename << " as " << logname << endmsg;
477 return status;
478 }
479 pA->release();
480 }
481 error() << "Cannot add file:" << filename << " as " << logname << endmsg;
482 return status;
483 }
DataSvc::registerAddress
StatusCode registerAddress(boost::string_ref fullPath, IOpaqueAddress *pAddress) override
IDataManagerSvc: Register object address with the data store.
Definition: DataSvc.cpp:242
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:112
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
GenericAddress::release
unsigned long release() override
release reference to object
Definition: GenericAddress.h:65
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
GenericAddress
Generic Transient Address.
Definition: GenericAddress.h:20
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
DataSvc::retrieveObject
StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject) override
Retrieve object from data store.
Definition: DataSvc.cpp:737
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

NTuple::Tuple * NTupleSvc::book | ( | const std::string & | fullPath,
|  | const CLID & | type,
|  | const std::string & | title
| ) |  |
| override

Book Ntuple and register it with the data store.

Definition at line 349 of file NTupleSvc.cpp.

350 {
351 DataObject* pObj = nullptr;
352 std::string path = fullPath;
353 if ( path[0] != SEPARATOR ) {
354 path = m_rootName;
355 path += SEPARATOR;
356 path += fullPath;
357 }
358 StatusCode status = retrieveObject( path, pObj );
359 if ( status.isSuccess() ) {
360 error() << "Cannot book N-tuple " << path << " (Exists already)" << endmsg;
361 return nullptr;
362 }
363 auto sep = path.rfind( SEPARATOR );
364 if ( sep == std::string::npos ) {
365 error() << "Cannot book N-tuple " << path << " (Invalid path)" << endmsg;
366 return nullptr;
367 }
368
369 std::string p_path( path, 0, sep );
370 std::string o_path( path, sep, path.length() );
371 DataObject* dir = createDirectory( p_path );
372 if ( !dir ) {
373 error() << "Cannot book N-tuple " << path << " (Invalid parent directory)" << endmsg;
374 return nullptr;
375 }
376
377 NTuple::Tuple* tup = book( dir, o_path, type, title );
378 if ( !tup ) {
379 error() << "Cannot book N-tuple " << path << " (Unknown reason)" << endmsg;
380 }
381 return tup;
382 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:895
SEPARATOR
constexpr char SEPARATOR
Definition: RegistryEntry.cpp:40
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
std::string::rfind
T rfind(T...args)
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
NTupleSvc::book
NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title) override
Book Ntuple and register it with the data store.
Definition: NTupleSvc.cpp:349
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
gaudirun.type
type
Definition: gaudirun.py:133
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
std::string::length
T length(T...args)
DataSvc::retrieveObject
StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject) override
Retrieve object from data store.
Definition: DataSvc.cpp:737
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

NTuple::Tuple * NTupleSvc::book | ( | const std::string & | dirPath,
|  | const std::string & | relPath,
|  | const CLID & | type,
|  | const std::string & | title
| ) |  |
| override

Book Ntuple and register it with the data store.

Definition at line 385 of file NTupleSvc.cpp.

387 {
388 std::string full = dirPath;
389 if ( relPath[0] != SEPARATOR ) full += SEPARATOR;
390 full += relPath;
391 return book( full, type, title );
392 }
SEPARATOR
constexpr char SEPARATOR
Definition: RegistryEntry.cpp:40
NTupleSvc::book
NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title) override
Book Ntuple and register it with the data store.
Definition: NTupleSvc.cpp:349
std::string
STL class.
gaudirun.type
type
Definition: gaudirun.py:133

NTuple::Tuple * NTupleSvc::book | ( | const std::string & | dirPath,
|  | long | id,
|  | const CLID & | type,
|  | const std::string & | title
| ) |  |
| override

Book Ntuple and register it with the data store.

Definition at line 395 of file NTupleSvc.cpp.

396 {
397 return book( dirPath, toStr( id ), type, title );
398 }
toStr
const char * toStr(IAuditor::StandardEventType e)
Simple mapping function from IAuditor::StandardEventType to string.
Definition: IAuditor.h:100
NTupleSvc::book
NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title) override
Book Ntuple and register it with the data store.
Definition: NTupleSvc.cpp:349
gaudirun.type
type
Definition: gaudirun.py:133

NTuple::Tuple * NTupleSvc::book | ( | DataObject * | pParent,
|  | const std::string & | relPath,
|  | const CLID & | type,
|  | const std::string & | title
| ) |  |
| override

Book Ntuple and register it with the data store.

Definition at line 401 of file NTupleSvc.cpp.

403 {
404 NTuple::Tuple* pObj = nullptr;
405 // Check if object is already present
406 StatusCode status = findObject( pParent, relPath, *pp_cast<DataObject>( &pObj ) );
407 // No ? Then create it!
408 if ( !status.isSuccess() ) {
409 status = create( type, title, pObj );
410 if ( status.isSuccess() ) {
411 // Finally register the created N tuple with the store
412 status = registerObject( pParent, relPath, pObj );
413 if ( status.isSuccess() ) return pObj;
414 pObj->release();
415 }
416 }
417 return nullptr;
418 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
gaudirun.type
type
Definition: gaudirun.py:133
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataObject::release
virtual unsigned long release()
release reference to object
Definition: DataObject.cpp:51
DataSvc::registerObject
StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject) override
Register object with the data store.
Definition: DataSvc.cpp:343
NTupleSvc::create
StatusCode create(const CLID &typ, const std::string &title, NTuple::Tuple *&refpTuple) override
Create requested N tuple (Hide constructor)
Definition: NTupleSvc.cpp:329
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

NTuple::Tuple * NTupleSvc::book | ( | DataObject * | pParent,
|  | long | id,
|  | const CLID & | type,
|  | const std::string & | title
| ) |  |
| override

Book Ntuple and register it with the data store.

Definition at line 421 of file NTupleSvc.cpp.

422 {
423 return book( pParent, toStr( id ), type, title );
424 }
toStr
const char * toStr(IAuditor::StandardEventType e)
Simple mapping function from IAuditor::StandardEventType to string.
Definition: IAuditor.h:100
NTupleSvc::book
NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title) override
Book Ntuple and register it with the data store.
Definition: NTupleSvc.cpp:349
gaudirun.type
type
Definition: gaudirun.py:133

StatusCode NTupleSvc::connect | ( | const std::string & | ident | ) |
| override

Add file to list I/O list.

Definition at line 205 of file NTupleSvc.cpp.

206 {
207 std::string logName;
208 return connect( ident, logName );
209 }
std::string
STL class.
NTupleSvc::connect
StatusCode connect(const std::string &ident) override
Add file to list I/O list.
Definition: NTupleSvc.cpp:205

StatusCode NTupleSvc::connect | ( | const std::string & | ident,
|  | std::string & | logname
| ) |  |
| override

Add file to list I/O list.

Definition at line 211 of file NTupleSvc.cpp.

212 {
213 DataObject* pO = nullptr;
214 StatusCode status = findObject( m_rootName.value(), pO );
215 if ( status.isSuccess() ) {
216 char typ = 0;
217 std::vector<Prop> props;
218 long loc = ident.find( " " );
219 std::string filename, auth, svc = "", db_typ = "";
220 logname = ident.substr( 0, loc );
221 using Parser = Gaudi::Utils::AttribStringParser;
222 // we assume that there is always a " "
223 // (but if it is not there, we probably will not match the pattern)
224 for ( auto attrib : Parser( ident.substr( loc + 1 ) ) ) {
225 switch (::toupper( attrib.tag[0] ) ) {
226 case 'A':
227 break;
228 case 'F': // FILE='<file name>'
229 case 'D': // DATAFILE='<file name>'
230 filename = std::move( attrib.value );
231 break;
232 case 'O': // OPT='<NEW<CREATE,WRITE>, UPDATE, READ>'
233 switch (::toupper( attrib.value[0] ) ) {
234 case 'C':
235 case 'N':
236 case 'W':
237 typ = 'N';
238 break;
239 case 'U':
240 typ = 'U';
241 break;
242 case 'O':
243 case 'R':
244 typ = 'O';
245 break;
246 default:
247 typ = 0;
248 break;
249 }
250 break;
251 case 'T': // TYP='<HBOOK,ROOT,OBJY,...>'
252 db_typ = std::move( attrib.value );
253 break;
254 default:
255 props.emplace_back( attrib.tag, attrib.value );
256 break;
257 }
258 }
259 if ( 0 != typ ) {
260 IConversionSvc* pSvc = nullptr;
261 status = createService( name() + '.' + logname, db_typ, props, pSvc );
262 if ( status.isSuccess() ) {
263 status = attachTuple( filename, logname, typ, pSvc->repSvcType() );
264 if ( status.isSuccess() ) {
265 m_connections.insert( Connections::value_type( m_rootName + '/' + logname, Connection( pSvc ) ) );
266 return StatusCode::SUCCESS;
267 }
268 }
269 }
270 }
271 error() << "Cannot add " << ident << " invalid filename!" << endmsg;
272 return StatusCode::FAILURE;
273 }
Gaudi::Utils::AttribStringParser
Parse attribute strings allowing iteration over the various attributes.
Definition: AttribStringParser.h:32
StatusCode::SUCCESS
Definition: StatusCode.h:29
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
IConversionSvc
Definition: IConversionSvc.h:37
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
graphanalysis.filename
string filename
Definition: graphanalysis.py:117
NTupleSvc::createService
StatusCode createService(const std::string &nam, const std::string &typ, const std::vector< Prop > &props, IConversionSvc *&pSvc)
Create conversion service.
Definition: NTupleSvc.cpp:275
std::string
STL class.
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
std::move
T move(T...args)
std::map::insert
T insert(T...args)
std::string::find
T find(T...args)
std::vector
STL class.
IConverter::repSvcType
virtual long repSvcType() const =0
Retrieve the class type of the data store the converter uses.
std::string::substr
T substr(T...args)
StatusCode::FAILURE
Definition: StatusCode.h:29
NTupleSvc::attachTuple
StatusCode attachTuple(const std::string &filename, const std::string &logname, const char typ, const long t)
Attach output/input file.
Definition: NTupleSvc.cpp:462
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795
toupper
void toupper(std::string &s)
Definition: StatusCodeSvc.cpp:10
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
std::vector::emplace_back
T emplace_back(T...args)
NTupleSvc::m_connections
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:122

StatusCode NTupleSvc::create | ( | const CLID & | typ,
|  | const std::string & | title,
|  | NTuple::Tuple *& | refpTuple
| ) |  |
| override

Create requested N tuple (Hide constructor)

Eventually allow loading through factory?

Definition at line 329 of file NTupleSvc.cpp.

330 {
331 NTuple::TupleImp* pTuple = nullptr;
332 StatusCode status = StatusCode::FAILURE;
333 if ( typ == CLID_ColumnWiseTuple ) {
334 pTuple = new NTuple::ColumnWiseTuple( title );
335 } else if ( typ == CLID_RowWiseTuple ) {
336 pTuple = new NTuple::RowWiseTuple( title );
337 } else {
339 }
340 if ( pTuple ) {
341 pTuple->setTupleService( this );
342 status = StatusCode::SUCCESS;
343 }
344 refpTuple = pTuple;
345 return status;
346 }
StatusCode::SUCCESS
Definition: StatusCode.h:29
NTuple::ColumnWiseTuple
Definition: NTupleImplementation.h:99
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::TupleImp
Definition: NTupleImplementation.h:17
NTuple::RowWiseTuple
Definition: NTupleImplementation.h:113
NTuple::TupleImp::setTupleService
void setTupleService(INTupleSvc *svc)
Access conversion service.
Definition: NTupleImplementation.h:69
StatusCode::FAILURE
Definition: StatusCode.h:29

NTuple::Directory * NTupleSvc::createDirectory | ( | DataObject * | pParent,
|  | const std::string & | title
| ) |  |
| override

Create Ntuple directory and register it with the data store.

Definition at line 427 of file NTupleSvc.cpp.

428 {
429 if ( pParent ) {
430 IRegistry* pDir = pParent->registry();
431 if ( pDir ) {
432 std::string full = pDir->identifier();
433 if ( relPath[0] != '/' ) full += "/";
434 full += relPath;
435 return createDirectory( full );
436 }
437 }
438 return nullptr;
439 }
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:73
std::string
STL class.
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22

NTuple::Directory * NTupleSvc::createDirectory | ( | DataObject * | pParent,
|  | long | id
| ) |  |
| override

Create Ntuple directory and register it with the data store.

Definition at line 442 of file NTupleSvc.cpp.

443 {
444 return createDirectory( pParent, toStr( id ) );
445 }
toStr
const char * toStr(IAuditor::StandardEventType e)
Simple mapping function from IAuditor::StandardEventType to string.
Definition: IAuditor.h:100
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427

NTuple::Directory * NTupleSvc::createDirectory | ( | const std::string & | dirPath,
|  | long | id
| ) |  |
| override

Create Ntuple directory and register it with the data store.

Definition at line 448 of file NTupleSvc.cpp.

449 {
450 return createDirectory( dirPath, toStr( id ) );
451 }
toStr
const char * toStr(IAuditor::StandardEventType e)
Simple mapping function from IAuditor::StandardEventType to string.
Definition: IAuditor.h:100
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427

NTuple::Directory * NTupleSvc::createDirectory | ( | const std::string & | dirPath,
|  | const std::string & | title
| ) |  |
| override

Create Ntuple directory and register it with the data store.

Definition at line 454 of file NTupleSvc.cpp.

455 {
456 std::string full = dirPath;
457 if ( relPath[0] != '/' ) full += "/";
458 full += relPath;
459 return createDirectory( full );
460 }
std::string
STL class.
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427

NTuple::Directory * NTupleSvc::createDirectory | ( | const std::string & | fullPath | ) |
| override

Create Ntuple directory and register it with the data store.

Definition at line 486 of file NTupleSvc.cpp.

487 {
488 NTuple::Directory* p = nullptr;
489 StatusCode status = findObject( fullPath, *pp_cast<DataObject>( &p ) );
490 if ( !status.isSuccess() ) {
491 auto sep2 = fullPath.rfind( SEPARATOR );
492 if ( sep2 != std::string::npos ) {
493 std::string relPath = fullPath.substr( 0, sep2 );
494 p = createDirectory( relPath );
495 if ( p ) {
496 p = new NTuple::Directory();
497 // Finally register the created N tuple with the store
498 status = registerObject( fullPath, p );
499 if ( status.isSuccess() ) {
500 // ...starting from the file entries
501 IConversionSvc* svc = getDataLoader( p->registry() );
502 if ( svc ) {
503 IOpaqueAddress* pAddr = nullptr;
504 status = svc->createRep( p, pAddr );
505 if ( status.isSuccess() ) {
506 p->registry()->setAddress( pAddr );
507 status = svc->fillRepRefs( pAddr, p );
508 if ( status.isSuccess() ) return p;
509 }
510 }
511 unregisterObject( p );
512 }
513 p->release();
514 p = nullptr;
515 }
516 }
517 }
518 return dynamic_cast<NTuple::Directory*>( p );
519 }
DataSvc::unregisterObject
StatusCode unregisterObject(boost::string_ref fullPath) override
Unregister object from the data store.
Definition: DataSvc.cpp:445
SEPARATOR
constexpr char SEPARATOR
Definition: RegistryEntry.cpp:40
IConversionSvc
Definition: IConversionSvc.h:37
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
std::string::rfind
T rfind(T...args)
IConverter::createRep
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:73
std::string
STL class.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTupleSvc::createDirectory
NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title) override
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:427
DataObject::release
virtual unsigned long release()
release reference to object
Definition: DataObject.cpp:51
DataSvc::registerObject
StatusCode registerObject(boost::string_ref fullPath, DataObject *pObject) override
Register object with the data store.
Definition: DataSvc.cpp:343
NTupleSvc::getDataLoader
IConversionSvc * getDataLoader(IRegistry *pReg) override
DataSvc overrides: Retrieve data loader.
Definition: NTupleSvc.cpp:102
IRegistry::setAddress
virtual void setAddress(IOpaqueAddress *pAddress)=0
Set/Update Opaque storage address.
std::string::substr
T substr(T...args)
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
NTuple::Directory
Small class representing an N tuple directory in the transient store.
Definition: NTuple.h:986
IConverter::fillRepRefs
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::createService | ( | const std::string & | nam,
|  | const std::string & | typ,
|  | const std::vector< Prop > & | props,
|  | IConversionSvc *& | pSvc
| ) |  |
| protected

Create conversion service.

CGL: set the storage type

Definition at line 275 of file NTupleSvc.cpp.

277 {
279 // Get the value of the Stat persistancy mechanism from the AppMgr
280 auto appPropMgr = serviceLocator()->as<IProperty>();
281 if ( !appPropMgr ) {
282 // Report an error and return the FAILURE status code
283 error() << "Could not get PropMgr" << endmsg;
284 return StatusCode::FAILURE;
285 }
286
287 Gaudi::Property<std::string> sp( "HistogramPersistency", "" );
288 StatusCode sts = appPropMgr->getProperty( &sp );
289 if ( !sts.isSuccess() ) {
290 error() << "Could not get NTuple Persistency format"
291 << " from ApplicationMgr properties" << endmsg;
292 return sts;
293 }
294
295 long storage_typ = TEST_StorageType;
296 if ( sp.value() == "HBOOK" ) {
297 storage_typ = HBOOK_StorageType;
298 } else if ( sp.value() == "ROOT" ) {
299 storage_typ = ROOT_StorageType;
300 } else {
301 error() << "Unknown NTuple Persistency format: " << sp.value() << endmsg;
302 return StatusCode::FAILURE;
303 }
304
305 if ( !typ.empty() && typ != sp.value() ) {
306 warning() << "NTuple persistency type is " << sp.value() << "." << endmsg << "Type given by job option "
307 << "NTupleSvc.Input/Output ignored!" << endmsg;
308 }
309
310 // debug() << "storage type: " << m_storageType << endmsg;
311
312 // FIXME: (MCl) why NTupleSvc has to directly create a ConversionSvc?
313 IInterface* iface = new ConversionSvc( name() + "Conversions", serviceLocator(), storage_typ );
314 auto pService = SmartIF<IService>( iface );
315 if ( !pService ) return StatusCode::FAILURE;
316
317 auto cnvSvc = pService.as<IConversionSvc>();
318 if ( !cnvSvc ) return StatusCode::FAILURE;
319
320 pSvc = cnvSvc.get();
321 pSvc->addRef(); // make sure the caller gets a pSvc which points at something
322 // with a refCount of (at least) one...
323 auto status = pService->sysInitialize();
324 if ( !status.isSuccess() ) return status;
325 return pSvc->setDataProvider( this );
326 }
TEST_StorageType
const long TEST_StorageType
Definition: ClassID.h:49
SmartIF< IService >
std::string::empty
T empty(T...args)
HBOOK_StorageType
const long HBOOK_StorageType
Definition: ClassID.h:56
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:289
IConversionSvc
Definition: IConversionSvc.h:37
Gaudi::Property
Implementation of property with value of concrete type.
Definition: Property.h:319
compareOutputFiles.sp
sp
Definition: compareOutputFiles.py:466
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
IConverter::setDataProvider
virtual StatusCode setDataProvider(IDataProviderSvc *pService)=0
Set Data provider service.
ISvcLocator::as
SmartIF< IFace > as()
Definition: ISvcLocator.h:109
boost::spirit
Definition: iter_pos.hpp:13
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
CommonMessagingBase::warning
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
Definition: CommonMessaging.h:109
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IInterface
Definition of the basic interface.
Definition: IInterface.h:277
ROOT_StorageType
const long ROOT_StorageType
Definition: ClassID.h:52
IInterface::addRef
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
StatusCode::FAILURE
Definition: StatusCode.h:29
ConversionSvc
Base class for all conversion services.
Definition: ConversionSvc.h:45
IProperty
The IProperty is the basic interface for all components which have properties that can be set or get...
Definition: IProperty.h:20
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:292
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode NTupleSvc::disconnect | ( | const std::string & | nam | ) |
| override

Close open connection.

Definition at line 176 of file NTupleSvc.cpp.

177 {
178 auto i = m_connections.find( nam );
179 if ( i != m_connections.end() ) {
180 releaseConnection( i->second );
181 m_connections.erase( i );
182 return StatusCode::SUCCESS;
183 }
184 return StatusCode::FAILURE;
185 }
NTupleSvc::releaseConnection
void releaseConnection(Connection &c)
Finalize single service.
Definition: NTupleSvc.cpp:167
StatusCode::SUCCESS
Definition: StatusCode.h:29
std::map::end
T end(T...args)
std::map::erase
T erase(T...args)
std::map::find
T find(T...args)
StatusCode::FAILURE
Definition: StatusCode.h:29
NTupleSvc::m_connections
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:122

StatusCode NTupleSvc::disconnectAll | ( |  | ) |
| override

Close all open connections.

Definition at line 188 of file NTupleSvc.cpp.

189 {
190 for ( auto& i : m_connections ) releaseConnection( i.second );
191 m_connections.clear();
192 return StatusCode::SUCCESS;
193 }
NTupleSvc::releaseConnection
void releaseConnection(Connection &c)
Finalize single service.
Definition: NTupleSvc.cpp:167
StatusCode::SUCCESS
Definition: StatusCode.h:29
NTupleSvc::m_connections
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:122

StatusCode NTupleSvc::finalize | ( |  | ) |
| override

DataSvc overrides: stop the service.

stop the service.

Definition at line 196 of file NTupleSvc.cpp.

197 {
198 StatusCode status = updateDirectories();
199 status = clearStore();
200 status = DataSvc::finalize();
201 status = disconnectAll();
202 return status;
203 }
NTupleSvc::updateDirectories
StatusCode updateDirectories()
Update directory data.
Definition: NTupleSvc.cpp:113
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
DataSvc::finalize
StatusCode finalize() override
Service initialization.
Definition: DataSvc.cpp:1123
NTupleSvc::disconnectAll
StatusCode disconnectAll() override
Close all open connections.
Definition: NTupleSvc.cpp:188
DataSvc::clearStore
StatusCode clearStore() override
IDataManagerSvc: Remove all data objects in the data store.
Definition: DataSvc.cpp:112

IConversionSvc * NTupleSvc::getDataLoader | ( | IRegistry * | pReg | ) |
| override virtual

DataSvc overrides: Retrieve data loader.

DataSvc override: Retrieve data loader.

Reimplemented from DataSvc.

Definition at line 102 of file NTupleSvc.cpp.

103 {
104 if ( !pRegistry ) return nullptr;
105 std::string full = pRegistry->identifier();
106 auto len = m_rootName.length();
107 auto idx = full.find( SEPARATOR, len + 1 );
108 std::string path = ( idx == std::string::npos ) ? full : full.substr( 0, idx );
109 auto i = m_connections.find( path );
110 return ( i != m_connections.end() ) ? i->second.service : nullptr;
111 }
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:895
SEPARATOR
constexpr char SEPARATOR
Definition: RegistryEntry.cpp:40
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
std::map::end
T end(T...args)
std::string
STL class.
NTupleSvc::Connection::service
IConversionSvc * service
Definition: NTupleSvc.h:27
std::string::find
T find(T...args)
std::string::substr
T substr(T...args)
NTupleSvc::m_connections
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:122

StatusCode NTupleSvc::initialize | ( |  | ) |
| override

DataSvc overrides: Initialize the service.

Definition at line 69 of file NTupleSvc.cpp.

70 {
71 StatusCode status = DataSvc::initialize();
72 if ( status.isSuccess() ) {
73 status = setProperties();
74 if ( status.isSuccess() ) {
75 StatusCode iret( StatusCode::SUCCESS, true );
76 DataObject* root = new NTuple::Directory();
77 status = setRoot( m_rootName, root );
78 for ( auto& i : m_output ) {
79 iret = connect( i );
80 if ( !iret.isSuccess() ) status = iret;
81 }
82 for ( auto& j : m_input ) {
83 iret = connect( j );
84 if ( !iret.isSuccess() ) status = iret;
85 }
86 }
87 }
88 return status;
89 }
StatusCode::SUCCESS
Definition: StatusCode.h:29
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
DataSvc::setRoot
StatusCode setRoot(std::string root_name, DataObject *pRootObj) override
Initialize data store for new event by giving new event path and root object.
Definition: DataSvc.cpp:150
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTupleSvc::m_output
Gaudi::Property< DBaseEntries > m_output
Definition: NTupleSvc.h:119
Service::setProperties
StatusCode setProperties()
Method for setting declared properties to the values specified for the job.
Definition: Service.cpp:295
DataSvc::initialize
StatusCode initialize() override
Service initialization.
Definition: DataSvc.cpp:1086
NTupleSvc::m_input
Gaudi::Property< DBaseEntries > m_input
Definition: NTupleSvc.h:118
gaudiComponentHelp.root
root
Definition: gaudiComponentHelp.py:18
NTupleSvc::connect
StatusCode connect(const std::string &ident) override
Add file to list I/O list.
Definition: NTupleSvc.cpp:205
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
NTuple::Directory
Small class representing an N tuple directory in the transient store.
Definition: NTuple.h:986

bool NTupleSvc::isConnected | ( | const std::string & | identifier | ) | const
| override

Check if a datasource is connected.

Definition at line 95 of file NTupleSvc.cpp.

96 {
97 auto i = m_connections.find( identifier );
98 return i != m_connections.end();
99 }
std::map::end
T end(T...args)
std::map::find
T find(T...args)
NTupleSvc::m_connections
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:122

StatusCode NTupleSvc::readRecord | ( | NTuple::Tuple * | tuple | ) |
| override

Read single record from N tuple.

Definition at line 608 of file NTupleSvc.cpp.

609 {
610 StatusCode status = INVALID_OBJECT;
611 NTuple::TupleImp* tuple = (NTuple::TupleImp*)n_tuple;
612 if ( tuple ) {
613 try {
614 IConversionSvc* pSvc = tuple->conversionService();
615 if ( !pSvc ) {
616 pSvc = getDataLoader( n_tuple->registry() );
617 tuple->setConversionService( pSvc );
618 }
619 if ( pSvc ) {
620 IRegistry* pReg = n_tuple->registry();
621 IOpaqueAddress* pAddr = pReg->address();
622 status = pSvc->updateObj( pAddr, n_tuple );
623 if ( status.isSuccess() ) {
624 status = pSvc->updateObjRefs( pAddr, n_tuple );
625 }
626 return status;
627 }
628 status = IDataProviderSvc::NO_DATA_LOADER;
629 } catch ( ... ) {
630 status = INVALID_OBJECT;
631 }
632 }
633 return status;
634 }
IConversionSvc
Definition: IConversionSvc.h:37
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
IDataProviderSvc::NO_DATA_LOADER
No data loader available.
Definition: IDataProviderSvc.h:504
IConverter::updateObj
virtual StatusCode updateObj(IOpaqueAddress *pAddress, DataObject *refpObject)=0
Update the transient object from the other representation.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::TupleImp
Definition: NTupleImplementation.h:17
IConverter::updateObjRefs
virtual StatusCode updateObjRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the references of an updated transient object.
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
NTupleSvc::getDataLoader
IConversionSvc * getDataLoader(IRegistry *pReg) override
DataSvc overrides: Retrieve data loader.
Definition: NTupleSvc.cpp:102
NTuple::TupleImp::setConversionService
void setConversionService(IConversionSvc *svc)
Access conversion service.
Definition: NTupleImplementation.h:65
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
NTuple::TupleImp::conversionService
IConversionSvc * conversionService() const
Access conversion service.
Definition: NTupleImplementation.h:63

StatusCode NTupleSvc::readRecord | ( | const std::string & | fullPath | ) |
| override

Read single record from N tuple.

Definition at line 637 of file NTupleSvc.cpp.

638 {
639 NTuple::Tuple* pObj = nullptr;
640 StatusCode status = findObject( fullPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
641 return status.isSuccess() ? readRecord( pObj ) : INVALID_OBJ_PATH;
642 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTupleSvc::readRecord
StatusCode readRecord(NTuple::Tuple *tuple) override
Read single record from N tuple.
Definition: NTupleSvc.cpp:608
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::readRecord | ( | DataObject * | pParent,
|  | const std::string & | relPath
| ) |  |
| override

Read single record from N tuple.

Definition at line 645 of file NTupleSvc.cpp.

646 {
647 NTuple::Tuple* pObj = nullptr;
648 StatusCode status = findObject( pParent, relPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
649 return status.isSuccess() ? readRecord( pObj ) : INVALID_OBJ_PATH;
650 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTupleSvc::readRecord
StatusCode readRecord(NTuple::Tuple *tuple) override
Read single record from N tuple.
Definition: NTupleSvc.cpp:608
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::reinitialize | ( |  | ) |
| override

DataSvc overrides: reinitialize service.

Initialize the service.

Definition at line 92 of file NTupleSvc.cpp.

92 { return StatusCode::SUCCESS; }
StatusCode::SUCCESS
Definition: StatusCode.h:29

void NTupleSvc::releaseConnection | ( | Connection & | c | ) |
| protected

Finalize single service.

Definition at line 167 of file NTupleSvc.cpp.

168 {
169 SmartIF<IService> isvc( c.service );
170 if ( isvc ) isvc->finalize().ignore();
171 c.service->release();
172 c.service = nullptr;
173 }
SmartIF< IService >
gaudirun.c
c
Definition: gaudirun.py:407

StatusCode NTupleSvc::save | ( | const std::string & | fullPath | ) |
| override

Save N tuple to disk. Must be called in order to close the ntuple file properly.

Definition at line 525 of file NTupleSvc.cpp.

526 {
527 NTuple::Tuple* pObj = nullptr;
528 StatusCode status = findObject( fullPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
529 return status.isSuccess() ? save( pObj ) : INVALID_OBJ_PATH;
530 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
NTupleSvc::save
StatusCode save(const std::string &fullPath) override
Save N tuple to disk. Must be called in order to close the ntuple file properly.
Definition: NTupleSvc.cpp:525
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::save | ( | NTuple::Tuple * | tuple | ) |
| override

Save N tuple to disk. Must be called in order to close the ntuple file properly.

Definition at line 533 of file NTupleSvc.cpp.

534 {
535 NTuple::TupleImp* tuple = (NTuple::TupleImp*)n_tuple;
536 if ( tuple ) {
537 try {
538 IConversionSvc* pSvc = tuple->conversionService();
539 IRegistry* pReg = tuple->registry();
540 if ( pSvc && pReg ) {
541 IOpaqueAddress* pAddr = pReg->address();
542 StatusCode status = pSvc->updateRep( pAddr, n_tuple );
543 if ( status.isSuccess() ) {
544 status = pSvc->updateRepRefs( pAddr, n_tuple );
545 }
546 return status;
547 }
548 return IDataProviderSvc::NO_DATA_LOADER;
549 } catch ( ... ) {
550 }
551 }
552 return INVALID_OBJECT;
553 }
IConversionSvc
Definition: IConversionSvc.h:37
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
IDataProviderSvc::NO_DATA_LOADER
No data loader available.
Definition: IDataProviderSvc.h:504
IConverter::updateRepRefs
virtual StatusCode updateRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the references of an already converted object.
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:73
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::TupleImp
Definition: NTupleImplementation.h:17
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
IConverter::updateRep
virtual StatusCode updateRep(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the converted representation of a transient object.
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
NTuple::TupleImp::conversionService
IConversionSvc * conversionService() const
Access conversion service.
Definition: NTupleImplementation.h:63

StatusCode NTupleSvc::save | ( | DataObject * | pParent,
|  | const std::string & | relPath
| ) |  |
| override

Save N tuple to disk. Must be called in order to close the ntuple file properly.

Definition at line 556 of file NTupleSvc.cpp.

557 {
558 NTuple::Tuple* pObj = nullptr;
559 StatusCode status = findObject( pParent, relPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
560 return status.isSuccess() ? save( pObj ) : INVALID_OBJ_PATH;
561 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
NTupleSvc::save
StatusCode save(const std::string &fullPath) override
Save N tuple to disk. Must be called in order to close the ntuple file properly.
Definition: NTupleSvc.cpp:525
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::updateDirectories | ( |  | ) |
| protected

Update directory data.

Definition at line 113 of file NTupleSvc.cpp.

114 {
115 typedef std::vector<IRegistry*> Leaves;
116 long need_update = 0;
117 DataObject* pO = nullptr;
118 StatusCode iret = findObject( m_rootName.value(), pO );
119 // debug() << "in finalize()" << endmsg;
120 if ( iret.isSuccess() ) {
121 Leaves leaves;
122 iret = objectLeaves( pO, leaves );
123 if ( iret.isSuccess() ) {
124 // Only traverse the tree below the files
125 for ( auto d = leaves.begin(); d != leaves.end(); d++ ) {
126 if ( !( *d )->object() ) continue;
127 IOpaqueAddress* pA = ( *d )->address();
128 if ( !pA ) continue;
129 unsigned long typ = pA->ipar()[1];
130 if ( typ != 'R' && typ != 'N' && typ != 'U' ) continue;
131 // ...starting from the file entries: first save the directories/ntuples
132 IConversionSvc* svc = getDataLoader( *d );
133 if ( !svc ) continue;
134
135 StatusCode status;
136 DataSelectionAgent agent;
137 IDataSelector* sel = agent.selectedObjects();
138 traverseSubTree( ( *d )->object(), &agent ).ignore();
139 for ( int i = sel->size() - 1; i >= 0; i-- ) {
140 DataObject* o = ( *sel )[i];
141 IRegistry* r = o->registry();
142 status = svc->updateRep( r->address(), o );
143 if ( !status.isSuccess() ) {
144 iret = status;
145 }
146 }
147 for ( int j = sel->size() - 1; j >= 0; j-- ) {
148 DataObject* o = ( *sel )[j];
149 IRegistry* r = o->registry();
150 status = svc->updateRepRefs( r->address(), o );
151 if ( !status.isSuccess() ) iret = status;
152 }
153 if ( iret.isSuccess() ) need_update += sel->size();
154 }
155 }
156 }
157 if ( !iret.isSuccess() ) {
158 error() << "ERROR while saving NTuples" << endmsg;
159 return iret;
160 } else if ( need_update > 0 ) {
161 info() << "NTuples saved successfully" << endmsg;
162 }
163 return iret;
164 }
DataSelectionAgent
DataSelectionAgent base in charge of collecting all the refereces to DataObjects in a transient store...
Definition: DataSelectionAgent.h:16
IConversionSvc
Definition: IConversionSvc.h:37
CommonMessagingBase::info
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:112
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
IOTest.sel
sel
Definition: IOTest.py:95
DataSvc::m_rootName
Gaudi::Property< std::string > m_rootName
Definition: DataSvc.h:57
IConverter::updateRepRefs
virtual StatusCode updateRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the references of an already converted object.
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:73
DataSelectionAgent::selectedObjects
IDataSelector * selectedObjects()
Return the set of selected DataObjects.
Definition: DataSelectionAgent.h:27
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:106
IOpaqueAddress::ipar
virtual const unsigned long * ipar() const =0
Access to generic link parameters.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
DataSvc::objectLeaves
StatusCode objectLeaves(const DataObject *pObject, std::vector< IRegistry * > &refLeaves) override
IDataManagerSvc: Explore the object store: retrieve all leaves attached to the object.
Definition: DataSvc.cpp:223
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
IConverter::updateRep
virtual StatusCode updateRep(IOpaqueAddress *pAddress, DataObject *pObject)=0
Update the converted representation of a transient object.
std::vector::size
T size(T...args)
std::vector< IRegistry * >
NTupleSvc::getDataLoader
IConversionSvc * getDataLoader(IRegistry *pReg) override
DataSvc overrides: Retrieve data loader.
Definition: NTupleSvc.cpp:102
DataSvc::traverseSubTree
StatusCode traverseSubTree(boost::string_ref sub_tree_path, IDataStoreAgent *pAgent) override
IDataManagerSvc: Analyze by traversing all data objects below the sub tree identified by its full pat...
Definition: DataSvc.cpp:123
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209

StatusCode NTupleSvc::writeRecord | ( | NTuple::Tuple * | tuple | ) |
| override

Write single record to N tuple.

Definition at line 564 of file NTupleSvc.cpp.

565 {
566 NTuple::TupleImp* tuple = (NTuple::TupleImp*)n_tuple;
567 if ( tuple ) {
568 try {
569 IConversionSvc* pSvc = tuple->conversionService();
570 if ( !pSvc ) {
571 pSvc = getDataLoader( n_tuple->registry() );
572 tuple->setConversionService( pSvc );
573 }
574 if ( pSvc ) {
575 IRegistry* pReg = n_tuple->registry();
576 IOpaqueAddress* pAddr = pReg->address();
577 StatusCode status = pSvc->createRep( n_tuple, pAddr );
578 if ( status.isSuccess() ) {
579 pReg->setAddress( pAddr );
580 status = pSvc->fillRepRefs( pAddr, n_tuple );
581 }
582 return status;
583 }
584 return IDataProviderSvc::NO_DATA_LOADER;
585 } catch ( ... ) {
586 }
587 }
588 return INVALID_OBJECT;
589 }
IConversionSvc
Definition: IConversionSvc.h:37
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
IDataProviderSvc::NO_DATA_LOADER
No data loader available.
Definition: IDataProviderSvc.h:504
IConverter::createRep
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::TupleImp
Definition: NTupleImplementation.h:17
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
NTupleSvc::getDataLoader
IConversionSvc * getDataLoader(IRegistry *pReg) override
DataSvc overrides: Retrieve data loader.
Definition: NTupleSvc.cpp:102
IRegistry::setAddress
virtual void setAddress(IOpaqueAddress *pAddress)=0
Set/Update Opaque storage address.
NTuple::TupleImp::setConversionService
void setConversionService(IConversionSvc *svc)
Access conversion service.
Definition: NTupleImplementation.h:65
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
IConverter::fillRepRefs
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
NTuple::TupleImp::conversionService
IConversionSvc * conversionService() const
Access conversion service.
Definition: NTupleImplementation.h:63

StatusCode NTupleSvc::writeRecord | ( | const std::string & | fullPath | ) |
| override

Write single record to N tuple.

Definition at line 592 of file NTupleSvc.cpp.

593 {
594 NTuple::Tuple* pObj = nullptr;
595 StatusCode status = findObject( fullPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
596 return status.isSuccess() ? writeRecord( pObj ) : INVALID_OBJ_PATH;
597 }
NTupleSvc::writeRecord
StatusCode writeRecord(NTuple::Tuple *tuple) override
Write single record to N tuple.
Definition: NTupleSvc.cpp:564
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

StatusCode NTupleSvc::writeRecord | ( | DataObject * | pParent,
|  | const std::string & | relPath
| ) |  |
| override

Write single record to N tuple.

Definition at line 600 of file NTupleSvc.cpp.

601 {
602 NTuple::Tuple* pObj = nullptr;
603 StatusCode status = findObject( pParent, relPath, *pp_cast<DataObject>( &pObj ) ); // Check if object is present
604 return status.isSuccess() ? writeRecord( pObj ) : INVALID_OBJ_PATH;
605 }
NTupleSvc::writeRecord
StatusCode writeRecord(NTuple::Tuple *tuple) override
Write single record to N tuple.
Definition: NTupleSvc.cpp:564
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:50
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataSvc::findObject
StatusCode findObject(boost::string_ref fullPath, DataObject *&pObject) override
Find object identified by its full path in the data store.
Definition: DataSvc.cpp:795

## Member Data Documentation

Connections NTupleSvc::m_connections
| protected

Container of connection points.

Definition at line 122 of file NTupleSvc.h.

Gaudi::Property<DBaseEntries> NTupleSvc::m_input {this, "Input", {}, "input streams"}
| protected

Definition at line 118 of file NTupleSvc.h.

Gaudi::Property<DBaseEntries> NTupleSvc::m_output {this, "Output", {}, "output streams"}
| protected

Definition at line 119 of file NTupleSvc.h.

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

- GaudiSvc/src/NTupleSvc/NTupleSvc.h
- GaudiSvc/src/NTupleSvc/NTupleSvc.cpp