%%cpp -d #include "TString.h" #include "TROOT.h" #include "TChain.h" #include "TBranch.h" #include "TFileCollection.h" #include "TH1F.h" #include "TTreeReader.h" #include "ROOT/TTreeProcessorMP.hxx" #include const auto file0 = "http://root.cern/files/h1/dstarmb.root"; const std::vector files = {file0, "http://root.cern/files/h1/dstarp1a.root", "http://root.cern/files/h1/dstarp1b.root", "http://root.cern/files/h1/dstarp2.root"}; gROOT->SetBatch(kTRUE); TString selectorPath = gROOT->GetTutorialDir(); selectorPath += "/tree/h1analysis.C+"; std::cout << "selector used is: " << selectorPath << "\n"; auto sel = TSelector::GetSelector(selectorPath); #if defined(__reproduce_davix) auto fp = std::make_unique(TFile::Open(file0)); auto tree = fp->Get("h42"); #endif ROOT::TTreeProcessorMP pool(3); TList *out = nullptr; #if defined(__reproduce_davix) out = pool.Process(*tree, *sel); sel->GetOutputList()->Delete(); #endif out = pool.Process(file0, *sel, "h42"); sel->GetOutputList()->Delete(); TChain ch; TFileCollection fc; for (auto &&file : files) { fc.Add(new TFileInfo(file.c_str())); ch.Add(file.c_str()); } out = pool.Process(files, *sel, "h42"); sel->GetOutputList()->Delete(); out = pool.Process(fc, *sel); sel->GetOutputList()->Delete(); out = pool.Process(ch, *sel); sel->GetOutputList()->Delete(); return 0;