Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
File header format

Here is the file header format as of release 6.22.06. It is never compressed.

If END, SeekFree, or SeekInfo are located past the 32 bit file limit (> 2000000000) then these fields will be 8 instead of 4 bytes and 1000000 is added to the file format version.

 -----------------------------------
 byte  0->3  "root"               = Identifies this file as a ROOT file.
       4->7  Version              = File format version                         TFile::fVersion
                                  |  (10000*major+100*minor+cycle (e.g. 62206 for 6.22.06))
       8->11          BEGIN       = Byte offset of first data record (100)      TFile::fBEGIN
      12->15 [12->19] END         = Pointer to first free word at the EOF       TFile::fEND
                                  | (will be == to file size in bytes)
      16->19 [20->27] SeekFree    = Byte offset of FreeSegments record          TFile::fSeekFree
      20->23 [28->31] NbytesFree  = Number of bytes in FreeSegments record      TFile::fNBytesFree
      24->27 [32->35] nfree       = Number of free data records
      28->31 [36->39] NbytesName  = Number of bytes in TKey+TNamed for TFile at creation TDirectory::fNbytesName
      32->32 [40->40] Units       = Number of bytes for file pointers (4)       TFile::fUnits
      33->36 [41->44] Compress    = Zip compression level (i.e. 0-9)            TFile::fCompress
      37->40 [45->52] SeekInfo    = Byte offset of StreamerInfo record          TFile::fSeekInfo
      41->44 [53->56] NbytesInfo  = Number of bytes in StreamerInfo record      TFile::fNbytesInfo
      45->46 [57->58] UUID vers   = TUUID class version identifier              TUUID::Class_Version()
      47->62 [59->74] UUID        = Universally Unique Identifier               TUUID::fTimeLow through fNode[6]
      63->99 [75->99] Extra space to allow END, SeekFree, or SeekInfo to become 64 bit without moving this header

Here is the file header format as of release 3.02.06. It is never compressed.

 -----------------------------------
 byte  0->3  "root"      = Identifies this file as a ROOT file.
       4->7  Version     = File format version                        TFile::fVersion
                         |  (10000*major+100*minor+cycle (e.g. 30203 for 3.2.3))
       8->11 BEGIN       = Byte offset of first data record (64)      TFile::fBEGIN
      12->15 END         = Pointer to first free word at the EOF      TFile::fEND
                         | (will be == to file size in bytes)
      16->19 SeekFree    = Byte offset of FreeSegments record         TFile::fSeekFree
      20->23 NbytesFree  = Number of bytes in FreeSegments record     TFile::fNBytesFree
      24->27 nfree       = Number of free data records
      28->31 NbytesName  = Number of bytes in TKey+TNamed for TFile at creation TDirectory::fNbytesName
      32->32 Units       = Number of bytes for file pointers (4)      TFile::fUnits
      33->36 Compress    = Zip compression level (i.e. 0-9)           TFile::fCompress
      37->40 SeekInfo    = Byte offset of StreamerInfo record         TFile::fSeekInfo
      41->44 NbytesInfo  = Number of bytes in StreamerInfo record     TFile::fNbytesInfo
      45->63             = Unused??