Logo ROOT   6.08/07
Reference Guide
copytree3.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_tree
3 /// \notebook -nodraw
4 /// Example of Root macro to copy a subset of a Tree to a new Tree, selecting entries.
5 ///
6 /// Only selected entries are copied to the new Tree.
7 /// The input file has been generated by the program in `$ROOTSYS/test/Event`
8 /// with `Event 1000 1 99 1`
9 ///
10 /// \macro_code
11 ///
12 /// \author Rene Brun
13 
14 void copytree3() {
15 
16  gSystem->Load("$ROOTSYS/test/libEvent");
17 
18  //Get old file, old tree and set top branch address
19  TFile *oldfile;
20  TString dir = "$ROOTSYS/test/Event.root";
21  gSystem->ExpandPathName(dir);
22  if (!gSystem->AccessPathName(dir))
23  {oldfile = new TFile("$ROOTSYS/test/Event.root");}
24  else {oldfile = new TFile("./Event.root");}
25  TTree *oldtree = (TTree*)oldfile->Get("T");
26  Long64_t nentries = oldtree->GetEntries();
27  Event *event = 0;
28  oldtree->SetBranchAddress("event",&event);
29 
30  //Create a new file + a clone of old tree in new file
31  TFile *newfile = new TFile("small.root","recreate");
32  TTree *newtree = oldtree->CloneTree(0);
33 
34  for (Long64_t i=0;i<nentries; i++) {
35  oldtree->GetEntry(i);
36  if (event->GetNtrack() > 605) newtree->Fill();
37  event->Clear();
38  }
39  newtree->Print();
40  newtree->AutoSave();
41  delete oldfile;
42  delete newfile;
43 }
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Definition: TSystem.cxx:1266
long long Long64_t
Definition: RtypesCore.h:69
virtual void Print(Option_t *option="") const
Print a summary of the tree contents.
Definition: TTree.cxx:6730
virtual Int_t Fill()
Fill all branches.
Definition: TTree.cxx:4375
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:50
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
Definition: TTree.cxx:5211
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Definition: TSystem.cxx:1819
Basic string class.
Definition: TString.h:137
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Definition: TTree.cxx:3004
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Change branch address, dealing with clone trees properly.
Definition: TTree.cxx:7760
R__EXTERN TSystem * gSystem
Definition: TSystem.h:549
int nentries
Definition: THbookFile.cxx:89
virtual Long64_t GetEntries() const
Definition: TTree.h:393
A TTree object has a header with a name and a title.
Definition: TTree.h:98
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
Definition: TSystem.cxx:1244
virtual Long64_t AutoSave(Option_t *option="")
AutoSave tree header every fAutoSave bytes.
Definition: TTree.cxx:1337