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

Processor specialization for vertically combined (chained) RNTupleProcessors.

Definition at line 648 of file RNTupleProcessor.hxx.

Public Member Functions

 RNTupleChainProcessor (const RNTupleChainProcessor &)=delete
 
 RNTupleChainProcessor (RNTupleChainProcessor &&)=delete
 
 ~RNTupleChainProcessor () override=default
 
RNTupleChainProcessoroperator= (const RNTupleChainProcessor &)=delete
 
RNTupleChainProcessoroperator= (RNTupleChainProcessor &&)=delete
 
- Public Member Functions inherited from ROOT::Experimental::RNTupleProcessor
 RNTupleProcessor (const RNTupleProcessor &)=delete
 
 RNTupleProcessor (RNTupleProcessor &&)=delete
 
virtual ~RNTupleProcessor ()=default
 
RIterator begin ()
 
RIterator end ()
 
ROOT::NTupleSize_t GetCurrentEntryNumber () const
 Get the entry number that is currently being processed.
 
std::size_t GetCurrentProcessorNumber () const
 Get the number of the inner processor currently being read.
 
ROOT::NTupleSize_t GetNEntriesProcessed () const
 Get the total number of entries processed so far.
 
const std::string & GetProcessorName () const
 Get the name of the processor.
 
RNTupleProcessoroperator= (const RNTupleProcessor &)=delete
 
RNTupleProcessoroperator= (RNTupleProcessor &&)=delete
 
void PrintStructure (std::ostream &output=std::cout)
 Print a graphical representation of the processor composition.
 
template<typename T >
RNTupleProcessorOptionalPtr< T > RequestField (std::string_view fieldName, void *valuePtr=nullptr)
 Request access to a field for reading during processing.
 

Private Member Functions

 RNTupleChainProcessor (std::vector< std::unique_ptr< RNTupleProcessor > > processors, std::string_view processorName)
 Construct a new RNTupleChainProcessor.
 
void AddEntriesToJoinTable (Internal::RNTupleJoinTable &joinTable, ROOT::NTupleSize_t entryOffset=0) final
 Add the entry mappings for this processor to the provided join table.
 
ROOT::RResult< Internal::RNTupleProcessorEntry::FieldIndex_tAddFieldToEntry (std::string_view fieldName, void *valuePtr=nullptr, const Internal::RNTupleProcessorProvenance &provenance=Internal::RNTupleProcessorProvenance()) final
 Add a field to the entry.
 
bool CanReadFieldFromDisk (std::string_view fieldName) final
 Check if a field exists on-disk and can be read by the processor.
 
void Connect (const std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > &fieldIdxs, const Internal::RNTupleProcessorProvenance &provenance=Internal::RNTupleProcessorProvenance(), bool updateFields=false) final
 Connect the provided fields indices in the entry to their on-disk fields.
 
void ConnectInnerProcessor (std::size_t processorNumber)
 Update the entry to reflect any missing fields in the current inner processor.
 
ROOT::NTupleSize_t GetNEntries () final
 Get the total number of entries in this processor.
 
void Initialize (std::shared_ptr< Internal::RNTupleProcessorEntry > entry=nullptr) final
 Initialize the processor, by setting fProtoModel and creating an (initially empty) fEntry, or setting an existing one.
 
ROOT::NTupleSize_t LoadEntry (ROOT::NTupleSize_t entryNumber) final
 Load the entry identified by the provided (global) entry number (i.e., considering all RNTuples in this processor).
 
void PrintStructureImpl (std::ostream &output) const final
 Processor-specific implementation for printing its structure, called by PrintStructure().
 

Private Attributes

std::vector< ROOT::NTupleSize_tfInnerNEntries
 
std::vector< std::unique_ptr< RNTupleProcessor > > fInnerProcessors
 
Internal::RNTupleProcessorProvenance fProvenance
 

Friends

class RNTupleProcessor
 

Additional Inherited Members

- Static Public Member Functions inherited from ROOT::Experimental::RNTupleProcessor
static std::unique_ptr< RNTupleProcessorCreate (RNTupleOpenSpec ntuple, std::string_view processorName="")
 Create an RNTupleProcessor for a single RNTuple.
 
