Logo ROOT  
Reference Guide
No Matches
df034_SaveGraph.C File Reference

Detailed Description

View in nbviewer Open in SWAN
Basic SaveGraph usage.

This tutorial shows how to use the SaveGraph action. SaveGraph inspects the sequence of RDataFrame actions.

// First, an RDataFrame computation graph is created with Defines, Filters and methods such as Mean, Count, etc.
// After that, SaveGraph can be called either on the root RDataFrame object or on a specific node of the computation
// graph: in the first case, the graph returned will span the full computation graph, in the second case it will show
// only the branch of the computation graph that the node belongs to.
// If a filename is passed as second argument, the graph is saved to that file, otherwise it is returned as a string.
R__LOAD_LIBRARY(ROOTDataFrame) // only required for ROOT installations without runtime_cxxmodules
auto rd2 = rd1.Define("Root_def1", "1").Filter("Root_def1 < 2", "Main_Filter").Define("Root_def2", "1");
auto branch1 = rd2.Define("Branch_1_def", "1");
auto branch2 = rd2.Define("Branch_2_def", "1");
ROOT::RDF::RResultPtr<double> branch1_1 = branch1.Filter("Branch_1_def < 2", "Filter_1")
.Define("Branch_1_1_def", "1")
.Filter("1 == Branch_1_1_def % 2", "Filter_1_1")
branch1.Define("Branch_1_2_def", "1").Filter("Branch_1_2_def < 2", "Filter_1_2").Count();
ROOT::RDF::RResultPtr<double> branch2_1 = branch2.Filter("Branch_2_def < 2", "Filter_2")
.Define("Branch_2_1_def", "1")
.Define("Branch_2_2_def", "1")
.Filter("1 == Branch_2_1_def % 2", "Filter_2_1")
ROOT::RDF::RResultPtr<unsigned long long> branch2_2 = branch2.Count();
std::cout << ROOT::RDF::SaveGraph(branch1_1);
ROOT::RDF::SaveGraph(rd1, /*output_file=*/"rdf_savegraph_tutorial.dot");
// SaveGraph produces content in the standard DOT file format
// (https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29): it can be converted to e.g. an image file
// using standard tools such as the `dot` CLI program.
gSystem->Exec("dot -Tpng rdf_savegraph_tutorial.dot -o rdf_savegraph_tutorial.png");
Definition Rtypes.h:491
R__EXTERN TSystem * gSystem
Definition TSystem.h:560
Smart pointer for the return type of actions.
ROOT's RDataFrame offers a modern, high-level interface for analysis of data stored in TTree ,...
virtual Int_t Exec(const char *shellcmd)
Execute a command.
Definition TSystem.cxx:640
std::string SaveGraph(NodeType node)
Create a graphviz representation of the dataframe computation graph, return it as a string.
digraph {
8 [label="Mean", style="filled", fillcolor="#e47c7e", shape="box"];
6 [label="Filter_1_1", style="filled", fillcolor="#0f9d58", shape="hexagon"];
7 [label="Define\nBranch_1_1_def", style="filled", fillcolor="#4285f4", shape="ellipse"];
3 [label="Filter_1", style="filled", fillcolor="#0f9d58", shape="hexagon"];
4 [label="Define\nBranch_1_def", style="filled", fillcolor="#4285f4", shape="ellipse"];
5 [label="Define\nRoot_def2", style="filled", fillcolor="#4285f4", shape="ellipse"];
1 [label="Main_Filter", style="filled", fillcolor="#0f9d58", shape="hexagon"];
2 [label="Define\nRoot_def1", style="filled", fillcolor="#4285f4", shape="ellipse"];
0 [label="Empty source\nEntries: 1", style="filled", fillcolor="#f4b400", shape="ellipse"];
6 -> 8;
7 -> 6;
3 -> 7;
4 -> 3;
5 -> 4;
1 -> 5;
2 -> 1;
0 -> 2;
January 2022
Ivan Kabadzhov (CERN)

Definition in file df034_SaveGraph.C.