Re: [ROOT] copy a selected number of entries from one TTree to another..

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Nov 27 2002 - 21:42:53 MET


Hi Toni,

see example below:

Rene Brun


{
// Example of Root macro to copy a subset of a Tree to a new Tree
// The input file has been generated by the program in $ROOTSYS/test/Event
// with   Event 1000 1 99 1

   gROOT->Reset();
   gSystem->Load("$ROOTSYS/test/libEvent.so");

   //Get old file, old tree and set top branch address
   TFile *oldfile = new TFile("$ROOTSYS/test/Event.root");
   TTree *oldtree = (TTree*)oldfile->Get("T");
   Int_t nentries = (Int_t)oldtree->GetEntries();
   Event *event   = 0;
   oldtree->SetBranchAddress("event",&event);

   //Create a new file + a clone of old tree in new file
   TFile *newfile = new TFile("small.root","recreate");
   TTree *newtree = oldtree->CloneTree(0);

   for (Int_t i=0;i<nentries; i++) {
      oldtree->GetEntry(i);
      if (event->GetNtrack() > 605) newtree->Fill();
      event->Clear();
   }
   newtree->Print();
   newtree->AutoSave();
   delete oldfile;
   delete newfile;
}


On Wed, 27 Nov 2002, Antoni Munar wrote:

> 
> Hi.
> 
> I want to implement a simple macro (maybe through MakeClass) that opens a
> file, loops over the entries of a TTree, and under certain conditions
> copies selected entries into other TTree (and to other file)...
> 
> I was looking at the available to me examples, but I did not found what I
> was expecting... any hint..?
> 
> cheers,
> Toni
> 
> ###################################################
> Antoni Munar Ara
> Department of Physics and Astronomy
> David Rittenhouse Laboratory
> University of Pennsylvania
> 209 South 33-rd Street
> Philadelphia, PA (USA)
> 19104-6396
> 
> 



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