00001 {
00002
00003
00004
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 }