std::vector ConvertTreeCpp(TTree &inputTree, const char *outputFileName, const char* outputTreeName, const double datasetWeight) { ROOT::RDataFrame inputDataFrame(inputTree); auto finalDF = inputDataFrame.Filter([](double x) { return x > 10; }, {"soft_term_pt"}); finalDF = finalDF.Alias("nJets", "n_jet") .Alias("photonEta", "ph_eta") .Alias("subleadJetEta", "jet_sublead_eta") .Alias("metPt", "metTST_pt") .Alias("phCentrality", "g_centr") .Alias("nLeptons", "n_lep") .Alias("mJJ", "m_jj") .Alias("deltaYJJ", "dYjj") .Alias("deltaYJPh", "dYjg") .Alias("ptBalance", "pt_bal") .Alias("ptBalanceRed", "pt_bal_tr") .Define("sinDeltaPhiJJOver2", [](double dphi_jj) { return TMath::Sin(TMath::Abs(dphi_jj) / 2); }, {"dphi_jj"}) .Alias("leadJetPt", "jet_lead_pt") .Define("weightModified", [datasetWeight](double weight) { return weight*datasetWeight; }, {"weight"}) .Alias("nJets20", "n_jet20") .Alias("nJets25", "n_jet25") .Alias("nJets30", "n_jet30") .Alias("nJets35", "n_jet35") .Alias("nJets40", "n_jet40") .Alias("nJets45", "n_jet45"); vector branchList{"mJJ", "deltaYJJ", "ptBalance", "deltaYJPh", "phCentrality", "sinDeltaPhiJJOver2", "nJets", "weightModified", "ptBalanceRed", "leadJetPt", "subleadJetEta", "photonEta", "metPt", "nLeptons", "nJets20", "nJets25", "nJets30", "nJets35", "nJets40", "nJets45"}; auto passedEntryNum = finalDF.Count(); auto passedWeightSum = finalDF.Sum("weight"); auto passedWeightSumNorm = finalDF.Sum("weightModified"); finalDF.Snapshot(outputTreeName, outputFileName, branchList); return {double(passedEntryNum.GetValue()), passedWeightSum.GetValue(), passedWeightSumNorm.GetValue()}; }