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