| The Gaudi Framework v29r1 (5cd95fa2)

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

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

Public Member Functions | Static Public Member Functions | List of all members
RootHistCnv::RDirectoryCnv Class Reference

Create persistent and transient representations of data store directories. More...

`#include <src/RDirectoryCnv.h>`

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

## Public Member Functions
StatusCode | createObj (IOpaqueAddress *pAddr, DataObject *&refpObj) override
| Create the transient representation of an object. More...
StatusCode | fillObjRefs (IOpaqueAddress *pAddr, DataObject *refpObj) override
| Update the transient object from the other representation. More...
StatusCode | createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
| Convert the transient object to the requested representation. More...
StatusCode | updateRep (IOpaqueAddress *pAddr, DataObject *pObject) override
| Convert the transient object to the requested representation. More...
| RDirectoryCnv (ISvcLocator *svc)
| Standard constructor. More...
| RDirectoryCnv (ISvcLocator *svc, const CLID &clid)
| Standard constructor. More...
| ~RDirectoryCnv () override=default
| Standard destructor. More...
Public Member Functions inherited from RootHistCnv::RConverter
StatusCode | createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
| Convert the transient object to the requested representation. More...
long | repSvcType () const override
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
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...
| ~implements () override=default
| Virtual destructor. 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...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Static Public Member Functions
static const CLID & | classID ()
| Inquire class type. More...
Static Public Member Functions inherited from RootHistCnv::RConverter
static long | storageType ()
| Inquire storage type. More...

## Additional Inherited Members
Public Types inherited from Converter
typedef Gaudi::PluginService::Factory< IConverter *, ISvcLocator * > | Factory
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 RootHistCnv::RConverter
| RConverter (const CLID &clid, ISvcLocator *svc)
| Standard constructor. More...
| ~RConverter () override=default
| Standard destructor. More...
virtual StatusCode | readObject (IOpaqueAddress *pAddr, DataObject *&refpObj)
| Create the transient representation of an object. More...
virtual TObject * | createPersistent (DataObject *pObj)
| Create the persistent representation of an object. More...
StatusCode | createAddress (DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
| Create address of the transient object according to the requested representation. More...
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) More...
Protected Member Functions inherited from Converter
| ~Converter () override=default
| Standard Destructor. More...
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 implements< IConverter >
std::atomic_ulong | m_refCount
| Reference counter. More...

## Detailed Description

Create persistent and transient representations of data store directories.

Author
  Charles Leggett

Definition at line 17 of file RDirectoryCnv.h.

## Constructor & Destructor Documentation

RootHistCnv::RDirectoryCnv::RDirectoryCnv | ( | ISvcLocator * | svc | ) |
| inline

Standard constructor.

Definition at line 31 of file RDirectoryCnv.h.

31 : RConverter( CLID_NTupleDirectory, svc ) {}
RootHistCnv::RConverter::RConverter
RConverter(const CLID &clid, ISvcLocator *svc)
Standard constructor.
Definition: RConverter.h:58

RootHistCnv::RDirectoryCnv::RDirectoryCnv | ( | ISvcLocator * | svc,
|  | const CLID & | clid
| ) |  |
| inline

Standard constructor.

Definition at line 33 of file RDirectoryCnv.h.

33 : RConverter( clid, svc ) {}
RootHistCnv::RConverter::RConverter
RConverter(const CLID &clid, ISvcLocator *svc)
Standard constructor.
Definition: RConverter.h:58

RootHistCnv::RDirectoryCnv::~RDirectoryCnv | ( |  | ) |
| override default

Standard destructor.

## Member Function Documentation

static const CLID& RootHistCnv::RDirectoryCnv::classID | ( |  | ) |
| inline static

Inquire class type.

Definition at line 29 of file RDirectoryCnv.h.

29 { return CLID_NTupleDirectory; }

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

Create the transient representation of an object.

Definition at line 40 of file RDirectoryCnv.cpp.

