Re: [ROOT] Copy TDirectory in another TFile

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed May 05 2004 - 19:09:30 MEST


My simple example was to copy all the keys from a directory, excluding subdirs.
A bit more complex logic is required to navigate in the directory tree.
The best solution would be a TDirectory::CopyDir or like function.
This will be implemented one day, but not in the coming weeks.

Rene Brun

Markus Stoye wrote:
> 
> Hi,
> Trying your suggestion the last Line ( ..->Write()) actually returned
> Int 0 and did not write?
> The copied File consits of several further Directories.
> 
> Rene Brun wrote:
> 
> > Hi Markus,
> >
> > There is no direct function to do this. However, you can do
> > something like:
> >
> >   TFile  f("30200020026938.root");
> >   f.cd("Record3");
> >   TDirectory *old = gDirectory;
> >   old->ReadAll();
> >   TFile f2("newfile.root","recreate");
> >   f2.mkdir("subdir");
> >   f2.cd("subdir");
> >   old->GetList()->Write();
> >
> >
> > Rene Brun
> >
> > Markus Stoye wrote:
> > >
> > > Hi'
> > > I've got a TFile with several TDirectories:
> > >
> > > root [0] TFile  f("30200020026938.root")
> > > root [1] f.ls()
> > > TFile**         30200020026938.root
> > >  TFile*         30200020026938.root
> > >   KEY: TDirectory       Record2;1       Record2
> > >   KEY: TDirectory       Record3;1       Record3
> > >   KEY: TDirectory       Record4;1       Record4
> > >   KEY: TDirectory       Record1;1       Record1
> > >
> > > and wand to copy and rename one Directory into another TFile.



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET