A binder for user-defined columns and aliases.
The storage is copy-on-write and shared between all instances of the class that have the same values.
Definition at line 43 of file RColumnRegister.hxx.
Public Member Functions | |
RColumnRegister (const RColumnRegister &)=default | |
RColumnRegister (RColumnRegister &&)=default | |
RColumnRegister (std::shared_ptr< RDFDetail::RLoopManager > lm) | |
void | AddAlias (std::string_view alias, std::string_view colName) |
Add a new alias to the ledger. | |
void | AddColumn (const std::shared_ptr< RDFDetail::RDefineBase > &column) |
Add a new booked column. | |
void | AddVariation (const std::shared_ptr< RVariationBase > &variation) |
Register a new systematic variation. | |
void | Clear () |
Empty the contents of this ledger. | |
RVariationBase & | FindVariation (const std::string &colName, const std::string &variationName) const |
Return the RVariation object that handles the specified variation of the specified column. | |
const DefinesMap_t & | GetColumns () const |
Returns a map of pointers to the defined columns. | |
ColumnNames_t | GetNames () const |
Returns the list of the names of the defined columns (Defines + Aliases). | |
std::vector< std::string > | GetVariationDeps (const ColumnNames_t &columns) const |
Get the names of all variations that directly or indirectly affect the specified columns. | |
std::vector< std::string > | GetVariationDeps (const std::string &column) const |
Get the names of all variations that directly or indirectly affect a given column. | |
const VariationsMap_t & | GetVariations () const |
Returns the multimap of systematic variations, see fVariations. | |
std::vector< std::string > | GetVariationsFor (const std::string &column) const |
Get the names of the variations that directly provide alternative values for this column. | |
bool | HasName (std::string_view name) const |
Check if the provided name is tracked in the names list. | |
bool | IsAlias (const std::string &name) const |
Return true if the given column name is an existing alias. | |
RColumnRegister & | operator= (const RColumnRegister &)=default |
std::string | ResolveAlias (std::string_view alias) const |
Return the actual column name that the alias resolves to. | |
Private Types | |
using | ColumnNames_t = std::vector< std::string > |
using | DefinesMap_t = std::unordered_map< std::string, std::shared_ptr< RDFDetail::RDefineBase > > |
using | VariationsMap_t = std::unordered_multimap< std::string, std::shared_ptr< RVariationBase > > |
See fVariations for more information on this type. | |
Private Member Functions | |
void | AddName (std::string_view name) |
Add a new name to the list returned by GetNames without booking a new column. | |
Private Attributes | |
std::shared_ptr< const std::unordered_map< std::string, std::string > > | fAliases |
Immutable map of Aliases, can be shared among several nodes. | |
std::shared_ptr< const ColumnNames_t > | fColumnNames |
Names of Defines and Aliases registered so far. | |
std::shared_ptr< const DefinesMap_t > | fDefines |
Immutable map of Defines, can be shared among several nodes. | |
std::shared_ptr< RDFDetail::RLoopManager > | fLoopManager |
std::shared_ptr< const VariationsMap_t > | fVariations |
Immutable multimap of Variations, can be shared among several nodes. | |
#include <ROOT/RDF/RColumnRegister.hxx>
|
private |
Definition at line 44 of file RColumnRegister.hxx.
|
private |
Definition at line 45 of file RColumnRegister.hxx.
|
private |
See fVariations for more information on this type.
Definition at line 47 of file RColumnRegister.hxx.
|
default |
|
default |
|
inline |
Definition at line 78 of file RColumnRegister.hxx.
void ROOT::Internal::RDF::RColumnRegister::AddAlias | ( | std::string_view | alias, |
std::string_view | colName | ||
) |
Add a new alias to the ledger.
Definition at line 105 of file RDFColumnRegister.cxx.
void ROOT::Internal::RDF::RColumnRegister::AddColumn | ( | const std::shared_ptr< RDFDetail::RDefineBase > & | column | ) |
Add a new booked column.
Internally it recreates the map with the new column, and swaps it with the old one.
Definition at line 27 of file RDFColumnRegister.cxx.
|
private |
Add a new name to the list returned by GetNames
without booking a new column.
This is needed because we abuse fColumnNames to also keep track of the aliases defined in each branch of the computation graph. Internally it recreates the vector with the new name, and swaps it with the old one.
Definition at line 94 of file RDFColumnRegister.cxx.
void ROOT::Internal::RDF::RColumnRegister::AddVariation | ( | const std::shared_ptr< RVariationBase > & | variation | ) |
Register a new systematic variation.
Definition at line 36 of file RDFColumnRegister.cxx.
void ROOT::Internal::RDF::RColumnRegister::Clear | ( | ) |
Empty the contents of this ledger.
The only allowed operation on a RColumnRegister object after a call to Clear is its destruction.
Definition at line 135 of file RDFColumnRegister.cxx.
RVariationBase & ROOT::Internal::RDF::RColumnRegister::FindVariation | ( | const std::string & | colName, |
const std::string & | variationName | ||
) | const |
Return the RVariation object that handles the specified variation of the specified column.
Definition at line 83 of file RDFColumnRegister.cxx.
|
inline |
Returns a map of pointers to the defined columns.
Definition at line 91 of file RColumnRegister.hxx.
|
inline |
Returns the list of the names of the defined columns (Defines + Aliases).
Definition at line 87 of file RColumnRegister.hxx.
std::vector< std::string > ROOT::Internal::RDF::RColumnRegister::GetVariationDeps | ( | const ColumnNames_t & | columns | ) | const |
Get the names of all variations that directly or indirectly affect the specified columns.
This list includes variations applied to the columns as well as variations applied to other columns on which the value of any of these columns depend (typically via Define expressions).
Definition at line 61 of file RDFColumnRegister.cxx.
std::vector< std::string > ROOT::Internal::RDF::RColumnRegister::GetVariationDeps | ( | const std::string & | column | ) | const |
Get the names of all variations that directly or indirectly affect a given column.
This list includes variations applied to the column as well as variations applied to other columns on which the value of this column depends (typically via a Define expression).
Definition at line 56 of file RDFColumnRegister.cxx.
|
inline |
Returns the multimap of systematic variations, see fVariations.
Definition at line 95 of file RColumnRegister.hxx.
std::vector< std::string > ROOT::Internal::RDF::RColumnRegister::GetVariationsFor | ( | const std::string & | column | ) | const |
Get the names of the variations that directly provide alternative values for this column.
Definition at line 45 of file RDFColumnRegister.cxx.
bool ROOT::Internal::RDF::RColumnRegister::HasName | ( | std::string_view | name | ) | const |
Check if the provided name is tracked in the names list.
Definition at line 21 of file RDFColumnRegister.cxx.
bool ROOT::Internal::RDF::RColumnRegister::IsAlias | ( | const std::string & | name | ) | const |
Return true if the given column name is an existing alias.
Definition at line 115 of file RDFColumnRegister.cxx.
|
default |
std::string ROOT::Internal::RDF::RColumnRegister::ResolveAlias | ( | std::string_view | alias | ) | const |
Return the actual column name that the alias resolves to.
Drills through multiple levels of aliasing if needed. Returns the input in case it's not an alias. Expands #var
to R_rdf_sizeof_var
(the #var columns are implicitly-defined aliases).
Definition at line 120 of file RDFColumnRegister.cxx.
|
private |
Immutable map of Aliases, can be shared among several nodes.
Definition at line 66 of file RColumnRegister.hxx.
|
private |
Names of Defines and Aliases registered so far.
Definition at line 71 of file RColumnRegister.hxx.
|
private |
Immutable map of Defines, can be shared among several nodes.
When a new define is added (through a call to RInterface::Define or similar) a new map with the extra element is created.
Definition at line 64 of file RColumnRegister.hxx.
|
private |
Definition at line 59 of file RColumnRegister.hxx.
|
private |
Immutable multimap of Variations, can be shared among several nodes.
The key is the name of an existing column, the values are all variations that affect that column. As a consequence, Variations that affect multiple columns are inserted multiple times, once per column.
Definition at line 70 of file RColumnRegister.hxx.