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

Processor specialization for horizontally combined (joined) RNTupleProcessors.

Definition at line 507 of file RNTupleProcessor.hxx.

Public Member Functions

 RNTupleJoinProcessor (const RNTupleJoinProcessor &)=delete
 
 RNTupleJoinProcessor (RNTupleJoinProcessor &&)=delete
 
 ~RNTupleJoinProcessor () override=default
 
RNTupleJoinProcessor operator= (const RNTupleJoinProcessor &)=delete
 
RNTupleJoinProcessor operator= (RNTupleJoinProcessor &&)=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.
 
const ROOT::REntryGetEntry () const
 Get a reference to the entry used by the processor.
 
const ROOT::RNTupleModelGetModel () const
 Get the model used by the processor.
 
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.
 

Private Member Functions

 RNTupleJoinProcessor (std::unique_ptr< RNTupleProcessor > primaryProcessor, std::unique_ptr< RNTupleProcessor > auxProcessor, const std::vector< std::string > &joinFields, std::unique_ptr< ROOT::RNTupleModel > primaryModel, std::unique_ptr< ROOT::RNTupleModel > auxModel, std::string_view processorName)
 Construct a new RNTupleJoinProcessor.
 
void AddEntriesToJoinTable (Internal::RNTupleJoinTable &joinTable, ROOT::NTupleSize_t entryOffset=0) final
 Add the entry mappings for this processor to the provided join table.
 
ROOT::NTupleSize_t GetNEntries () final
 Get the total number of entries in this processor.
 
ROOT::NTupleSize_t LoadEntry (ROOT::NTupleSize_t entryNumber) final
 Load the entry identified by the provided entry number of the primary processor.
 
void PrintStructureImpl (std::ostream &output) const final
 Processor-specific implementation for printing its structure, called by PrintStructure().
 
void SetEntryPointers (const ROOT::REntry &, std::string_view fieldNamePrefix) final
 
void SetModel (std::unique_ptr< ROOT::RNTupleModel > primaryModel, std::unique_ptr< ROOT::RNTupleModel > auxModel)
 Set fModel by combining the primary and auxiliary models.
 

Private Attributes

std::unique_ptr< RNTupleProcessorfAuxiliaryProcessor
 
std::vector< ROOT::RFieldTokenfJoinFieldTokens
 Tokens representing the join fields present in the primary processor.
 
std::unique_ptr< Internal::RNTupleJoinTablefJoinTable
 
bool fJoinTableIsBuilt = false
 
std::unique_ptr< RNTupleProcessorfPrimaryProcessor
 

Friends

class RNTupleProcessor
 

Additional Inherited Members

- Static Public Member Functions inherited from ROOT::Experimental::RNTupleProcessor
static std::unique_ptr< RNTupleProcessorCreate (RNTupleOpenSpec ntuple, std::unique_ptr< ROOT::RNTupleModel > model=nullptr, std::string_view processorName="")
 Create an RNTupleProcessor for a single RNTuple.
 
static std::unique_ptr< RNTupleProcessorCreateChain (std::vector< RNTupleOpenSpec > ntuples, std::unique_ptr< ROOT::RNTupleModel > model=nullptr, 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::unique_ptr< ROOT::RNTupleModel > model=nullptr, 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::unique_ptr< ROOT::RNTupleModel > primaryModel=nullptr, std::unique_ptr< ROOT::RNTupleModel > auxModel=nullptr, 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::unique_ptr< ROOT::RNTupleModel > primaryModel=nullptr, std::unique_ptr< ROOT::RNTupleModel > auxModel=nullptr, 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, std::unique_ptr< ROOT::RNTupleModel > model)
 Create a new base RNTupleProcessor.
 
- Protected Attributes inherited from ROOT::Experimental::RNTupleProcessor
ROOT::NTupleSize_t fCurrentEntryNumber = 0
 
std::size_t fCurrentProcessorNumber = 0
 
std::unique_ptr< ROOT::REntryfEntry
 
std::unique_ptr< ROOT::RNTupleModelfModel
 
ROOT::NTupleSize_t fNEntries = kInvalidNTupleIndex
 Total number of entries.
 
ROOT::NTupleSize_t fNEntriesProcessed = 0
 
std::string fProcessorName
 

#include <ROOT/RNTupleProcessor.hxx>

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

Constructor & Destructor Documentation

◆ RNTupleJoinProcessor() [1/3]

ROOT::Experimental::RNTupleJoinProcessor::RNTupleJoinProcessor ( std::unique_ptr< RNTupleProcessor > primaryProcessor,
std::unique_ptr< RNTupleProcessor > auxProcessor,
const std::vector< std::string > & joinFields,
std::unique_ptr< ROOT::RNTupleModel > primaryModel,
std::unique_ptr< ROOT::RNTupleModel > auxModel,
std::string_view processorName )
private

