Hi Axel,
Sorry for being late with this problem. I finally found some time
to investigate it. It was effectively a problem with your class setup
and I have fixed this case in the current version in CVS.
Thanks for providing this simple test case.
Rene Brun
Axel Naumann wrote:
>
> Hi,
>
> I've been trying to reproduce this problem for ages now - today I
> succeeded. Attached you'll find two simple classes. They're stored in a
> tree which only has one event, and which is written to file. (.x
> test.cxx++, don't forget to gSystem->Load("libPhysics") first). Later,
> we test for consistency reading this tree back (.x read.cxx++).
>
> When setting the splitlevel via the TTree c'tor everything works fine.
> When setting the splitlevel via the TTree::Branch(const char *name, void
> *clonesaddress, Int_t bufsize, Int_t splitlevel) argument instead (not
> setting it via the TTree c'tor), some elements (xyz of the jet) come out
> as 0 when reading back, another (M) differs from the written value.
>
> So TTree::TBranch(const char *name, void *clonesaddress, Int_t bufsize,
> Int_t splitlevel) seems to be broken, at least with splitlevel==99, when
> not explicitly setting the tree splitlevel. Or I misunderstood how it's
> supposed to work; in that case a clarification in the doc about
> "branch's splitlevel can't be higher than tree's splitlevel" or
> something alike would be helpful.
>
> Cheers, Axel.
>
> last week's cvs, gcc 3.1, linux
> Disclaimer: The example is not meant to be good c++. Instead, it is
> meant to illustrate a possible problem with ROOT. A real program should
> have tests for 0 pointers etc.
>
> --------------------------------------------------------------------------------
> Name: splitlevel.tar.bz
> splitlevel.tar.bz Type: unspecified type (application/octet-stream)
> Encoding: base64
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET