| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | List of all members
Gaudi::RootDirectoryCnv Class Reference

Description: NTuple directory converter class definition Definition of the converter to manage the directories in an database representing N-Tuples. More...

`#include <src/RootDirectoryCnv.h>`

Inheritance diagram for Gaudi::RootDirectoryCnv:
[legend]
Collaboration diagram for Gaudi::RootDirectoryCnv:
[legend]

## Public Member Functions
| RootDirectoryCnv (long typ, const CLID &clid, ISvcLocator *svc, RootCnvSvc *mgr)
| Initializing Constructor. More...
StatusCode | createObj (IOpaqueAddress *pAddr, DataObject *&refpObj) override
| Converter overrides: Create transient object from persistent data. More...
StatusCode | fillObjRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Resolve the references of the transient object. More...
StatusCode | updateObj (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Update transient object from persistent data. More...
StatusCode | updateObjRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Update the references of an updated transient object. More...
StatusCode | createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
| Converter overrides: Convert the transient object to the requested representation. More...
StatusCode | fillRepRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Fill references of persistent object representation. More...
StatusCode | updateRep (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Update persistent object representation. More...
StatusCode | updateRepRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Converter overrides: Update references of persistent object representation. More...
Public Member Functions inherited from Gaudi::RootStatCnv
| RootStatCnv (long typ, const CLID &clid, ISvcLocator *svc, RootCnvSvc *mgr)
| Initializing Constructor. More...
Public Member Functions inherited from Gaudi::RootConverter
| RootConverter (long typ, const CLID &clid, ISvcLocator *svc, RootCnvSvc *mgr)
| Initializing Constructor. More...
long | repSvcType () const override
| Retrieve the class type of the data store the converter uses. More...
StatusCode | createObj (IOpaqueAddress *pAddr, DataObject *&refpObj) override
| Converter overrides: Create transient object from persistent data. More...
StatusCode | fillObjRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Resolve the references of the created transient object. More...
StatusCode | createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
| Converter overrides: Convert the transient object to the requested representation. More...
StatusCode | fillRepRefs (IOpaqueAddress *pAddr, DataObject *pObj) override
| Resolve the references of the created transient object. More...
Public Member Functions inherited from Converter
StatusCode | initialize () override
| Initialize the converter. More...
StatusCode | finalize () override
| Initialize the converter. More...
StatusCode | setDataProvider (IDataProviderSvc *svc) override
| Set Data provider service. More...
SmartIF< IDataProviderSvc > & | dataProvider () const override
| Get Data provider service. More...
StatusCode | setConversionSvc (IConversionSvc *svc) override
| Set conversion service the converter is connected to. More...
SmartIF< IConversionSvc > & | conversionSvc () const override
| Get conversion service the converter is connected to. More...
StatusCode | setAddressCreator (IAddressCreator *creator) override
| Set address creator facility. More...
SmartIF< IAddressCreator > & | addressCreator () const override
| Retrieve address creator facility. More...
const CLID & | objType () const override
| Retrieve the class type of objects the converter produces. More...
virtual long | i_repSvcType () const
| Retrieve the class type of the data store the converter uses. More...
StatusCode | createObj (IOpaqueAddress *pAddress, DataObject *&refpObject) override
| Create the transient representation of an object. More...
StatusCode | fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
| Resolve the references of the created transient object. More...
StatusCode | updateObj (IOpaqueAddress *pAddress, DataObject *refpObject) override
| Update the transient object from the other representation. More...
StatusCode | updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
| Update the references of an updated transient object. More...
StatusCode | createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) override
| Convert the transient object to the requested representation. More...
StatusCode | fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
| Resolve the references of the converted object. More...
StatusCode | updateRep (IOpaqueAddress *pAddress, DataObject *pObject) override
| Update the converted representation of a transient object. More...
StatusCode | updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
| Update the references of an already converted object. More...
| Converter (long storage_type, const CLID &class_type, ISvcLocator *svc=0)
| Standard Constructor. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=false) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &type, const std::string &name, T *&psvc) const
| Access a service by name, type creating it if it doesn't already exist. More...
SmartIF< IService > | service (const std::string &name, const bool createIf=true) const
| Return a pointer to the service identified by name (or "type/name") More...
Public Member Functions inherited from implements< IConverter >
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...
| implements ()=default
| Default constructor. More...
| implements (const implements &)
| Copy constructor (zero the reference count) More...
implements & | operator= (const implements &)
| Assignment operator (do not touch the reference count). More...
unsigned long | addRef () override
| Reference Interface instance. More...
unsigned long | release () override
| Release Interface instance. More...
unsigned long | refCount () const override
| Current reference count. More...