static std::unique_ptr< RNTupleProcessorCreateChain (std::vector< RNTupleOpenSpec > ntuples, std::string_view processorName="")
 Create an RNTupleProcessor for a chain (i.e., a vertical combination) of RNTuples.
 
static std::unique_ptr< RNTupleProcessorCreateChain (std::vector< std::unique_ptr< RNTupleProcessor > > innerProcessors, std::string_view processorName="")
 Create an RNTupleProcessor for a chain (i.e., a vertical combination) of other RNTupleProcessors.
 
static std::unique_ptr< RNTupleProcessorCreateJoin (RNTupleOpenSpec primaryNTuple, RNTupleOpenSpec auxNTuple, const std::vector< std::string > &joinFields, std::string_view processorName="")
 Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples.
 
static std::unique_ptr< RNTupleProcessorCreateJoin (std::unique_ptr< RNTupleProcessor > primaryProcessor, std::unique_ptr< RNTupleProcessor > auxProcessor, const std::vector< std::string > &joinFields, std::string_view processorName="")
 Create an RNTupleProcessor for a join (i.e., a horizontal combination) of RNTuples.
 
- Protected Member Functions inherited from ROOT::Experimental::RNTupleProcessor
 RNTupleProcessor (std::string_view processorName)
 Create a new base RNTupleProcessor.
 
const ROOT::RNTupleModelGetProtoModel () const
 Get the proto model used by the processor.
 
bool IsInitialized () const
 Check if the processor already has been initialized.
 
- Protected Attributes inherited from ROOT::Experimental::RNTupleProcessor
ROOT::NTupleSize_t fCurrentEntryNumber = 0
 
std::size_t fCurrentProcessorNumber = 0
 
std::shared_ptr< Internal::RNTupleProcessorEntryfEntry = nullptr
 
std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_tfFieldIdxs
 
ROOT::NTupleSize_t fNEntries = kInvalidNTupleIndex
 Total number of entries.
 
ROOT::NTupleSize_t fNEntriesProcessed = 0
 
std::string fProcessorName
 
std::unique_ptr< ROOT::RNTupleModelfProtoModel = nullptr
 

#include <ROOT/RNTupleProcessor.hxx>

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

Constructor & Destructor Documentation

◆ RNTupleChainProcessor() [1/3]

ROOT::Experimental::RNTupleChainProcessor::RNTupleChainProcessor ( std::vector< std::unique_ptr< RNTupleProcessor > > processors,
std::string_view processorName )
private

Construct a new RNTupleChainProcessor.

Parameters
[in]ntuplesThe source specification (name and storage location) for each RNTuple to process.
[in]processorNameName of the processor. Unless specified otherwise in RNTupleProcessor::CreateChain, this is the name of the first inner processor.

RNTuples are processed in the order in which they are specified.

Definition at line 265 of file RNTupleProcessor.cxx.

◆ RNTupleChainProcessor() [2/3]

ROOT::Experimental::RNTupleChainProcessor::RNTupleChainProcessor ( const RNTupleChainProcessor & )
delete

◆ RNTupleChainProcessor() [3/3]

ROOT::Experimental::RNTupleChainProcessor::RNTupleChainProcessor ( RNTupleChainProcessor && )
delete

◆ ~RNTupleChainProcessor()

ROOT::Experimental::RNTupleChainProcessor::~RNTupleChainProcessor ( )
overridedefault

Member Function Documentation

◆ AddEntriesToJoinTable()

void ROOT::Experimental::RNTupleChainProcessor::AddEntriesToJoinTable ( Internal::RNTupleJoinTable & joinTable,
ROOT::NTupleSize_t entryOffset = 0 )
finalprivatevirtual

Add the entry mappings for this processor to the provided join table.

See also
ROOT::Experimental::RNTupleProcessor::AddEntriesToJoinTable

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 365 of file RNTupleProcessor.cxx.

◆ AddFieldToEntry()

