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