#include #include #include #include #include #include void makeTree(int numEntries){ TTree *tree = new TTree("tree","tree"); double x = 2.0; tree->Branch("BeamEnergy",&x); for (int i = 0; i < numEntries; i++){ tree->Fill(); } TFile file("tree.root","recreate"); file.cd(); tree->Write(); } void skimTree(){ TChain* tree = new TChain("tree"); tree->Add("tree.root"); TFile file2("treeCopy.root","recreate"); file2.cd(); TTree* tree2 = tree->CopyTree("(1==1)"); tree2->Write(); } TH1F* dataframeMethod(TString fileName){ ROOT::EnableImplicitMT(0); ROOT::RDataFrame DF("tree",fileName.Data()); auto hDF = DF.Filter("(1==1)") .Define("VAR","BeamEnergy") .Histo1D({"NAME","TITLE",100,0.0,5.0},"VAR"); TH1F hist; hDF->Copy(hist); return new TH1F(hist); } int main() { makeTree(1); skimTree(); auto *h = dataframeMethod("treeCopy.root"); std::cout << h->GetEntries() << std::endl; std::cout << h->GetMean() << std::endl; return 0; }