# The Tree Data Structure

    {
       //
       // This macro displays the Tree data structures
       //
       gROOT.Reset();
       TCanvas *c1 = gROOT->FindObject("c1"); if (c1) c1->Delete();
       c1 = new TCanvas("c1","Tree Data Structure",200,10,700,900);
       c1->Range(0,-0.1,1,1.15);

       gBenchmark->Start("tree");

       TPaveLabel title(.3,1.05,.8,1.13,c1->GetTitle());
       title.SetFillColor(45);
       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("FARM");
       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.SetFillColor(49);
       branch0.Draw();
       TPaveLabel branch1(.40,.87,.55,.97,"Branch 1");
       branch1.SetFillColor(49);
       branch1.Draw();
       TPaveLabel branch2(.60,.87,.75,.97,"Branch 2");
       branch2.SetFillColor(49);
       branch2.Draw();
       TPaveLabel branch3(.80,.87,.95,.97,"Branch 3");
       branch3.SetFillColor(49);
       branch3.Draw();
       TPaveLabel leaf0(.4,.75,.5,.8,"Leaf 0");
       leaf0.SetFillColor(38);
       leaf0.Draw();
       TPaveLabel leaf1(.6,.75,.7,.8,"Leaf 1");
       leaf1.SetFillColor(38);
       leaf1.Draw();
       TPaveLabel leaf2(.8,.75,.9,.8,"Leaf 2");
       leaf2.SetFillColor(38);
       leaf2.Draw();
       TPaveText firstevent(.4,.35,.9,.4);
       firstevent.AddText("First event of each basket");
       firstevent.AddText("Array of fMaxBaskets Integers");
       firstevent.SetFillColor(24);
       firstevent.Draw();
       TPaveLabel basket0(.4,.25,.5,.3,"Basket 0");
       basket0.SetFillColor(24);
       basket0.Draw();
       TPaveLabel basket1(.6,.25,.7,.3,"Basket 1");
       basket1.SetFillColor(24);
       basket1.Draw();
       TPaveLabel basket2(.8,.25,.9,.3,"Basket 2");
       basket2.SetFillColor(24);
       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(28);
       offset.Draw();
       TPaveText buffer(.55,.05,.9,.1);
       buffer.AddText("Basket buffer");
       buffer.AddText("Array of fBasketSize chars");
       buffer.SetFillColor(28);
       buffer.Draw();
       TPaveText zipbuffer(.55,-.05,.75,.0);
       zipbuffer.AddText("Basket compressed buffer");
       zipbuffer.AddText("(if compression)");
       zipbuffer.SetFillColor(28);
       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,.6,.7);
       ntleaf.SetFillColor(38);
       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 count if variable");
       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(38);
       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(38);
       typecode.Draw();
       ldot.DrawLine(.4,.75,.30,.7);
       ldot.DrawLine(.5,.75,.6,.7);
       TPaveText ntbasket(0.02,-0.07,0.35,.25);
       ntbasket.SetFillColor(24);
       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(49);
       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 = Branch name");
       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(24);
       basketstore.AddText("Baskets");
       basketstore.AddText("Stores");
       basketstore.Draw();
       c1->Update();

       gBenchmark->Show("tree");
    }

[ROOT page] [Class index] [Top of the page]

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.