Logo ROOT  
Reference Guide
ROOT::Internal::TTreeReaderValueBase Class Referenceabstract

Base class of TTreeReaderValue.

Definition at line 44 of file TTreeReaderValue.h.

Public Types

typedef Bool_t(ROOT::Detail::TBranchProxy::* BranchProxyRead_t) ()
 
enum  EReadStatus { kReadSuccess = 0, kReadNothingYet, kReadError }
 
enum  ESetupStatus {
  kSetupNotSetup = -7, kSetupTreeDestructed = -8, kSetupMakeClassModeMismatch = -9, kSetupMissingCounterBranch = -6,
  kSetupMissingBranch = -5, kSetupInternalError = -4, kSetupMissingDictionary = -3, kSetupMismatch = -2,
  kSetupNotACollection = -1, kSetupMatch = 0, kSetupMatchBranch = 7, kSetupNoCheck = 5,
  kSetupMatchLeaf = 6
}
 

Public Member Functions

virtual ~TTreeReaderValueBase ()
 Unregister from tree reader, cleanup. More...
 
voidGetAddress ()
 Returns the memory address of the object being read. More...
 
const char * GetBranchName () const
 
TLeafGetLeaf ()
 If we are reading a leaf, return the corresponding TLeaf. More...
 
virtual EReadStatus GetReadStatus () const
 
ESetupStatus GetSetupStatus () const
 Return this TTreeReaderValue's setup status. More...
 
Bool_t IsValid () const
 Return true if the branch was setup and read correctly. More...
 
EReadStatus ProxyRead ()
 
EReadStatus ProxyReadDefaultImpl ()
 
template<BranchProxyRead_t Func>
ROOT::Internal::TTreeReaderValueBase::EReadStatus ProxyReadTemplate ()
 Try to read the value from the TBranchProxy, returns the status of the read. More...
 

Protected Types

typedef EReadStatus(TTreeReaderValueBase::* Read_t) ()
 

Protected Member Functions

 TTreeReaderValueBase (const TTreeReaderValueBase &)
 Copy-construct. More...
 
 TTreeReaderValueBase (TTreeReader *reader, const char *branchname, TDictionary *dict)
 Construct a tree value reader and register it with the reader object. More...
 
virtual void CreateProxy ()
 Create the proxy object for our branch. More...
 
virtual const char * GetDerivedTypeName () const =0
 
Detail::TBranchProxyGetProxy () const
 
void MarkTreeReaderUnavailable ()
 
void NotifyNewTree (TTree *newTree)
 The TTreeReader has switched to a new TTree. Update the leaf. More...
 
TTreeReaderValueBaseoperator= (const TTreeReaderValueBase &)
 Copy-assign. More...
 
void RegisterWithTreeReader ()
 Register with tree reader. More...
 
TBranchSearchBranchWithCompositeName (TLeaf *&myleaf, TDictionary *&branchActualType, std::string &err)
 Search a branch the name of which contains a ".". More...
 

Static Protected Member Functions

static const char * GetBranchDataType (TBranch *branch, TDictionary *&dict, TDictionary const *curDict)
 Retrieve the type of data stored by branch; put its dictionary into dict, return its type name. More...
 
static std::string GetElementTypeName (const std::type_info &ti)
 Stringify the template argument. More...
 

Protected Attributes

TString fBranchName
 
TDictionaryfDict
 
int fHaveLeaf: 1
 
int fHaveStaticClassOffsets: 1
 
TLeaffLeaf = nullptr
 
TString fLeafName
 
Detail::TBranchProxyfProxy = nullptr
 
Read_t fProxyReadFunc = &TTreeReaderValueBase::ProxyReadDefaultImpl
 ! Pointer to the Read implementation to use. More...
 
EReadStatus fReadStatus: 2
 
ESetupStatus fSetupStatus = kSetupNotSetup
 
std::vector< Long64_tfStaticClassOffsets
 
TTreeReaderfTreeReader
 

Friends

class ::TTreeReader
 

#include <TTreeReaderValue.h>

Inheritance diagram for ROOT::Internal::TTreeReaderValueBase:
[legend]

Member Typedef Documentation

◆ BranchProxyRead_t

typedef Bool_t(ROOT::Detail::TBranchProxy::* ROOT::Internal::TTreeReaderValueBase::BranchProxyRead_t) ()

Definition at line 77 of file TTreeReaderValue.h.

◆ Read_t

typedef EReadStatus(TTreeReaderValueBase::* ROOT::Internal::TTreeReaderValueBase::Read_t) ()
protected

Definition at line 132 of file TTreeReaderValue.h.

Member Enumeration Documentation

◆ EReadStatus

Enumerator
kReadSuccess 
kReadNothingYet 
kReadError 

Definition at line 67 of file TTreeReaderValue.h.

◆ ESetupStatus

Enumerator
kSetupNotSetup 
kSetupTreeDestructed 

No initialization has happened yet.

kSetupMakeClassModeMismatch 

The TTreeReader has been destructed / not set.

kSetupMissingCounterBranch 
kSetupMissingBranch 

The array cannot find its counter branch: Array[CounterBranch].

kSetupInternalError 

The specified branch cannot be found.

kSetupMissingDictionary 

Some other error - hopefully the error message helps.

kSetupMismatch 

To read this branch, we need a dictionary.

kSetupNotACollection 

Mismatch of branch type and reader template type.

kSetupMatch 

The branch class type is not a collection.

kSetupMatchBranch 

This branch has been set up, branch data type and reader template type match, reading should succeed.

kSetupNoCheck 

This branch has been set up, branch data type and reader template type match, reading should succeed.

kSetupMatchLeaf 

Definition at line 48 of file TTreeReaderValue.h.

Constructor & Destructor Documentation

◆ ~TTreeReaderValueBase()

ROOT::Internal::TTreeReaderValueBase::~TTreeReaderValueBase ( )
virtual

Unregister from tree reader, cleanup.

Definition at line 115 of file TTreeReaderValue.cxx.

◆ TTreeReaderValueBase() [1/2]

ROOT::Internal::TTreeReaderValueBase::TTreeReaderValueBase ( TTreeReader reader,
const char *  branchname,
TDictionary dict 
)
protected

Construct a tree value reader and register it with the reader object.

Definition at line 54 of file TTreeReaderValue.cxx.

◆ TTreeReaderValueBase() [2/2]

ROOT::Internal::TTreeReaderValueBase::TTreeReaderValueBase ( const TTreeReaderValueBase rhs)
protected

Copy-construct.

Definition at line 70 of file TTreeReaderValue.cxx.

Member Function Documentation

◆ CreateProxy()

void ROOT::Internal::TTreeReaderValueBase::CreateProxy ( )
protectedvirtual

Create the proxy object for our branch.

Reimplemented in ROOT::Internal::TTreeReaderArrayBase.

Definition at line 439 of file TTreeReaderValue.cxx.

◆ GetAddress()

void * ROOT::Internal::TTreeReaderValueBase::GetAddress ( )

Returns the memory address of the object being read.

Definition at line 252 of file TTreeReaderValue.cxx.

◆ GetBranchDataType()

const char * ROOT::Internal::TTreeReaderValueBase::GetBranchDataType ( TBranch branch,
TDictionary *&  dict,
TDictionary const *  curDict 
)
staticprotected

Retrieve the type of data stored by branch; put its dictionary into dict, return its type name.

If no dictionary is available, at least its type name should be returned.

Definition at line 668 of file TTreeReaderValue.cxx.

◆ GetBranchName()

const char* ROOT::Internal::TTreeReaderValueBase::GetBranchName ( ) const
inline

Definition at line 94 of file TTreeReaderValue.h.

◆ GetDerivedTypeName()

virtual const char* ROOT::Internal::TTreeReaderValueBase::GetDerivedTypeName ( ) const
protectedpure virtual

◆ GetElementTypeName()

std::string ROOT::Internal::TTreeReaderValueBase::GetElementTypeName ( const std::type_info &  ti)
staticprotected

Stringify the template argument.

Definition at line 214 of file TTreeReaderValue.cxx.

◆ GetLeaf()

TLeaf* ROOT::Internal::TTreeReaderValueBase::GetLeaf ( )
inline

If we are reading a leaf, return the corresponding TLeaf.

Definition at line 90 of file TTreeReaderValue.h.

◆ GetProxy()

Detail::TBranchProxy* ROOT::Internal::TTreeReaderValueBase::GetProxy ( ) const
inlineprotected

Definition at line 114 of file TTreeReaderValue.h.

◆ GetReadStatus()

virtual EReadStatus ROOT::Internal::TTreeReaderValueBase::GetReadStatus ( ) const
inlinevirtual

Reimplemented in ROOT::Internal::TTreeReaderArrayBase.

Definition at line 87 of file TTreeReaderValue.h.

◆ GetSetupStatus()

ESetupStatus ROOT::Internal::TTreeReaderValueBase::GetSetupStatus ( ) const
inline

Return this TTreeReaderValue's setup status.

Use this method to check e.g. whether the TTreeReaderValue is correctly setup and ready for reading.

Definition at line 86 of file TTreeReaderValue.h.

◆ IsValid()

Bool_t ROOT::Internal::TTreeReaderValueBase::IsValid ( ) const
inline

Return true if the branch was setup and read correctly.

Use GetSetupStatus() to only check the setup status.

Definition at line 83 of file TTreeReaderValue.h.

◆ MarkTreeReaderUnavailable()

void ROOT::Internal::TTreeReaderValueBase::MarkTreeReaderUnavailable ( )
inlineprotected

Definition at line 116 of file TTreeReaderValue.h.

◆ NotifyNewTree()

void ROOT::Internal::TTreeReaderValueBase::NotifyNewTree ( TTree newTree)
protected

The TTreeReader has switched to a new TTree. Update the leaf.

Definition at line 225 of file TTreeReaderValue.cxx.