## Additional Inherited Members
Public Types inherited from Converter
using | Factory = Gaudi::PluginService::Factory< IConverter *(ISvcLocator *)>
Public Types inherited from implements< IConverter >
using | base_class = implements< Interfaces... >
| Typedef to this class. More...
using | extend_interfaces_base = extend_interfaces< Interfaces... >
| Typedef to the base of this class. More...
using | iids = typename extend_interfaces_base::ext_iids
Public Types inherited from extend_interfaces< Interfaces... >
using | ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
| take union of the ext_iids of all Interfaces... More...
Protected Member Functions inherited from Gaudi::RootStatCnv
MsgStream & | log () const
| Helper to use mesage logger. More...
StatusCode | initialize () override
| Initialize converter object. More...
StatusCode | finalize () override
| Finalize converter object. More...
virtual const std::string | containerName (IRegistry *pDir) const
| Retrieve the name of the container a given object is placed into. More...
virtual const std::string | fileName (IRegistry *pReg) const
| Retrieve the name of the file a given object is placed into. More...
virtual const std::string | topLevel (IRegistry *pReg) const
| Retrieve the full path of the file a given object is placed into. More...
StatusCode | makeError (const std::string &msg, bool throw_exception=false) const
| Helper method to issue error messages. More...
StatusCode | saveDescription (const std::string &path, const std::string &ident, const std::string &desc, const std::string &opt, const CLID &clid)
| Save statistics object description. More...
Protected Member Functions inherited from Converter
SmartIF< ISvcLocator > & | serviceLocator () const
| Retrieve pointer to service locator. More...
SmartIF< IMessageSvc > & | msgSvc () const
| Retrieve pointer to message service. More...
SmartIF< IDataManagerSvc > & | dataManager () const
| Get Data Manager service. More...
Protected Attributes inherited from Gaudi::RootStatCnv
SmartIF< IDataManagerSvc > | m_dataMgr
| Reference to data manager service to manipulate the TES. More...
std::unique_ptr< MsgStream > | m_log
| Reference to logger object. More...
Protected Attributes inherited from Gaudi::RootConverter
RootCnvSvc * | m_dbMgr
| Conversion service needed for proper operation to forward requests. More...
Protected Attributes inherited from implements< IConverter >
std::atomic_ulong | m_refCount
| Reference counter. More...

## Detailed Description

Description: NTuple directory converter class definition Definition of the converter to manage the directories in an database representing N-Tuples.

Author
  M.Frank

Version
  1.0

Definition at line 30 of file RootDirectoryCnv.h.

## Constructor & Destructor Documentation

## ◆ RootDirectoryCnv()

RootDirectoryCnv::RootDirectoryCnv | ( | long | typ,
|  | const CLID & | clid,
|  | ISvcLocator * | svc,
|  | RootCnvSvc * | mgr
| ) |  |

Initializing Constructor.

Parameters

  typ | [IN] Concrete storage type of the converter
  clid | [IN] Class identifier of the object
  svc | [IN] Pointer to service locator object

Returns
  Reference to RootBaseCnv object

Definition at line 30 of file RootDirectoryCnv.cpp.

31 : RootStatCnv( typ, clid, svc, mgr ) {}
Gaudi::RootStatCnv::RootStatCnv
RootStatCnv(long typ, const CLID &clid, ISvcLocator *svc, RootCnvSvc *mgr)
Initializing Constructor.
Definition: RootStatCnv.cpp:24

