25#include <unordered_set> 
   26#include <shared_mutex> 
   39using ColumnNames_t = std::vector<std::string>;
 
   83   static constexpr bool Test(A *
pt, A 
const *
cpt = 
nullptr, 
decltype(
pt->begin()) * = 
nullptr,
 
   84                              decltype(
pt->end()) * = 
nullptr, 
decltype(
cpt->
begin()) * = 
nullptr,
 
   85                              decltype(
cpt->
end()) * = 
nullptr, 
typename A::iterator *pi = 
nullptr,
 
   86                              typename A::const_iterator *
pci = 
nullptr)
 
   88      using It_t = 
typename A::iterator;
 
   89      using CIt_t = 
typename A::const_iterator;
 
   90      using V_t = 
typename A::value_type;
 
   93             std::is_same<
decltype(**pi), 
V_t &>
::value && std::is_same<
decltype(**pci), 
V_t const &>
::value &&
 
   94             !std::is_same<T, std::string>::value;
 
 
   98   static constexpr bool Test(...)
 
 
 
  108   static constexpr bool value = 
true;
 
  118   static constexpr bool value = 
true;
 
  125template <
typename T, 
typename A>
 
  126struct IsVector_t<std::vector<T, A>> : 
public std::true_type {};
 
  143template <
bool MustRemove, 
typename TypeList>
 
  148template <
typename TypeList>
 
  153template <
bool MustRemove, 
typename TypeList>
 
  156template <
bool MustRemove, 
typename TypeList>
 
  161template <
typename TypeList>
 
  167template <
bool MustRemove, 
typename TypeList>
 
  194   v.erase(std::remove(
v.begin(), 
v.end(), 
that), 
v.end());
 
 
  202void InterpreterCalc(
const std::string &code, 
const std::string &context = 
"");
 
  213#ifdef R__HAS_HARDWARE_INTERFERENCE_SIZE 
  215   inline constexpr std::size_t 
kCacheLineSize = std::hardware_destructive_interference_size;
 
  235   for (
size_t i = 0; i < 
arr.size(); ++i) {
 
 
  243template <std::size_t 
N, 
typename... 
Ts>
 
  246   auto tuple = std::forward_as_tuple(args...);
 
  247   return std::get<N>(
tuple);
 
 
  250#if __cplusplus >= 201703L 
  251template <
class... 
Ts>
 
  252using Disjunction = std::disjunction<
Ts...>;
 
  260template <
class B1, 
class... 
Bn>
 
  261struct Disjunction<
B1, 
Bn...> : std::conditional_t<bool(B1::value), B1, Disjunction<Bn...>> {
 
 
  265bool IsStrInVec(
const std::string &str, 
const std::vector<std::string> &
vec);
 
  270std::vector<T> 
Union(
const std::vector<T> &
v1, 
const std::vector<T> &
v2)
 
  272   std::vector<T> res = 
v1;
 
  275   for (
const auto &
e : 
v2)
 
  276      if (std::find(
v1.begin(), 
v1.end(), 
e) == 
v1.end())
 
 
  302   auto Insert(
const std::string &
string) -> 
decltype(
fStrings)::const_iterator;
 
 
  316   template <
typename F, 
typename... Args>
 
  319      f(std::forward<Args>(args)...);
 
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
A Thread-safe cache for strings.
 
auto Insert(const std::string &string) -> decltype(fStrings)::const_iterator
Inserts the input string in the cache and returns an iterator to the cached string.
 
std::unordered_set< std::string > fStrings
 
The dataset specification for RDataFrame.
 
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
 
A log configuration for a channel, e.g.
 
const_iterator begin() const
 
const_iterator end() const
 
A "std::vector"-like collection of values implementing handy operation to analyse them.
 
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
 
A TTree represents a columnar dataset.
 
ROOT::RLogChannel & RDFLogChannel()
 
auto MakeAliasedSharedPtr(T *rawPtr)
 
std::vector< std::string > ReplaceDotWithUnderscore(const std::vector< std::string > &columnNames)
Replace occurrences of '.
 
const std::type_info & TypeName2TypeID(const std::string &name)
Return the type_info associated to a name.
 
typename RemoveFirstTwoParametersIf< MustRemove, TypeList >::type RemoveFirstTwoParametersIf_t
 
ROOT::RDF::Experimental::RDatasetSpec RetrieveSpecFromJson(const std::string &jsonFile)
Function to retrieve RDatasetSpec from JSON file provided.
 
decltype(auto) GetNthElement(Ts &&...args)
 
static constexpr std::size_t kCacheLineSize
 
char TypeName2ROOTTypeName(const std::string &b)
Convert type name (e.g.
 
std::string TypeID2TypeName(const std::type_info &id)
Returns the name of a type starting from its type_info An empty string is returned in case of failure...
 
bool IsStrInVec(const std::string &str, const std::vector< std::string > &vec)
 
void Erase(const T &that, std::vector< T > &v)
Erase that element from vector v
 
unsigned int GetColumnWidth(const std::vector< std::string > &names, const unsigned int minColumnSpace=8u)
Get optimal column width for printing a table given the names and the desired minimal space between c...
 
std::string GetBranchOrLeafTypeName(TTree &t, const std::string &colName)
Return the typename of object colName stored in t, if any.
 
constexpr std::size_t CacheLineStep()
Stepping through CacheLineStep<T> values in a vector<T> brings you to a new cache line.
 
std::string ColumnName2ColumnTypeName(const std::string &colName, TTree *, RDataSource *, RDefineBase *, bool vector2RVec=true)
Return a string containing the type of the given branch.
 
void InterpreterCalc(const std::string &code, const std::string &context="")
Jit code in the interpreter with TInterpreter::Calc, throw in case of errors.
 
void CheckReaderTypeMatches(const std::type_info &colType, const std::type_info &requestedType, const std::string &colName)
 
constexpr std::size_t FindIdxTrue(const T &arr)
 
std::vector< T > Union(const std::vector< T > &v1, const std::vector< T > &v2)
Return a vector with all elements of v1 and v2 and duplicates removed.
 
bool IsInternalColumn(std::string_view colName)
Whether custom column with name colName is an "internal" column such as rdfentry_ or rdfslot_.
 
std::string GetTypeNameWithOpts(const ROOT::RDF::RDataSource &ds, std::string_view colName, bool vector2RVec)
 
void InterpreterDeclare(const std::string &code)
Declare code in the interpreter via the TInterpreter::Declare method, throw in case of errors.
 
typename RemoveFirstParameterIf< MustRemove, TypeList >::type RemoveFirstParameterIf_t
 
std::vector< std::string > ColumnNames_t
 
ROOT type_traits extensions.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
Struct to wrap the call to a function with a guaranteed order of execution of its arguments.
 
CallGuaranteedOrder(F &&f, Args &&...args)
 
Check for container traits.
 
static constexpr bool Test(A *pt, A const *cpt=nullptr, decltype(pt->begin()) *=nullptr, decltype(pt->end()) *=nullptr, decltype(cpt->begin()) *=nullptr, decltype(cpt->end()) *=nullptr, typename A::iterator *pi=nullptr, typename A::const_iterator *pci=nullptr)
 
static constexpr bool Test(...)
 
static constexpr bool value
 
Detect whether a type is an instantiation of vector<T,A>
 
type is TypeList if MustRemove is false, otherwise it is a TypeList with the first type removed
 
typename RemoveFirstParameterIf< true, typeTmp >::type type
 
typename RemoveFirstParameterIf< true, TypeList >::type typeTmp
 
typename T::value_type value_type
 
Lightweight storage for a collection of types.