Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
eval.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_graphics
3 /// \notebook -js
4 /// This macro produces the flowchart of TFormula::Eval.
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \author Rene Brun
10 
11 void eval(){
12 
13  TCanvas *c1 = new TCanvas("c1");
14  c1->Range(0,0,20,10);
15  TPaveLabel *pt1 = new TPaveLabel(0.2,4,3,6,"Eval");
16  pt1->SetTextSize(0.5);
17  pt1->SetFillColor(42);
18  pt1->Draw();
19  TPaveText *pt2 = new TPaveText(4.5,4,7.8,6);
20  pt2->Draw();
21  TText *t1 = pt2->AddText("Read Operator");
22  TText *t2 = pt2->AddText("number i");
23  TPaveText *pt3 = new TPaveText(9,3.5,17.5,6.5);
24  TText *t4 = pt3->AddText("Apply Operator to current stack values");
25  TText *t5 = pt3->AddText("Example: if operator +");
26  TText *t6 = pt3->AddText("value[i] += value[i-1]");
27  t4->SetTextAlign(22);
28  t5->SetTextAlign(22);
29  t6->SetTextAlign(22);
30  t5->SetTextColor(4);
31  t6->SetTextColor(2);
32  pt3->Draw();
33  TPaveLabel *pt4 = new TPaveLabel(4,0.5,12,2.5,"return result = value[i]");
34  pt4->Draw();
35  TArrow *ar1 = new TArrow(6,4,6,2.7,0.02,"|>");
36  ar1->Draw();
37  TText *t7 = new TText(6.56,2.7,"if i = number of stack elements");
38  t7->SetTextSize(0.04);
39  t7->Draw();
40  ar1->DrawArrow(6,8,6,6.2,0.02,"|>");
41  TLine *l1 = new TLine(12,6.6,12,8);
42  l1->Draw();
43  l1->DrawLine(12,8,6,8);
44  ar1->DrawArrow(3,5,4.4,5,0.02,"|>");
45  ar1->DrawArrow(7.8,5,8.9,5,0.02,"|>");
46 }
47