ATLAS Offline Software
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
pool::RootTreeContainer Class Reference

#include <src/RootTreeContainer.h>

Inheritance diagram for pool::RootTreeContainer:
Collaboration diagram for pool::RootTreeContainer:

Classes

struct  BranchDesc
 Definiton of a branch descriptor. More...
 

Public Member Functions

 RootTreeContainer ()
 Standard constructor. More...
 
virtual ~RootTreeContainer ()
 Standard destructor. More...
 
virtual DbStatus close () override
 Close the container and deallocate resources. More...
 
virtual DbStatus open (DbDatabase &dbH, const std::string &nam, const DbTypeInfo *info, DbAccessMode mod) override
 Open the container for object access. More...
 
virtual DbStatus getOption (DbOption &opt) override
 Access options. More...
 
virtual DbStatus setOption (const DbOption &opt) override
 Set options. More...
 
virtual DbStatus isShapeSupported (const DbTypeInfo *typ) const override
 Ask if a given shape is supported. More...
 
virtual DbStatus select (DbSelect &criteria) override
 Define selection criteria. More...
 
virtual uint64_t size () override
 Number of entries within the container. More...
 
TTree * getTTree ()
 return the TTree in which this container is stored More...
 
const std::string & getName () const
 return the name of the container More...
 
bool isBranchContainer () const
 is this a container in a TBranch? (regular ones take the whole TTree) More...
 
void setTreeFillMode (bool mode)
 set Tree Filling mode (true/false) for branch containers More...
 
bool usingTreeFillMode () const
 return true if this branch container is using TTree Filling mode More...
 
bool isDirty () const
 return true if this branch container was updated and it's TTree needs to be Filled More...
 
void clearDirty ()
 clear the dirty status (used after containing TTree was Filled) More...
 
virtual DbStatus fetch (DbSelect &sel) override
 Fetch next object address of the selection to set token. More...
 
virtual DbStatus fetch (const Token::OID_t &linkH, Token::OID_t &stmt) override
 Fetch refined object address. Default implementation returns identity. More...
 
virtual DbStatus loadObject (void **ptr, ShapeH shape, Token::OID_t &oid) override
 Find object by object identifier and load it into memory. More...
 
virtual DbStatus writeObject (ActionList::value_type &) override
 Commit single entry to container. More...
 
virtual DbStatus transAct (Transaction::Action action) override
 Execute Transaction action. More...
 
virtual void release () override
 Release instance (Abstract interfaces do not expose destructor!) More...
 
virtual std::string name () const override
 Get container name. More...
 
virtual uint64_t nextRecordId () override
 Number of next record in the container (=size if no delete is allowed) More...
 
virtual void useNextRecordId (uint64_t) override
 Suggest next Record ID for tbe next object written - used only with synced indexes. More...
 
virtual void * allocate (unsigned long siz, DbContainer &cntH, ShapeH shape) override
 In place allocation of raw memory for the transient object. More...
 
virtual DbStatus allocate (DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &oid) override
 In place allocation of object location. More...
 
virtual DbStatus free (void *ptr, DbContainer &cntH) override
 In place deletion of raw memory. More...
 
virtual DbStatus update (DbSelect &) override
 Perform UPDATE statement. More...
 
virtual DbStatus update (DbContainer &cntH, const void *object, ShapeH shape, const Token::OID_t &linkH) override
 Update existing object in the container. More...
 
virtual DbStatus update (DbContainer &cntH, const void *object, ShapeH shape, const DbObjectHandle< DbObject > &objH) override
 Update existing object in the container. More...
 
virtual DbStatus destroy (DbSelect &) override
 Perform DELETE statement. More...
 
virtual DbStatus destroy (const Token::OID_t &lnkH) override
 Add the specified object to the delete stack. More...
 
virtual DbStatus save (DbObjectHandle< DbObject > &objH) override
 Add single entry to container. More...
 
virtual DbStatus save (DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &linkH) override
 Save new object in the container and return its handle. More...
 
virtual DbStatus load (void **ptr, ShapeH shape, const Token::OID_t &lnkH, Token::OID_t &oid, bool any_next) override
 Find object within the container and load it into memory. More...
 
