Logo ROOT   6.10/09
Reference Guide
file.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_io
3 /// \notebook
4 /// This macro displays the physical ROOT file structure
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \author Rene Brun
10 
11 void file(){
12 
13  TCanvas *c1 = new TCanvas("c1","ROOT File description",200,10,700,550);
14 
15  c1->Range(0,-0.25,21,14);
16  TPaveLabel *title = new TPaveLabel(5,12,15,13.7,c1->GetTitle());
17  title->SetFillColor(16);
18  title->Draw();
19 
20  // horizonthal file layout
21  TPave *file = new TPave(1,8.5,20,11);
22  file->SetFillColor(11);
23  file->Draw();
24  TPave *fileh = new TPave(1,8.5,2.5,11);
25  fileh->SetFillColor(44);
26  fileh->Draw();
27  TPave *lrh = new TPave(2.5,8.5,3.3,11,1);
28  lrh->SetFillColor(33);
29  lrh->Draw();
30  lrh->DrawPave(6.9,8.5,7.7,11,1);
31  lrh->DrawPave(10.5,8.5,11.3,11,1);
32  lrh->DrawPave(14.5,8.5,15.3,11,1);
33  TLine *ldot = new TLine(1,8.5,0.5,6.5);
34  ldot->SetLineStyle(2);
35  ldot->Draw();
36  ldot->DrawLine(2.5, 8.5, 9.4, 6.5);
37  ldot->DrawLine(10.5, 8.5, 10, 6.5);
38  ldot->DrawLine(11.3, 8.5, 19.5, 6.5);
39  TLine *line = new TLine(2.6,11,2.6,11.5);
40  line->Draw();
41  line->DrawLine(2.6,11.5,7,11.5);
42  TArrow *arrow = new TArrow(7,11.5,7,11.1,0.01,"|>");
43  arrow->SetFillStyle(1001);
44  arrow->Draw();
45  line->DrawLine( 7, 8.5, 7, 8.0);
46  line->DrawLine( 7, 8.0, 10.6, 8);
47  arrow->DrawArrow( 10.6,8, 10.6, 8.4,0.01,"|>");
48  line->DrawLine( 10.6, 11, 10.6, 11.5);
49  line->DrawLine( 10.6, 11.5, 14.6, 11.5);
50  arrow->DrawArrow( 14.6,11.5, 14.6,11.1,0.01,"|>");
51  line->DrawLine( 14.6, 8.5, 14.6, 8.0);
52  line->DrawLine( 14.6, 8.0, 16, 8);
53  ldot->DrawLine(16, 8, 19, 8);
54  TText *vert = new TText(1.5,9.75,"File");
55  vert->SetTextAlign(21);
56  vert->SetTextAngle(90);
57  vert->SetTextSize(0.025);
58  vert->Draw();
59  vert->DrawText(2.0, 9.75,"Header");
60  vert->DrawText(2.9, 9.75,"Logical Record");
61  vert->DrawText(3.2, 9.75,"Header");
62  vert->DrawText(7.3, 9.75,"Logical Record");
63  vert->DrawText(7.6, 9.75,"Header");
64  vert->DrawText(10.9,9.75,"Logical Record");
65  vert->DrawText(11.2,9.75,"Header");
66  vert->DrawText(14.9,9.75,"Logical Record");
67  vert->DrawText(15.2,9.75,"Header");
68  TText *hori = new TText(4.75,10,"Object");
69  hori->SetTextAlign(22);
70  hori->SetTextSize(0.035);
71  hori->Draw();
72  hori->DrawText(4.75, 9.5,"Data");
73  hori->DrawText(9.2, 10,"Deleted");
74  hori->DrawText(9.2, 9.5,"Object");
75  line->DrawLine( 6.9, 8.5, 10.5, 11);
76  line->DrawLine( 6.9, 11, 10.5, 8.5);
77  TText *tbig = new TText(17,9.75,"............");
78  tbig->SetTextAlign(22);
79  tbig->SetTextSize(0.03);
80  tbig->Draw();
81  tbig->DrawText(2.6, 7, "fBEGIN");
82  tbig->DrawText(20., 7, "fEND");
83  arrow->DrawArrow( 2.6,7, 2.6,8.4,0.01,"|>");
84  arrow->DrawArrow( 20,7, 20,8.4,0.01,"|>");
85 
86  //file header
87  TPaveText *header = new TPaveText(0.5,.2,9.4,6.5);
88  header->SetFillColor(44);
89  header->Draw();
90  TText *fh=header->AddText("File Header");
91  fh->SetTextAlign(22);
92  fh->SetTextSize(0.04);
93  header->SetTextSize(0.027);
94  header->SetTextAlign(12);
95  header->AddText(" ");
96  header->AddLine(0,0,0,0);
97  header->AddText("\"root\": Root File Identifier");
98  header->AddText("fVersion: File version identifier");
99  header->AddText("fBEGIN: Pointer to first data record");
100  header->AddText("fEND: Pointer to first free word at EOF");
101  header->AddText("fSeekFree: Pointer to FREE data record");
102  header->AddText("fNbytesFree: Number of bytes in FREE");
103  header->AddText("fNfree: Number of free data records");
104  header->AddText("fNbytesName: Number of bytes in name/title");
105  header->AddText("fUnits: Number of bytes for pointers");
106  header->AddText("fCompress: Compression level");
107 
108  //logical record header
109  TPaveText *lrecord = new TPaveText(10,0.2,19.5,6.5);
110  lrecord->SetFillColor(33);
111  lrecord->Draw();
112  TText *tlrh=lrecord->AddText("Logical Record Header (TKEY)");
113  tlrh->SetTextAlign(22);
114  tlrh->SetTextSize(0.04);
115  lrecord->SetTextSize(0.027);
116  lrecord->SetTextAlign(12);
117  lrecord->AddText(" ");
118  lrecord->AddLine(0,0,0,0);
119  lrecord->AddText("fNbytes: Length of compressed object");
120  lrecord->AddText("fVersion: Key version identifier");
121  lrecord->AddText("fObjLen: Length of uncompressed object");
122  lrecord->AddText("fDatime: Date/Time when written to store");
123  lrecord->AddText("fKeylen: Number of bytes for the key");
124  lrecord->AddText("fCycle : Cycle number");
125  lrecord->AddText("fSeekKey: Pointer to object on file");
126  lrecord->AddText("fSeekPdir: Pointer to directory on file");
127  lrecord->AddText("fClassName: class name of the object");
128  lrecord->AddText("fName: name of the object");
129  lrecord->AddText("fTitle: title of the object");
130 
131  c1->Update();
132  c1->Print("file.png");
133 }
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
Definition: TPaveText.cxx:234
TLine * line
virtual TLine * AddLine(Double_t x1=0, Double_t y1=0, Double_t x2=0, Double_t y2=0)
Add a new graphics line to this pavetext.
Definition: TPaveText.cxx:170
return c1
Definition: legend1.C:41
virtual void DrawArrow(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Float_t arrowsize=0, Option_t *option="")
Draw this arrow with new coordinates.
Definition: TArrow.cxx:139
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
Definition: TPaveText.cxx:183
virtual TLine * DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
Definition: TLine.cxx:93
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition: TObject.cxx:202
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Definition: TAttFill.h:39
A TBox with a bordersize and a shadow option.
Definition: TPave.h:19
TArrow * arrow
virtual void Draw(Option_t *option="")
Draw this arrow with its current attributes.
Definition: TArrow.cxx:122
const char * GetTitle() const
Returns title of object.
Definition: TPad.h:252
Base class for several text objects.
Definition: TText.h:23
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition: TAttText.h:41
A Pave (see TPave) with a text centered in the Pave.
Definition: TPaveLabel.h:20
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
Definition: TPad.cxx:5085
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
Definition: TAttText.h:42
A simple line.
Definition: TLine.h:23
virtual void Print(const char *filename="") const
Save Pad contents in a file in one of various formats.
Definition: TPad.cxx:4581
virtual void Draw(Option_t *option="")
Draw this pave with its current attributes.
Definition: TPave.cxx:214
The Canvas class.
Definition: TCanvas.h:31
A Pave (see TPave) with text, lines or/and boxes inside.
Definition: TPaveText.h:21
virtual void Draw(Option_t *option="")
Draw this pavelabel with its current attributes.
Definition: TPaveLabel.cxx:77
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Definition: TAttLine.h:42
virtual void DrawPave(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Int_t bordersize=4, Option_t *option="br")
Draw this pave with new coordinates.
Definition: TPave.cxx:226
Definition: file.py:1
virtual TText * DrawText(Double_t x, Double_t y, const char *text)
Draw this text with new coordinates.
Definition: TText.cxx:176
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition: TAttText.h:46
virtual void Update()
Update canvas pad buffers.
Definition: TCanvas.cxx:2208
Draw all kinds of Arrows.
Definition: TArrow.h:29