Jpp  master_rocky-40-g5f0272dcd
the software that should make you happy
Public Types | Public Member Functions | Protected Attributes | List of all members
JROOT::JTreeReaderObjectIterator< T > Class Template Reference

JTreeReader object iterator. More...

#include <JTreeReaderObjectIterator.hh>

Inheritance diagram for JROOT::JTreeReaderObjectIterator< T >:
JLANG::JRewindableObjectIterator< T > JROOT::JTreeReader< T > JLANG::JObjectIterator< T > JLANG::JRewindable< T > JROOT::JAbstractTreeReader JROOT::JTreeParameters JROOT::JTreeBranchAddresses< T > JLANG::JPointer< JClass_t > JROOT::JRootAddress< T > JLANG::JAbstractPointer< JClass_t > JLANG::JEquals< JAbstractPointer< JClass_t > > JROOT::JTreeReaderAccessibleObjectIterator< T > JROOT::JRootFileReader< T, true >

Public Types

typedef JRewindableObjectIterator< T >::pointer_type pointer_type
 

Public Member Functions

 JTreeReaderObjectIterator ()
 Default constructor. More...
 
virtual void rewind () override
 Rewind. More...
 
virtual bool hasNext () override
 Check availability of next element. More...
 
virtual const pointer_typenext () override
 Get next element. More...
 
virtual skip_type skip (const skip_type ns) override
 Skip items. More...
 
counter_type getCounter () const
 Get internal counter. More...
 
virtual skip_type skip (const skip_type ns)
 Skip items. More...
 
virtual bool load (TFile *file) override
 Load TTree from given file. More...
 
virtual const TDictionary * getDictionary () override
 Get ROOT dictionary. More...
 
virtual JClass_t * get () const override
 Get pointer. More...
 
virtual void set (JClass_t *p) override
 Set pointer. More...
 
template<class T >
void set (const JPointer< T > &pointer)
 Set pointer. More...
 
virtual void reset () override
 Reset pointer. More...
 
template<class T >
void reset (const JPointer< T > &pointer)
 Reset pointer. More...
 
void reset (JClass_t *p)
 Reset pointer. More...
 
JClass_t *const & getReference () const
 Get rereference to internal pointer. More...
 
JClass_t *& getReference ()
 Get rereference to internal pointer. More...
 
virtual bool equals (const JAbstractPointer &object) const
 Equals. More...
 
bool is_valid () const
 Check validity of pointer. More...
 
JClass_t * operator-> () const
 Smart pointer operator. More...
 
 operator JClass_t * () const
 Type conversion operator. More...
 
const JTreeParametersgetTreeParameters () const
 Get TTree parameters. More...
 
const TString & getTreeName () const
 Get TTree name. More...
 
const TString & getTreeTitle () const
 Get TTree title. More...
 
const TString & getBranchName () const
 Get TBranch name. More...
 
int getCompressionLevel () const
 Get compression level. More...
 
int getBasketSize () const
 Get basket size. More...
 
int getSplitLevel () const
 Get split level. More...
 
void setBranchAddress (TTree &tree)
 
void release ()
 Release memory. More...
 
T * getAddress () const
 Get address. More...
 

Protected Attributes

counter_type counter
 
JClass_t * __p
 pointer to object More...
 
TString treeName
 TTree name. More...
 
TString treeTitle
 TTree title. More...
 
TString branchName
 TBranch name. More...
 
int compressionLevel
 TBranch compression level. More...
 
int basketSize
 TBranch basket size. More...
 
int splitLevel
 TBranch split level. More...
 
T * address
 

Detailed Description

template<class T>
class JROOT::JTreeReaderObjectIterator< T >

JTreeReader object iterator.

This class implements the JLANG::JRewindableObjectIterator interface.

Definition at line 33 of file JTreeReaderObjectIterator.hh.

Member Typedef Documentation

◆ pointer_type

Definition at line 39 of file JTreeReaderObjectIterator.hh.

Constructor & Destructor Documentation

◆ JTreeReaderObjectIterator()

