tree.C

Go to the documentation of this file.
00001 {
00002    //
00003    // This macro displays the Tree data structures
00004    //Author: Rene Brun
00005    
00006    gROOT->Reset();
00007    c1 = new TCanvas("c1","Tree Data Structure",200,10,750,940);
00008    c1->Range(0,-0.1,1,1.15);
00009 
00010    gBenchmark->Start("tree");
00011 
00012    Int_t branchcolor = 26;
00013    Int_t leafcolor   = 30;
00014    Int_t basketcolor = 42;
00015    Int_t offsetcolor = 43;
00016    TPaveLabel title(.3,1.05,.8,1.13,c1->GetTitle());
00017    title.SetFillColor(16);
00018    title.Draw();
00019    TPaveText tree(.01,.75,.15,1.00);
00020    tree.SetFillColor(18);
00021    tree.SetTextAlign(12);
00022    TText *tnt = tree.AddText("Tree");
00023    tnt.SetTextAlign(22);
00024    tnt.SetTextSize(0.030);
00025    tree.AddText("fScanField");
00026    tree.AddText("fMaxEventLoop");
00027    tree.AddText("fMaxVirtualSize");
00028    tree.AddText("fEntries");
00029    tree.AddText("fDimension");
00030    tree.AddText("fSelectedRows");
00031    tree.Draw();
00032    TPavesText farm(.01,1.02,.15,1.1,9,"tr");
00033    TText *tfarm = farm.AddText("CHAIN");
00034    tfarm.SetTextSize(0.024);
00035    farm.AddText("Collection");
00036    farm.AddText("of Trees");
00037    farm.Draw();
00038    TLine link(.15,.92,.80,.92);
00039    link.SetLineWidth(2);
00040    link.SetLineColor(1);
00041    link.Draw();
00042    link.DrawLine(.21,.87,.21,.275);
00043    link.DrawLine(.23,.87,.23,.375);
00044    link.DrawLine(.25,.87,.25,.775);
00045    link.DrawLine(.41,.25,.41,-.025);
00046    link.DrawLine(.43,.25,.43,.075);
00047    link.DrawLine(.45,.25,.45,.175);
00048    TPaveLabel branch0(.20,.87,.35,.97,"Branch 0");
00049    branch0.SetTextSize(0.35);
00050    branch0.SetFillColor(branchcolor);
00051    branch0.Draw();
00052    TPaveLabel branch1(.40,.87,.55,.97,"Branch 1");
00053    branch1.SetTextSize(0.35);
00054    branch1.SetFillColor(branchcolor);
00055    branch1.Draw();
00056    TPaveLabel branch2(.60,.87,.75,.97,"Branch 2");
00057    branch2.SetTextSize(0.35);
00058    branch2.SetFillColor(branchcolor);
00059    branch2.Draw();
00060    TPaveLabel branch3(.80,.87,.95,.97,"Branch 3");
00061    branch3.SetTextSize(0.35);
00062    branch3.SetFillColor(branchcolor);
00063    branch3.Draw();
00064    TPaveLabel leaf0(.4,.75,.5,.8,"Leaf 0");
00065    leaf0.SetFillColor(leafcolor);
00066    leaf0.Draw();
00067    TPaveLabel leaf1(.6,.75,.7,.8,"Leaf 1");
00068    leaf1.SetFillColor(leafcolor);
00069    leaf1.Draw();
00070    TPaveLabel leaf2(.8,.75,.9,.8,"Leaf 2");
00071    leaf2.SetFillColor(leafcolor);
00072    leaf2.Draw();
00073    TPaveText firstevent(.4,.35,.9,.4);
00074    firstevent.AddText("First event of each basket");
00075    firstevent.AddText("Array of fMaxBaskets Integers");
00076    firstevent.SetFillColor(basketcolor);
00077    firstevent.Draw();
00078    TPaveLabel basket0(.4,.25,.5,.3,"Basket 0");
00079    basket0.SetFillColor(basketcolor);
00080    basket0.Draw();
00081    TPaveLabel basket1(.6,.25,.7,.3,"Basket 1");
00082    basket1.SetFillColor(basketcolor);
00083    basket1.Draw();
00084    TPaveLabel basket2(.8,.25,.9,.3,"Basket 2");
00085    basket2.SetFillColor(basketcolor);
00086    basket2.Draw();
00087 
00088    TPaveText offset(.55,.15,.9,.2);
00089    offset.AddText("Offset of events in fBuffer");
00090    offset.AddText("Array of fEventOffsetLen Integers");
00091    offset.AddText("(if variable length structure)");
00092    offset.SetFillColor(offsetcolor);
00093    offset.Draw();
00094    TPaveText buffer(.55,.05,.9,.1);
00095    buffer.AddText("Basket buffer");
00096    buffer.AddText("Array of fBasketSize chars");
00097    buffer.SetFillColor(offsetcolor);
00098    buffer.Draw();
00099    TPaveText zipbuffer(.55,-.05,.75,.0);
00100    zipbuffer.AddText("Basket compressed buffer");
00101    zipbuffer.AddText("(if compression)");
00102    zipbuffer.SetFillColor(offsetcolor);
00103    zipbuffer.Draw();
00104    TArrow ar1;
00105    ar1.SetLineWidth(2);
00106    ar1.SetLineColor(1);
00107    ar1.SetFillStyle(1001);
00108    ar1.SetFillColor(1);
00109    ar1.DrawArrow(.21,.275,.39,.275,0.015,"|>");
00110    ar1.DrawArrow(.23,.375,.39,.375,0.015,"|>");
00111    ar1.DrawArrow(.25,.775,.39,.775,0.015,"|>");
00112    ar1.DrawArrow(.50,.775,.59,.775,0.015,"|>");
00113    ar1.DrawArrow(.70,.775,.79,.775,0.015,"|>");
00114    ar1.DrawArrow(.50,.275,.59,.275,0.015,"|>");
00115    ar1.DrawArrow(.70,.275,.79,.275,0.015,"|>");
00116    ar1.DrawArrow(.45,.175,.54,.175,0.015,"|>");
00117    ar1.DrawArrow(.43,.075,.54,.075,0.015,"|>");
00118    ar1.DrawArrow(.41,-.025,.54,-.025,0.015,"|>");
00119    TLine ldot(.95,.92,.99,.92);
00120    ldot.SetLineStyle(3);
00121    ldot.Draw();
00122    ldot.DrawLine(.9,.775,.99,.775);
00123    ldot.DrawLine(.9,.275,.99,.275);
00124    ldot.DrawLine(.55,.05,.55,0);
00125    ldot.DrawLine(.9,.05,.75,0);
00126    TText pname(.46,.21,"fEventOffset");
00127    pname.SetTextFont(72);
00128    pname.SetTextSize(0.018);
00129    pname.Draw();
00130    pname.DrawText(.44,.11,"fBuffer");
00131    pname.DrawText(.42,.01,"fZipBuffer");
00132    pname.DrawText(.26,.81,"fLeaves = TObjArray of TLeaf");
00133    pname.DrawText(.24,.40,"fBasketEvent");
00134    pname.DrawText(.22,.31,"fBaskets = TObjArray of TBasket");
00135    pname.DrawText(.20,1.0,"fBranches = TObjArray of TBranch");
00136    TPaveText ntleaf(0.30,.42,.62,.7);
00137    ntleaf.SetTextSize(0.014);
00138    ntleaf.SetFillColor(leafcolor);
00139    ntleaf.SetTextAlign(12);
00140    ntleaf.AddText("fLen: number of fixed elements");
00141    ntleaf.AddText("fLenType: number of bytes of data type");
00142    ntleaf.AddText("fOffset: relative to Leaf0-fAddress");
00143    ntleaf.AddText("fNbytesIO: number of bytes used for I/O");
00144    ntleaf.AddText("fIsPointer: True if pointer");
00145    ntleaf.AddText("fIsRange: True if leaf has a range");
00146    ntleaf.AddText("fIsUnsigned: True if unsigned");
00147    ntleaf.AddText("*fLeafCount: points to Leaf counter");
00148    ntleaf.AddText(" ");
00149    ntleaf.AddLine(0,0,0,0);
00150    ntleaf.AddText("fName = Leaf name");
00151    ntleaf.AddText("fTitle = Leaf type (see Type codes)");
00152    ntleaf.Draw();
00153    TPaveText type(.65,.42,.95,.7);
00154    type.SetTextAlign(12);
00155    type.SetFillColor(leafcolor);
00156    type.AddText(" ");
00157    type.AddText("C : a character string");
00158    type.AddText("B : an 8 bit signed integer");
00159    type.AddText("b : an 8 bit unsigned integer");
00160    type.AddText("S : a 16 bit signed short integer");
00161    type.AddText("s : a 16 bit unsigned short integer");
00162    type.AddText("I : a 32 bit signed integer");
00163    type.AddText("i : a 32 bit unsigned integer");
00164    type.AddText("F : a 32 bit floating point");
00165    type.AddText("D : a 64 bit floating point");
00166    type.AddText("TXXXX : a class name TXXXX");
00167    type.Draw();
00168    TPaveLabel typecode(.7,.68,.9,.72,"fType codes");
00169    typecode.SetFillColor(leafcolor);
00170    typecode.Draw();
00171    ldot.DrawLine(.4,.75,.30,.7);
00172    ldot.DrawLine(.5,.75,.62,.7);
00173    TPaveText ntbasket(0.02,-0.07,0.35,.25);
00174    ntbasket.SetFillColor(basketcolor);
00175    ntbasket.SetTextSize(0.014);
00176    ntbasket.SetTextAlign(12);
00177    ntbasket.AddText("fNbytes: Size of compressed Basket");
00178    ntbasket.AddText("fObjLen: Size of uncompressed Basket");
00179    ntbasket.AddText("fDatime: Date/Time when written to store");
00180    ntbasket.AddText("fKeylen: Number of bytes for the key");
00181    ntbasket.AddText("fCycle : Cycle number");
00182    ntbasket.AddText("fSeekKey: Pointer to Basket on file");
00183    ntbasket.AddText("fSeekPdir: Pointer to directory on file");
00184    ntbasket.AddText("fClassName: 'TBasket'");
00185    ntbasket.AddText("fName: Branch name");
00186    ntbasket.AddText("fTitle: Tree name");
00187    ntbasket.AddText(" ");
00188    ntbasket.AddLine(0,0,0,0);
00189    ntbasket.AddText("fNevBuf: Number of events in Basket");
00190    ntbasket.AddText("fLast: pointer to last used byte in Basket");
00191    ntbasket.Draw();
00192    ldot.DrawLine(.4,.3,0.02,0.25);
00193    ldot.DrawLine(.5,.25,0.35,-.07);
00194    ldot.DrawLine(.5,.3,0.35,0.25);
00195    TPaveText ntbranch(0.02,0.40,0.18,0.68);
00196    ntbranch.SetFillColor(branchcolor);
00197    ntbranch.SetTextSize(0.015);
00198    ntbranch.SetTextAlign(12);
00199    ntbranch.AddText("fBasketSize");
00200    ntbranch.AddText("fEventOffsetLen");
00201    ntbranch.AddText("fMaxBaskets");
00202    ntbranch.AddText("fEntries");
00203    ntbranch.AddText("fAddress of Leaf0");
00204    ntbranch.AddText(" ");
00205    ntbranch.AddLine(0,0,0,0);
00206    ntbranch.AddText("fName: Branchname");
00207    ntbranch.AddText("fTitle: leaflist");
00208    ntbranch.Draw();
00209    ldot.DrawLine(.2,.97,.02,.68);
00210    ldot.DrawLine(.35,.97,.18,.68);
00211    ldot.DrawLine(.35,.87,.18,.40);
00212    TPavesText basketstore(.8,-0.088,0.952,-0.0035,7,"tr");
00213    basketstore.SetFillColor(28);
00214    basketstore.AddText("Baskets");
00215    basketstore.AddText("Stores");
00216    basketstore.Draw();
00217    c1->Update();
00218 
00219    gBenchmark->Show("tree");
00220 }

Generated on Tue Jul 5 15:45:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1