Construct a new RNTupleJoinProcessor.

Parameters
[in]primaryProcessorThe primary processor. Its entries are processed in sequential order.
[in]auxProcessorThe processor to join the primary processor with. The order in which its entries are processed is determined by the primary processor and doesn't necessarily have to be sequential.
[in]joinFieldsThe names of the fields on which to join, in case the specified processors are unaligned. The join is made based on the combined join field values, and therefore each field has to be present in each specified processor. If an empty list is provided, it is assumed that the processors are fully aligned.
[in]primaryModelAn RNTupleModel specifying which fields from the primary processor can be read by the processor. If no model is provided, one will be created based on the descriptor of the primary processor.
[in]auxModelAn RNTupleModel specifying which fields from the auxiliary processor can be read by the processor. If no model is provided, one will be created based on the descriptor of the auxiliary processor.
[in]processorNameName of the processor. Unless specified otherwise in RNTupleProcessor::CreateJoin, this is the name of the primary processor.

Definition at line 395 of file RNTupleProcessor.cxx.

◆ RNTupleJoinProcessor() [2/3]

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

◆ RNTupleJoinProcessor() [3/3]

ROOT::Experimental::RNTupleJoinProcessor::RNTupleJoinProcessor ( RNTupleJoinProcessor && )
delete

◆ ~RNTupleJoinProcessor()

ROOT::Experimental::RNTupleJoinProcessor::~RNTupleJoinProcessor ( )
overridedefault

Member Function Documentation

◆ AddEntriesToJoinTable()

void ROOT::Experimental::RNTupleJoinProcessor::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 573 of file RNTupleProcessor.cxx.

◆ GetNEntries()

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

Get the total number of entries in this processor.

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 566 of file RNTupleProcessor.cxx.

◆ LoadEntry()

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

Load the entry identified by the provided entry number of the primary processor.

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

Implements ROOT::Experimental::RNTupleProcessor.

Definition at line 521 of file RNTupleProcessor.cxx.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ PrintStructureImpl()

void ROOT::Experimental::RNTupleJoinProcessor::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 579 of file RNTupleProcessor.cxx.

◆ SetEntryPointers()

void ROOT::Experimental::RNTupleJoinProcessor::SetEntryPointers ( const ROOT::REntry & entry,
std::string_view fieldNamePrefix )
finalprivatevirtual

◆ SetModel()

void ROOT::Experimental::RNTupleJoinProcessor::SetModel ( std::unique_ptr< ROOT::RNTupleModel > primaryModel,
std::unique_ptr< ROOT::RNTupleModel > auxModel )
private

Set fModel by combining the primary and auxiliary models.

Parameters
[in]primaryModelThe model of the primary processor.
[in]auxModelModel of the auxiliary processors.

To prevent field name clashes when one or more models have fields with duplicate names, fields from each auxiliary model are stored as a anonymous record, and subsequently registered as subfields in the join model. This way, they can be accessed from the processor's entry as auxNTupleName.fieldName.

Definition at line 461 of file RNTupleProcessor.cxx.

Friends And Related Symbol Documentation

◆ RNTupleProcessor

friend class RNTupleProcessor
friend

Definition at line 508 of file RNTupleProcessor.hxx.

Member Data Documentation

◆ fAuxiliaryProcessor

std::unique_ptr<RNTupleProcessor> ROOT::Experimental::RNTupleJoinProcessor::fAuxiliaryProcessor
private

Definition at line 512 of file RNTupleProcessor.hxx.

◆ fJoinFieldTokens

std::vector<ROOT::RFieldToken> ROOT::Experimental::RNTupleJoinProcessor::fJoinFieldTokens
private

Tokens representing the join fields present in the primary processor.

Definition at line 515 of file RNTupleProcessor.hxx.

◆ fJoinTable

std::unique_ptr<Internal::RNTupleJoinTable> ROOT::Experimental::RNTupleJoinProcessor::fJoinTable
private

Definition at line 516 of file RNTupleProcessor.hxx.

◆ fJoinTableIsBuilt

bool ROOT::Experimental::RNTupleJoinProcessor::fJoinTableIsBuilt = false
private

Definition at line 517 of file RNTupleProcessor.hxx.

◆ fPrimaryProcessor

std::unique_ptr<RNTupleProcessor> ROOT::Experimental::RNTupleJoinProcessor::fPrimaryProcessor
private

Definition at line 511 of file RNTupleProcessor.hxx.

Libraries for ROOT::Experimental::RNTupleJoinProcessor:

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