Dear Root developers, I am surprised that there is no simple solution to the problem of adding more objects to an already existing tree. The simple solutions I have tried results in files with 2 trees, T;1 and T;2. If I insist to remain with only one tree in the file, I have found no other solution than creating an other file, copying the content of the first file into the second file, and then adding the new elements. Here is the code I use to append the object fRun of class TBCrun to an already existing tree containing objects of class TBCrun: TBCrun *run = new TBCrun(); TFile *oldf = new TFile("file1.root"); TTree *oldt = (TTree *)oldf->Get("T"); Int_t nrun = (Int_t)oldt->GetEntries(); TBranch *b1 = oldt->GetBranch("Run"); b1->SetAddress(&run); TFile *newf = new TFile("file2.root","recreate"); TTree *newt = new TTree("T","T"); TBranch *b2 = newt->Branch("Run","TBCrun",&run,bufsize,99); for (Int_t k=0;k<nrun;k++) { oldf->cd(); nb1 += oldt->GetEntry(k,1); newf->cd(); nb2 += newt->Fill(); } newt->SetBranchAddress("Run",&fRun); newt->Fill(); newf->Write(); It works, but seems incredibly complicate to just add one element to the tree. It has also the disadvantage of creating a second file, which imposes later to delete the first file, and rename the second file with the name of the deleted file. Would it be feasible to add a method "Append" to the class TTree? François-Xavier Gentit DAPNIA/SPP CEA Saclay http://gentit.home.cern.ch/gentit/
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:07 MET