Gaudi Framework, version v23r0 |
Home | Generated: Mon Jan 30 2012 |
NTuple converter class definition. More...
#include <RNTupleCnv.h>
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. | |
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 Attributes | |
SmartIF< INTupleSvc > | m_ntupleSvc |
Reference to N tuple service. |
NTuple converter class definition.
Package : RootHistCnv Author : Charles Leggett
Definition at line 24 of file RNTupleCnv.h.
RootHistCnv::RNTupleCnv::RNTupleCnv | ( | ISvcLocator * | svc, |
const CLID & | clid | ||
) | [protected] |
RootHistCnv::RNTupleCnv::~RNTupleCnv | ( | ) | [protected, virtual] |
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 103 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 140 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 65 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 52 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 232 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 74 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 200 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.
SmartIF<INTupleSvc> RootHistCnv::RNTupleCnv::m_ntupleSvc [protected] |
Reference to N tuple service.
Definition at line 58 of file RNTupleCnv.h.