| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

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

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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RootHistCnv::RNTupleCnv Class Referenceabstract

NTuple converter class definition. More...

`#include <RNTupleCnv.h>`

Inheritance diagram for RootHistCnv::RNTupleCnv:
[legend]
Collaboration diagram for RootHistCnv::RNTupleCnv:
[legend]

## Public Member Functions
virtual StatusCode | initialize ()
| Initialize the converter.
virtual StatusCode | finalize ()
| Finalize the converter.
virtual StatusCode | createObj (IOpaqueAddress *pAddr, DataObject *&refpObj)
| Create the transient representation of an object.
virtual StatusCode | updateObj (IOpaqueAddress *pAddr, DataObject *refpObj)
| Update the transient object from the other representation.
virtual StatusCode | createRep (DataObject *pObj, IOpaqueAddress *&refpAddr)
| Convert the transient object to the requested representation.
virtual StatusCode | updateRep (IOpaqueAddress *pAddr, DataObject *pObj)
| Update the converted representation of a transient object.
Public Member Functions inherited from RootHistCnv::RConverter
long | repSvcType () const
| Retrieve the class type of the data store the converter uses.
StatusCode | error (const std::string &msg)
StatusCode | regTFile (const std::string, const TFile *)
StatusCode | findTFile (const std::string, TFile *&)
std::string | diskDirectory (const std::string &loc)
std::string | directory (const std::string &loc)
void | setDirectory (const std::string &loc)
void | setDiskDirectory (const std::string &loc)
StatusCode | createDirectory (const std::string &loc)
StatusCode | createDiskDirectory (const std::string &loc)
std::string | getDirectory ()
std::string | convertId (const std::string &) const
Public Member Functions inherited from Converter
virtual StatusCode | setDataProvider (IDataProviderSvc *svc)
| Set Data provider service.
virtual SmartIF < IDataProviderSvc > & | dataProvider () const
| Get Data provider service.
virtual StatusCode | setConversionSvc (IConversionSvc *svc)
| Set conversion service the converter is connected to.
virtual SmartIF< IConversionSvc > & | conversionSvc () const
| Get conversion service the converter is connected to.
virtual StatusCode | setAddressCreator (IAddressCreator *creator)
| Set address creator facility.
virtual SmartIF < IAddressCreator > & | addressCreator () const
| Retrieve address creator facility.
virtual const CLID & | objType () const
| Retrieve the class type of objects the converter produces.
virtual long | i_repSvcType () const
| Retrieve the class type of the data store the converter uses.
virtual StatusCode | fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
| Resolve the references of the created transient object.
virtual StatusCode | updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
| Update the references of an updated transient object.
virtual StatusCode | fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
| Resolve the references of the converted object.
virtual StatusCode | updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
| Update the references of an already converted object.
| Converter (long storage_type, const CLID &class_type, ISvcLocator *svc=0)
| Standard Constructor.
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.
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.
SmartIF< IService > | service (const std::string &name, const bool createIf=true) const
| Return a pointer to the service identified by name (or "type/name")

