ROOT logo
{
   //
   // This macro displays the Tree data structures
   //Author: Rene Brun
   
   gROOT->Reset();
   c1 = new TCanvas("c1","Tree Data Structure",200,10,750,940);
   c1->Range(0,-0.1,1,1.15);

   gBenchmark->Start("tree");

   Int_t branchcolor = 26;
   Int_t leafcolor   = 30;
   Int_t basketcolor = 42;
   Int_t offsetcolor = 43;
   TPaveLabel title(.3,1.05,.8,1.13,c1->GetTitle());
   title.SetFillColor(16);
   title.Draw();
   TPaveText tree(.01,.75,.15,1.00);
   tree.SetFillColor(18);
   tree.SetTextAlign(12);
   TText *tnt = tree.AddText("Tree");
   tnt.SetTextAlign(22);
   tnt.SetTextSize(0.030);
   tree.AddText("fScanField");
   tree.AddText("fMaxEventLoop");
   tree.AddText("fMaxVirtualSize");
   tree.AddText("fEntries");
   tree.AddText("fDimension");
   tree.AddText("fSelectedRows");
   tree.Draw();
   TPavesText farm(.01,1.02,.15,1.1,9,"tr");
   TText *tfarm = farm.AddText("CHAIN");
   tfarm.SetTextSize(0.024);
   farm.AddText("Collection");
   farm.AddText("of Trees");
   farm.Draw();
   TLine link(.15,.92,.80,.92);
   link.SetLineWidth(2);
   link.SetLineColor(1);
   link.Draw();
   link.DrawLine(.21,.87,.21,.275);
   link.DrawLine(.23,.87,.23,.375);
   link.DrawLine(.25,.87,.25,.775);
   link.DrawLine(.41,.25,.41,-.025);
   link.DrawLine(.43,.25,.43,.075);
   link.DrawLine(.45,.25,.45,.175);
   TPaveLabel branch0(.20,.87,.35,.97,"Branch 0");
   branch0.SetTextSize(0.35);
   branch0.SetFillColor(branchcolor);
   branch0.Draw();
   TPaveLabel branch1(.40,.87,.55,.97,"Branch 1");
   branch1.SetTextSize(0.35);
   branch1.SetFillColor(branchcolor);
   branch1.Draw();
   TPaveLabel branch2(.60,.87,.75,.97,"Branch 2");
   branch2.SetTextSize(0.35);
   branch2.SetFillColor(branchcolor);
   branch2.Draw();
   TPaveLabel branch3(.80,.87,.95,.97,"Branch 3");
   branch3.SetTextSize(0.35);
   branch3.SetFillColor(branchcolor);
   branch3.Draw();
   TPaveLabel leaf0(.4,.75,.5,.8,"Leaf 0");
   leaf0.SetFillColor(leafcolor);
   leaf0.Draw();
   TPaveLabel leaf1(.6,.75,.7,.8,"Leaf 1");
   leaf1.SetFillColor(leafcolor);
   leaf1.Draw();
   TPaveLabel leaf2(.8,.75,.9,.8,"Leaf 2");
   leaf2.SetFillColor(leafcolor);
   leaf2.Draw();
   TPaveText firstevent(.4,.35,.9,.4);
   firstevent.AddText("First event of each basket");
   firstevent.AddText("Array of fMaxBaskets Integers");
   firstevent.SetFillColor(basketcolor);
   firstevent.Draw();
   TPaveLabel basket0(.4,.25,.5,.3,"Basket 0");
   basket0.SetFillColor(basketcolor);
   basket0.Draw();
   TPaveLabel basket1(.6,.25,.7,.3,"Basket 1");
   basket1.SetFillColor(basketcolor);
   basket1.Draw();
   TPaveLabel basket2(.8,.25,.9,.3,"Basket 2");
   basket2.SetFillColor(basketcolor);
   basket2.Draw();

   TPaveText offset(.55,.15,.9,.2);
   offset.AddText("Offset of events in fBuffer");
   offset.AddText("Array of fEventOffsetLen Integers");
   offset.AddText("(if variable length structure)");
   offset.SetFillColor(offsetcolor);
   offset.Draw();
   TPaveText buffer(.55,.05,.9,.1);
   buffer.AddText("Basket buffer");
   buffer.AddText("Array of fBasketSize chars");
   buffer.SetFillColor(offsetcolor);
   buffer.Draw();
   TPaveText zipbuffer(.55,-.05,.75,.0);
   zipbuffer.AddText("Basket compressed buffer");
   zipbuffer.AddText("(if compression)");
   zipbuffer.SetFillColor(offsetcolor);
   zipbuffer.Draw();
   TArrow ar1;
   ar1.SetLineWidth(2);
   ar1.SetLineColor(1);
   ar1.SetFillStyle(1001);
   ar1.SetFillColor(1);
   ar1.DrawArrow(.21,.275,.39,.275,0.015,"|>");
   ar1.DrawArrow(.23,.375,.39,.375,0.015,"|>");
   ar1.DrawArrow(.25,.775,.39,.775,0.015,"|>");
   ar1.DrawArrow(.50,.775,.59,.775,0.015,"|>");
   ar1.DrawArrow(.70,.775,.79,.775,0.015,"|>");
   ar1.DrawArrow(.50,.275,.59,.275,0.015,"|>");
   ar1.DrawArrow(.70,.275,.79,.275,0.015,"|>");
   ar1.DrawArrow(.45,.175,.54,.175,0.015,"|>");
   ar1.DrawArrow(.43,.075,.54,.075,0.015,"|>");
   ar1.DrawArrow(.41,-.025,.54,-.025,0.015,"|>");
   TLine ldot(.95,.92,.99,.92);
   ldot.SetLineStyle(3);
   ldot.Draw();
   ldot.DrawLine(.9,.775,.99,.775);
   ldot.DrawLine(.9,.275,.99,.275);
   ldot.DrawLine(.55,.05,.55,0);
   ldot.DrawLine(.9,.05,.75,0);
   TText pname(.46,.21,"fEventOffset");
   pname.SetTextFont(72);
   pname.SetTextSize(0.018);
   pname.Draw();
   pname.DrawText(.44,.11,"fBuffer");
   pname.DrawText(.42,.01,"fZipBuffer");
   pname.DrawText(.26,.81,"fLeaves = TObjArray of TLeaf");
   pname.DrawText(.24,.40,"fBasketEvent");
   pname.DrawText(.22,.31,"fBaskets = TObjArray of TBasket");
   pname.DrawText(.20,1.0,"fBranches = TObjArray of TBranch");
   TPaveText ntleaf(0.30,.42,.62,.7);
   ntleaf.SetTextSize(0.014);
   ntleaf.SetFillColor(leafcolor);
   ntleaf.SetTextAlign(12);
   ntleaf.AddText("fLen: number of fixed elements");
   ntleaf.AddText("fLenType: number of bytes of data type");
   ntleaf.AddText("fOffset: relative to Leaf0-fAddress");
   ntleaf.AddText("fNbytesIO: number of bytes used for I/O");
   ntleaf.AddText("fIsPointer: True if pointer");
   ntleaf.AddText("fIsRange: True if leaf has a range");
   ntleaf.AddText("fIsUnsigned: True if unsigned");
   ntleaf.AddText("*fLeafCount: points to Leaf counter");
   ntleaf.AddText(" ");
   ntleaf.AddLine(0,0,0,0);
   ntleaf.AddText("fName = Leaf name");
   ntleaf.AddText("fTitle = Leaf type (see Type codes)");
   ntleaf.Draw();
   TPaveText type(.65,.42,.95,.7);
   type.SetTextAlign(12);
   type.SetFillColor(leafcolor);
   type.AddText(" ");
   type.AddText("C : a character string");
   type.AddText("B : an 8 bit signed integer");
   type.AddText("b : an 8 bit unsigned integer");
   type.AddText("S : a 16 bit signed short integer");
   type.AddText("s : a 16 bit unsigned short integer");
   type.AddText("I : a 32 bit signed integer");
   type.AddText("i : a 32 bit unsigned integer");
   type.AddText("F : a 32 bit floating point");
   type.AddText("D : a 64 bit floating point");
   type.AddText("TXXXX : a class name TXXXX");
   type.Draw();
   TPaveLabel typecode(.7,.68,.9,.72,"fType codes");
   typecode.SetFillColor(leafcolor);
   typecode.Draw();
   ldot.DrawLine(.4,.75,.30,.7);
   ldot.DrawLine(.5,.75,.62,.7);
   TPaveText ntbasket(0.02,-0.07,0.35,.25);
   ntbasket.SetFillColor(basketcolor);
   ntbasket.SetTextSize(0.014);
   ntbasket.SetTextAlign(12);
   ntbasket.AddText("fNbytes: Size of compressed Basket");
   ntbasket.AddText("fObjLen: Size of uncompressed Basket");
   ntbasket.AddText("fDatime: Date/Time when written to store");
   ntbasket.AddText("fKeylen: Number of bytes for the key");
   ntbasket.AddText("fCycle : Cycle number");
   ntbasket.AddText("fSeekKey: Pointer to Basket on file");
   ntbasket.AddText("fSeekPdir: Pointer to directory on file");
   ntbasket.AddText("fClassName: 'TBasket'");
   ntbasket.AddText("fName: Branch name");
   ntbasket.AddText("fTitle: Tree name");
   ntbasket.AddText(" ");
   ntbasket.AddLine(0,0,0,0);
   ntbasket.AddText("fNevBuf: Number of events in Basket");
   ntbasket.AddText("fLast: pointer to last used byte in Basket");
   ntbasket.Draw();
   ldot.DrawLine(.4,.3,0.02,0.25);
   ldot.DrawLine(.5,.25,0.35,-.07);
   ldot.DrawLine(.5,.3,0.35,0.25);
   TPaveText ntbranch(0.02,0.40,0.18,0.68);
   ntbranch.SetFillColor(branchcolor);
   ntbranch.SetTextSize(0.015);
   ntbranch.SetTextAlign(12);
   ntbranch.AddText("fBasketSize");
   ntbranch.AddText("fEventOffsetLen");
   ntbranch.AddText("fMaxBaskets");
   ntbranch.AddText("fEntries");
   ntbranch.AddText("fAddress of Leaf0");
   ntbranch.AddText(" ");
   ntbranch.AddLine(0,0,0,0);
   ntbranch.AddText("fName: Branchname");
   ntbranch.AddText("fTitle: leaflist");
   ntbranch.Draw();
   ldot.DrawLine(.2,.97,.02,.68);
   ldot.DrawLine(.35,.97,.18,.68);
   ldot.DrawLine(.35,.87,.18,.40);
   TPavesText basketstore(.8,-0.088,0.952,-0.0035,7,"tr");
   basketstore.SetFillColor(28);
   basketstore.AddText("Baskets");
   basketstore.AddText("Stores");
   basketstore.Draw();
   c1->Update();

   gBenchmark->Show("tree");
}
 tree.C:1
 tree.C:2
 tree.C:3
 tree.C:4
 tree.C:5
 tree.C:6
 tree.C:7
 tree.C:8
 tree.C:9
 tree.C:10
 tree.C:11
 tree.C:12
 tree.C:13
 tree.C:14
 tree.C:15
 tree.C:16
 tree.C:17
 tree.C:18
 tree.C:19
 tree.C:20
 tree.C:21
 tree.C:22
 tree.C:23
 tree.C:24
 tree.C:25
 tree.C:26
 tree.C:27
 tree.C:28
 tree.C:29
 tree.C:30
 tree.C:31
 tree.C:32
 tree.C:33
 tree.C:34
 tree.C:35
 tree.C:36
 tree.C:37
 tree.C:38
 tree.C:39
 tree.C:40
 tree.C:41
 tree.C:42
 tree.C:43
 tree.C:44
 tree.C:45
 tree.C:46
 tree.C:47
 tree.C:48
 tree.C:49
 tree.C:50
 tree.C:51
 tree.C:52
 tree.C:53
 tree.C:54
 tree.C:55
 tree.C:56
 tree.C:57
 tree.C:58
 tree.C:59
 tree.C:60
 tree.C:61
 tree.C:62
 tree.C:63
 tree.C:64
 tree.C:65
 tree.C:66
 tree.C:67
 tree.C:68
 tree.C:69
 tree.C:70
 tree.C:71
 tree.C:72
 tree.C:73
 tree.C:74
 tree.C:75
 tree.C:76
 tree.C:77
 tree.C:78
 tree.C:79
 tree.C:80
 tree.C:81
 tree.C:82
 tree.C:83
 tree.C:84
 tree.C:85
 tree.C:86
 tree.C:87
 tree.C:88
 tree.C:89
 tree.C:90
 tree.C:91
 tree.C:92
 tree.C:93
 tree.C:94
 tree.C:95
 tree.C:96
 tree.C:97
 tree.C:98
 tree.C:99
 tree.C:100
 tree.C:101
 tree.C:102
 tree.C:103
 tree.C:104
 tree.C:105
 tree.C:106
 tree.C:107
 tree.C:108
 tree.C:109
 tree.C:110
 tree.C:111
 tree.C:112
 tree.C:113
 tree.C:114
 tree.C:115
 tree.C:116
 tree.C:117
 tree.C:118
 tree.C:119
 tree.C:120
 tree.C:121
 tree.C:122
 tree.C:123
 tree.C:124
 tree.C:125
 tree.C:126
 tree.C:127
 tree.C:128
 tree.C:129
 tree.C:130
 tree.C:131
 tree.C:132
 tree.C:133
 tree.C:134
 tree.C:135
 tree.C:136
 tree.C:137
 tree.C:138
 tree.C:139
 tree.C:140
 tree.C:141
 tree.C:142
 tree.C:143
 tree.C:144
 tree.C:145
 tree.C:146
 tree.C:147
 tree.C:148
 tree.C:149
 tree.C:150
 tree.C:151
 tree.C:152
 tree.C:153
 tree.C:154
 tree.C:155
 tree.C:156
 tree.C:157
 tree.C:158
 tree.C:159
 tree.C:160
 tree.C:161
 tree.C:162
 tree.C:163
 tree.C:164
 tree.C:165
 tree.C:166
 tree.C:167
 tree.C:168
 tree.C:169
 tree.C:170
 tree.C:171
 tree.C:172
 tree.C:173
 tree.C:174
 tree.C:175
 tree.C:176
 tree.C:177
 tree.C:178
 tree.C:179
 tree.C:180
 tree.C:181
 tree.C:182
 tree.C:183
 tree.C:184
 tree.C:185
 tree.C:186
 tree.C:187
 tree.C:188
 tree.C:189
 tree.C:190
 tree.C:191
 tree.C:192
 tree.C:193
 tree.C:194
 tree.C:195
 tree.C:196
 tree.C:197
 tree.C:198
 tree.C:199
 tree.C:200
 tree.C:201
 tree.C:202
 tree.C:203
 tree.C:204
 tree.C:205
 tree.C:206
 tree.C:207
 tree.C:208
 tree.C:209
 tree.C:210
 tree.C:211
 tree.C:212
 tree.C:213
 tree.C:214
 tree.C:215
 tree.C:216
 tree.C:217
 tree.C:218
 tree.C:219
 tree.C:220
 tree.C:221