// -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 tobject.txt). // | 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