[ROOT] Automatic splitting

From: Marian Ivanov (marian.ivanov@cern.ch)
Date: Tue Mar 05 2002 - 13:57:58 MET


Hi rooters,
>
>  I have a class AliClusters that contains a "TClonesArray *" pointer
as
> datamember.
>   so like
>
>      class Event : public TObject{
>      // ...
>       TClonesArray *myArray;  //
>        //...
>      };
>
>     I put this Class AliClusters in a top-level branch of TTree so:
>
>
>      TBranch *br= tree->Branch("Clusters","AliClusters",
>                         &event1,4000,99);
>
>     so with splitlevel = 99 (max)
>
>      I see that the TClonesArray is not splitted anymore, is there any
reasons
> for that?

> Yes there is. In new version root version 3.03.02 was commented line
which was
> responsible for splitting/

 Int_t TBranchElement::Unroll(const char *name, TClass *cltop, TClass
*cl,Int_t
basketsize, Int_t splitlevel, Int_t btype) {
......
......if (elem->GetClassPointer() == TClonesArray::Class()) {
               . .......
             //branch = new
TBranchElement(branchname,info,jd,pointer,basketsize,splitlevel-1,btype);
-
this is old with spliting
               branch = new
TBranchElement(branchname,info,jd,pointer,basketsize,0,btype);


To speedup process of reading data (and to don't touch existing code) I
need to
have back old functionality , or to state you cannot rely on it.
In such case I will have to rewrite code and I will do it slower.
Is it realy very important to forbid automatic spliting of such objects
?  (I
don't have  TClonesArray of TCloneArray)



Best regards
                            Marian



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:44 MET