Here is the format (release 3.02.06) of the DATA for a TClonesArray object in a ROOTIO file.
0->3 ByteCount = Number of remaining bytes in TClonesArray object (uncompressed)
| OR'd with kByteCountMask (0x40000000)
4->.. ClassInfo = Information about TClonesArray class
| If this is the first occurrence of a TClonesArray object in the record
| 4->7 -1 = New class tag (constant kNewClassTag = 0xffffffff)
| 8->17 Classname = Object Class Name "TClonesArray" (null terminated)
| Otherwise
| 4->7 clIdx = Byte offset of new class tag in record, plus 2.
| OR'd with kClassMask (0x80000000)
0->3 ByteCount = Number of remaining bytes in TClonesArray object (uncompressed)
| OR'd with kByteCountMask (0x40000000)
4->5 Version = Version of TClonesArray Class
6->15 = TObject object (a base class of TClonesArray) (see Format of the DATA for a TObject object).
| Would be two bytes longer (6->17) if object were referenced.
16->.. fName = Number of bytes in name of TClonesArray object, followed by the
| name itself. (TCollection::fName). This name will be the
| class name of the cloned object, appended with an 's'
| (e.g. "TXxxs")
0->.. = Number of bytes in name and version of the cloned class, followed
| by the name and version themselves (e.g. "TXxx;1")
0->3 nObjects = Number of objects in clones array.
4->7 fLowerBound= Lower bound of clones array.
8->.. objects = Sequentially, objects in the clones array. However, the data
| ordering depends on whether or not kBypassStreamer (0x1000) is
| set in TObject::fBits. By default, it is set. If it is not set,
| the objects are streamed sequentially using the streamer of the
| cloned class (e.g. TXxx::Streamer()).
|
| If it is set, the cloned class is split into its base classes and
| persistent data members, and those streamers are used. So, if the
| base classes and persistent data members of class TXxx are TXxxbase,
| TXxxdata0, TXxxdata1, etc., all the TXxxbase data from the entire
| clones array is streamed first, followed by all the TXxxdata0 data,
| etc. This breakdown is not recursive, in that the member objects
| are not again split.
-End TClonesArray object