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>;
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;
101 template <std::size_t...
S,
typename... BranchTypes>
110 template <std::size_t...
S,
typename... BranchTypes>
119 template <std::size_t...
S,
typename... BranchTypes>
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
RDFInternal::RBookedCustomColumns fCustomColumns
const unsigned int fNSlots
number of thread slots used by this node, inherited from parent node.
std::make_index_sequence< ColumnTypes_t::list_size > TypeInd_t
const ColumnNames_t fBranches
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
RCustomColumn(const RCustomColumn &)=delete
const std::type_info & GetTypeId() const
RCustomColumn(RLoopManager *lm, std::string_view name, F &&expression, const ColumnNames_t &bl, unsigned int nSlots, const RDFInternal::RBookedCustomColumns &customColumns, bool isDSColumn=false)
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
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.
A simple, robust and fast interface to read values from ROOT colmnar datasets such as TTree,...
void InitRDFValues(unsigned int slot, RDFValueTuple &valueTuple, TTreeReader *r, const ColumnNames_t &bn, const RBookedCustomColumns &customCols, std::index_sequence< S... >)
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
basic_string_view< char > string_view
make_integer_sequence< size_t, _Np > make_index_sequence
Lightweight storage for a collection of types.