## Member Function Documentation

## ◆ createObj()

StatusCode RootDirectoryCnv::createObj | ( | IOpaqueAddress * | pAddr,
|  | DataObject *& | refpObj
| ) |  |
| override

Converter overrides: Create transient object from persistent data.

Parameters

  pAddr | [IN] Pointer to object address.
  refpObj | [OUT] Location to pointer to store data object

Returns
  Status code indicating success or failure.

Definition at line 34 of file RootDirectoryCnv.cpp.

34 {
35 refpObj = new NTuple::Directory();
36 return StatusCode::SUCCESS;
37 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
NTuple::Directory
Small class representing an N tuple directory in the transient store.
Definition: NTuple.h:901

## ◆ createRep()

StatusCode RootDirectoryCnv::createRep | ( | DataObject * | pObj,
|  | IOpaqueAddress *& | refpAddr
| ) |  |
| override

Converter overrides: Convert the transient object to the requested representation.

Parameters

  pObj | [IN] Pointer to data object
  refpAddr | [OUT] Location to store pointer to object address.

Returns
  Status code indicating success or failure.

Definition at line 40 of file RootDirectoryCnv.cpp.

40 {
41 string dsc;
42 if ( objType() == CLID_StatisticsDirectory ) {
43 dsc = "Directory containing statistics results.";
44 } else if ( objType() == CLID_StatisticsFile ) {
45 dsc = "File containing statistics results.";
46 } else {
47 return StatusCode::FAILURE;
48 }
49 string ident = containerName( pObj->registry() );
50 string path = fileName( pObj->registry() );
51 return saveDescription( path, ident, dsc, ident, objType() );
52 }
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:72
GaudiPython.HistoUtils.path
path
Definition: HistoUtils.py:932
Gaudi::RootStatCnv::fileName
virtual const std::string fileName(IRegistry *pReg) const
Retrieve the name of the file a given object is placed into.
Definition: RootStatCnv.cpp:61
Gaudi::RootStatCnv::saveDescription
StatusCode saveDescription(const std::string &path, const std::string &ident, const std::string &desc, const std::string &opt, const CLID &clid)
Save statistics object description.
Definition: RootStatCnv.cpp:99
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::RootStatCnv::containerName
virtual const std::string containerName(IRegistry *pDir) const
Retrieve the name of the container a given object is placed into.
Definition: RootStatCnv.cpp:46
Converter::objType
const CLID & objType() const override
Retrieve the class type of objects the converter produces.
Definition: Converter.cpp:13

## ◆ fillObjRefs()

StatusCode RootDirectoryCnv::fillObjRefs | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Resolve the references of the transient object.

Parameters

  pAddr | [IN] Pointer to object address.
  pObj | [IN] Pointer to data object

Returns
  Status code indicating success or failure.

Definition at line 55 of file RootDirectoryCnv.cpp.

55 {
56 return updateObjRefs( pAddr, pObj );
57 }
Gaudi::RootDirectoryCnv::updateObjRefs
StatusCode updateObjRefs(IOpaqueAddress *pAddr, DataObject *pObj) override
Converter overrides: Update the references of an updated transient object.
Definition: RootDirectoryCnv.cpp:60

## ◆ fillRepRefs()

StatusCode RootDirectoryCnv::fillRepRefs | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Fill references of persistent object representation.

Parameters

  pObj | [IN] Pointer to data object
  refpAddr | [OUT] Location to store pointer to object address.

Returns
  Status code indicating success or failure.

Definition at line 157 of file RootDirectoryCnv.cpp.

157 {
158 return StatusCode::SUCCESS;
159 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85

## ◆ updateObj()

StatusCode RootDirectoryCnv::updateObj | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Update transient object from persistent data.

Parameters

  pAddr | [IN] Pointer to object address.
  pObj | [IN] Pointer to data object

Returns
  Status code indicating success or failure.

Definition at line 142 of file RootDirectoryCnv.cpp.

142 {
143 return StatusCode::SUCCESS;
144 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85

## ◆ updateObjRefs()

StatusCode RootDirectoryCnv::updateObjRefs | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Update the references of an updated transient object.

Parameters

  pAddr | [IN] Pointer to object address.
  pObj | [IN] Pointer to data object

Returns
  Status code indicating success or failure.

Definition at line 60 of file RootDirectoryCnv.cpp.

60 {
61 typedef vector<RootNTupleDescriptor*> REFS;
62 REFS refs;
63 StatusCode status = StatusCode( StatusCode::FAILURE, true );
64 if ( pAddr ) {
65 IRegistry* pReg = pAddr->registry();
66 if ( pReg ) {
67 typedef vector<IRegistry*> Leaves;
68 string ident = pReg->identifier();
69 string fname = fileName( pReg );
70 string cntName = containerName( pReg );
71 RootDataConnection* con = nullptr;
72 Leaves leaves;
73 status = m_dbMgr->connectDatabase( fname, IDataConnection::READ, &con );
74 if ( status.isSuccess() ) {
75 TBranch* b = con->getBranch( "##Descriptors", "GaudiStatisticsDescription" );
76 if ( b ) {
77 for ( Long64_t n = b->GetEntries(), i = 0; i < n; ++i ) {
78 RootNTupleDescriptor* ref = nullptr;
79 b->SetAddress( &ref );
80 int nb = b->GetEntry( i );
81 if ( nb > 1 ) {
82 string s = ref->container.substr( 0, cntName.length() );
83 log() << MSG::VERBOSE << "Read description:" << ref->container << " " << ident << " " << cntName
84 << endmsg;
85 if ( s == cntName ) {
86 if ( ref->container.length() >= cntName.length() + 1 ) {
87 if ( ref->container.find( '/', cntName.length() + 1 ) == string::npos ) {
88 refs.push_back( ref );
89 continue;
90 }
91 }
92 }
93 }
94 delete ref;
95 }
96 }
97 log() << MSG::DEBUG << "Got " << refs.size() << " tuple connection(s)....." << endmsg;
98 status = m_dataMgr->objectLeaves( pObject, leaves );
99 if ( status.isSuccess() ) {
100 for ( auto& ref : refs ) {
101 if ( ref ) {
102 bool need_to_add =
103 std::none_of( std::begin( leaves ), std::end( leaves ),
104 [&]( Leaves::const_reference j ) { return containerName( j ) == ref->container; } );
105 if ( need_to_add ) {
106 IOpaqueAddress* pA = nullptr;
107 if ( ref->clid == CLID_StatisticsDirectory || ref->clid == CLID_StatisticsFile ||
108 ref->clid == CLID_RowWiseTuple || ref->clid == CLID_ColumnWiseTuple ) {
109 string spar[] = {fname, ref->container};
110 unsigned long ipar[] = {~0x0UL, ~0x0UL};
111 status = m_dbMgr->createAddress( repSvcType(), ref->clid, spar, ipar, pA );
112 }
113 if ( status.isSuccess() ) {
114 string top = topLevel( pReg );
115 string leaf_name = top + ref->container.substr( 7 );
116 status = m_dataMgr->registerAddress( leaf_name, pA );
117 if ( status.isSuccess() ) {
118 log() << MSG::DEBUG << "Created address for " << leaf_name << " of type " << ref->clid << endmsg;
119 continue;
120 }
121 makeError( "Failed to register leaves to directory:" + ident, false ).ignore();
122 break;
123 }
124 makeError( "Failed to create leave address to directory:" + ident, false ).ignore();
125 break;
126 }
127 }
128 makeError( "Failed to add leaves to directory:" + ident, false ).ignore();
129 break;
130 }
131 }
132 } else {
133 return makeError( "Failed to access required tuple data description.", false );
134 }
135 }
136 }
137 for ( auto& ref : refs ) delete ref;
138 return status;
139 }
Gaudi::RootStatCnv::makeError
StatusCode makeError(const std::string &msg, bool throw_exception=false) const
Helper method to issue error messages.
Definition: RootStatCnv.cpp:87
Gaudi::RootDataConnection::getBranch
TBranch * getBranch(std::string_view section, std::string_view branch_name)
Access data branch by name: Get existing branch in read only mode.
Definition: RootDataConnection.h:303
IDataManagerSvc::objectLeaves
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 ...
IDataManagerSvc::registerAddress
virtual StatusCode registerAddress(std::string_view fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
Gaudi::RootStatCnv::topLevel
virtual const std::string topLevel(IRegistry *pReg) const
Retrieve the full path of the file a given object is placed into.
Definition: RootStatCnv.cpp:73
Gaudi::RootCnvSvc::createAddress
StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress) override
IAddressCreator implementation: Address creation.
Definition: RootCnvSvc.cpp:347
Gaudi::RootConverter::m_dbMgr
RootCnvSvc * m_dbMgr
Conversion service needed for proper operation to forward requests.
Definition: RootConverter.h:35
MSG::DEBUG
Definition: IMessageSvc.h:15
std::end
T end(T... args)
Gaudi::RootCnvSvc::connectDatabase
StatusCode connectDatabase(const std::string &dataset, int mode, RootDataConnection **con)
Connect the output file to the service with open mode.
Definition: RootCnvSvc.cpp:194
Gaudi::RootStatCnv::fileName
virtual const std::string fileName(IRegistry *pReg) const
Retrieve the name of the file a given object is placed into.
Definition: RootStatCnv.cpp:61
Gaudi::RootStatCnv::m_dataMgr
SmartIF< IDataManagerSvc > m_dataMgr
Reference to data manager service to manipulate the TES.
Definition: RootStatCnv.h:33
MSG::VERBOSE
Definition: IMessageSvc.h:15
compareRootHistos.ref
string ref
Definition: compareRootHistos.py:14
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Gaudi::RootNTupleDescriptor
Description:
Definition: extractEvt.C:98
Gaudi::IDataConnection::READ
Definition: IIODataManager.h:39
IOpaqueAddress::registry
virtual IRegistry * registry() const =0
Update branch name.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Gaudi::RootStatCnv::log
MsgStream & log() const
Helper to use mesage logger.
Definition: RootStatCnv.h:38
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
Gaudi::RootConverter::repSvcType
long repSvcType() const override
Retrieve the class type of the data store the converter uses.
Definition: RootConverter.h:49
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
std::string::find
T find(T... args)
std::string::length
T length(T... args)
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
std::vector
STL class.
std::begin
T begin(T... args)
std::none_of
T none_of(T... args)
gaudirun.s
string s
Definition: gaudirun.py:316
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
std::string::substr
T substr(T... args)
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
Gaudi::RootStatCnv::containerName
virtual const std::string containerName(IRegistry *pDir) const
Retrieve the name of the container a given object is placed into.
Definition: RootStatCnv.cpp:46
Gaudi::RootDataConnection
Concrete implementation of the IDataConnection interface to access ROOT files.
Definition: RootDataConnection.h:93
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

## ◆ updateRep()

StatusCode RootDirectoryCnv::updateRep | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Update persistent object representation.

Parameters

  pObj | [IN] Pointer to data object
  refpAddr | [OUT] Location to store pointer to object address.

Returns
  Status code indicating success or failure.

Definition at line 147 of file RootDirectoryCnv.cpp.

147 {
148 return StatusCode::SUCCESS;
149 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85

## ◆ updateRepRefs()

StatusCode RootDirectoryCnv::updateRepRefs | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| override

Converter overrides: Update references of persistent object representation.

Parameters

  pObj | [IN] Pointer to data object
  refpAddr | [OUT] Location to store pointer to object address.

Returns
  Status code indicating success or failure.

Definition at line 152 of file RootDirectoryCnv.cpp.

152 {
153 return StatusCode::SUCCESS;
154 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85

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

- RootCnv/RootCnv/RootDirectoryCnv.h
- RootCnv/src/RootDirectoryCnv.cpp