16#ifndef ROOT_RNTupleJoinTable 
   17#define ROOT_RNTupleJoinTable 
   23#include <unordered_map> 
   27namespace Experimental {
 
  112            std::size_t seed = 0;
 
 
  119         inline std::size_t 
mix(std::size_t init)
 const 
  122            init *= 0xe9846af9b1a615d;
 
  124            init *= 0xe9846af9b1a615d;
 
 
 
  132      std::unordered_map<RCombinedJoinFieldValue, std::vector<ROOT::NTupleSize_t>, RCombinedJoinFieldValueHash>
 
 
  158   std::unordered_map<PartitionKey_t, std::vector<std::unique_ptr<REntryMapping>>> 
fPartitions;
 
  181   static std::unique_ptr<RNTupleJoinTable> 
Create(
const std::vector<std::string> &
joinFieldNames);
 
  203   std::vector<ROOT::NTupleSize_t>
 
  214   std::unordered_map<PartitionKey_t, std::vector<ROOT::NTupleSize_t>>
 
  225   std::unordered_map<PartitionKey_t, std::vector<ROOT::NTupleSize_t>>
 
 
Provides a mapping from one or several join field values to an entry index.
 
std::vector< std::size_t > fJoinFieldValueSizes
The size (in bytes) for each join field, corresponding to fJoinFieldNames.
 
std::vector< std::string > fJoinFieldNames
Names of the join fields used for the mapping to their respective entry indexes.
 
REntryMapping(ROOT::Internal::RPageSource &pageSource, const std::vector< std::string > &joinFieldNames)
Create a new entry mapping.
 
std::unordered_map< RCombinedJoinFieldValue, std::vector< ROOT::NTupleSize_t >, RCombinedJoinFieldValueHash > fMapping
The mapping itself.
 
const std::vector< ROOT::NTupleSize_t > * GetEntryIndexes(std::vector< void * > valuePtrs) const
Get the entry indexes for this entry mapping.
 
Builds a join table on one or several fields of an RNTuple so it can be joined onto other RNTuples.
 
std::unordered_map< PartitionKey_t, std::vector< ROOT::NTupleSize_t > > GetPartitionedEntryIndexes(const std::vector< void * > &valuePtrs, const std::vector< PartitionKey_t > &partitionKeys) const
Get all entry indexes for the given join field value(s) for a specific set of partitions.
 
RNTupleJoinTable(RNTupleJoinTable &&other)=delete
 
std::vector< ROOT::NTupleSize_t > GetEntryIndexes(const std::vector< void * > &valuePtrs, PartitionKey_t partitionKey=kDefaultPartitionKey) const
Get all entry indexes for the given join field value(s) within a partition.
 
RNTupleJoinTable & operator=(RNTupleJoinTable &&other)=delete
 
RNTupleJoinTable & Add(ROOT::Internal::RPageSource &pageSource, PartitionKey_t partitionKey=kDefaultPartitionKey)
Add an entry mapping to the join table.
 
RNTupleJoinTable & operator=(const RNTupleJoinTable &other)=delete
 
~RNTupleJoinTable()=default
 
static std::unique_ptr< RNTupleJoinTable > Create(const std::vector< std::string > &joinFieldNames)
Create an RNTupleJoinTable from an existing RNTuple.
 
std::vector< std::string > fJoinFieldNames
Names of the join fields used for the mapping to their respective entry indexes.
 
std::uint64_t PartitionKey_t
 
std::uint64_t JoinValue_t
 
RNTupleJoinTable(const RNTupleJoinTable &other)=delete
 
RNTupleJoinTable(const std::vector< std::string > &joinFieldNames)
Create an a new RNTupleJoinTable for the RNTuple represented by the provided page source.
 
static constexpr PartitionKey_t kDefaultPartitionKey
 
std::unordered_map< PartitionKey_t, std::vector< std::unique_ptr< REntryMapping > > > fPartitions
Partitions of one or multiple entry mappings.
 
Abstract interface to read data from an ntuple.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
Hash combining the individual join field value hashes from RCombinedJoinFieldValue.
 
std::size_t mix(std::size_t init) const
 
std::size_t operator()(const RCombinedJoinFieldValue &joinFieldVal) const
 
Container for the combined hashes of join field values.
 
bool operator==(const RCombinedJoinFieldValue &other) const
 
std::vector< JoinValue_t > fJoinFieldValues
 
RCombinedJoinFieldValue(const std::vector< JoinValue_t > &joinFieldValues)