Format of TProcessID record in release 3.02.06. Will be present if there are any referenced objects.
----------TKey---------------
byte 0->3 Nbytes = Number of bytes in compressed record (Tkey+data) TKey::fNbytes
4->5 Version = TKey class version identifier TKey::fVersion
6->9 ObjLen = Number of bytes of uncompressed data TKey::fObjLen
10->13 Datime = Date and time when record was written to file TKey::fDatime
| (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
14->15 KeyLen = Number of bytes in key structure (TKey) TKey::fKeyLen
16->17 Cycle = Cycle of key TKey::fCycle
18->21 SeekKey = Byte offset of record itself (consistency check) TKey::fSeekKey
22->25 SeekPdir = Byte offset of parent directory record TKey::fSeekPdir
26->26 lname = Number of bytes in the class name (10) TKey::fClassName
27->36 ClassName= Object Class Name ("TProcessID") TKey::fClassName
37->37 lname = Number of bytes in the object name TNamed::fName
38->.. Name = lName bytes with the name of the object TNamed::fName
| (e.g. "ProcessID0")
0->0 lTitle = Number of bytes in the object title TNamed::fTitle
1->.. Title = lTitle bytes with the title of the object TNamed::fTitle
| (Identifies processor, time stamp, etc.)
| See detailed explanation below.
----------DATA--------------
0->3 ByteCount = Number of remaining bytes in TProcessID object (uncompressed)
| OR'd with kByteCountMask (0x40000000)
4->5 Version = Version of TProcessID Class
-Begin TNamed object (Base class of TProcessID)
6->9 ByteCount = Number of remaining bytes in TNamed object (uncompressed)
| OR'd with kByteCountMask (0x40000000)
10->11 Version = Version of TNamed Class
12->21 = TObject object (Base class of TNamed) (see Format of the DATA for a TObject object).
| The TProcessID object is not itself referenced.
22->22 lname = Number of bytes in the object name TNamed::fName
23->.. Name = lName bytes with the name of the object TNamed::fName
| The name will be "ProcessID" concatenated with
| a decimal integer, or "pidf".
0->0 lTitle = Number of bytes in the object title TNamed::fTitle
1->.. Title = lTitle bytes with the title of the object TNamed::fTitle
| (Identifies processor, time stamp, etc.)
| See detailed explanation below.
-End TNamed object
The title of a TProcessID object is a globally unique identifier of the ROOTIO process that created it. It is derived from the following quantities.
We the define the following quantities (class TUUID):
UInt_t fTimeLow; // 60 bit time, lowest 32 bits
UShort_t fTimeMid; // 60 bit time, middle 16 bits
UShort_t fTimeHiAndVersion; // 60 bit time, highest 12 time bits (low 12 bits)
// + 4 UUID version bits (high 4 bits)
// version is 1 if machine has valid network address
// and 3 otherwise.
UChar_t fClockSeqHiAndReserved; // high 6 clockseq bits (low 6 bits)
// + 2 high bits reserved (currently set to binary 10)
UChar_t fClockSeqLow; // low 8 clockseq bits
UChar_t fNode[6]; // 6 node (machine) id bytes
Then the following sprintf() call defines the format of the title string:
sprintf(Title, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
fTimeLow, fTimeMid, fTimeHiAndVersion, fClockSeqHiAndReserved,
fClockSeqLow, fNode[0], fNode[1], fNode[2], fNode[3], fNode[4],
fNode[5]);
Since the title written to disk is preceded by its byte count, the delimiting null is not written.