Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
CustomLoaderHelpers.hxx
Go to the documentation of this file.
1// Author: Vincenzo Eduardo Padulano CERN 10/2026
2// Author: Silia Taider CERN 10/2026
3
4#ifndef ROOT_RDF_CUSTOMLOADERHELPERS
5#define ROOT_RDF_CUSTOMLOADERHELPERS
6
8#include <ROOT/RVec.hxx>
9
10#include <cstddef>
11#include <memory>
12#include <typeinfo>
13#include <vector>
14
15class TTreeReader;
16
17namespace ROOT::Internal::RDF {
18
19class R__CLING_PTRCHECK(off) CustomLoaderHelper : public ROOT::Detail::RDF::RActionImpl<CustomLoaderHelper> {
20public:
21 /// Converts one type-erased column value to float and appends it to the destination vector,
22 /// vector columns are truncated or padded to their maximum size
23 using ColHandler_t = void (*)(ROOT::RVecF &, void *, std::size_t maxSize, float padding);
24
25private:
26 std::shared_ptr<ROOT::RVecF> fLocation;
27 /// One handler per input column, resolved once from the column types
28 std::vector<ColHandler_t> fColHandlers;
29 /// Maximum size of each input column, resolved once from the vector sizes, only used for vector columns
30 std::vector<std::size_t> fMaxSizes;
31 /// Value used to pad vector columns shorter than their maximum size
33
34public:
35 CustomLoaderHelper(const std::shared_ptr<ROOT::RVecF> &location,
36 const std::vector<const std::type_info *> &colTypeIDs, const std::vector<std::size_t> &vecSizes,
37 float vecPadding);
38
43 ~CustomLoaderHelper() override = default;
44
45 void InitTask(TTreeReader *, unsigned int) {}
46 // TODO(staider) Support multiple slots to also work in IMT mode
47 void Exec([[maybe_unused]] unsigned int slot, const std::vector<void *> &values);
48 void Initialize() { /* noop */ }
49 void Finalize() {}
50
51 std::string GetActionName() { return "CustomLoaderHelper"; }
52};
53} // namespace ROOT::Internal::RDF
54
55#endif // ROOT_RDF_CUSTOMLOADERHELPERS
Base class for action helpers, see RInterface::Book() for more information.
void(*)(ROOT::RVecF &, void *, std::size_t maxSize, float padding) ColHandler_t
Converts one type-erased column value to float and appends it to the destination vector,...
CustomLoaderHelper(CustomLoaderHelper &&)=default
float fVecPadding
Value used to pad vector columns shorter than their maximum size.
CustomLoaderHelper & operator=(CustomLoaderHelper &&)=default
CustomLoaderHelper(const CustomLoaderHelper &)=delete
CustomLoaderHelper & operator=(const CustomLoaderHelper &)=delete
void InitTask(TTreeReader *, unsigned int)
std::vector< ColHandler_t > fColHandlers
One handler per input column, resolved once from the column types.
std::shared_ptr< ROOT::RVecF > fLocation
std::vector< std::size_t > fMaxSizes
Maximum size of each input column, resolved once from the vector sizes, only used for vector columns.
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
Definition TTreeReader.h:46