11#ifndef ROOT_RCUSTOMCOLUMN
12#define ROOT_RCUSTOMCOLUMN
36namespace CustomColExtraArgs {
43template <
typename F,
typename ExtraArgsTag = CustomColExtraArgs::None>
52 RDFInternal::RemoveFirstParameterIf_t<std::is_same<ExtraArgsTag, SlotTag>::value,
FunParamTypes_t>;
54 RDFInternal::RemoveFirstTwoParametersIf_t<std::is_same<ExtraArgsTag, SlotAndEntryTag>::value,
ColumnTypesTmp_t>;
55 using TypeInd_t = std::make_index_sequence<ColumnTypes_t::list_size>;
56 using ret_type =
typename CallableTraits<F>::ret_type;
59 typename std::conditional<std::is_same<ret_type, bool>::value, std::deque<ret_type>, std::vector<ret_type>>
::type;
65 std::vector<RDFInternal::RDFValueTuple_t<ColumnTypes_t>>
fValues;
70 template <std::size_t...
S,
typename... BranchTypes>
79 template <std::size_t...
S,
typename... BranchTypes>
88 template <std::size_t...
S,
typename... BranchTypes>
105 for (
auto i = 0u; i < nColumns; ++i)
typedef void((*Func_t)())
const bool fIsDataSourceColumn
does the custom column refer to a data-source column? (or a user-define column?)
std::vector< Long64_t > fLastCheckedEntry
std::deque< bool > fIsInitialized
RDFInternal::RBookedCustomColumns fCustomColumns
const unsigned int fNSlots
number of thread slots used by this node, inherited from parent node.
std::array< bool, ColumnTypes_t::list_size > fIsCustomColumn
The nth flag signals whether the nth input column is a custom column or not.
std::make_index_sequence< ColumnTypes_t::list_size > TypeInd_t
std::vector< RDFInternal::RDFValueTuple_t< ColumnTypes_t > > fValues
typename std::conditional< std::is_same< ret_type, bool >::value, std::deque< ret_type >, std::vector< ret_type > >::type ValuesPerSlot_t
typename CallableTraits< F >::ret_type ret_type
RCustomColumn & operator=(const RCustomColumn &)=delete
const ColumnNames_t fColumnNames
RCustomColumn(const RCustomColumn &)=delete
const std::type_info & GetTypeId() const
void ClearValueReaders(unsigned int slot) final
void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence< S... >, TypeList< BranchTypes... >, SlotTag)
RDFInternal::RemoveFirstParameterIf_t< std::is_same< ExtraArgsTag, SlotTag >::value, FunParamTypes_t > ColumnTypesTmp_t
RDFInternal::RemoveFirstTwoParametersIf_t< std::is_same< ExtraArgsTag, SlotAndEntryTag >::value, ColumnTypesTmp_t > ColumnTypes_t
typename CallableTraits< F >::arg_types FunParamTypes_t
RCustomColumn(RLoopManager *lm, std::string_view name, F &&expression, const ColumnNames_t &columns, unsigned int nSlots, const RDFInternal::RBookedCustomColumns &customColumns, bool isDSColumn=false)
void InitSlot(TTreeReader *r, unsigned int slot) final
ValuesPerSlot_t fLastResults
void * GetValuePtr(unsigned int slot) final
void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence< S... >, TypeList< BranchTypes... >, SlotAndEntryTag)
void Update(unsigned int slot, Long64_t entry) final
void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence< S... >, TypeList< BranchTypes... >, NoneTag)
The head node of a RDF computation graph.
Encapsulates the columns defined by the user.
bool HasName(std::string_view name) const
Check if the provided name is tracked in the names list.
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
basic_string_view< char > string_view
void InitRDFValues(unsigned int slot, RDFValueTuple &valueTuple, TTreeReader *r, const ColumnNames_t &bn, const RBookedCustomColumns &customCols, std::index_sequence< S... >, const std::array< bool, sizeof...(S)> &isCustomColumn)
Initialize a tuple of RColumnValues.
void ResetRDFValueTuple(std::vector< RTypeErasedColumnValue > &values, std::index_sequence< S... >, ROOT::TypeTraits::TypeList< ColTypes... >)
This overload is specialized to act on RTypeErasedColumnValues instead of RColumnValues.
ROOT type_traits extensions.
Namespace for new ROOT classes and functions.
ROOT::Detail::RDF::ColumnNames_t ColumnNames_t
RooArgSet S(const RooAbsArg &v1)
void forward(const LAYERDATA &prevLayerData, LAYERDATA &currLayerData)
apply the weights (and functions) in forward direction of the DNN
Lightweight storage for a collection of types.