/// \file /// \ingroup tutorial_tree /// \notebook -nodraw /// 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 1 1`. /// /// \macro_code /// /// \author Rene Brun // Load the library at macro parsing time: we need this to use its content in the code R__LOAD_LIBRARY($ROOTSYS/test/libEvent.so) void copytree() { TString dir = "$ROOTSYS/test/Event.root"; gSystem->ExpandPathName(dir); const auto filename = gSystem->AccessPathName(dir) ? "./Event.root" : "$ROOTSYS/test/Event.root"; TFile oldfile(filename); TTree *oldtree; oldfile.GetObject("T", oldtree); // Deactivate all branches oldtree->SetBranchStatus("*", 0); // Activate only four of them for (auto activeBranchName : {"event", "fNtrack", "fNseg", "fH"}) oldtree->SetBranchStatus(activeBranchName, 1); // Create a new file + a clone of old tree in new file TFile newfile("small.root", "recreate"); auto newtree = oldtree->CloneTree(); newtree->Print(); newfile.Write(); }