ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
file.py
Go to the documentation of this file.
1 #
2 # This macro displays the physical ROOT file structure
3 #
4 
5 from ROOT import TCanvas, TPaveLabel, TPave, TLine, TArrow, TText, TPaveText
6 from ROOT import gROOT
7 
8 
9 
10 c1 = TCanvas( 'c1', 'ROOT File description', 200, 10, 700, 550 )
11 
12 c1.Range( 0, -0.25, 21, 14 )
13 title = TPaveLabel( 5, 12, 15, 13.7, c1.GetTitle() )
14 title.SetFillColor( 16 )
15 title.Draw()
16 
17 # horizonthal file layout
18 file = TPave( 1, 8.5, 20, 11 )
19 file.SetFillColor( 11 )
20 file.Draw()
21 fileh = TPave( 1, 8.5, 2.5, 11 )
22 fileh.SetFillColor( 44 )
23 fileh.Draw()
24 lrh = TPave( 2.5, 8.5, 3.3, 11, 1 )
25 lrh.SetFillColor( 33 )
26 lrh.Draw()
27 lrh.DrawPave( 6.9, 8.5, 7.7, 11, 1 )
28 lrh.DrawPave( 10.5, 8.5, 11.3, 11, 1 )
29 lrh.DrawPave( 14.5, 8.5, 15.3, 11, 1 )
30 ldot = TLine( 1, 8.5, 0.5, 6.5 )
31 ldot.SetLineStyle( 2 )
32 ldot.Draw()
33 ldot.DrawLine( 2.5, 8.5, 9.4, 6.5 )
34 ldot.DrawLine( 10.5, 8.5, 10, 6.5 )
35 ldot.DrawLine( 11.3, 8.5, 19.5, 6.5 )
36 line = TLine( 2.6, 11, 2.6, 11.5 )
37 line.Draw()
38 line.DrawLine( 2.6, 11.5, 7, 11.5 )
39 arrow = TArrow( 7, 11.5, 7, 11.1, 0.01, '|>' )
40 arrow.SetFillStyle( 1001 )
41 arrow.Draw()
42 line.DrawLine( 7, 8.5, 7, 8.0 )
43 line.DrawLine( 7, 8.0, 10.6, 8 )
44 arrow.DrawArrow( 10.6,8, 10.6, 8.4, 0.01, '|>' )
45 line.DrawLine( 10.6, 11, 10.6, 11.5 )
46 line.DrawLine( 10.6, 11.5, 14.6, 11.5 )
47 arrow.DrawArrow( 14.6, 11.5, 14.6, 11.1, 0.01, '|>' )
48 line.DrawLine( 14.6, 8.5, 14.6, 8.0 )
49 line.DrawLine( 14.6, 8.0, 16, 8 )
50 ldot.DrawLine( 16, 8, 19, 8 )
51 vert = TText( 1.5, 9.75, 'File' )
52 vert.SetTextAlign( 21 )
53 vert.SetTextAngle( 90 )
54 vert.SetTextSize( 0.025 )
55 vert.Draw()
56 vert.DrawText( 2.0, 9.75, 'Header' )
57 vert.DrawText( 2.9, 9.75, 'Logical Record' )
58 vert.DrawText( 3.2, 9.75, 'Header' )
59 vert.DrawText( 7.3, 9.75, 'Logical Record' )
60 vert.DrawText( 7.6, 9.75, 'Header' )
61 vert.DrawText( 10.9, 9.75, 'Logical Record' )
62 vert.DrawText( 11.2, 9.75, 'Header' )
63 vert.DrawText( 14.9, 9.75, 'Logical Record' )
64 vert.DrawText( 15.2, 9.75, 'Header' )
65 hori = TText( 4.75, 10, 'Object' )
66 hori.SetTextAlign( 22 )
67 hori.SetTextSize( 0.035 )
68 hori.Draw()
69 hori.DrawText( 4.75, 9.5, 'Data' )
70 hori.DrawText( 9.2, 10, 'Deleted' )
71 hori.DrawText( 9.2, 9.5, 'Object' )
72 line.DrawLine( 6.9, 8.5, 10.5, 11 )
73 line.DrawLine( 6.9, 11, 10.5, 8.5 )
74 tbig = TText( 17, 9.75, '............' )
75 tbig.SetTextAlign( 22 )
76 tbig.SetTextSize( 0.03 )
77 tbig.Draw()
78 tbig.DrawText( 2.6, 7, 'fBEGIN' )
79 tbig.DrawText( 20., 7, 'fEND' )
80 arrow.DrawArrow( 2.6, 7, 2.6, 8.4, 0.01, '|>' )
81 arrow.DrawArrow( 20, 7, 20, 8.4, 0.01, '|>' )
82 
83 #file header
84 header = TPaveText( 0.5, .2, 9.4, 6.5 )
85 header.SetFillColor( 44 )
86 header.Draw()
87 fh = header.AddText( 'File Header' )
88 fh.SetTextAlign( 22 )
89 fh.SetTextSize( 0.04 )
90 header.SetTextSize( 0.027 )
91 header.SetTextAlign( 12 )
92 header.AddText( ' ' )
93 header.AddLine( 0, 0, 0, 0 )
94 header.AddText( '"root": Root File Identifier' )
95 header.AddText( 'fVersion: File version identifier' )
96 header.AddText( 'fBEGIN: Pointer to first data record' )
97 header.AddText( 'fEND: Pointer to first free word at EOF' )
98 header.AddText( 'fSeekFree: Pointer to FREE data record' )
99 header.AddText( 'fNbytesFree: Number of bytes in FREE' )
100 header.AddText( 'fNfree: Number of free data records' )
101 header.AddText( 'fNbytesName: Number of bytes in name/title' )
102 header.AddText( 'fUnits: Number of bytes for pointers' )
103 header.AddText( 'fCompress: Compression level' )
104 
105 #logical record header
106 lrecord = TPaveText( 10, 0.2, 19.5, 6.5 )
107 lrecord.SetFillColor( 33 )
108 lrecord.Draw()
109 tlrh = lrecord.AddText( 'Logical Record Header (TKEY)' )
110 tlrh.SetTextAlign( 22 )
111 tlrh.SetTextSize( 0.04 )
112 lrecord.SetTextSize( 0.027 )
113 lrecord.SetTextAlign( 12 )
114 lrecord.AddText( ' ' )
115 lrecord.AddLine( 0, 0, 0, 0 )
116 lrecord.AddText( 'fNbytes: Length of compressed object' )
117 lrecord.AddText( 'fVersion: Key version identifier' )
118 lrecord.AddText( 'fObjLen: Length of uncompressed object' )
119 lrecord.AddText( 'fDatime: Date/Time when written to store' )
120 lrecord.AddText( 'fKeylen: Number of bytes for the key' )
121 lrecord.AddText( 'fCycle : Cycle number' )
122 lrecord.AddText( 'fSeekKey: Pointer to object on file' )
123 lrecord.AddText( 'fSeekPdir: Pointer to directory on file' )
124 lrecord.AddText( 'fClassName: class name of the object' )
125 lrecord.AddText( 'fName: name of the object' )
126 lrecord.AddText( 'fTitle: title of the object' )
127 
128 c1.Update()