[Fwd: Re: TFile::Copy]

Rene Brun (Rene.Brun@cern.ch)
Tue, 10 Feb 1998 10:42:45 +0100


Message-ID: <34DAE4FE.B4FC48AC@mail.cern.ch>
Date: Fri, 06 Feb 1998 11:25:02 +0100
From: Rene Brun <brun@mail.cern.ch>
Organization: CERN. European Lab. for Particle Physics
X-Mailer: Mozilla 4.04 [en] (X11; I; HP-UX B.10.20 9000/755)
MIME-Version: 1.0
To: "William J. Deninger" <deninger@uiuc.edu>
CC: roottalk <roottalk@hpsalo.cern.ch>
Subject: Re: TFile::Copy
References: <01bd2db0$fafe5d70$5e0dae80@g2pc1.npl.uiuc.edu>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

William J. Deninger wrote:

> Hello,
>
> I'm trying to figure out how to copy a TTree from one TFile to another.
> TFile::Copy doesn't seem to be implemented yet, and the following doesn't
> seem to work either:
>
> f1 = new TFile("f:/data/G2T076_076.root","update");
> f1.Delete("traceback;*"); // deleting old TTree object
>
> f2 = new TFile("f:/data/G2T076_076;1.root"); // file containing newest TTree
> object
> f1.cd();
> TTree *traceback = (TTree *) f2.Get("traceback"); // retrieve updated TTree
> object
> traceback.Write(); // write to f1
> f1.Write();
> f1.Close();
>
> Any suggestions?

In version 1.03/09 I introduced a function TTree::CloneTree
to do the job.
Example: assume an existing file with a Tree h1
and you want to copy this Tree to another file:

Root > TFile f1("oldfile.root");
Root > TTree *h1 = (TTree*)f1.Get("h1");
Root > TFile f2("newfile.root","recreate");
Root > TTree *h1new = h1->CloneTree(h1->GetEntries());
Root > h1new->Write();

Rene Brun