42 {
43 refpObject = new NTuple::Directory();
44 return StatusCode::SUCCESS;
45 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
NTuple::Directory
Small class representing an N tuple directory in the transient store.
Definition: NTuple.h:986

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

Convert the transient object to the requested representation.

Definition at line 48 of file RDirectoryCnv.cpp.

50 {
51 const std::string& loc = pObject->registry()->identifier();
52 if ( createDirectory( loc ).isSuccess() ) {
53 setDirectory( loc );
54 setDiskDirectory( loc );
55 // return createAddress(pObject, pObject->registry()->name(), refpAddress);
56 return createAddress( pObject, gDirectory, nullptr, refpAddress );
57 }
58 refpAddress = nullptr;
59 return StatusCode::FAILURE;
60 }
RootHistCnv::RConverter::setDirectory
void setDirectory(const std::string &loc)
Definition: RConverter.cpp:113
StatusCode::FAILURE
Definition: StatusCode.h:31
RootHistCnv::RConverter::createDirectory
StatusCode createDirectory(const std::string &loc)
Definition: RConverter.cpp:25
std::string
STL class.
RootHistCnv::RConverter::createAddress
StatusCode createAddress(DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
Create address of the transient object according to the requested representation. ...
Definition: RConverter.cpp:160
RootHistCnv::RConverter::setDiskDirectory
void setDiskDirectory(const std::string &loc)
Definition: RConverter.cpp:146

StatusCode RootHistCnv::RDirectoryCnv::fillObjRefs | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | refpObj
| ) |  |
| override

Update the transient object from the other representation.

Definition at line 75 of file RDirectoryCnv.cpp.

76 {
77 MsgStream log( msgSvc(), "RDirectoryCnv" );
78 IRegistry* pReg = pObj->registry();
79 std::string full = pReg->identifier();
80 const std::string& fname = pAddr->par()[0];
81
82 TFile* tf = nullptr;
83 findTFile( full, tf ).ignore();
84
85 // cd to TFile:
86 setDirectory( full );
87 TIter nextkey( gDirectory->GetListOfKeys() );
88 while ( TKey* key = (TKey*)nextkey() ) {
89 IOpaqueAddress* pA = nullptr;
90 TObject* obj = key->ReadObj();
91 std::string title = obj->GetTitle();
92 std::string sid = obj->GetName();
93 std::string f2 = full + "/" + sid;
94 int idh = maybe_stol( sid ).get_value_or( 0 );
95 // introduced by Grigori Rybkine
96 std::string clname = key->GetClassName();
97 std::string clnm = clname.substr( 0, 3 );
98 TClass* isa = obj->IsA();
99 if ( isa->InheritsFrom( "TTree" ) ) {
100 createAddress( full, CLID_ColumnWiseTuple, idh, obj, pA ).ignore();
101 TTree* tree = (TTree*)obj;
102 tree->Print();
103 log << MSG::DEBUG << "Reg CWNT \"" << obj->GetTitle() << "\" as " << f2 << endmsg;
104 title = "/" + sid;
105 } else if ( isa->InheritsFrom( "TDirectory" ) ) {
106 createAddress( full, CLID_NTupleDirectory, title, obj, pA ).ignore();
107 } else if ( isa == TProfile::Class() ) {
108 createAddress( full, CLID_ProfileH, idh, obj, pA ).ignore();
109 title = sid;
110 } else if ( isa == TProfile2D::Class() ) {
111 createAddress( full, CLID_ProfileH2, idh, obj, pA ).ignore();
112 title = sid;
113 } else if ( isa == TH1C::Class() ) {
114 createAddress( full, CLID_H1D, idh, obj, pA ).ignore();
115 title = sid;
116 } else if ( isa == TH1S::Class() ) {
117 createAddress( full, CLID_H1D, idh, obj, pA ).ignore();
118 title = sid;
119 } else if ( isa == TH1I::Class() ) {
120 createAddress( full, CLID_H1D, idh, obj, pA ).ignore();
121 title = sid;
122 } else if ( isa == TH1F::Class() ) {
123 createAddress( full, CLID_H1D, idh, obj, pA ).ignore();
124 title = sid;
125 } else if ( isa == TH1D::Class() ) {
126 createAddress( full, CLID_H1D, idh, obj, pA ).ignore();
127 title = sid;
128 } else if ( isa == TH2C::Class() ) {
129 createAddress( full, CLID_H2D, idh, obj, pA ).ignore();
130 title = sid;
131 } else if ( isa == TH2S::Class() ) {
132 createAddress( full, CLID_H2D, idh, obj, pA ).ignore();
133 title = sid;
134 } else if ( isa == TH2I::Class() ) {
135 createAddress( full, CLID_H2D, idh, obj, pA ).ignore();
136 title = sid;
137 } else if ( isa == TH2F::Class() ) {
138 createAddress( full, CLID_H2D, idh, obj, pA ).ignore();
139 title = sid;
140 } else if ( isa == TH2D::Class() ) {
141 createAddress( full, CLID_H2D, idh, obj, pA ).ignore();
142 title = sid;
143 } else if ( isa == TH3C::Class() ) {
144 createAddress( full, CLID_H3D, idh, obj, pA ).ignore();
145 title = sid;
146 } else if ( isa == TH3S::Class() ) {
147 createAddress( full, CLID_H3D, idh, obj, pA ).ignore();
148 title = sid;
149 } else if ( isa == TH3I::Class() ) {
150 createAddress( full, CLID_H3D, idh, obj, pA ).ignore();
151 title = sid;
152 } else if ( isa == TH3F::Class() ) {
153 createAddress( full, CLID_H3D, idh, obj, pA ).ignore();
154 title = sid;
155 } else if ( isa == TH3D::Class() ) {
156 createAddress( full, CLID_H3D, idh, obj, pA ).ignore();
157 title = sid;
158 } else {
159 log << MSG::ERROR << "Encountered an unknown object with key: " << obj->GetName() << " in ROOT file " << fname
160 << endmsg;
161 return StatusCode::FAILURE;
162 }
163 if ( pA ) {
164 StatusCode sc = dataManager()->registerAddress( pReg, title, pA );
165 if ( !sc.isSuccess() ) {
166 log << MSG::ERROR << "Failed to register address for " << full << endmsg;
167 return sc;
168 }
169 log << MSG::VERBOSE << "Created address for " << clnm << "'" << title << "' in " << full << endmsg;
170 }
171 }
172 return StatusCode::SUCCESS;
173 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
RootHistCnv::RConverter::setDirectory
void setDirectory(const std::string &loc)
Definition: RConverter.cpp:113
StatusCode::FAILURE
Definition: StatusCode.h:31
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
MSG::DEBUG
Definition: IMessageSvc.h:16
Converter::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
Retrieve pointer to message service.
Definition: Converter.cpp:103
RootHistCnv::RConverter::findTFile
StatusCode findTFile(const std::string, TFile *&)
Definition: RConverter.cpp:286
MSG::VERBOSE
Definition: IMessageSvc.h:16
IOpaqueAddress::par
virtual const std::string * par() const =0
Retrieve String parameters.
std::string
STL class.
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
Converter::dataManager
SmartIF< IDataManagerSvc > & dataManager() const
Get Data Manager service.
Definition: Converter.cpp:77
MSG::ERROR
Definition: IMessageSvc.h:16
std::string::substr
T substr(T...args)
IDataManagerSvc::registerAddress
virtual StatusCode registerAddress(const std::string &fullPath, IOpaqueAddress *pAddress)=0
Register object address with the data store.
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:109
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
RootHistCnv::RConverter::createAddress
StatusCode createAddress(DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
Create address of the transient object according to the requested representation. ...
Definition: RConverter.cpp:160
Gaudi.Configuration.log
log
Definition: Configuration.py:13

StatusCode RootHistCnv::RDirectoryCnv::updateRep | ( | IOpaqueAddress * | pAddr,
|  | DataObject * | pObject
| ) |  |
| override

Convert the transient object to the requested representation.

Definition at line 63 of file RDirectoryCnv.cpp.

65 {
66 const std::string& loc = pObject->registry()->identifier();
67 if ( createDirectory( loc ).isSuccess() ) {
68 setDirectory( loc );
69 return StatusCode::SUCCESS;
70 }
71 return StatusCode::FAILURE;
72 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
RootHistCnv::RConverter::setDirectory
void setDirectory(const std::string &loc)
Definition: RConverter.cpp:113
StatusCode::FAILURE
Definition: StatusCode.h:31
RootHistCnv::RConverter::createDirectory
StatusCode createDirectory(const std::string &loc)
Definition: RConverter.cpp:25
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:72
std::string
STL class.
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)

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

- RootHistCnv/src/RDirectoryCnv.h
- RootHistCnv/src/RDirectoryCnv.cpp