Hi Frank, You can use TChain::Merge(TFile*) as follow TFile *file = new TFile("output.root","RECREATE"); firstChain->Merge(file); // Merge close the file so let's reopen it file = new TFile("output.root","UPDATE"); secondChain->Merge(file); Note that if the data does not fit in one file, the TTree::ChangeFile mechanism will be run. This mechanism assumes one tree per file and always 'recreate' file that it needs (see doc). Alternatively you could try: TFile *file = new TFile("output.root","RECREATE"); firstChain->CloneTree(); // the chain might change the current directory. file->cd(); secondChain->CloneTree(); file->Write(); However the same caveat about TTree::ChangeFile is in effect. Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Frank Simon Sent: Thursday, August 14, 2003 10:33 AM To: roottalk@pcroot.cern.ch Subject: [ROOT] Adding files with several trees Hi all, I'm trying to add a large number of files that contain several different trees (same set of trees in each file). I know that for cases with one tree per file, the way to go is TChain::Merge("add.root"). However, this does not work if I want to have all my trees in one file at the end. The macro http://root.cern.ch/root/html/examples/hadd.C.html claims to be able to do it, but it only creates empty trees in the file (works fine for histograms, though...) I would not mind doing the operation in two steps, eg. creating one file per tree with TChain::Merge() and then combining these files into one, but I don't see how to do that... Thanks for your help! Frank ================================================================ | Frank Simon http://www.mppmu.mpg.de/~fsimon | | | | Max-Planck-Institut fuer Physik +49-89-32354-226 | | Foehringer Ring 6 | | 80805 Muenchen Brookhaven Nat. Lab.: | | Germany +1-631-344-3121 | ================================================================
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET