Modified ROOT I/O Format
Modified ROOT I/O format is based on the last version of standard ROOT I/O. There is no ideological difference, it is slightly different implementation. The main feature is the possibility to skip not only object but any member of object. It is essential for schema evolution.
- Each object has a header containing flag,classid and objectsize ;
- Short header - one 32 bits word (Classid < 1K && ObjectSize< 1M);
- Long header - two 32 bits words. (Classid > 1K | | ObjectSize> 1M);
- Object is written continuously, pointers are not followed immediately.
- Simple members written immediately;
- TObject* & TObject: buffer offset of object is written. Object itself is written separately and schema evolution is applied for it recursively;
- General C++ class: written immediately preceded by its size;
- Reference pointers either zero or offset of object in buffer. This is a new feature.;
- List of used classes is written at the end of the record.