00001 {
00002
00003
00004
00005
00006 gROOT->Reset();
00007 c1 = new TCanvas("c1","ROOT File description",200,10,700,550);
00008
00009 c1->Range(0,-0.25,21,14);
00010 TPaveLabel title(5,12,15,13.7,c1->GetTitle());
00011 title.SetFillColor(16);
00012 title.Draw();
00013
00014
00015 TPave file(1,8.5,20,11);
00016 file.SetFillColor(11);
00017 file.Draw();
00018 TPave fileh(1,8.5,2.5,11);
00019 fileh.SetFillColor(44);
00020 fileh.Draw();
00021 TPave lrh(2.5,8.5,3.3,11,1);
00022 lrh.SetFillColor(33);
00023 lrh.Draw();
00024 lrh.DrawPave(6.9,8.5,7.7,11,1);
00025 lrh.DrawPave(10.5,8.5,11.3,11,1);
00026 lrh.DrawPave(14.5,8.5,15.3,11,1);
00027 TLine ldot(1,8.5,0.5,6.5);
00028 ldot.SetLineStyle(2);
00029 ldot.Draw();
00030 ldot.DrawLine(2.5, 8.5, 9.4, 6.5);
00031 ldot.DrawLine(10.5, 8.5, 10, 6.5);
00032 ldot.DrawLine(11.3, 8.5, 19.5, 6.5);
00033 TLine line(2.6,11,2.6,11.5);
00034 line.Draw();
00035 line.DrawLine(2.6,11.5,7,11.5);
00036 TArrow arrow(7,11.5,7,11.1,0.01,"|>");
00037 arrow.SetFillStyle(1001);
00038 arrow.Draw();
00039 line.DrawLine( 7, 8.5, 7, 8.0);
00040 line.DrawLine( 7, 8.0, 10.6, 8);
00041 arrow.DrawArrow( 10.6,8, 10.6, 8.4,0.01,"|>");
00042 line.DrawLine( 10.6, 11, 10.6, 11.5);
00043 line.DrawLine( 10.6, 11.5, 14.6, 11.5);
00044 arrow.DrawArrow( 14.6,11.5, 14.6,11.1,0.01,"|>");
00045 line.DrawLine( 14.6, 8.5, 14.6, 8.0);
00046 line.DrawLine( 14.6, 8.0, 16, 8);
00047 ldot.DrawLine(16, 8, 19, 8);
00048 TText vert(1.5,9.75,"File");
00049 vert.SetTextAlign(21);
00050 vert.SetTextAngle(90);
00051 vert.SetTextSize(0.025);
00052 vert.Draw();
00053 vert.DrawText(2.0, 9.75,"Header");
00054 vert.DrawText(2.9, 9.75,"Logical Record");
00055 vert.DrawText(3.2, 9.75,"Header");
00056 vert.DrawText(7.3, 9.75,"Logical Record");
00057 vert.DrawText(7.6, 9.75,"Header");
00058 vert.DrawText(10.9,9.75,"Logical Record");
00059 vert.DrawText(11.2,9.75,"Header");
00060 vert.DrawText(14.9,9.75,"Logical Record");
00061 vert.DrawText(15.2,9.75,"Header");
00062 TText hori(4.75,10,"Object");
00063 hori.SetTextAlign(22);
00064 hori.SetTextSize(0.035);
00065 hori.Draw();
00066 hori.DrawText(4.75, 9.5,"Data");
00067 hori.DrawText(9.2, 10,"Deleted");
00068 hori.DrawText(9.2, 9.5,"Object");
00069 line.DrawLine( 6.9, 8.5, 10.5, 11);
00070 line.DrawLine( 6.9, 11, 10.5, 8.5);
00071 TText tbig(17,9.75,"............");
00072 tbig.SetTextAlign(22);
00073 tbig.SetTextSize(0.03);
00074 tbig.Draw();
00075 tbig.DrawText(2.6, 7, "fBEGIN");
00076 tbig.DrawText(20., 7, "fEND");
00077 arrow.DrawArrow( 2.6,7, 2.6,8.4,0.01,"|>");
00078 arrow.DrawArrow( 20,7, 20,8.4,0.01,"|>");
00079
00080
00081 TPaveText header(0.5,.2,9.4,6.5);
00082 header.SetFillColor(44);
00083 header.Draw();
00084 TText *fh=header.AddText("File Header");
00085 fh->SetTextAlign(22);
00086 fh->SetTextSize(0.04);
00087 header.SetTextSize(0.027);
00088 header.SetTextAlign(12);
00089 header.AddText(" ");
00090 header.AddLine(0,0,0,0);
00091 header.AddText("\"root\": Root File Identifier");
00092 header.AddText("fVersion: File version identifier");
00093 header.AddText("fBEGIN: Pointer to first data record");
00094 header.AddText("fEND: Pointer to first free word at EOF");
00095 header.AddText("fSeekFree: Pointer to FREE data record");
00096 header.AddText("fNbytesFree: Number of bytes in FREE");
00097 header.AddText("fNfree: Number of free data records");
00098 header.AddText("fNbytesName: Number of bytes in name/title");
00099 header.AddText("fUnits: Number of bytes for pointers");
00100 header.AddText("fCompress: Compression level");
00101
00102
00103 TPaveText lrecord(10,0.2,19.5,6.5);
00104 lrecord.SetFillColor(33);
00105 lrecord.Draw();
00106 TText *tlrh=lrecord.AddText("Logical Record Header (TKEY)");
00107 tlrh->SetTextAlign(22);
00108 tlrh->SetTextSize(0.04);
00109 lrecord.SetTextSize(0.027);
00110 lrecord.SetTextAlign(12);
00111 lrecord.AddText(" ");
00112 lrecord.AddLine(0,0,0,0);
00113 lrecord.AddText("fNbytes: Length of compressed object");
00114 lrecord.AddText("fVersion: Key version identifier");
00115 lrecord.AddText("fObjLen: Length of uncompressed object");
00116 lrecord.AddText("fDatime: Date/Time when written to store");
00117 lrecord.AddText("fKeylen: Number of bytes for the key");
00118 lrecord.AddText("fCycle : Cycle number");
00119 lrecord.AddText("fSeekKey: Pointer to object on file");
00120 lrecord.AddText("fSeekPdir: Pointer to directory on file");
00121 lrecord.AddText("fClassName: class name of the object");
00122 lrecord.AddText("fName: name of the object");
00123 lrecord.AddText("fTitle: title of the object");
00124
00125 c1->Update();
00126 }