## Protected Member Functions
| RNTupleCnv (ISvcLocator *svc, const CLID &clid)
| Standard constructor.
virtual | ~RNTupleCnv ()
| Standard destructor.
virtual StatusCode | load (TTree *tree, INTuple *&refpObj)=0
| Create the transient representation of an object.
virtual StatusCode | book (const std::string &desc, INTuple *pObj, TTree *&tree)=0
| Book a new N tuple.
virtual StatusCode | writeData (TTree *rtree, INTuple *pObj)=0
| Write N tuple data.
virtual StatusCode | readData (TTree *rtree, INTuple *pObj, long ievt)=0
| Read N tuple data.
virtual std::string | rootVarType (int)
| Return ROOT type info:
Protected Member Functions inherited from RootHistCnv::RConverter
| RConverter (const CLID &clid, ISvcLocator *svc)
| Standard constructor.
virtual | ~RConverter ()
| Standard destructor.
virtual StatusCode | readObject (IOpaqueAddress *pAddr, DataObject *&refpObj)
| Create the transient representation of an object.
virtual TObject * | createPersistent (DataObject *pObj)
| Create the persistent representation of an object.
StatusCode | createAddress (DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
| Create address of the transient object according to the requested representation.
StatusCode | createAddress (const std::string &rzdir, const CLID &clid, long id, TObject *pTobj, IOpaqueAddress *&refpAddress)
StatusCode | createAddress (const std::string &rzdir, const CLID &clid, const std::string &title, TObject *pTobj, IOpaqueAddress *&refpAddress)
TDirectory * | changeDirectory (DataObject *pObject)
| Switch to object directory (=Parent directory)
Protected Member Functions inherited from Converter
virtual | ~Converter ()
| Standard Destructor.
SmartIF< ISvcLocator > & | serviceLocator () const
| Retrieve pointer to service locator.
SmartIF< IMessageSvc > & | msgSvc () const
| Retrieve pointer to message service.
SmartIF< IMessageSvc > & | messageService () const
SmartIF< IDataManagerSvc > & | dataManager () const
| Get Data Manager service.

## Protected Attributes
SmartIF< INTupleSvc > | m_ntupleSvc
| Reference to N tuple service.

## Additional Inherited Members
Public Types inherited from Converter
typedef Gaudi::PluginService::Factory1 < IConverter *, ISvcLocator * > | Factory
Static Public Member Functions inherited from RootHistCnv::RConverter
static long | storageType ()
| Inquire storage type.

## Detailed Description

NTuple converter class definition.

Package : RootHistCnv Author : Charles Leggett

Definition at line 24 of file RNTupleCnv.h.

## Constructor & Destructor Documentation

RootHistCnv::RNTupleCnv::RNTupleCnv | ( | ISvcLocator * | svc,
|  | const CLID & | clid
| ) |  |
| protected

Standard constructor.

Definition at line 35 of file RNTupleCnv.cpp.

: RConverter(clid, svc) {
}

RootHistCnv::RNTupleCnv::~RNTupleCnv | ( |  | ) |
| protected virtual

Standard destructor.

Definition at line 43 of file RNTupleCnv.cpp.

{
}

## Member Function Documentation

virtual StatusCode RootHistCnv::RNTupleCnv::book | ( | const std::string & | desc,
|  | INTuple * | pObj,
|  | TTree *& | tree
| ) |  |
| protected pure virtual

Book a new N tuple.

Implemented in RootHistCnv::RCWNTupleCnv, and RootHistCnv::RRWNTupleCnv.

StatusCode RootHistCnv::RNTupleCnv::createObj | ( | IOpaqueAddress * | pAddr,
|  | DataObject *& | refpObj
| ) |  |
| virtual

Create the transient representation of an object.

Reimplemented from Converter.

Definition at line 100 of file RNTupleCnv.cpp.

{
MsgStream log (msgSvc(), "RNTupleCnv");
IRegistry* pReg = pAddress->registry();
// log << MSG::WARNING << "adr: " << pAddress->par()[0] << " <> "
// << pAddress->par()[1] << " <> " << pAddress->ipar()[0] << " <> "
// << pAddress->ipar()[1] << " <> " << hex << rAddr->tObj()
// << dec << " <> " << pReg->identifier() << endmsg;
std::string ident = pReg->identifier();
StatusCode status = readObject(pAddress, refpObject); // Doesn't do anything
if ( status.isSuccess() ) {
RootObjAddress *rAddr = dynamic_cast<RootObjAddress*>( pAddress );
if (rAddr == 0) {
log << MSG::ERROR << "Could not cast to RootObjAddress" << endmsg;
return StatusCode::FAILURE;
}
INTuple* nt = 0;
TTree* tobj = (TTree*) rAddr->tObj();
status = load(tobj, nt);
if (status.isSuccess()) {
refpObject = dynamic_cast<DataObject*>(nt);
} else {
log << MSG::ERROR << "Problems loading ntuple id: " << pReg->identifier()
<< endmsg;
}
}
return status;
}

StatusCode RootHistCnv::RNTupleCnv::createRep | ( | DataObject * | pObj,
|  | IOpaqueAddress *& | refpAddr
| ) |  |
| virtual

Convert the transient object to the requested representation.

Reimplemented from RootHistCnv::RConverter.

Definition at line 137 of file RNTupleCnv.cpp.

{
GlobalDirectoryRestore restore;
pAddr = 0;
try {
IRegistry* pReg = pObject->registry();
if ( 0 != pReg ) {
pAddr = pReg->address();
if ( 0 == pAddr ) {
SmartIF<IDataManagerSvc> dataMgr(dataProvider());
if ( dataMgr.isValid() ) {
IRegistry* pParentReg = 0;
StatusCode status = dataMgr->objectParent(pReg, pParentReg);
if ( status.isSuccess() ) {
IOpaqueAddress* pParAddr = pParentReg->address();
if ( pParAddr ) {
TDirectory* pParentDir = (TDirectory*)pParAddr->ipar()[0];
if ( pParentDir ) {
TTree* pTree = 0;
std::string dsc = pReg->name().substr(1);
gDirectory = pParentDir;
status = book(dsc, dynamic_cast<INTuple*>(pObject), pTree);
if ( !status.isSuccess() ) {
return status;
}
status = createAddress(pObject, gDirectory, pTree, pAddr);
if ( !status.isSuccess() ) {
return status;
}
return writeData(pTree, dynamic_cast<INTuple*>(pObject));
}
}
}
}
}
else {
TDirectory* pDir = (TDirectory*)pAddr->ipar()[0];
RootObjAddress *rAddr = dynamic_cast<RootObjAddress*>( pAddr );
if (rAddr == 0) {
MsgStream log (msgSvc(), "RNTupleCnv");
log << MSG::ERROR << "Could not cast to RootObjAddress" << endmsg;
return StatusCode::FAILURE;
}
TTree* pTree = (TTree*) rAddr->tObj();
gDirectory = pDir;
return writeData(pTree, dynamic_cast<INTuple*>(pObject));
}
}
}
catch (...) {
}
MsgStream log (msgSvc(), "RNTupleCnv");
log << MSG::ERROR << "Failed to create persistent N-tuple!" << endmsg;
return StatusCode::FAILURE;
}

StatusCode RootHistCnv::RNTupleCnv::finalize | ( |  | ) |
| virtual

Finalize the converter.

: the release at this point may brake (?)

Reimplemented from Converter.

Definition at line 62 of file RNTupleCnv.cpp.

{
//-----------------------------------------------------------------------------
m_ntupleSvc = 0; // release
return Converter::finalize();
}

StatusCode RootHistCnv::RNTupleCnv::initialize | ( |  | ) |
| virtual

Initialize the converter.

Reimplemented from Converter.

Definition at line 49 of file RNTupleCnv.cpp.

{
//-----------------------------------------------------------------------------
StatusCode status = Converter::initialize();
if ( status.isSuccess() ) {
m_ntupleSvc = serviceLocator()->service("NTupleSvc");
if (!m_ntupleSvc.isValid()) status = StatusCode::FAILURE;
}
return status;
}

virtual StatusCode RootHistCnv::RNTupleCnv::load | ( | TTree * | tree,
|  | INTuple *& | refpObj
| ) |  |
| protected pure virtual

Create the transient representation of an object.

Implemented in RootHistCnv::RCWNTupleCnv, and RootHistCnv::RRWNTupleCnv.

virtual StatusCode RootHistCnv::RNTupleCnv::readData | ( | TTree * | rtree,
|  | INTuple * | pObj,
|  | long | ievt
| ) |  |
| protected pure virtual

Read N tuple data.

Implemented in RootHistCnv::RCWNTupleCnv, and RootHistCnv::RRWNTupleCnv.

std::string RootHistCnv::RNTupleCnv::rootVarType | ( | int | type | ) |
| protected virtual

Return ROOT type info:

Definition at line 229 of file RNTupleCnv.cpp.

{
//-----------------------------------------------------------------------------
switch( type ) {
case DataTypeInfo::BOOL: return "/O"; // bool
case DataTypeInfo::SHORT: return "/S"; // short
case DataTypeInfo::INT: return "/I"; // int
case DataTypeInfo::LONG: return "/I"; // long
case DataTypeInfo::LONGLONG: return "/L"; // longlong
case DataTypeInfo::USHORT: return "/s"; // ushort
case DataTypeInfo::UINT: return "/i"; // uint
case DataTypeInfo::ULONG: return "/i"; // ulong
case DataTypeInfo::ULONGLONG: return "/l"; // ulonglong
case DataTypeInfo::FLOAT: return "/F"; // float
case DataTypeInfo::DOUBLE: return "/D"; // double
case DataTypeInfo::CHAR: return "/B"; // char
case DataTypeInfo::UCHAR: return "/b"; // char
default: return "";
}
// cannot reach this point
}

StatusCode RootHistCnv::RNTupleCnv::updateObj | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | refpObj
| ) |  |
| virtual

