[ROOT] Bug in TChain::Merge

From: George A. Heintzelman (gah@bnl.gov)
Date: Wed Nov 29 2000 - 23:41:28 MET


Hi rooters,

I think there is a bug in TChain::Merge. I have a chain of files, each 
of which has trees with a single branch, made by a TBranch (splitlevel 
= 1) on this class:


class GAHPairTreeElem: public TObject {
public:
  // Not using f convention because this is a struct:
  GAHPairTreeElem() {};
  GAHPairTreeElem(int Create);
  TClonesArray *Tracks;
  TClonesArray *Pairs;
  void Clear();  // Called to clear both clonesarrays in my loops.
ClassDef(GAHPairTreeElem,1)
};

By the construction of this, number of Pairs = combinations(2 tracks) 
in each event.

Because I need to do some random access on this tree when I create a 
mixed-event background for the pairs, I want to merge the chain into a 
single tree for faster access. When I do so, I run into trouble if 
either 0 tracks or 0 pairs are in any entry. It looks like in that 
case, the clonesarray from the previous event is held over. (See scans 
below)

I ran into this problem as well in my own loops over entries, but was 
able to work around it by calling Clear on the clonesarrays myself 
in-between loading events; but I can't do that when I'm using the 
TChain::Merge facility.

I'm using Root 2.25/02, but I don't think TBranchClones code has 
changed much lately.

Here's the scan of the first part of the chain:

************************************
*    Row   *   Tracks_ *    Pairs_ *
************************************
*        0 *         1 *         0 *
*        1 *         1 *         0 *
*        2 *         1 *         0 *
*        3 *         0 *         0 *
*        4 *         1 *         0 *
*        5 *         2 *         1 *
*        6 *         1 *         0 *
*        7 *         1 *         0 *
*        8 *         3 *         3 *
*        9 *         2 *         1 *
*       10 *         0 *         0 *
*       11 *         2 *         1 *
*       12 *         1 *         0 *
*       13 *         1 *         0 *
*       14 *         0 *         0 *
*       15 *         0 *         0 *
*       16 *         0 *         0 *
*       17 *         1 *         0 *
*       18 *         1 *         0 *
*       19 *         1 *         0 *
*       20 *         0 *         0 *
*       21 *         0 *         0 *
*       22 *         1 *         0 *
*       23 *         0 *         0 *
*       24 *         0 *         0 *
************************************

And here's the scan of the merged tree created from that chain:
************************************
*    Row   *   Tracks_ *    Pairs_ *
************************************
*        0 *         1 *         0 *
*        1 *         1 *         0 *
*        2 *         1 *         0 *
*        3 *         1 *         0 *
*        4 *         1 *         0 *
*        5 *         2 *         1 *
*        6 *         1 *         1 *
*        7 *         1 *         1 *
*        8 *         3 *         3 *
*        9 *         2 *         1 *
*       10 *         2 *         1 *
*       11 *         2 *         1 *
*       12 *         1 *         1 *
*       13 *         1 *         1 *
*       14 *         1 *         1 *
*       15 *         1 *         1 *
*       16 *         1 *         1 *
*       17 *         1 *         1 *
*       18 *         1 *         1 *
*       19 *         1 *         1 *
*       20 *         1 *         1 *
*       21 *         1 *         1 *
*       22 *         1 *         1 *
*       23 *         1 *         1 *
*       24 *         1 *         1 *
************************************



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:38 MET