Hello Root,
I'm using Red Hat Linux 7.3 and Root version 3.03/09 (the best that's
available at babar!).
I've got a problem reading a Tree after it's been put into a TChain. I
have one program that takes existing .root files, loops over them to make
a selection cut, then writes the outcome as more .root files. I can look
at these files all I want with TBrowser, all the data is there. My problem
comes when I try to use it as part of another program to fit the results.
In this second program I chain together the files, but when I try to read
what's in the chain I get errors in TFile::ReadBuffer. This doesn't happen
when I run the fitting program over the original uncut files. Is there
some 'special' way of writing the file I should have thought of? I've
checked the file permissions, tried on 3 different machines and I'm
running out of ideas.............
First program:
Int_t nentries = Int_t(fChain->GetEntries());
for (Int_t i1=0; i1<nentries;i1++)
{
fChain->GetEntry(i1);
if( iType==trueiType && fabs(mKstar-trueMassHad)<.05)
{red->Fill();}
}
TFile *z= new
TFile("/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/cnc.root",
"RECREATE", "output from BestCand");
z.cd();
red->Write("red");
Second program:
TChain* signalCH = new TChain("red");
signalCH.Add("/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/cnc.root",
0);
signalCH.Add("/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/ncc.root",
0);
TTree *signalCHTree = signalCH;
char *massbin[] = new char;
*massbin[]= "mKstar>=1.0 && mKstar<1.1";
TTree *signalCHTree = signalCH;
signalCHTree = signalCH->CopyTree(massbin[]);
this results in:
Error in <TFile::ReadBuffer>: error reading all requested bytes from file
/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/cnc.root, got 0 of
20629
Error in <TFile::ReadBuffer>: error reading all requested bytes from file
/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/cnc.root, got 0 of
20629
Error in <TFile::ReadBuffer>: error reading all requested bytes from file
/afs/slac.stanford.edu/g/babar/work/d/djbard/level2/cnc.root, got 0 of
20629
etc etc
There was a similar question in RooTalk a while ago that suggested using:
signalCH->GetEntry(0);
TTree *signalCHTree = (TTree*)signalCH->GetTree()->CloneTree(0);
but that gives exactly the same error.
Any ideas?
Thanking you in advance,
Debbie
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET