Re: [ROOT] backward compatibiltiy problem

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Sep 05 2003 - 17:43:45 MEST


Hi Ed,

Using your recipee, I cannot reproduce the problem.
Could you send me a script reproducing exactly this problem?

Rene Brun

Ed Oltman wrote:
> 
> Rene,
> Thanks for looking into this.  Attached are the two files
> Ed
> 
> > -----Original Message-----
> > From: brun@pcbrun.cern.ch [mailto:brun@pcbrun.cern.ch]On Behalf Of Rene
> > Brun
> > Sent: Thursday, September 04, 2003 1:25 AM
> > To: Ed Oltman
> > Cc: Roottalk@Pcroot. Cern. Ch
> > Subject: Re: [ROOT] backward compatibiltiy problem
> >
> >
> > Hi Ed,
> >
> > Could you send me your files test30505.root and test.root as mail
> > attachements?
> >
> > Rene Brun
> >
> > Ed Oltman wrote:
> > >
> > > Hello,
> > >  I have a bunch of files created with win32 version of root
> > 3.05/5.  These
> > > files contain lots of root objects including TF1s.  I have
> > recently switched
> > > to gdk version of root 3.05/7.  I can open and read these files (3.05/5
> > > generated)  without problem.  However, if after opening one of
> > these files a
> > > create a new TF1 object and then write that out, I do have a
> > problem:  That
> > > TF1 object becomes unreadable.  HEre's the kind of error I Get:
> > >
> > > Error in <TBuffer::CheckByteCount>: object of class TF1 read
> > too few bytes:
> > > 1079 instead of 1151
> > > Warning in <TBuffer::CheckByteCount>: TF1::Streamer() not in
> > sync with data
> > > on file, fix Streamer()
> > >
> > > Here's how do demonstrate the problem.  First, in root version
> > 3.05/5 do the
> > > following:
> > >
> > > TFile *f = new TFile("test30505.root","recreate")
> > > TH1F *ph = new TH1F("ph","test",100,-5.,5.)
> > > ph->FillRandom("gaus",100000)
> > > ph->Fit("gaus")
> > > ph->Write()
> > > f->Close()
> > > .q
> > >
> > > Then, run root version 3.05/7 and do the following:
> > >
> > > TFile *f = new TFile("test30505.root")
> > > TH1F *ph = (TH1F *)f->Get("ph")
> > > ph->Draw()                                               // no
> > problem here!
> > > //
> > > //  Now, create a new TF1 attached to a new TH1
> > > //
> > > TH1F *ph1 = new TH1F("ph1","test1",100,-5.,5.)
> > > ph1->FillRandom("gaus",100000)
> > > ph1->Draw()
> > > ph1->Fit("gaus")
> > > TFile *f1 = new TFile("test.root","recreate")
> > > ph1->SetDirectory(f1)
> > > ph1->Write()
> > > f1->Close()
> > > .q
> > >
> > > Now run 3.05/7 again and do the following:
> > >
> > > TFile *f = new TFile("test.root")
> > > ph1->Draw()
> > >
> > > and the error message appears:
> > >
> > > Error in <TBuffer::CheckByteCount>: object of class TF1 read
> > too few bytes:
> > > 1079 instead of 1151
> > > Warning in <TBuffer::CheckByteCount>: TF1::Streamer() not in
> > sync with data
> > > on file, fix Streamer()
> > >
> > > Note: if you try to read test.root from version 3.05/5 - it
> > works fine and
> > > the TF1 is ok!
> > >
> > >
> > ------------------------------------------------------------------
> > --------------
> > >                   Name: winmail.dat
> > >    winmail.dat    Type: application/ms-tnef
> > >               Encoding: base64
> >
> >
> >
> 
>   --------------------------------------------------------------------------------
>                      Name: test30505.root
>    test30505.root    Type: unspecified type (application/octet-stream)
>                  Encoding: base64
> 
>                 Name: test.root
>    test.root    Type: unspecified type (application/octet-stream)
>             Encoding: base64



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:15 MET