virtual DbStatus clearStack ()
 Clear Transaction stack containing transaction requests. More...
 

Protected Types

typedef std::vector< BranchDescBranches
 Definition of the branch container. More...
 
typedef std::vector< DbActionActionList
 

Protected Member Functions

int stackType () const
 Access accumulated stack entry types. More...
 
size_t stackSize () const
 Access stack size. More...
 
virtual bool updatesPending () const override
 Query the pending transaction stack. More...
 
ActionList::value_type * stackEntry (size_t which)
 Internal: get access to stack entry. More...
 
virtual DbStatus destroyObject (ActionList::value_type &)
 Destroy persistent object in the container; does not touch transient! More...
 
virtual DbStatus updateObject (ActionList::value_type &)
 Update persistent object in the container. More...
 
virtual DbStatus commitTransaction ()
 Execute object modification requests during a transaction. More...
 

Protected Attributes

TTree * m_tree
 Reference to the root tree object. More...
 
const DbTypeInfom_type
 reference to exact type description More...
 
Branches m_branches
 Branch map. More...
 
DbDatabase m_dbH
 Parent Database handle. More...
 
RootDatabasem_rootDb
 Root database file reference. More...
 
std::string m_branchName
 Branch name, if branch is specified by user. More...
 
int m_ioBytes
 Number of bytes written/read during last operation. Set to -1 if it failed. More...
 
bool m_treeFillMode
 if True, branch container will not use Branch->Fill() but will be filled with its Tree by the database instance More...
 
bool m_isDirty
 flag set when a branch container was updated (but the branch was not Filled) More...
 
std::string m_name
 Container name. More...
 
bool m_canUpdate
 Flag to indicate if object updates are supported. More...
 
bool m_canDestroy
 Flag to indicate if object removals are supported. More...
 

Private Member Functions

DbStatus addBranch (const DbColumn *col, BranchDesc &dsc, const std::string &desc)
 Add item branch. More...
 
DbStatus addObject (DbDatabase &dbH, const DbColumn *col, BranchDesc &dsc, const std::string &desc, int splitLevel, int bufferSize, int branchOffsetTabLen)
 Add BLOB. More...
 
DbStatus selectRow (const DataCallBack *call, const Token::OID_t &linkH, DbAccessMode mode)
 Find entry identified by his number (=primary key) in the Database. More...
 
DbStatus finishTransAct ()
 
TBranch * branch (const std::string &nam) const
 Access branch by name. More...
 
void setBranchOffsetTabLen (TBranch *b, int offsettab_len)
 Recursively set Offset Table length for a branch and it's subbranches. More...
 

Private Attributes

ActionList m_stack
 Transaction fifo storage for writing. More...
 
size_t m_size
 Current size of the transaction stack. More...
 
size_t m_writeSize
 Number of objects to be written out during open transaction. More...
 
int m_stackType
 Accumulated stack entry types. More...
 

Detailed Description

Description: ROOT specific implementation of Database container. Since objects in root are stored in "trees with branches", this object corresponds to a tuple (Tree/Branch), where each object type (determined by the location of the transient object within the data store) is accessed by the "Event" number inside its tree.

Author
M.Frank M.Nowak

Definition at line 59 of file RootTreeContainer.h.

Member Typedef Documentation

◆ ActionList

typedef std::vector< DbAction > pool::DbContainerImp::ActionList
protectedinherited

Definition at line 63 of file DbContainerImp.h.

◆ Branches

typedef std::vector<BranchDesc> pool::RootTreeContainer::Branches
protected

Definition of the branch container.

Definition at line 94 of file RootTreeContainer.h.

Constructor & Destructor Documentation

◆ RootTreeContainer()

pool::RootTreeContainer::RootTreeContainer ( )

Standard constructor.

◆ ~RootTreeContainer()

virtual pool::RootTreeContainer::~RootTreeContainer ( )
virtual

Standard destructor.

Member Function Documentation

◆ addBranch()

DbStatus pool::RootTreeContainer::addBranch ( const DbColumn col,
BranchDesc dsc,
const std::string &  desc 
)
private

Add item branch.

◆ addObject()

