{
//
// This macro displays the ROOT architecture
//Author: Rene Brun
gROOT->Reset();
c1 = new TCanvas("c1","Dictionary Architecture",20,10,750,930);
c1->SetBorderSize(0);
c1->Range(0,0,20.5,26);
TPaveLabel title(4,24,16,25.5,c1->GetTitle());
title.SetFillColor(46);
title.Draw();
TPavesText dll(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(1.5,22.6,3.5,23.3,"DLLs");
dlltitle.SetFillColor(28);
dlltitle.Draw();
TPavesText cpp(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(6.5,22.6,8.5,23.3,"C++");
cpptitle.SetFillColor(28);
cpptitle.Draw();
TPavesText odl(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(11.5,22.6,13.5,23.3,"ODL");
odltitle.SetFillColor(28);
odltitle.Draw();
TPavesText idl(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(16.5,22.6,18.5,23.3,"IDL");
idltitle.SetFillColor(28);
idltitle.Draw();
TWbox p1(7.8,10,13.2,17,11,12,1);
p1.Draw();
TText pro1(10.5,15.8,"Process 1");
pro1.SetTextAlign(21);
pro1.SetTextSize(0.03);
pro1.Draw();
TPaveText p1dict(8.8,13.8,12.2,15.6);
p1dict.SetTextSize(0.023);
p1dict.AddText("Dictionary");
p1dict.AddText("in memory");
p1dict.Draw();
TPavesText p1object(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(15.5,10,20,17,11,12,1);
p2.Draw();
TText pro2(17.75,15.8,"Process 2");
pro2.SetTextAlign(21);
pro2.SetTextSize(0.03);
pro2.Draw();
TPaveText p2dict(16,13.8,19.5,15.6);
p2dict.SetTextSize(0.023);
p2dict.AddText("Dictionary");
p2dict.AddText("in memory");
p2dict.Draw();
TPavesText p2object(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(12.9,11.5,13.6,15.5,49,3,1);
stub1.Draw();
TText tstub1(13.25,13.5,"Stub1");
tstub1.SetTextSize(0.025);
tstub1.SetTextAlign(22);
tstub1.SetTextAngle(90);
tstub1.Draw();
TWbox stub2(15.1,11.5,15.8,15.5,49,3,1);
stub2.Draw();
TText tstub2(15.45,13.5,"Stub2");
tstub2.SetTextSize(0.025);
tstub2.SetTextAlign(22);
tstub2.SetTextAngle(-90);
tstub2.Draw();
TArrow ar1;
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(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(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(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(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(1.5,8.1,5.0,8.8,"HTML Files");
webtitle.SetFillColor(28);
webtitle.Draw();
TPavesText printed(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(1.5,3.6,5.0,4.3,"Printed Docs");
printedtitle.SetFillColor(28);
printedtitle.Draw();
TBox box1(0.2,9.2,14.25,17.8);
box1.SetFillStyle(0);
box1.SetLineStyle(2);
box1.Draw();
TBox box2(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(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(0.5,1,2.5,6,7,"tr");
raw.Draw();
TPavesText dst1(4,1,5,3,7,"tr");
dst1.Draw();
TPavesText dst2(6,1,7,3,7,"tr");
dst2.Draw();
TPavesText dst3(4,4,5,6,7,"tr");
dst3.Draw();
TPavesText dst4(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;
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();
}