Update the transient object from the other representation.

Reimplemented from Converter.

Definition at line 71 of file RNTupleCnv.cpp.

{
MsgStream log (msgSvc(), "RNTupleCnv");
StatusCode status = StatusCode::FAILURE;
RootObjAddress *rAddr = dynamic_cast<RootObjAddress*>(pAddress);
if (rAddr == 0) {
log << MSG::ERROR << "Could not dynamic cast to RootObjAddress" << endmsg;
return StatusCode::FAILURE;
}
TTree* rtree = (TTree*) rAddr->tObj();
try {
unsigned long* info = (unsigned long*)pAddress->ipar();
setDirectory(pAddress->par()[0]);
status = readData(rtree, dynamic_cast<INTuple*>(pObject), info[1]++);
}
catch (...) {
}
return status;
}

StatusCode RootHistCnv::RNTupleCnv::updateRep | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObj
| ) |  |
| virtual

Update the converted representation of a transient object.

Reimplemented from Converter.

Definition at line 197 of file RNTupleCnv.cpp.

{
MsgStream log (msgSvc(), "RNTupleCnv");
if ( 0 != pAddr ) {
GlobalDirectoryRestore restore;
TDirectory* pDir = (TDirectory*)pAddr->ipar()[0];
RootObjAddress *rAddr = dynamic_cast<RootObjAddress*>( pAddr );
if (rAddr == 0) {
log << MSG::ERROR << "Could not cast to RootObjAddress" << endmsg;
return StatusCode::FAILURE;
}
TTree* pTree = (TTree*) rAddr->tObj();
if ( 0 != pDir && 0 != pTree ) {
gDirectory->cd(pDir->GetPath());
pTree->Write("",TObject::kOverwrite);
return StatusCode::SUCCESS;
}
}
else {
log << MSG::WARNING << "empty ntuple: " << pObj->registry()->identifier()
<< endmsg;
return ( createRep(pObj,pAddr) );
}
return StatusCode::FAILURE;
}

virtual StatusCode RootHistCnv::RNTupleCnv::writeData | ( | TTree * | rtree,
|  | INTuple * | pObj
| ) |  |
| protected pure virtual

Write N tuple data.

Implemented in RootHistCnv::RCWNTupleCnv, and RootHistCnv::RRWNTupleCnv.

## Member Data Documentation

SmartIF<INTupleSvc> RootHistCnv::RNTupleCnv::m_ntupleSvc
| protected

Reference to N tuple service.

Definition at line 58 of file RNTupleCnv.h.

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/RootHistCnv/src/RNTupleCnv.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/RootHistCnv/src/RNTupleCnv.cpp