Re: the second branch in the split mode

From: Tioukov Valeri (valeri@d500na1.na.infn.it)
Date: Tue Apr 27 1999 - 15:17:52 MEST


Hi Rene and rooters,

The dot in the branch specification solves all problems pointed out in my 
previous mail. 

But one useful feature seems to be dissapeared in this case:

   T->Branch("track1.","Track",&track1,16000,1);
   T->Branch("track2.","Track",&track2,16000,1);

if in this example class Track has member pointer to TClonesArray - the 
contents of the array is not stored any more.

If in one branch I remove dot ("track1") or change split mode to 0 - it 
works perfectly.

Is it fundamental limitation ore could be improved?

Best regards
Valeri


On Thu, 22 Apr 1999, Rene Brun wrote:

> Hi Valeri,
> If you look carefully at the release notes of 2.21/08, you will find
> the following paragraph:
> 
> 
> - Changes in classes TTree, TBranchClones and TBranchObject to support
>   branches with leaves having the same name.
>   Support case of objects with different addresses at each Fill.
>   In case a Tree branch is a TObject and split mode , one can force
>   the specified branch name to preceed the object data member name
>   by terminating the branch name with a "."
>   For example, if one wants two branches in a TTree referencing
>   two objects of the same class Track, one can do:
>   Track *track1=0, *track2=0;
>   T->Branch("track1.","Track",&track1,16000,1);
>   T->Branch("track2.","Track",&track2,16000,1);
> 
> This should fix your problems.
> 
> Rene Brun
> 
> 
> Tioukov Valeri wrote:
> > 
> > Hi rooters,
> > 
> > When one store into tree 2 branches with 2 objects which have the common
> > name of members (for example o1:{a,b,u} o2:{x,y,u}) the storing now
> > (Version 2.21/08) is fine.
> > 
> > But the access to this data is a bit misleading:
> > 3 cases of access:
> > 1)  Num *n1 = new Num();
> >     Num *n2 = new Num();
> >     tree->SetBranchAddress("o1",&n1);
> >     tree->SetBranchAddress("o2",&n2);
> >     tree->GetEvent(3);
> >     n1->Print();
> >     n2->Print();
> > 
> >     works correct
> > 
> > 2) If one try to do it from browser: double click on the leaf "u" to draw
> >    histogram it always drawn the values of the 1-st stored branch!!!
> >    It is very surprising on the first sight because two different
> >    branches looks really different. But most probably the using mechanizm
> >    is the same as in case 3)
> > 
> > 3) tree->Draw("u");  Always drawn the values of the 1-st stored branch.
> >    In fact the way to address to the separate branch in the sintacsis of
> >    this call is not exist.
> > 
> > I think that something should be corrected here. Especially the case 2)
> > is really dangerous, because compleatly misleading.
> > 
> > All files used for test could be found in
> > http://chorusdq.na.infn.it/root/
> > 
> > Best regards
> > Valeri
> 



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:32 MET