From $ROOTSYS/tutorials/graphics/eval.C

void eval(){
   //
   // This macro produces the flowchart of TFormula::Eval
   //Author: Rene Brun

   TCanvas *c1 = new TCanvas("c1");
   c1->Range(0,0,20,10);
   TPaveLabel *pt1 = new TPaveLabel(0.2,4,3,6,"Eval");
   pt1->SetTextSize(0.5);
   pt1->SetFillColor(42);
   pt1->Draw();
   TPaveText *pt2 = new TPaveText(4.5,4,7.8,6);
   pt2->Draw();
   TText *t1 = pt2->AddText("Read Operator");
   TText *t2 = pt2->AddText("number i");
   TPaveText *pt3 = new TPaveText(9,3.5,17.5,6.5);
   TText *t4 = pt3->AddText("Apply Operator to current stack values");
   TText *t5 = pt3->AddText("Example: if operator +");
   TText *t6 = pt3->AddText("value[i] += value[i-1]");
   t4->SetTextAlign(22);
   t5->SetTextAlign(22);
   t6->SetTextAlign(22);
   t5->SetTextColor(4);
   t6->SetTextColor(2);
   pt3->Draw();
   TPaveLabel *pt4 = new TPaveLabel(4,0.5,12,2.5,"return result = value[i]");
   pt4->Draw();
   TArrow *ar1 = new TArrow(6,4,6,2.7,0.02,"|>");
   ar1->Draw();
   TText *t7 = new TText(6.56,2.7,"if i = number of stack elements");
   t7->SetTextSize(0.04);
   t7->Draw();
   ar1->DrawArrow(6,8,6,6.2,0.02,"|>");
   TLine *l1 = new TLine(12,6.6,12,8);
   l1->Draw();
   l1->DrawLine(12,8,6,8);
   ar1->DrawArrow(3,5,4.4,5,0.02,"|>");
   ar1->DrawArrow(7.8,5,8.9,5,0.02,"|>");
}

 eval.C:1
 eval.C:2
 eval.C:3
 eval.C:4
 eval.C:5
 eval.C:6
 eval.C:7
 eval.C:8
 eval.C:9
 eval.C:10
 eval.C:11
 eval.C:12
 eval.C:13
 eval.C:14
 eval.C:15
 eval.C:16
 eval.C:17
 eval.C:18
 eval.C:19
 eval.C:20
 eval.C:21
 eval.C:22
 eval.C:23
 eval.C:24
 eval.C:25
 eval.C:26
 eval.C:27
 eval.C:28
 eval.C:29
 eval.C:30
 eval.C:31
 eval.C:32
 eval.C:33
 eval.C:34
 eval.C:35
 eval.C:36
 eval.C:37
 eval.C:38
 eval.C:39
 eval.C:40
 eval.C:41