16#ifndef ROOT7_RNTupleProcessor
17#define ROOT7_RNTupleProcessor
33namespace Experimental {
217 return lh.fNEntriesProcessed !=
rh.fNEntriesProcessed;
221 return lh.fNEntriesProcessed ==
rh.fNEntriesProcessed;
236 static std::unique_ptr<RNTupleProcessor>
237 CreateChain(
const std::vector<RNTupleOpenSpec> &
ntuples, std::unique_ptr<RNTupleModel> model =
nullptr);
The field token identifies a (sub)field in this entry.
The REntry is a collection of values in an ntuple corresponding to a complete row in the data set.
A field translates read and write calls from/to underlying columns to/from tree values.
Processor specializiation for vertically concatenated RNTuples (chains).
void ConnectFields() final
Creates and connects concrete fields to the current page source, based on the proto-fields.
NTupleSize_t Advance() final
Advance the processor to the next available entry.
NTupleSize_t ConnectNTuple(const RNTupleOpenSpec &ntuple) final
Connect an RNTuple for processing.
The RNTupleModel encapulates the schema of an ntuple.
Manager for a field as part of the RNTupleProcessor.
std::unique_ptr< RFieldBase > fConcreteField
void ResetConcreteField()
We need to disconnect the concrete fields before swapping the page sources.
std::unique_ptr< RFieldBase > fProtoField
REntry::RFieldToken fToken
const RFieldBase & GetProtoField() const
RFieldContext(std::unique_ptr< RFieldBase > protoField, REntry::RFieldToken token)
Iterator over the entries of an RNTuple, or vertical concatenation thereof.
RNTupleProcessor & fProcessor
NTupleSize_t fNEntriesProcessed
std::forward_iterator_tag iterator_category
std::ptrdiff_t difference_type
RIterator(RNTupleProcessor &processor, NTupleSize_t globalEntryNumber)
friend bool operator==(const iterator &lh, const iterator &rh)
friend bool operator!=(const iterator &lh, const iterator &rh)
Interface for iterating over entries of RNTuples and vertically concatenated RNTuples (chains).
virtual NTupleSize_t ConnectNTuple(const RNTupleOpenSpec &ntuple)=0
Connect an RNTuple for processing.
const REntry & GetEntry() const
Returns a reference to the entry used by the processor.
NTupleSize_t fNEntriesProcessed
RNTupleProcessor(const std::vector< RNTupleOpenSpec > &ntuples)
std::size_t fCurrentNTupleNumber
NTupleSize_t GetNEntriesProcessed() const
Get the total number of entries processed so far.
virtual ~RNTupleProcessor()=default
RNTupleProcessor(RNTupleProcessor &&)=delete
std::vector< RFieldContext > fFieldContexts
std::size_t GetCurrentNTupleNumber() const
Get the index to the RNTuple currently being processed, according to the sources specified upon creat...
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.
NTupleSize_t fLocalEntryNumber
std::unique_ptr< REntry > fEntry
virtual void ConnectFields()=0
Creates and connects concrete fields to the current page source, based on the proto-fields.
RNTupleProcessor(const RNTupleProcessor &)=delete
RNTupleProcessor & operator=(RNTupleProcessor &&)=delete
virtual NTupleSize_t Advance()=0
Advance the processor to the next available entry.
std::unique_ptr< Internal::RPageSource > fPageSource
NTupleSize_t GetLocalEntryNumber() const
Get the entry number local to the RNTuple that is currently being processed.
std::vector< RNTupleOpenSpec > fNTuples
RNTupleProcessor & operator=(const RNTupleProcessor &)=delete
constexpr NTupleSize_t kInvalidNTupleIndex
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Used to specify the underlying RNTuples in RNTupleProcessor and RNTupleReader::OpenFriends()