Re: the second branch in the split mode

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Apr 27 1999 - 17:24:24 MEST


Hi Valeri,
This should work, in principle!
Could you send me your header file for the class Track?

Rene Brun

Tioukov Valeri wrote:
> 
> 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