DbStatus pool::RootTreeContainer::addObject ( DbDatabase dbH,
const DbColumn col,
BranchDesc dsc,
const std::string &  desc,
int  splitLevel,
int  bufferSize,
int  branchOffsetTabLen 
)
private

Add BLOB.

◆ allocate() [1/2]

virtual DbStatus pool::DbContainerImp::allocate ( DbContainer cntH,
const void *  object,
ShapeH  shape,
Token::OID_t oid 
)
overridevirtualinherited

In place allocation of object location.

Implements pool::IDbContainer.

◆ allocate() [2/2]

virtual void* pool::DbContainerImp::allocate ( unsigned long  siz,
DbContainer cntH,
ShapeH  shape 
)
overridevirtualinherited

In place allocation of raw memory for the transient object.

Implements pool::IDbContainer.

◆ branch()

TBranch* pool::RootTreeContainer::branch ( const std::string &  nam) const
private

Access branch by name.

◆ clearDirty()

void pool::RootTreeContainer::clearDirty ( )
inline

clear the dirty status (used after containing TTree was Filled)

Definition at line 203 of file RootTreeContainer.h.

203 { m_isDirty = false; }

◆ clearStack()

virtual DbStatus pool::DbContainerImp::clearStack ( )
virtualinherited

Clear Transaction stack containing transaction requests.

◆ close()

virtual DbStatus pool::RootTreeContainer::close ( )
overridevirtual

Close the container and deallocate resources.

Reimplemented from pool::DbContainerImp.

◆ commitTransaction()

virtual DbStatus pool::DbContainerImp::commitTransaction ( )
protectedvirtualinherited

Execute object modification requests during a transaction.

◆ destroy() [1/2]

virtual DbStatus pool::DbContainerImp::destroy ( const Token::OID_t lnkH)
overridevirtualinherited

Add the specified object to the delete stack.

Implements pool::IDbContainer.

◆ destroy() [2/2]

virtual DbStatus pool::DbContainerImp::destroy ( DbSelect )
inlineoverridevirtualinherited

Perform DELETE statement.

Implements pool::IDbContainer.

Definition at line 155 of file DbContainerImp.h.

155 { return Error; }

◆ destroyObject()

virtual DbStatus pool::DbContainerImp::destroyObject ( ActionList::value_type &  )
inlineprotectedvirtualinherited

Destroy persistent object in the container; does not touch transient!

Reimplemented in pool::RootKeyContainer.

Definition at line 97 of file DbContainerImp.h.

98  { return Error; }

◆ fetch() [1/2]

virtual DbStatus pool::RootTreeContainer::fetch ( const Token::OID_t linkH,
Token::OID_t stmt 
)
overridevirtual

Fetch refined object address. Default implementation returns identity.

Reimplemented from pool::DbContainerImp.

◆ fetch() [2/2]

virtual DbStatus pool::RootTreeContainer::fetch ( DbSelect sel)
overridevirtual

Fetch next object address of the selection to set token.

Reimplemented from pool::DbContainerImp.

◆ finishTransAct()

DbStatus pool::RootTreeContainer::finishTransAct ( )
private

◆ free()

virtual DbStatus pool::DbContainerImp::free ( void *  ptr,
DbContainer cntH 
)
overridevirtualinherited

In place deletion of raw memory.

Implements pool::IDbContainer.

◆ getName()

const std::string& pool::RootTreeContainer::getName ( ) const
inline

return the name of the container

Definition at line 188 of file RootTreeContainer.h.

188 { return m_name; }

◆ getOption()

virtual DbStatus pool::RootTreeContainer::getOption ( DbOption opt)
overridevirtual

Access options.

Parameters
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

Reimplemented from pool::DbContainerImp.

◆ getTTree()

TTree* pool::RootTreeContainer::getTTree ( )
inline

return the TTree in which this container is stored

Definition at line 185 of file RootTreeContainer.h.

185 { return m_tree; }

◆ isBranchContainer()

bool pool::RootTreeContainer::isBranchContainer ( ) const
inline

is this a container in a TBranch? (regular ones take the whole TTree)

Definition at line 191 of file RootTreeContainer.h.

191 { return !m_branchName.empty(); }

◆ isDirty()

bool pool::RootTreeContainer::isDirty ( ) const
inline

return true if this branch container was updated and it's TTree needs to be Filled

Definition at line 200 of file RootTreeContainer.h.

200 { return m_isDirty; }

◆ isShapeSupported()

virtual DbStatus pool::RootTreeContainer::isShapeSupported ( const DbTypeInfo typ) const
overridevirtual

Ask if a given shape is supported.

Implements pool::IDbContainer.

◆ load()

virtual DbStatus pool::DbContainerImp::load ( void **  ptr,
ShapeH  shape,
const Token::OID_t lnkH,
Token::OID_t oid,
bool  any_next 
)
overridevirtualinherited

Find object within the container and load it into memory.

Parameters
ptr[IN/OUT] ROOT-style address of the pointer to object
shape[IN] Object type
linkH[IN] Preferred object OID
oid[OUT] Actual object OID
any_next[IN] On selection, objects may be skipped. If objects are skipped, the actual oid will differ from the preferred oid.
Returns
Status code indicating success or failure.

Implements pool::IDbContainer.

Reimplemented in pool::RootKeyContainer.

◆ loadObject()

virtual DbStatus pool::RootTreeContainer::loadObject ( void **  ptr,
ShapeH  shape,
Token::OID_t oid 
)
overridevirtual

Find object by object identifier and load it into memory.

Parameters
ptr[IN/OUT] ROOT-style address of the pointer to object
shape[IN] Object type
oid[OUT] Object OID
Returns
Status code indicating success or failure.

Implements pool::DbContainerImp.

Reimplemented in pool::RootTreeIndexContainer.

◆ name()

virtual std::string pool::DbContainerImp::name ( ) const
inlineoverridevirtualinherited

Get container name.

Implements pool::IDbContainer.

Definition at line 115 of file DbContainerImp.h.

116  { return m_name; }

◆ nextRecordId()

virtual uint64_t pool::DbContainerImp::nextRecordId ( )
overridevirtualinherited

Number of next record in the container (=size if no delete is allowed)

Implements pool::IDbContainer.

Reimplemented in pool::RNTupleContainer, pool::RootTreeIndexContainer, and pool::RootKeyContainer.

◆ open()

virtual DbStatus pool::RootTreeContainer::open ( DbDatabase dbH,
const std::string &  nam,
const DbTypeInfo info,
DbAccessMode  mod 
)
overridevirtual

Open the container for object access.

Implements pool::IDbContainer.

Reimplemented in pool::RootTreeIndexContainer.

◆ release()

virtual void pool::DbContainerImp::release ( )
inlineoverridevirtualinherited

Release instance (Abstract interfaces do not expose destructor!)

Implements pool::IDbContainer.

Definition at line 111 of file DbContainerImp.h.

111 { delete this; }

◆ save() [1/2]

virtual DbStatus pool::DbContainerImp::save ( DbContainer cntH,
const void *  object,
ShapeH  shape,
Token::OID_t linkH 
)
overridevirtualinherited

Save new object in the container and return its handle.

Parameters
cntH[IN] Handle to container object.
object[IN] Data object
linkH[OUT] Internal OID to identify object.
Returns
DbStatus code indicating success or failure.

Implements pool::IDbContainer.

◆ save() [2/2]

virtual DbStatus pool::DbContainerImp::save ( DbObjectHandle< DbObject > &  objH)
overridevirtualinherited

Add single entry to container.

Implements pool::IDbContainer.

◆ select()

virtual DbStatus pool::RootTreeContainer::select ( DbSelect criteria)
overridevirtual

Define selection criteria.

Implements pool::IDbContainer.

◆ selectRow()

DbStatus pool::RootTreeContainer::selectRow ( const DataCallBack *  call,
const Token::OID_t linkH,
DbAccessMode  mode 
)
private

Find entry identified by his number (=primary key) in the Database.

◆ setBranchOffsetTabLen()

void pool::RootTreeContainer::setBranchOffsetTabLen ( TBranch *  b,
int  offsettab_len 
)
private

Recursively set Offset Table length for a branch and it's subbranches.

◆ setOption()

virtual DbStatus pool::RootTreeContainer::setOption ( const DbOption opt)
overridevirtual

Set options.

Parameters
opt[IN] Reference to option object.
Returns
DbStatus code indicating success or failure.

Reimplemented from pool::DbContainerImp.

◆ setTreeFillMode()

void pool::RootTreeContainer::setTreeFillMode ( bool  mode)

set Tree Filling mode (true/false) for branch containers

◆ size()

virtual uint64_t pool::RootTreeContainer::size ( )
overridevirtual

Number of entries within the container.

Reimplemented from pool::DbContainerImp.

◆ stackEntry()

ActionList::value_type* pool::DbContainerImp::stackEntry ( size_t  which)
inlineprotectedinherited

Internal: get access to stack entry.

Definition at line 94 of file DbContainerImp.h.

95  { return (which <= m_size) ? &(*(m_stack.begin()+which)) : 0; }

◆ stackSize()

size_t pool::DbContainerImp::stackSize ( ) const
inlineprotectedinherited

Access stack size.

Definition at line 88 of file DbContainerImp.h.

89  { return m_size; }

◆ stackType()

int pool::DbContainerImp::stackType ( ) const
inlineprotectedinherited

Access accumulated stack entry types.

Definition at line 85 of file DbContainerImp.h.

86  { return m_stackType; }

◆ transAct()

virtual DbStatus pool::RootTreeContainer::transAct ( Transaction::Action  action)
overridevirtual

Execute Transaction action.

Reimplemented from pool::DbContainerImp.

◆ update() [1/3]

virtual DbStatus pool::DbContainerImp::update ( DbContainer cntH,
const void *  object,
ShapeH  shape,
const DbObjectHandle< DbObject > &  objH 
)
overridevirtualinherited

Update existing object in the container.

Parameters
cntH[IN] Valid handle to container
object[IN] Data object
objH[IN] Object handle
Returns
Status code indicating success or failure.

Implements pool::IDbContainer.

◆ update() [2/3]

virtual DbStatus pool::DbContainerImp::update ( DbContainer cntH,
const void *  object,
ShapeH  shape,
const Token::OID_t linkH 
)
overridevirtualinherited

Update existing object in the container.

Parameters
cntH[IN] Valid handle to container
object[IN] Data object
linkH[IN/OUT] Object identifier
Returns
Status code indicating success or failure.

Implements pool::IDbContainer.

◆ update() [3/3]

virtual DbStatus pool::DbContainerImp::update ( DbSelect )
inlineoverridevirtualinherited

Perform UPDATE statement.

Implements pool::IDbContainer.

Definition at line 153 of file DbContainerImp.h.

153 { return Error; }

◆ updateObject()

virtual DbStatus pool::DbContainerImp::updateObject ( ActionList::value_type &  )
inlineprotectedvirtualinherited

Update persistent object in the container.

Definition at line 100 of file DbContainerImp.h.

101  { return Error; }

◆ updatesPending()

virtual bool pool::DbContainerImp::updatesPending ( ) const
inlineoverrideprotectedvirtualinherited

Query the pending transaction stack.

Implements pool::IDbContainer.

Definition at line 91 of file DbContainerImp.h.

92  { return m_size > 0; }

◆ useNextRecordId()

virtual void pool::DbContainerImp::useNextRecordId ( uint64_t  )
inlineoverridevirtualinherited

Suggest next Record ID for tbe next object written - used only with synced indexes.

Implements pool::IDbContainer.

Reimplemented in pool::RootTreeIndexContainer, and pool::RNTupleContainer.

Definition at line 120 of file DbContainerImp.h.

120 {};

◆ usingTreeFillMode()

bool pool::RootTreeContainer::usingTreeFillMode ( ) const
inline

return true if this branch container is using TTree Filling mode

Definition at line 197 of file RootTreeContainer.h.

197 { return m_treeFillMode; }

◆ writeObject()

virtual DbStatus pool::RootTreeContainer::writeObject ( ActionList::value_type &  )
overridevirtual

Commit single entry to container.

Reimplemented from pool::DbContainerImp.

Reimplemented in pool::RootTreeIndexContainer.

Member Data Documentation

◆ m_branches

Branches pool::RootTreeContainer::m_branches
protected

Branch map.

Definition at line 101 of file RootTreeContainer.h.

◆ m_branchName

std::string pool::RootTreeContainer::m_branchName
protected

Branch name, if branch is specified by user.

Definition at line 107 of file RootTreeContainer.h.

◆ m_canDestroy

bool pool::DbContainerImp::m_canDestroy
protectedinherited

Flag to indicate if object removals are supported.

Definition at line 80 of file DbContainerImp.h.

◆ m_canUpdate

bool pool::DbContainerImp::m_canUpdate
protectedinherited

Flag to indicate if object updates are supported.

Definition at line 78 of file DbContainerImp.h.

◆ m_dbH

DbDatabase pool::RootTreeContainer::m_dbH
protected

Parent Database handle.

Definition at line 103 of file RootTreeContainer.h.

◆ m_ioBytes

int pool::RootTreeContainer::m_ioBytes
protected

Number of bytes written/read during last operation. Set to -1 if it failed.

Definition at line 109 of file RootTreeContainer.h.

◆ m_isDirty

bool pool::RootTreeContainer::m_isDirty
protected

flag set when a branch container was updated (but the branch was not Filled)

Definition at line 113 of file RootTreeContainer.h.

◆ m_name

std::string pool::DbContainerImp::m_name
protectedinherited

Container name.

Definition at line 76 of file DbContainerImp.h.

◆ m_rootDb

RootDatabase* pool::RootTreeContainer::m_rootDb
protected

Root database file reference.

Definition at line 105 of file RootTreeContainer.h.

◆ m_size

size_t pool::DbContainerImp::m_size
privateinherited

Current size of the transaction stack.

Definition at line 69 of file DbContainerImp.h.

◆ m_stack

ActionList pool::DbContainerImp::m_stack
privateinherited

Transaction fifo storage for writing.

Definition at line 67 of file DbContainerImp.h.

◆ m_stackType

int pool::DbContainerImp::m_stackType
privateinherited

Accumulated stack entry types.

Definition at line 73 of file DbContainerImp.h.

◆ m_tree

TTree* pool::RootTreeContainer::m_tree
protected

Reference to the root tree object.

Definition at line 97 of file RootTreeContainer.h.

◆ m_treeFillMode

bool pool::RootTreeContainer::m_treeFillMode
protected

if True, branch container will not use Branch->Fill() but will be filled with its Tree by the database instance

Definition at line 111 of file RootTreeContainer.h.

◆ m_type

const DbTypeInfo* pool::RootTreeContainer::m_type
protected

reference to exact type description

Definition at line 99 of file RootTreeContainer.h.

◆ m_writeSize

size_t pool::DbContainerImp::m_writeSize
privateinherited

Number of objects to be written out during open transaction.

Definition at line 71 of file DbContainerImp.h.


The documentation for this class was generated from the following file:
pool::RootTreeContainer::m_treeFillMode
bool m_treeFillMode
if True, branch container will not use Branch->Fill() but will be filled with its Tree by the databas...
Definition: RootTreeContainer.h:111
pool::RootTreeContainer::m_branchName
std::string m_branchName
Branch name, if branch is specified by user.
Definition: RootTreeContainer.h:107
pool::DbContainerImp::m_size
size_t m_size
Current size of the transaction stack.
Definition: DbContainerImp.h:69
pool::DbContainerImp::m_name
std::string m_name
Container name.
Definition: DbContainerImp.h:76
pool::RootTreeContainer::m_tree
TTree * m_tree
Reference to the root tree object.
Definition: RootTreeContainer.h:97
python.Utils.unixtools.which
def which(filename, env=os.environ)
UNIX-style which ---------------------------------------------------------—.
Definition: unixtools.py:39
pool::DbContainerImp::m_stackType
int m_stackType
Accumulated stack entry types.
Definition: DbContainerImp.h:73
pool::DbContainerImp::m_stack
ActionList m_stack
Transaction fifo storage for writing.
Definition: DbContainerImp.h:67
pool::RootTreeContainer::m_isDirty
bool m_isDirty
flag set when a branch container was updated (but the branch was not Filled)
Definition: RootTreeContainer.h:113
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16