file.C

Go to the documentation of this file.
00001 {
00002    //
00003    // This macro displays the physical ROOT file structure
00004    //Author: Rene Brun
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    // horizonthal file layout
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    //file header
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    //logical record header
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 }

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