20std::shared_ptr<GraphDrawing::GraphNode>
22 std::unordered_map<
void *, std::shared_ptr<GraphNode>> &
visitedMap)
30 auto node = std::make_shared<GraphNode>(
"Define\\n" +
columnName,
visitedMap.size(), ENodeType::kDefine);
35std::shared_ptr<GraphDrawing::GraphNode>
37 std::unordered_map<
void *, std::shared_ptr<GraphNode>> &
visitedMap)
52std::shared_ptr<GraphDrawing::GraphNode>
54 std::unordered_map<
void *, std::shared_ptr<GraphNode>> &
visitedMap)
63 auto node = std::make_shared<GraphNode>(
"Range",
visitedMap.size(), ENodeType::kRange);
68std::shared_ptr<GraphDrawing::GraphNode>
71 std::unordered_map<
void *, std::shared_ptr<GraphNode>> &
visitedMap)
75 for (
auto i =
int(
defineNames.size()) - 1; i >= 0; --i) {
95namespace GraphDrawing {
108 <<
"\", style=\"filled\", fillcolor=\"" <<
leaf->GetColor() <<
"\", shape=\"" <<
leaf->GetShape()
110 if (
leaf->GetPrevNode()) {
128 while (
leaf && !
leaf->IsExplored()) {
130 <<
"\", style=\"filled\", fillcolor=\"" <<
leaf->GetColor() <<
"\", shape=\""
131 <<
leaf->GetShape() <<
"\"];\n";
132 if (
leaf->GetPrevNode()) {
157 std::vector<std::shared_ptr<GraphNode>> nodes;
158 nodes.reserve(
actions.size() + edges.size());
162 for (
auto *
edge : edges)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
The head node of a RDF computation graph.
std::string FromGraphLeafToDot(const GraphNode &leaf) const
Starting from any leaf (Action, Filter, Range) it draws the dot representation of the branch.
std::string RepresentGraph(ROOT::RDataFrame &rDataFrame)
Starting from the root node, prints the entire graph.
std::string FromGraphActionsToDot(std::vector< std::shared_ptr< GraphNode > > leaves) const
Starting by an array of leaves, it draws the entire graph.
std::unordered_map< void *, std::shared_ptr< GraphNode > > fVisitedMap
Map to keep track of visited nodes when constructing the computation graph (SaveGraph)
Class used to create the operation graph to be printed in the dot representation.
A binder for user-defined columns, variations and aliases.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
const_iterator begin() const
const_iterator end() const
std::shared_ptr< GraphNode > CreateFilterNode(const ROOT::Detail::RDF::RFilterBase *filterPtr, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
std::shared_ptr< GraphNode > CreateRangeNode(const ROOT::Detail::RDF::RRangeBase *rangePtr, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
std::shared_ptr< GraphNode > AddDefinesToGraph(std::shared_ptr< GraphNode > node, const RColumnRegister &colRegister, const std::vector< std::string > &prevNodeDefines, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
std::shared_ptr< GraphNode > CreateDefineNode(const std::string &columnName, const ROOT::Detail::RDF::RDefineBase *columnPtr, std::unordered_map< void *, std::shared_ptr< GraphNode > > &visitedMap)
bool IsInternalColumn(std::string_view colName)
Whether custom column with name colName is an "internal" column such as rdfentry_ or rdfslot_.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...