Copy a subset of a Tree to a new Tree, one branch in a separate file.
One branch of the new Tree is written to a separate file
The input file has been generated by the program in $ROOTSYS/test/Event
with the command Event 1000 1 1 1
Author: Rene Brun
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Wednesday, April 17, 2024 at 11:23 AM.
.! $ROOTSYS/test/eventexe 1000 1 1 1
event:0, rtime=0.521087 s event:100, rtime=0.302760 s event:200, rtime=0.256569 s event:300, rtime=0.241764 s event:400, rtime=0.296764 s event:500, rtime=0.497722 s event:600, rtime=0.250295 s event:700, rtime=0.243965 s event:800, rtime=0.260012 s event:900, rtime=0.071586 s ****************************************************************************** *Tree :T : An example of a ROOT tree * *Entries : 1000 : Total = 81215777 bytes File Size = 37698999 * * : : Tree compression factor = 2.15 * ****************************************************************************** *Branch :event * *Entries : 1000 : BranchElement (see below) * *............................................................................* *Br 0 :TObject : BASE * *Entries : 1000 : Total Size= 14667 bytes File Size = 1823 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 7.77 * *............................................................................* *Br 1 :fType[20] : Char_t * *Entries : 1000 : Total Size= 24760 bytes File Size = 2241 * *Baskets : 3 : Basket Size= 51200 bytes Compression= 10.82 * *............................................................................* *Br 2 :fEventName : char* * *Entries : 1000 : Total Size= 23661 bytes File Size = 4833 * *Baskets : 3 : Basket Size= 51200 bytes Compression= 4.79 * *............................................................................* *Br 3 :fNtrack : Int_t * *Entries : 1000 : Total Size= 4651 bytes File Size = 1303 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 3.18 * *............................................................................* *Br 4 :fNseg : Int_t * *Entries : 1000 : Total Size= 4639 bytes File Size = 1899 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 2.18 * *............................................................................* *Br 5 :fNvertex : Int_t * *Entries : 1000 : Total Size= 4657 bytes File Size = 1264 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 3.28 * *............................................................................* *Br 6 :fFlag : UInt_t * *Entries : 1000 : Total Size= 4639 bytes File Size = 638 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 6.49 * *............................................................................* *Br 7 :fTemperature : Double32_t * *Entries : 1000 : Total Size= 4681 bytes File Size = 3407 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 1.22 * *............................................................................* *Br 8 :fMeasures[10] : Int_t * *Entries : 1000 : Total Size= 44877 bytes File Size = 14727 * *Baskets : 4 : Basket Size= 51200 bytes Compression= 3.01 * *............................................................................* *Br 9 :fMatrix[4][4] : Double32_t * *Entries : 1000 : Total Size= 68964 bytes File Size = 42327 * *Baskets : 5 : Basket Size= 51200 bytes Compression= 1.62 * *............................................................................* *Br 10 :fClosestDistance : Double32_t fClosestDistance[fNvertex] * *Entries : 1000 : Total Size= 37612 bytes File Size = 21553 * *Baskets : 4 : Basket Size= 51200 bytes Compression= 1.71 * *............................................................................* *Br 11 :fEvtHdr : EventHeader * *Entries : 1000 : Total Size= 22750 bytes File Size = 4433 * *Baskets : 3 : Basket Size= 51200 bytes Compression= 5.02 * *............................................................................* *Br 12 :fTracks : TClonesArray* * *Entries : 1000 : Total Size= 75907137 bytes File Size = 36839343 * *Baskets : 800 : Basket Size= 25600000 bytes Compression= 2.06 * *............................................................................* *Br 13 :fHighPt : TRefArray* * *Entries : 1000 : Total Size= 1514544 bytes File Size = 588768 * *Baskets : 81 : Basket Size= 632320 bytes Compression= 2.57 * *............................................................................* *Br 14 :fMuons : TRefArray* * *Entries : 1000 : Total Size= 71535 bytes File Size = 9223 * *Baskets : 5 : Basket Size= 51200 bytes Compression= 7.70 * *............................................................................* *Br 15 :fLastTrack : TRef * *Entries : 1000 : Total Size= 16771 bytes File Size = 3597 * *Baskets : 3 : Basket Size= 51200 bytes Compression= 4.52 * *............................................................................* *Br 16 :fWebHistogram : TRef * *Entries : 1000 : Total Size= 16792 bytes File Size = 1843 * *Baskets : 3 : Basket Size= 51200 bytes Compression= 8.82 * *............................................................................* *Br 17 :fH : TH1F* * *Entries : 1000 : Total Size= 961299 bytes File Size = 96296 * *Baskets : 51 : Basket Size= 404480 bytes Compression= 9.97 * *............................................................................* *Br 18 :fTriggerBits : TBits * *Entries : 1000 : Total Size= 41317 bytes File Size = 13023 * *Baskets : 4 : Basket Size= 51200 bytes Compression= 3.13 * *............................................................................* *Br 19 :fIsValid : Bool_t * *Entries : 1000 : Total Size= 1657 bytes File Size = 193 * *Baskets : 2 : Basket Size= 51200 bytes Compression= 5.93 * *............................................................................* *Br 20 :TRefTable : List of branch numbers with referenced objects * *Entries : 1000 : Total Size= 2422133 bytes File Size = 33640 * *Baskets : 76 : Basket Size= 32000 bytes Compression= 71.07 * *............................................................................* 1000 events and 78625869 bytes processed. RealTime=3.883485 seconds, CpuTime=3.290000 seconds compression level=1, split=1, arg4=1, IMT=0, compression algorithm=1 You write 20.246214 Mbytes/Realtime seconds You write 23.898441 Mbytes/Cputime seconds
Arguments are defined.
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);
Warning in <TClass::Init>: no dictionary for class Event is available Warning in <TClass::Init>: no dictionary for class EventHeader is available Warning in <TClass::Init>: no dictionary for class Track is available
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 header. Do not copy events
TFile newfile("small.root", "recreate");
auto newtree = oldtree->CloneTree(0);
Divert branch fH to a separate file and copy all events
newtree->GetBranch("fH")->SetFile("small_fH.root");
newtree->CopyEntries(oldtree);
newtree->Print();
newfile.Write();
****************************************************************************** *Tree :T : An example of a ROOT tree * *Entries : 1000 : Total = 81121436 bytes File Size = 30294564 * * : : Tree compression factor = 2.15 * ****************************************************************************** *Branch :event * *Entries : 1000 : BranchElement (see below) * *............................................................................* *Br 0 :TObject : BASE * *Entries : 1000 : Total Size= 14742 bytes File Size = 1353 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 8.33 * *............................................................................* *Br 1 :fType[20] : Char_t * *Entries : 1000 : Total Size= 24752 bytes File Size = 1503 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 12.81 * *............................................................................* *Br 2 :fEventName : char* * *Entries : 1000 : Total Size= 23653 bytes File Size = 3730 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 4.92 * *............................................................................* *Br 3 :fNtrack : Int_t * *Entries : 1000 : Total Size= 4730 bytes File Size = 971 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 3.36 * *............................................................................* *Br 4 :fNseg : Int_t * *Entries : 1000 : Total Size= 4716 bytes File Size = 1433 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 2.28 * *............................................................................* *Br 5 :fNvertex : Int_t * *Entries : 1000 : Total Size= 4737 bytes File Size = 931 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 3.51 * *............................................................................* *Br 6 :fFlag : UInt_t * *Entries : 1000 : Total Size= 4716 bytes File Size = 444 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 7.35 * *............................................................................* *Br 7 :fTemperature : Double32_t * *Entries : 1000 : Total Size= 4765 bytes File Size = 2626 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 1.25 * *............................................................................* *Br 8 :fMeasures[10] : Int_t * *Entries : 1000 : Total Size= 44780 bytes File Size = 11426 * *Baskets : 1 : Basket Size= 65024 bytes Compression= 3.08 * *............................................................................* *Br 9 :fMatrix[4][4] : Double32_t * *Entries : 1000 : Total Size= 68867 bytes File Size = 33512 * *Baskets : 2 : Basket Size= 97280 bytes Compression= 1.63 * *............................................................................* *Br 10 :fClosestDistance : Double32_t fClosestDistance[fNvertex] * *Entries : 1000 : Total Size= 37512 bytes File Size = 16790 * *Baskets : 1 : Basket Size= 55296 bytes Compression= 1.74 * *............................................................................* *Br 11 :fEvtHdr : EventHeader * *Entries : 1000 : Total Size= 22742 bytes File Size = 3248 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 5.44 * *............................................................................* *Br 12 :fTracks : TClonesArray* * *Entries : 1000 : Total Size= 75825324 bytes File Size = 29640988 * *Baskets : 3 : Basket Size= 25600000 bytes Compression= 2.04 * *............................................................................* *Br 13 :fHighPt : TRefArray* * *Entries : 1000 : Total Size= 1506705 bytes File Size = 458164 * *Baskets : 2 : Basket Size= 25600000 bytes Compression= 2.62 * *............................................................................* *Br 14 :fMuons : TRefArray* * *Entries : 1000 : Total Size= 71445 bytes File Size = 5398 * *Baskets : 2 : Basket Size= 99840 bytes Compression= 10.39 * *............................................................................* *Br 15 :fLastTrack : TRef * *Entries : 1000 : Total Size= 16763 bytes File Size = 2668 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 4.82 * *............................................................................* *Br 16 :fWebHistogram : TRef * *Entries : 1000 : Total Size= 16784 bytes File Size = 1278 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 10.07 * *............................................................................* *Br 17 :fH : TH1F* * *Entries : 1000 : Total Size= 956798 bytes File Size = 64355 * *Baskets : 2 : Basket Size= 25600000 bytes Compression= 11.87 * *............................................................................* *Br 18 :fTriggerBits : TBits * *Entries : 1000 : Total Size= 41221 bytes File Size = 10006 * *Baskets : 1 : Basket Size= 60416 bytes Compression= 3.25 * *............................................................................* *Br 19 :fIsValid : Bool_t * *Entries : 1000 : Total Size= 1737 bytes File Size = 100 * *Baskets : 1 : Basket Size= 51200 bytes Compression= 8.71 * *............................................................................* *Br 20 :TRefTable : List of branch numbers with referenced objects * *Entries : 1000 : Total Size= 2422133 bytes File Size = 33640 * *Baskets : 76 : Basket Size= 32000 bytes Compression= 71.07 * *............................................................................*