◆ operator=()

ROOT::Internal::TTreeReaderValueBase & ROOT::Internal::TTreeReaderValueBase::operator= ( const TTreeReaderValueBase rhs)
protected

Copy-assign.

Definition at line 90 of file TTreeReaderValue.cxx.

◆ ProxyRead()

EReadStatus ROOT::Internal::TTreeReaderValueBase::ProxyRead ( )
inline

Definition at line 73 of file TTreeReaderValue.h.

◆ ProxyReadDefaultImpl()

ROOT::Internal::TTreeReaderValueBase::EReadStatus ROOT::Internal::TTreeReaderValueBase::ProxyReadDefaultImpl ( )

Definition at line 153 of file TTreeReaderValue.cxx.

◆ ProxyReadTemplate()

template<ROOT::Internal::TTreeReaderValueBase::BranchProxyRead_t Func>
ROOT::Internal::TTreeReaderValueBase::EReadStatus ROOT::Internal::TTreeReaderValueBase::ProxyReadTemplate

Try to read the value from the TBranchProxy, returns the status of the read.

Definition at line 142 of file TTreeReaderValue.cxx.

◆ RegisterWithTreeReader()

void ROOT::Internal::TTreeReaderValueBase::RegisterWithTreeReader ( )
protected

Register with tree reader.

Definition at line 127 of file TTreeReaderValue.cxx.

◆ SearchBranchWithCompositeName()

TBranch * ROOT::Internal::TTreeReaderValueBase::SearchBranchWithCompositeName ( TLeaf *&  myLeaf,
TDictionary *&  branchActualType,
std::string &  errMsg 
)
protected

Search a branch the name of which contains a ".".

Parameters
[out]myLeafThe leaf identified by the name if found (can be untouched).
[out]branchActualTypeDictionary associated to the type of the leaf (can be untouched).
[out]errMsgThe error message (can be untouched).
Returns
The address of the branch if found, nullptr otherwise This method allows to efficiently search for branches which have names which contain "dots", for example "w.v.a" or "v.a". Therefore, it allows to support names such as v.a where the branch was created with this syntax:
myTree->Branch("v", &v, "a/I:b:/I")

The method has some side effects, namely it can modify fSetupStatus, fProxy and fStaticClassOffsets/fHaveStaticClassOffsets.

Definition at line 292 of file TTreeReaderValue.cxx.

Friends And Related Function Documentation

◆ ::TTreeReader

friend class ::TTreeReader
friend

Definition at line 138 of file TTreeReaderValue.h.

Member Data Documentation

◆ fBranchName

TString ROOT::Internal::TTreeReaderValueBase::fBranchName
protected

Definition at line 125 of file TTreeReaderValue.h.

◆ fDict

TDictionary* ROOT::Internal::TTreeReaderValueBase::fDict
protected

Definition at line 128 of file TTreeReaderValue.h.

◆ fHaveLeaf

int ROOT::Internal::TTreeReaderValueBase::fHaveLeaf
protected

Definition at line 121 of file TTreeReaderValue.h.

◆ fHaveStaticClassOffsets

int ROOT::Internal::TTreeReaderValueBase::fHaveStaticClassOffsets
protected

Definition at line 122 of file TTreeReaderValue.h.

◆ fLeaf

TLeaf* ROOT::Internal::TTreeReaderValueBase::fLeaf = nullptr
protected

Definition at line 130 of file TTreeReaderValue.h.

◆ fLeafName

TString ROOT::Internal::TTreeReaderValueBase::fLeafName
protected

Definition at line 126 of file TTreeReaderValue.h.

◆ fProxy

Detail::TBranchProxy* ROOT::Internal::TTreeReaderValueBase::fProxy = nullptr
protected

Definition at line 129 of file TTreeReaderValue.h.

◆ fProxyReadFunc

Read_t ROOT::Internal::TTreeReaderValueBase::fProxyReadFunc = &TTreeReaderValueBase::ProxyReadDefaultImpl
protected

! Pointer to the Read implementation to use.

Definition at line 133 of file TTreeReaderValue.h.

◆ fReadStatus

EReadStatus ROOT::Internal::TTreeReaderValueBase::fReadStatus
protected

Definition at line 123 of file TTreeReaderValue.h.

◆ fSetupStatus

ESetupStatus ROOT::Internal::TTreeReaderValueBase::fSetupStatus = kSetupNotSetup
protected

Definition at line 124 of file TTreeReaderValue.h.

◆ fStaticClassOffsets

std::vector<Long64_t> ROOT::Internal::TTreeReaderValueBase::fStaticClassOffsets
protected

Definition at line 131 of file TTreeReaderValue.h.

◆ fTreeReader

TTreeReader* ROOT::Internal::TTreeReaderValueBase::fTreeReader
protected

Definition at line 127 of file TTreeReaderValue.h.

Libraries for ROOT::Internal::TTreeReaderValueBase:
[legend]

The documentation for this class was generated from the following files:
v
@ v
Definition: rootcling_impl.cxx:3635