Re: [ROOT] How do I copy an ntuple into a file

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Jan 18 2002 - 08:19:53 MET


Ed,

SetDirectory is not sufficient to move an object from one directory
to another if the object is a class like a TTree, because one part of the
object only is in memory. It does not move what is on disk.
There is a special function to copy a Tree. Modify your code in the
following way:

      TFile *file1 = new TFile("hsimple.root");
      TFile *file2 = new TFile("new.root","RECREATE");
      TNtuple *pNtup = (TNtuple *)file1->Get("ntuple");
      TNtuple *n = pNtup->CloneTree();
      n->Write();

Rene Brun

Ed Oltman wrote:
> 
> Hi,
>   I am having trouble writing an TNtuple object that lives in one directory
> to a new file.  For example,
> using the hsimple.root file made by the hsimple.c macro in  tutorials:
> 
>       TFile *file1 = new TFile("hsimple.root");
>       TFile *file2 = new TFile("new.root","RECREATE");
>       TNtuple *pNtup = (TNtuple *)file1->Get("ntuple");
>       pNtup->SetDirectory(file2);
>       file2->Write();
> 
>  I get the following error (5 times) on file2->Write()
> 
> Error in <TBranch::Write>: File hsimple.root is not writeable
> 
> Why is that?
> 
> meanwhile,
> 
>       file2->ls()
> 
> shows
> 
> TFile**           new.root
>  TFile*           new.root
>    OBJ: TNtuple   ntuple   Demo ntuple  : 0
>    KEY: TNtuple   ntuple;1         Demo ntuples
> 
> When I start a new root session and type
> 
>         TFile *file = new TFile("new.root");
>       file->ls()
> 
> It shows:
> 
> TFile**           new.root
>  TFile*           new.root
>    KEY: TNtuple   ntuple;1         Demo ntuples
> 
> however, when I try to do something (e.g. ntuple->Draw("px")
> 
> I get a huge number of following:
> 
> Error in <TFile::ReadBiuffer>: error reading all requested bytes from file
> new.root, got 0 of 29594
> 
> What am I doing wrong???  I am using version 3.02/07 on Windows 2000.
> 
> Thanks!
> 
> Ed Oltman



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:38 MET