Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::RNTupleProcessor Class Referenceabstract

Interface for iterating over entries of RNTuples and vertically concatenated RNTuples (chains).

Example usage (see ntpl012_processor.C for a full example):

std::vector<RNTupleOpenSpec> ntuples = {{"ntuple1", "ntuple1.root"}, {"ntuple2", "ntuple2.root"}};
auto processor = RNTupleProcessor::CreateChain(ntuples);
for (const auto &entry : processor) {
std::cout << "pt = " << *entry.GetPtr<float>("pt") << std::endl;
}
Interface for iterating over entries of RNTuples and vertically concatenated RNTuples (chains).
static std::unique_ptr< RNTupleProcessor > CreateChain(const std::vector< RNTupleOpenSpec > &ntuples, std::unique_ptr< RNTupleModel > model=nullptr)
Create a new RNTuple processor chain for vertical concatenation of RNTuples.
Used to specify the underlying RNTuples in RNTupleProcessor and RNTupleReader::OpenFriends()

An RNTupleProcessor is created by providing one or more RNTupleOpenSpecs, each of which contains the name and storage location of a single RNTuple. The RNTuples are processed in the order in which they were provided.

The RNTupleProcessor constructor also (optionally) accepts an RNTupleModel, which determines which fields should be read. If no model is provided, a default model based on the descriptor of the first specified RNTuple will be used. If a field that was present in the first RNTuple is not found in a subsequent one, an error will be thrown.

The RNTupleProcessor provides an iterator which gives access to the REntry containing the field data for the current entry. Additional bookkeeping information can be obtained through the RNTupleProcessor itself.

Definition at line 67 of file RNTupleProcessor.hxx.

Classes

class  RFieldContext
 Manager for a field as part of the RNTupleProcessor. More...
 
class  RIterator
 Iterator over the entries of an RNTuple, or vertical concatenation thereof. More...
 

Public Member Functions

 RNTupleProcessor (const RNTupleProcessor &)=delete
 
 RNTupleProcessor (RNTupleProcessor &&)=delete
 
virtual ~RNTupleProcessor ()=default
 
RIterator begin ()
 
RIterator end ()
 
std::size_t GetCurrentNTupleNumber () const
 Get the index to the RNTuple currently being processed, according to the sources specified upon creation.
 
const REntryGetEntry () const
 Returns a reference to the entry used by the processor.
 
NTupleSize_t GetLocalEntryNumber () const
 Get the entry number local to the RNTuple that is currently being processed.
 
NTupleSize_t GetNEntriesProcessed () const
 Get the total number of entries processed so far.
 
RNTupleProcessoroperator= (const RNTupleProcessor &)=delete
 
RNTupleProcessoroperator= (RNTupleProcessor &&)=delete
 

Static Public Member Functions

static std::unique_ptr< RNTupleProcessorCreateChain (const std::vector< RNTupleOpenSpec > &ntuples, std::unique_ptr< RNTupleModel > model=nullptr)
 Create a new RNTuple processor chain for vertical concatenation of RNTuples.
 

Protected Member Functions

 RNTupleProcessor (const std::vector< RNTupleOpenSpec > &ntuples)
 
virtual NTupleSize_t Advance ()=0
 Advance the processor to the next available entry.
 
virtual void ConnectFields ()=0
 Creates and connects concrete fields to the current page source, based on the proto-fields.
 
virtual NTupleSize_t ConnectNTuple (const RNTupleOpenSpec &ntuple)=0
 Connect an RNTuple for processing.
 

Protected Attributes

std::size_t fCurrentNTupleNumber
 
std::unique_ptr< REntryfEntry
 
std::vector< RFieldContextfFieldContexts
 
NTupleSize_t fLocalEntryNumber
 
NTupleSize_t fNEntriesProcessed
 
std::vector< RNTupleOpenSpecfNTuples
 
std::unique_ptr< Internal::RPageSourcefPageSource
 

#include <ROOT/RNTupleProcessor.hxx>

Inheritance diagram for ROOT::Experimental::RNTupleProcessor:
[legend]

Constructor & Destructor Documentation

◆ RNTupleProcessor() [1/3]

ROOT::Experimental::RNTupleProcessor::RNTupleProcessor ( const std::vector< RNTupleOpenSpec > &  ntuples)
inlineprotected

Definition at line 136 of file RNTupleProcessor.hxx.

◆ RNTupleProcessor() [2/3]

ROOT::Experimental::RNTupleProcessor::RNTupleProcessor ( const RNTupleProcessor )
delete

◆ RNTupleProcessor() [3/3]

ROOT::Experimental::RNTupleProcessor::RNTupleProcessor ( RNTupleProcessor &&  )
delete

◆ ~RNTupleProcessor()

virtual ROOT::Experimental::RNTupleProcessor::~RNTupleProcessor ( )
virtualdefault

Member Function Documentation

◆ Advance()

virtual NTupleSize_t ROOT::Experimental::RNTupleProcessor::Advance ( )
protectedpure virtual

Advance the processor to the next available entry.

Returns
The new (global) entry number of after advancing, or kInvalidNTupleIndex if the last entry has been processed.

Checks if the end of the currently connected RNTuple is reached. If this is the case, either the next RNTuple is connected or the iterator has reached the end.

Implemented in ROOT::Experimental::RNTupleChainProcessor.

◆ begin()

RIterator ROOT::Experimental::RNTupleProcessor::begin ( )
inline

Definition at line 225 of file RNTupleProcessor.hxx.

◆ ConnectFields()

virtual void ROOT::Experimental::RNTupleProcessor::ConnectFields ( )
protectedpure virtual

Creates and connects concrete fields to the current page source, based on the proto-fields.

Implemented in ROOT::Experimental::RNTupleChainProcessor.

◆ ConnectNTuple()

virtual NTupleSize_t ROOT::Experimental::RNTupleProcessor::ConnectNTuple ( const RNTupleOpenSpec ntuple)
protectedpure virtual

Connect an RNTuple for processing.

Parameters
[in]ntupleThe RNTupleOpenSpec describing the RNTuple to connect.
Returns
The number of entries in the newly-connected RNTuple.

Creates and attaches new page source for the specified RNTuple, and connects the fields that are known by the processor to it.

Implemented in ROOT::Experimental::RNTupleChainProcessor.

◆ CreateChain()

std::unique_ptr< ROOT::Experimental::RNTupleProcessor > ROOT::Experimental::RNTupleProcessor::CreateChain ( const std::vector< RNTupleOpenSpec > &  ntuples,
std::unique_ptr< RNTupleModel model = nullptr 
)
static

Create a new RNTuple processor chain for vertical concatenation of RNTuples.

Parameters
[in]ntuplesA list specifying the names and locations of the ntuples to process.
[in]modelAn RNTupleModel specifying which fields can be read by the processor. If no model is provided, one will be created based on the descriptor of the first ntuple specified.
Returns
A pointer to the newly created RNTupleProcessor.

Definition at line 21 of file RNTupleProcessor.cxx.

◆ end()

RIterator ROOT::Experimental::RNTupleProcessor::end ( )
inline

Definition at line 226 of file RNTupleProcessor.hxx.

◆ GetCurrentNTupleNumber()

std::size_t ROOT::Experimental::RNTupleProcessor::GetCurrentNTupleNumber ( ) const
inline

Get the index to the RNTuple currently being processed, according to the sources specified upon creation.

Definition at line 156 of file RNTupleProcessor.hxx.

◆ GetEntry()

const REntry & ROOT::Experimental::RNTupleProcessor::GetEntry ( ) const
inline

Returns a reference to the entry used by the processor.

Returns
A reference to the entry used by the processor.

Definition at line 169 of file RNTupleProcessor.hxx.

◆ GetLocalEntryNumber()

NTupleSize_t ROOT::Experimental::RNTupleProcessor::GetLocalEntryNumber ( ) const
inline

Get the entry number local to the RNTuple that is currently being processed.

When only one RNTuple is present in the processor chain, the return value is equal to GetGlobalEntryNumber.

Definition at line 162 of file RNTupleProcessor.hxx.

◆ GetNEntriesProcessed()

NTupleSize_t ROOT::Experimental::RNTupleProcessor::GetNEntriesProcessed ( ) const
inline

Get the total number of entries processed so far.

When only one RNTuple is present in the processor chain, the return value is equal to GetLocalEntryNumber.

Definition at line 152 of file RNTupleProcessor.hxx.

◆ operator=() [1/2]

RNTupleProcessor & ROOT::Experimental::RNTupleProcessor::operator= ( const RNTupleProcessor )
delete

◆ operator=() [2/2]

RNTupleProcessor & ROOT::Experimental::RNTupleProcessor::operator= ( RNTupleProcessor &&  )
delete

Member Data Documentation

◆ fCurrentNTupleNumber

std::size_t ROOT::Experimental::RNTupleProcessor::fCurrentNTupleNumber
protected

Definition at line 108 of file RNTupleProcessor.hxx.

◆ fEntry

std::unique_ptr<REntry> ROOT::Experimental::RNTupleProcessor::fEntry
protected

Definition at line 103 of file RNTupleProcessor.hxx.

◆ fFieldContexts

std::vector<RFieldContext> ROOT::Experimental::RNTupleProcessor::fFieldContexts
protected

Definition at line 105 of file RNTupleProcessor.hxx.

◆ fLocalEntryNumber

NTupleSize_t ROOT::Experimental::RNTupleProcessor::fLocalEntryNumber
protected

Definition at line 109 of file RNTupleProcessor.hxx.

◆ fNEntriesProcessed

NTupleSize_t ROOT::Experimental::RNTupleProcessor::fNEntriesProcessed
protected

Definition at line 107 of file RNTupleProcessor.hxx.

◆ fNTuples

std::vector<RNTupleOpenSpec> ROOT::Experimental::RNTupleProcessor::fNTuples
protected

Definition at line 102 of file RNTupleProcessor.hxx.

◆ fPageSource

std::unique_ptr<Internal::RPageSource> ROOT::Experimental::RNTupleProcessor::fPageSource
protected

Definition at line 104 of file RNTupleProcessor.hxx.

Libraries for ROOT::Experimental::RNTupleProcessor:

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