This tutorial shows how to use the SaveGraph action. SaveGraph inspects the sequence of RDataFrame actions.
 
 
void df034_SaveGraph()
{
   auto rd2 = 
rd1.Define(
"Root_def1", 
"1").Filter(
"Root_def1 < 2", 
"Main_Filter").Define(
"Root_def2", 
"1");
 
 
 
                                                .Define("Branch_1_1_def", "1")
                                                .Filter("1 == Branch_1_1_def % 2", "Filter_1_1")
                                                .Mean("Branch_1_1_def");
 
      branch1.Define(
"Branch_1_2_def", 
"1").Filter(
"Branch_1_2_def < 2", 
"Filter_1_2").Count();
 
 
                                                .Define("Branch_2_1_def", "1")
                                                .Define("Branch_2_2_def", "1")
                                                .Filter("1 == Branch_2_1_def % 2", "Filter_2_1")
                                                .Max("Branch_2_1_def");
 
 
   
   
   
   gSystem->
Exec(
"dot -Tpng rdf_savegraph_tutorial.dot -o rdf_savegraph_tutorial.png");
 
}
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TSystem * gSystem
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.
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;
}