/*******************************************************************************************/ /* */ /* This macro allows to merge .root files with total size larger than 100 GB. */ /* Please check the limit here: TTree::SetMaxTreeSize (...) */ /* */ /* Runset range : [run1 ... run2] */ /* */ /* Input file names: The assumed naming is: [InNamePrefix][RunNumber].root */ /* */ /* Output file name: [OutNamePrefix].root , Default is MergedFile.root . Change if needed. */ /* */ /* For TFileMerger reference see: root.cern.ch/doc/master/classTFileMerger.html */ /* */ /*******************************************************************************************/ int ttree_merger (int run1 = 1, int run2 = 2, char* InNamePrefix = "test", char* OutNamePrefix = "MergedFile" ) { TTree::SetMaxTreeSize (1LL*1024*1024*1024*1024); // Set the size limit to 1 TB. Change if needed. TFileMerger merger (kFALSE, kFALSE); // hadd style merger.OutputFile ( Form("%s.root", OutNamePrefix) ); cout << endl; for (Int_t irun = run1; irun <= (Int_t) run2; ++irun) { TString name = Form ("%s%i.root", InNamePrefix, irun); cout << "| Adding " << name << endl; if ( !merger.AddFile ( name ) ) return false; } cout << "|\n"; gSystem->Exec ("echo '| Date: ' `date`"); cout << "|\n+--> Merging files into: " << Form ("%s.root",outFile) << endl; merger.Merge(); cout << "|\n"; gSystem->Exec ("echo '+ Date: ' `date`"); cout << endl; return 0; }