ROOT::RResult< ROOT::Experimental::Internal::RNTupleProcessorEntry::FieldIndex_t > ROOT::Experimental::RNTupleChainProcessor::AddFieldToEntry ( std::string_view fieldName,
void * valuePtr = nullptr,
const Internal::RNTupleProcessorProvenance & provenance = Internal::RNTupleProcessorProvenance() )
finalprivatevirtual

Add a field to the entry.

See also
RNTupleProcessor::AddFieldToEntry()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 327 of file RNTupleProcessor.cxx.

◆ CanReadFieldFromDisk()

bool ROOT::Experimental::RNTupleChainProcessor::CanReadFieldFromDisk ( std::string_view fieldName)
inlinefinalprivatevirtual

Check if a field exists on-disk and can be read by the processor.

See also
RNTupleProcessor::CanReadFieldFromDisk()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 691 of file RNTupleProcessor.hxx.

◆ Connect()

void ROOT::Experimental::RNTupleChainProcessor::Connect ( const std::unordered_set< Internal::RNTupleProcessorEntry::FieldIndex_t > & fieldIdxs,
const Internal::RNTupleProcessorProvenance & provenance = Internal::RNTupleProcessorProvenance(),
bool updateFields = false )
finalprivatevirtual

Connect the provided fields indices in the entry to their on-disk fields.

See also
RNTupleProcessor::Connect()

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 309 of file RNTupleProcessor.cxx.

◆ ConnectInnerProcessor()

void ROOT::Experimental::RNTupleChainProcessor::ConnectInnerProcessor ( std::size_t processorNumber)
private

Update the entry to reflect any missing fields in the current inner processor.

Definition at line 319 of file RNTupleProcessor.cxx.

◆ GetNEntries()

ROOT::NTupleSize_t ROOT::Experimental::RNTupleChainProcessor::GetNEntries ( )
finalprivatevirtual

Get the total number of entries in this processor.

Note
This requires opening all underlying RNTuples being processed in the chain, and could become costly!

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 292 of file RNTupleProcessor.cxx.

◆ Initialize()

void ROOT::Experimental::RNTupleChainProcessor::Initialize ( std::shared_ptr< Internal::RNTupleProcessorEntry > entry = nullptr)
finalprivatevirtual

Initialize the processor, by setting fProtoModel and creating an (initially empty) fEntry, or setting an existing one.

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 277 of file RNTupleProcessor.cxx.

◆ LoadEntry()

ROOT::NTupleSize_t ROOT::Experimental::RNTupleChainProcessor::LoadEntry ( ROOT::NTupleSize_t entryNumber)
finalprivatevirtual

Load the entry identified by the provided (global) entry number (i.e., considering all RNTuples in this processor).

See also
ROOT::Experimental::RNTupleProcessor::LoadEntry

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 334 of file RNTupleProcessor.cxx.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ PrintStructureImpl()

void ROOT::Experimental::RNTupleChainProcessor::PrintStructureImpl ( std::ostream & output) const
finalprivatevirtual

Processor-specific implementation for printing its structure, called by PrintStructure().

See also
ROOT::Experimental::RNTupleProcessor::PrintStructureImpl

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 378 of file RNTupleProcessor.cxx.

Friends And Related Symbol Documentation

◆ RNTupleProcessor

friend class RNTupleProcessor
friend

Definition at line 649 of file RNTupleProcessor.hxx.

Member Data Documentation

◆ fInnerNEntries

std::vector<ROOT::NTupleSize_t> ROOT::Experimental::RNTupleChainProcessor::fInnerNEntries
private

Definition at line 653 of file RNTupleProcessor.hxx.

◆ fInnerProcessors

std::vector<std::unique_ptr<RNTupleProcessor> > ROOT::Experimental::RNTupleChainProcessor::fInnerProcessors
private

Definition at line 652 of file RNTupleProcessor.hxx.

◆ fProvenance

Internal::RNTupleProcessorProvenance ROOT::Experimental::RNTupleChainProcessor::fProvenance
private

Definition at line 655 of file RNTupleProcessor.hxx.

Libraries for ROOT::Experimental::RNTupleChainProcessor:

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