void tree() { // // This macro displays the Tree data structures //Author: Rene Brun TCanvas* 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 = new TPaveLabel(.3,1.05,.8,1.13,c1->GetTitle()); title->SetFillColor(16); title->Draw(); TPaveText* treePave = new TPaveText(.01,.75,.15,1.00); treePave->SetFillColor(18); treePave->SetTextAlign(12); TText *tnt = treePave->AddText("Tree"); tnt->SetTextAlign(22); tnt->SetTextSize(0.030); treePave->AddText("fScanField"); treePave->AddText("fMaxEventLoop"); treePave->AddText("fMaxVirtualSize"); treePave->AddText("fEntries"); treePave->AddText("fDimension"); treePave->AddText("fSelectedRows"); treePave->Draw(); TPavesText* farm = new TPavesText(.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* llink = new TLine(.15,.92,.80,.92); llink->SetLineWidth(2); llink->SetLineColor(1); llink->Draw(); llink->DrawLine(.21,.87,.21,.275); llink->DrawLine(.23,.87,.23,.375); llink->DrawLine(.25,.87,.25,.775); llink->DrawLine(.41,.25,.41,-.025); llink->DrawLine(.43,.25,.43,.075); llink->DrawLine(.45,.25,.45,.175); TPaveLabel* branch0 = new TPaveLabel(.20,.87,.35,.97,"Branch 0"); branch0->SetTextSize(0.35); branch0->SetFillColor(branchcolor); branch0->Draw(); TPaveLabel* branch1 = new TPaveLabel(.40,.87,.55,.97,"Branch 1"); branch1->SetTextSize(0.35); branch1->SetFillColor(branchcolor); branch1->Draw(); TPaveLabel* branch2 = new TPaveLabel(.60,.87,.75,.97,"Branch 2"); branch2->SetTextSize(0.35); branch2->SetFillColor(branchcolor); branch2->Draw(); TPaveLabel* branch3 = new TPaveLabel(.80,.87,.95,.97,"Branch 3"); branch3->SetTextSize(0.35); branch3->SetFillColor(branchcolor); branch3->Draw(); TPaveLabel* leaf0 = new TPaveLabel(.4,.75,.5,.8,"Leaf 0"); leaf0->SetFillColor(leafcolor); leaf0->Draw(); TPaveLabel* leaf1 = new TPaveLabel(.6,.75,.7,.8,"Leaf 1"); leaf1->SetFillColor(leafcolor); leaf1->Draw(); TPaveLabel* leaf2 = new TPaveLabel(.8,.75,.9,.8,"Leaf 2"); leaf2->SetFillColor(leafcolor); leaf2->Draw(); TPaveText* firstevent = new TPaveText(.4,.35,.9,.4); firstevent->AddText("First event of each basket"); firstevent->AddText("Array of fMaxBaskets Integers"); firstevent->SetFillColor(basketcolor); firstevent->Draw(); TPaveLabel* basket0 = new TPaveLabel(.4,.25,.5,.3,"Basket 0"); basket0->SetFillColor(basketcolor); basket0->Draw(); TPaveLabel* basket1 = new TPaveLabel(.6,.25,.7,.3,"Basket 1"); basket1->SetFillColor(basketcolor); basket1->Draw(); TPaveLabel* basket2 = new TPaveLabel(.8,.25,.9,.3,"Basket 2"); basket2->SetFillColor(basketcolor); basket2->Draw(); TPaveText* offset = new TPaveText(.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 = new TPaveText(.55,.05,.9,.1); buffer->AddText("Basket buffer"); buffer->AddText("Array of fBasketSize chars"); buffer->SetFillColor(offsetcolor); buffer->Draw(); TPaveText* zipbuffer = new TPaveText(.55,-.05,.75,.0); zipbuffer->AddText("Basket compressed buffer"); zipbuffer->AddText("(if compression)"); zipbuffer->SetFillColor(offsetcolor); zipbuffer->Draw(); TArrow* ar1 = new TArrow(); 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 = new TLine(.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 = new TText(.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 = new TPaveText(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 = new TPaveText(.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 = new TPaveLabel(.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 = new TPaveText(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: TreePave 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 = new TPaveText(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 = new TPavesText(.8,-0.088,0.952,-0.0035,7,"tr"); basketstore->SetFillColor(28); basketstore->AddText("Baskets"); basketstore->AddText("Stores"); basketstore->Draw(); c1->Update(); gBenchmark->Show("treePave"); }
void archi() { TCanvas *c1 = new TCanvas("c1","Dictionary Architecture",20,10,750,930); c1->SetBorderSize(0); c1->Range(0,0,20.5,26); TPaveLabel *title = new TPaveLabel(4,24,16,25.5,c1->GetTitle()); title->SetFillColor(46); title->Draw(); TPavesText *dll = new TPavesText(0.5,19,4.5,23,5,"tr"); dll->SetFillColor(39); dll->SetTextSize(0.023); dll->AddText(" "); dll->AddText("Dynamically"); dll->AddText("Linked"); dll->AddText("Libraries"); dll->Draw(); TPaveLabel *dlltitle = new TPaveLabel(1.5,22.6,3.5,23.3,"DLLs"); dlltitle->SetFillColor(28); dlltitle->Draw(); TPavesText *cpp = new TPavesText(5.5,19,9.5,23,5,"tr"); cpp->SetTextSize(0.023); cpp->AddText(" "); cpp->AddText("Commented"); cpp->AddText("Header"); cpp->AddText("Files"); cpp->Draw(); TPaveLabel *cpptitle = new TPaveLabel(6.5,22.6,8.5,23.3,"C++"); cpptitle->SetFillColor(28); cpptitle->Draw(); TPavesText *odl = new TPavesText(10.5,19,14.5,23,5,"tr"); odl->SetTextSize(0.023); odl->AddText(" "); odl->AddText("Objects"); odl->AddText("Description"); odl->AddText("Files"); odl->Draw(); TPaveLabel *odltitle = new TPaveLabel(11.5,22.6,13.5,23.3,"ODL"); odltitle->SetFillColor(28); odltitle->Draw(); TPavesText *idl = new TPavesText(15.5,19,19.5,23,5,"tr"); idl->SetTextSize(0.023); idl->AddText(" "); idl->AddText("Interface"); idl->AddText("Definition"); idl->AddText("Language"); idl->Draw(); TPaveLabel *idltitle = new TPaveLabel(16.5,22.6,18.5,23.3,"IDL"); idltitle->SetFillColor(28); idltitle->Draw(); TWbox *p1 = new TWbox(7.8,10,13.2,17,11,12,1); p1->Draw(); TText *pro1 = new TText(10.5,15.8,"Process 1"); pro1->SetTextAlign(21); pro1->SetTextSize(0.03); pro1->Draw(); TPaveText *p1dict = new TPaveText(8.8,13.8,12.2,15.6); p1dict->SetTextSize(0.023); p1dict->AddText("Dictionary"); p1dict->AddText("in memory"); p1dict->Draw(); TPavesText *p1object = new TPavesText(8.6,10.6,12.1,13.0,5,"tr"); p1object->SetTextSize(0.023); p1object->AddText("Objects"); p1object->AddText("in memory"); p1object->Draw(); TWbox *p2 = new TWbox(15.5,10,20,17,11,12,1); p2->Draw(); TText *pro2 = new TText(17.75,15.8,"Process 2"); pro2->SetTextAlign(21); pro2->SetTextSize(0.03); pro2->Draw(); TPaveText *p2dict = new TPaveText(16,13.8,19.5,15.6); p2dict->SetTextSize(0.023); p2dict->AddText("Dictionary"); p2dict->AddText("in memory"); p2dict->Draw(); TPavesText *p2object = new TPavesText(16.25,10.6,19.25,13.0,5,"tr"); p2object->SetTextSize(0.023); p2object->AddText("Objects"); p2object->AddText("in memory"); p2object->Draw(); TWbox *stub1 = new TWbox(12.9,11.5,13.6,15.5,49,3,1); stub1->Draw(); TText *tstub1 = new TText(13.25,13.5,"Stub1"); tstub1->SetTextSize(0.025); tstub1->SetTextAlign(22); tstub1->SetTextAngle(90); tstub1->Draw(); TWbox *stub2 = new TWbox(15.1,11.5,15.8,15.5,49,3,1); stub2->Draw(); TText *tstub2 = new TText(15.45,13.5,"Stub2"); tstub2->SetTextSize(0.025); tstub2->SetTextAlign(22); tstub2->SetTextAngle(-90); tstub2->Draw(); TArrow *ar1 = new TArrow(); ar1->SetLineWidth(6); ar1->SetLineColor(1); ar1->SetFillStyle(1001); ar1->SetFillColor(1); ar1->DrawArrow(13.5,14,15,14,0.012,"|>"); ar1->DrawArrow(15.1,13,13.51,13,0.012,"|>"); TPaveText *cint = new TPaveText(1.0,15.0,8.0,17.5); cint->SetFillColor(39); cint->SetBorderSize(1); cint->SetTextSize(0.023); cint->AddText("C++ Interpreter"); cint->AddText("and program builder"); cint->Draw(); TPaveText *command = new TPaveText(2.5,13.4,8.0,14.5); command->SetTextSize(0.023); command->SetFillColor(39); command->SetBorderSize(1); command->AddText("Command Thread"); command->Draw(); TPavesText *view = new TPavesText(1.0,9.5,7.7,12.6,3,"tr"); view->SetFillColor(39); view->SetBorderSize(2); view->SetTextSize(0.023); view->AddText("Viewer Thread(s)"); view->AddText("Picking"); view->AddText("Context Menus"); view->AddText("Inspector/Browser"); view->Draw(); TPavesText *web = new TPavesText(0.5,5,6,8.5,5,"tr"); web->SetTextSize(0.023); web->AddText(" "); web->AddText("generated"); web->AddText("automatically"); web->AddText("from dictionary"); web->AddText("and source files"); web->Draw(); TPaveLabel *webtitle = new TPaveLabel(1.5,8.1,5.0,8.8,"HTML Files"); webtitle->SetFillColor(28); webtitle->Draw(); TPavesText *printed = new TPavesText(0.5,1.0,6,4,5,"tr"); printed->SetTextSize(0.023); printed->AddText(" "); printed->AddText("generated"); printed->AddText("automatically"); printed->AddText("from HTML files"); printed->Draw(); TPaveLabel *printedtitle = new TPaveLabel(1.5,3.6,5.0,4.3,"Printed Docs"); printedtitle->SetFillColor(28); printedtitle->Draw(); TBox *box1 = new TBox(0.2,9.2,14.25,17.8); box1->SetFillStyle(0); box1->SetLineStyle(2); box1->Draw(); TBox *box2 = new TBox(10.2,18.7,20.2,23.6); box2->SetFillStyle(0); box2->SetLineStyle(3); box2->Draw(); ar1->DrawArrow(2.5,17.5,2.5,18.9,0.012,"|>"); ar1->DrawArrow(5.5,9.2,5.5,8.7,0.012,"|>"); ar1->DrawArrow(5.5,5,5.5,4.2,0.012,"|>"); ar1->DrawArrow(8.5,9.2,8.5,8.2,0.012,"|>"); ar1->DrawArrow(9.5,8.1,9.5,9.0,0.012,"|>"); ar1->DrawArrow(6.5,19,6.5,17.6,0.012,"|>"); ar1->DrawArrow(8.5,19,8.5,17.1,0.012,"|>"); ar1->DrawArrow(11.5,19,11.5,17.1,0.012,"|>"); TPaveLabel *ootitle = new TPaveLabel(10.5,7.8,17,8.8,"Objects Data Base"); ootitle->SetFillColor(28); ootitle->Draw(); TPad *pio = new TPad("pio","pio",0.37,0.02,0.95,0.31,49); pio->Range(0,0,12,8); pio->Draw(); pio->cd(); TPavesText *raw = new TPavesText(0.5,1,2.5,6,7,"tr"); raw->Draw(); TPavesText *dst1 = new TPavesText(4,1,5,3,7,"tr"); dst1->Draw(); TPavesText *dst2 = new TPavesText(6,1,7,3,7,"tr"); dst2->Draw(); TPavesText *dst3 = new TPavesText(4,4,5,6,7,"tr"); dst3->Draw(); TPavesText *dst4 = new TPavesText(6,4,7,6,7,"tr"); dst4->Draw(); Float_t xlow = 8.5; Float_t ylow = 1; Float_t dx = 0.5; Float_t dy = 0.5; for (Int_t j=1;j<9;j++) { Float_t y0 = ylow + (j-1)*0.7; Float_t y1 = y0 + dy; for (Int_t i=1;i<5;i++) { Float_t x0 = xlow +(i-1)*0.6; Float_t x1 = x0 + dx; TPavesText *anal = new TPavesText(x0,y0,x1,y1,7,"tr"); anal->Draw(); } } TText *daq = new TText(); daq->SetTextSize(0.07); daq->SetTextAlign(22); daq->DrawText(1.5,7.3,"DAQ"); daq->DrawText(6,7.3,"DST"); daq->DrawText(10.,7.3,"Physics Analysis"); daq->DrawText(1.5,0.7,"Events"); daq->DrawText(1.5,0.3,"Containers"); daq->DrawText(6,0.7,"Tracks/Hits"); daq->DrawText(6,0.3,"Containers"); daq->DrawText(10.,0.7,"Attributes"); daq->DrawText(10.,0.3,"Containers"); c1->cd(); }
// TArrow ardash(2,15,2,3.5,0.015,"|>"); ardash.SetLineStyle(2); ardash.SetFillColor(1); ardash.Draw(); TLine l1(2.5,4.5,15.5,4.5); l1.Draw(); l1.DrawLine(4.5,15,4.5,11); l1.DrawLine(13,10,13,15.5); l1.DrawLine(14,10,13,10); l1.DrawLine(14,15.5,13,15.5); TArrow ar(9,23,9,21.6,0.015,"|>"); ar.SetFillColor(1); // TPavesText UserChtml(0.5,0.5,4.5,3,5,"tr"); UserChtml.AddText("Files with hyperlinks"); TText *t1=UserChtml.AddText("*User.C.html"); TText *t2=UserChtml.AddText("*User.mac.html"); t1.SetTextColor(4); t2.SetTextColor(4); UserChtml.Draw(); ar.DrawArrow(2.5,4.5,2.5,3.5,0.015,"|>"); // TPavesText UserTree(7,0.5,11,3,5,"tr"); UserTree.AddText("Dictionary"); UserTree.AddText("Inheritance graphs"); TText *t3=UserTree.AddText("*User_Tree.ps"); t3.SetTextColor(4); UserTree.Draw(); ar.DrawArrow(9,5.5,9,3.5,0.015,"|>");
void framework() { TCanvas *c1 = new TCanvas("c1","The ROOT Framework",200,10,700,500); c1->Range(0,0,19,12); // TPavesText *rootf = new TPavesText(0.4,0.6,18,2.3,20,"tr"); rootf->AddText("ROOT Framework"); rootf->SetFillColor(42); rootf->Draw(); // TPavesText *eventg = new TPavesText(0.99,2.66,3.29,5.67,4,"tr"); eventg->SetFillColor(38); eventg->AddText("Event"); eventg->AddText("Generators"); eventg->Draw(); // TPavesText *simul = new TPavesText(3.62,2.71,6.15,7.96,7,"tr"); simul->SetFillColor(41); simul->AddText("Detector"); simul->AddText("Simulation"); simul->Draw(); // TPavesText *recon = new TPavesText(6.56,2.69,10.07,10.15,11,"tr"); recon->SetFillColor(48); recon->AddText("Event"); recon->AddText("Reconstruction"); recon->Draw(); // TPavesText *daq = new TPavesText(10.43,2.74,14.0,10.81,11,"tr"); daq->AddText("Data"); daq->AddText("Acquisition"); daq->Draw(); // TPavesText *anal = new TPavesText(14.55,2.72,17.9,10.31,11,"tr"); anal->SetFillColor(42); anal->AddText("Data"); anal->AddText("Analysis"); anal->Draw(); c1->Update(); }
void framework() { // An example with basic graphics illustrating the Object Oriented // User Interface of ROOT. The begin_html <a href="gif/framework.gif">picture</a> end_html // produced is the one shown in begin_html<a href="../../Mission.html">Mission Statement.</a> end_html //Author: Rene Brun TCanvas *c1 = new TCanvas("c1","The ROOT Framework",200,10,700,500); c1->Range(0,0,19,12); // TPavesText *rootf = new TPavesText(0.4,0.6,18,2.3,20,"tr"); rootf->AddText("ROOT Framework"); rootf->SetFillColor(42); rootf->Draw(); // TPavesText *eventg = new TPavesText(0.99,2.66,3.29,5.67,4,"tr"); eventg->SetFillColor(38); eventg->AddText("Event"); eventg->AddText("Generators"); eventg->Draw(); // TPavesText *simul = new TPavesText(3.62,2.71,6.15,7.96,7,"tr"); simul->SetFillColor(41); simul->AddText("Detector"); simul->AddText("Simulation"); simul->Draw(); // TPavesText *recon = new TPavesText(6.56,2.69,10.07,10.15,11,"tr"); recon->SetFillColor(48); recon->AddText("Event"); recon->AddText("Reconstruction"); recon->Draw(); // TPavesText *daq = new TPavesText(10.43,2.74,14.0,10.81,11,"tr"); daq->AddText("Data"); daq->AddText("Acquisition"); daq->Draw(); // TPavesText *anal = new TPavesText(14.55,2.72,17.9,10.31,11,"tr"); anal->SetFillColor(42); anal->AddText("Data"); anal->AddText("Analysis"); anal->Draw(); c1->Update(); }