template<class T >
JROOT::JTreeReaderObjectIterator< T >::JTreeReaderObjectIterator ( )
inline

Default constructor.

Definition at line 45 of file JTreeReaderObjectIterator.hh.

45  :
46  JTreeReader<T>(getTreeParameters<T>()),
47  counter(0)
48  {
49  gErrorIgnoreLevel = kError;
50  }
Auxiliary class for template TTree reading.
Definition: JTreeReader.hh:61

Member Function Documentation

◆ rewind()

template<class T >
virtual void JROOT::JTreeReaderObjectIterator< T >::rewind ( )
inlineoverridevirtual

Rewind.

Implements JLANG::JRewindable< T >.

Definition at line 56 of file JTreeReaderObjectIterator.hh.

57  {
58  counter = 0;
59  }

◆ hasNext()

template<class T >
virtual bool JROOT::JTreeReaderObjectIterator< T >::hasNext ( )
inlineoverridevirtual

Check availability of next element.

Returns
true if the iteration has more elements.

Implements JLANG::JObjectIterator< T >.

Definition at line 67 of file JTreeReaderObjectIterator.hh.

68  {
69  if (this->is_valid())
70  return counter < this->get()->GetEntries();
71  else
72  return false;
73  }
bool is_valid() const
Check validity of pointer.
virtual JClass_t * get() const override
Get pointer.
Definition: JPointer.hh:64

◆ next()

template<class T >
virtual const pointer_type& JROOT::JTreeReaderObjectIterator< T >::next ( )
inlineoverridevirtual

Get next element.

Returns
pointer to element.

Implements JLANG::JObjectIterator< T >.

Definition at line 81 of file JTreeReaderObjectIterator.hh.

82  {
83  static pointer_type ps;
84 
85  if (hasNext()) {
86 
87  this->get()->GetEvent(counter++);
88 
89  ps.reset(this->getAddress());
90 
91  } else {
92 
93  ps.reset(NULL);
94  }
95 
96  return ps;
97  }
virtual bool hasNext() override
Check availability of next element.
JRewindableObjectIterator< T >::pointer_type pointer_type
T * getAddress() const
Get address.
Definition: JRootAddress.hh:62

◆ skip() [1/2]

template<class T >
virtual skip_type JROOT::JTreeReaderObjectIterator< T >::skip ( const skip_type  ns)
inlineoverridevirtual

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Definition at line 106 of file JTreeReaderObjectIterator.hh.

107  {
108  if (this->is_valid()) {
109  return advance(counter, ns, this->get()->GetEntries());
110  }
111 
112  return 0;
113  }
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
std::vector< size_t > ns

◆ getCounter()

template<class T >
counter_type JROOT::JTreeReaderObjectIterator< T >::getCounter ( ) const
inline

Get internal counter.

Returns
counter

Definition at line 121 of file JTreeReaderObjectIterator.hh.

122  {
123  return counter;
124  }

◆ skip() [2/2]

template<class T >
virtual skip_type JLANG::JObjectIterator< T >::skip ( const skip_type  ns)
inlinevirtualinherited

Skip items.

Parameters
nsnumber of items to skip
Returns
number of items skipped

Reimplemented in JLANG::JSTDObjectIterator< T >, JLANG::JPipe< T >, JLANG::JPipe< JTail_t >, JLANG::JPipe< JHead_t >, and JLANG::JAbstractObjectReader< T >.

Definition at line 90 of file JObjectIterator.hh.

91  {
92  skip_type i = 0;
93 
94  for ( ; i != ns && hasNext(); ++i) {
95  next();
96  }
97 
98  return i;
99  }
virtual const pointer_type & next()=0
Get next element.
virtual bool hasNext()=0
Check availability of next element.
unsigned int skip_type
Type definition for number of objects to skip.

◆ load()

template<class T >
virtual bool JROOT::JTreeReader< T >::load ( TFile *  file)
inlineoverridevirtualinherited

Load TTree from given file.

This methods releases the pending memory allocated from previous data reading.

Parameters
filepointer to file
Returns
true when TTree correctly loaded; else false

Implements JROOT::JAbstractTreeReader.

Definition at line 83 of file JTreeReader.hh.

84  {
85  this->release();
86 
87  if (file != NULL) {
88 
89  this->set(dynamic_cast<TTree*>(file->Get(this->getTreeName())));
90 
91  if (this->is_valid()) {
92 
93  this->setBranchAddress(*(this->get()));
94 
95  return true;
96  }
97  }
98 
99  return false;
100  }
virtual void set(JClass_t *p) override
Set pointer.
Definition: JPointer.hh:75
void release()
Release memory.
Definition: JRootAddress.hh:46

◆ getDictionary()

template<class T >
virtual const TDictionary* JROOT::JTreeReader< T >::getDictionary ( )
inlineoverridevirtualinherited

Get ROOT dictionary.

Returns
dictionary.

Implements JROOT::JAbstractTreeReader.

Definition at line 108 of file JTreeReader.hh.

109  {
110  return TDictionary::GetDictionary(T::Class_Name());
111  }

◆ get()

template<class JClass_t >
virtual JClass_t* JLANG::JPointer< JClass_t >::get ( ) const
inlineoverridevirtualinherited

Get pointer.

Returns
pointer to object

Implements JLANG::JAbstractPointer< JClass_t >.

Reimplemented in JLANG::JMultiPointer< JTypeList< JHead_t, JTail_t > >, JLANG::JMultiPointer< JClass_t >, JLANG::JMultiPointer< JTail_t >, JLANG::JMultiPointer< JHead_t >, and JLANG::JMultiPointer< T >.

Definition at line 64 of file JPointer.hh.

65  {
66  return this->__p;
67  }
JClass_t * __p
pointer to object
Definition: JPointer.hh:136

◆ set() [1/2]

template<class JClass_t >
virtual void JLANG::JPointer< JClass_t >::set ( JClass_t *  p)
inlineoverridevirtualinherited

Set pointer.

Parameters
ppointer to object

Implements JLANG::JAbstractPointer< JClass_t >.

Reimplemented in JLANG::JSharedPointer< JClass_t, JMemory_t >.

Definition at line 75 of file JPointer.hh.

76  {
77  this->__p = p;
78  }

◆ set() [2/2]

template<class JClass_t >
template<class T >
void JLANG::JPointer< JClass_t >::set ( const JPointer< T > &  pointer)
inlineinherited

Set pointer.

Parameters
pointerpointer to object

Definition at line 96 of file JPointer.hh.

97  {
98  this->set(pointer.get());
99  }

◆ reset() [1/3]

template<class JClass_t >
virtual void JLANG::JPointer< JClass_t >::reset ( )
inlineoverridevirtualinherited

◆ reset() [2/3]

template<class JClass_t >
template<class T >
void JLANG::JPointer< JClass_t >::reset ( const JPointer< T > &  pointer)
inlineinherited

Reset pointer.

Parameters
pointerpointer to object

Definition at line 108 of file JPointer.hh.

109  {
110  this->reset(pointer.get());
111  }
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84

◆ reset() [3/3]

template<class JClass_t >
void JLANG::JAbstractPointer< JClass_t >::reset ( JClass_t *  p)
inlineinherited

Reset pointer.

Parameters
ppointer to object

Definition at line 94 of file JAbstractPointer.hh.

95  {
96  if (this->get() != p) {
97 
98  this->reset();
99 
100  if (p != NULL) {
101  this->set(p);
102  }
103  }
104  }
virtual void set(JClass_t *p)=0
Set pointer.
virtual void reset()=0
Reset pointer.
virtual JClass_t * get() const =0
Get pointer.

◆ getReference() [1/2]

template<class JClass_t >
JClass_t* const& JLANG::JPointer< JClass_t >::getReference ( ) const
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 119 of file JPointer.hh.

120  {
121  return __p;
122  }

◆ getReference() [2/2]

template<class JClass_t >
JClass_t* & JLANG::JPointer< JClass_t >::getReference ( )
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 130 of file JPointer.hh.

131  {
132  return __p;
133  }

◆ equals()

template<class JClass_t >
virtual bool JLANG::JAbstractPointer< JClass_t >::equals ( const JAbstractPointer< JClass_t > &  object) const
inlinevirtualinherited

Equals.

The equality is evaluated by comparison of the internal pointers.

Parameters
objectabstract pointer
Returns
true if equals; else false

Definition at line 50 of file JAbstractPointer.hh.

51  {
52  return this->get() == object.get();
53  }

◆ is_valid()

template<class JClass_t >
bool JLANG::JAbstractPointer< JClass_t >::is_valid ( ) const
inlineinherited

Check validity of pointer.

Returns
true if pointer not null; else false

Definition at line 83 of file JAbstractPointer.hh.

84  {
85  return this->get() != NULL;
86  }

◆ operator->()

template<class JClass_t >
JClass_t* JLANG::JAbstractPointer< JClass_t >::operator-> ( ) const
inlineinherited

Smart pointer operator.

Returns
pointer to object

Definition at line 112 of file JAbstractPointer.hh.

113  {
114  if (!is_valid())
115  THROW(JNullPointerException, "JAbstractPointer::operator->()");
116  else
117  return this->get();
118  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Exception for null pointer operation.
Definition: JException.hh:234

◆ operator JClass_t *()

template<class JClass_t >
JLANG::JAbstractPointer< JClass_t >::operator JClass_t * ( ) const
inlineinherited

Type conversion operator.

Returns
pointer to object

Definition at line 126 of file JAbstractPointer.hh.

127  {
128  return this->get();
129  }

◆ getTreeParameters()

const JTreeParameters& JROOT::JTreeParameters::getTreeParameters ( ) const
inlineinherited

Get TTree parameters.

Returns
TTree parameters

Definition at line 63 of file JTreeParameters.hh.

64  {
65  return static_cast<const JTreeParameters&>(*this);
66  }
Data structure for TTree parameters.

◆ getTreeName()

const TString& JROOT::JTreeParameters::getTreeName ( ) const
inlineinherited

Get TTree name.

Returns
TTree name

Definition at line 74 of file JTreeParameters.hh.

75  {
76  return treeName;
77  }
TString treeName
TTree name.

◆ getTreeTitle()

const TString& JROOT::JTreeParameters::getTreeTitle ( ) const
inlineinherited

Get TTree title.

Returns
TTree title

Definition at line 85 of file JTreeParameters.hh.

86  {
87  return treeTitle;
88  }
TString treeTitle
TTree title.

◆ getBranchName()

const TString& JROOT::JTreeParameters::getBranchName ( ) const
inlineinherited

Get TBranch name.

Returns
TBranch name

Definition at line 96 of file JTreeParameters.hh.

97  {
98  return (branchName != "" ? branchName : treeName);
99  }
TString branchName
TBranch name.

◆ getCompressionLevel()

int JROOT::JTreeParameters::getCompressionLevel ( ) const
inlineinherited

Get compression level.

Returns
compression level

Definition at line 107 of file JTreeParameters.hh.

108  {
109  return compressionLevel;
110  }
int compressionLevel
TBranch compression level.

◆ getBasketSize()

int JROOT::JTreeParameters::getBasketSize ( ) const
inlineinherited

Get basket size.

Returns
basket size

Definition at line 118 of file JTreeParameters.hh.

119  {
120  return basketSize;
121  }
int basketSize
TBranch basket size.

◆ getSplitLevel()

int JROOT::JTreeParameters::getSplitLevel ( ) const
inlineinherited

Get split level.

Returns
split level

Definition at line 129 of file JTreeParameters.hh.

130  {
131  return splitLevel;
132  }
int splitLevel
TBranch split level.

◆ setBranchAddress()

template<typename T >
void JROOT::JTreeBranchAddresses< T >::setBranchAddress ( TTree &  tree)
inlineinherited

Definition at line 53 of file JTreeBranchAddresses.hh.

54  {
55  TObjArray* branches = tree.GetListOfBranches();
56  // single branch
57  if (branches->GetEntries() == 1) {
58  tree.SetBranchAddress(branches->First()->GetName(), &this->address);
59  return;
60  }
61 
62  // if more than one branch, check those are the data members of T
63  TClass* t_class = TClass::GetClass<T>();
64  if (t_class == nullptr) {
65  THROW(JException, "Could not get class " << typeid(T).name());
66  }
67 
68  auto branch_names = to_vector(tree.GetListOfBranches());
69  auto all_member_names = to_vector(t_class->GetListOfRealData());
70 
71  std::vector<std::string> member_names;
72 
73  // remove TObject specific members
74  std::copy_if(all_member_names.begin(), all_member_names.end(), std::back_inserter(member_names),
75  [](const std::string& member_name)
76  { return !JRootClass::is_tobject_member(member_name.c_str()); });
77 
78  std::sort(branch_names.begin(), branch_names.end());
79  std::sort(member_names.begin(), member_names.end());
80 
81  // all members must have a corresponding branch
82  // (but more branches are allowed, we just don't handle them here)
83  if (std::includes(branch_names.begin(), branch_names.end(), member_names.begin(),
84  member_names.end())) {
85 
86  this->address = new T;
87 
88  auto* base = reinterpret_cast<uint8_t*>(this->address);
89 
90  for (const auto& member_name : member_names) {
91  auto* member = static_cast<TDataMember*>(t_class->GetDataMember(member_name.c_str()));
92  tree.SetBranchAddress(member_name.c_str(),
93  reinterpret_cast<void*>(base + member->GetOffset()));
94  }
95  return;
96  }
97 
98  // if we cannot configure the tree, try to give some relevant information
99  // to the user who will have to deal with the exception...
100  THROW(JException, "Members of type " << typeid(T).name() << "\n"
101  << JEEP::JEEPZ() << member_names << "\nBranches in tree\n"
102  << JEEP::JEEPZ() << branch_names);
103  }
std::vector< std::string > to_vector(TCollection *col)
Auxiliary data structure for streaming of STL containers.

◆ release()

template<class T >
void JROOT::JRootAddress< T >::release ( )
inlineinherited

Release memory.

Definition at line 46 of file JRootAddress.hh.

47  {
48  if (address != NULL) {
49 
50  delete address;
51 
52  address = NULL;
53  }
54  }

◆ getAddress()

template<class T >
T* JROOT::JRootAddress< T >::getAddress ( ) const
inlineinherited

Get address.

Returns
address

Definition at line 62 of file JRootAddress.hh.

63  {
64  return address;
65  }

Member Data Documentation

◆ counter

template<class T >
counter_type JROOT::JTreeReaderObjectIterator< T >::counter
protected

Definition at line 127 of file JTreeReaderObjectIterator.hh.

◆ __p

template<class JClass_t >
JClass_t* JLANG::JPointer< JClass_t >::__p
protectedinherited

pointer to object

Definition at line 136 of file JPointer.hh.

◆ treeName

TString JROOT::JTreeParameters::treeName
protectedinherited

TTree name.

Definition at line 155 of file JTreeParameters.hh.

◆ treeTitle

TString JROOT::JTreeParameters::treeTitle
protectedinherited

TTree title.

Definition at line 156 of file JTreeParameters.hh.

◆ branchName

TString JROOT::JTreeParameters::branchName
protectedinherited

TBranch name.

Definition at line 157 of file JTreeParameters.hh.

◆ compressionLevel

int JROOT::JTreeParameters::compressionLevel
protectedinherited

TBranch compression level.

Definition at line 158 of file JTreeParameters.hh.

◆ basketSize

int JROOT::JTreeParameters::basketSize
protectedinherited

TBranch basket size.

Definition at line 159 of file JTreeParameters.hh.

◆ splitLevel

int JROOT::JTreeParameters::splitLevel
protectedinherited

TBranch split level.

Definition at line 160 of file JTreeParameters.hh.

◆ address

template<class T >
T* JROOT::JRootAddress< T >::address
protectedinherited

Definition at line 68 of file JRootAddress.hh.


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