Re: the second branch in the split mode

Rene Brun (Rene.Brun@cern.ch)
Tue, 27 Apr 1999 15:24:24 +0000


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
> >