def process_muon(muons_all, genWeight_all): out_hists = {} nmuon = ak.num(muons_all) muons = muons_all[nmuon > 0] genWeight = genWeight_all[nmuon > 0] if len(muons) == 0: return out_hists else: out_hists["muon_pT1"] = Hist1D(ak.to_numpy(muons.pt[:, 0]), bins=bin_pt2, weights=ak.to_numpy(genWeight), label="mu1 pt") out_hists["muon_eta1"] = Hist1D(ak.to_numpy(muons.eta[:, 0]), bins=bin_eta, weights=ak.to_numpy(genWeight), label="mu1 eta") out_hists["muon_phi1"] = Hist1D(ak.to_numpy(muons.phi[:, 0]), bins=bin_phi, weights=ak.to_numpy(genWeight), label="mu1 phi") out_hists["muon_iso1"] = Hist1D(ak.to_numpy(muons.pfRelIso03_all[:, 0]), bins=bin_iso_lep, weights=ak.to_numpy(genWeight), label="mu1 iso") out_hists["n_muon"] = Hist1D(ak.num(muons), bins=np.linspace(0, 5, 6), weights=ak.to_numpy(genWeight), label="n muons") muons_2 = muons_all[nmuon == 2] genWeight_2 = genWeight_all[nmuon == 2] if len(muons_2) == 0: return out_hists else: mu0 = muons_2[:, 0] mu1 = muons_2[:, 1] mmumu = np.sqrt( 2 * mu0.pt * mu1.pt * (np.cosh(mu0.eta - mu1.eta) - np.cos(mu0.phi - mu1.phi))) #mmumu = (muons_p4c_2[:, 0] + muons_p4c_2[:, 1]).mass out_hists["mmumu"] = Hist1D(ak.to_numpy(mmumu), bins=bin_mZ, weights=ak.to_numpy(genWeight_2), label="mmumu") dR_mumu = deltaR_devfunc1(muons_2) out_hists["dR_mumu"] = Hist1D(ak.to_numpy(dR_mumu), bins=bin_dR, weights=ak.to_numpy(genWeight_2), label="dR_mumu") out_hists["muon_pT2"] = Hist1D(ak.to_numpy(muons_2.pt[:, 1]), bins=bin_pt2, weights=ak.to_numpy(genWeight_2), label="mu2 pt") out_hists["muon_eta2"] = Hist1D(ak.to_numpy(muons_2.eta[:, 1]), bins=bin_eta, weights=ak.to_numpy(genWeight_2), label="mu2 eta") out_hists["muon_phi2"] = Hist1D(ak.to_numpy(muons_2.phi[:, 1]), bins=bin_phi, weights=ak.to_numpy(genWeight_2), label="mu2 phi") out_hists["muon_iso2"] = Hist1D(ak.to_numpy( muons_2.pfRelIso03_all[:, 1]), bins=bin_iso_lep, weights=ak.to_numpy(genWeight_2), label="mu2 iso") return out_hists
def process_electron(electrons_all, genWeight_all): out_hists = {} nelectron = ak.num(electrons_all) electrons = electrons_all[nelectron > 0] genWeight = genWeight_all[nelectron > 0] if len(electrons) == 0: return out_hists else: out_hists["electron_pT1"] = Hist1D(ak.to_numpy(electrons.pt[:, 0]), bins=bin_pt2, weights=ak.to_numpy(genWeight), label="ele1 pt") out_hists["electron_eta1"] = Hist1D(ak.to_numpy(electrons.eta[:, 0]), bins=bin_eta, weights=ak.to_numpy(genWeight), label="ele1 eta") out_hists["electron_phi1"] = Hist1D(ak.to_numpy(electrons.phi[:, 0]), bins=bin_phi, weights=ak.to_numpy(genWeight), label="ele1 phi") out_hists["electron_iso1"] = Hist1D(ak.to_numpy( electrons.pfRelIso03_all[:, 0]), bins=bin_iso_lep, weights=ak.to_numpy(genWeight), label="ele1 iso") out_hists["n_electron"] = Hist1D(ak.num(electrons), bins=np.linspace(0, 5, 6), weights=ak.to_numpy(genWeight), label="n electrons") electrons_2 = electrons_all[nelectron == 2] genWeight_2 = genWeight_all[nelectron == 2] if len(electrons_2) == 0: return out_hists else: ele0 = electrons_2[:, 0] ele1 = electrons_2[:, 1] mee = np.sqrt( 2 * ele0.pt * ele1.pt * (np.cosh(ele0.eta - ele1.eta) - np.cos(ele0.phi - ele1.phi))) #mee = (electrons_p4c_2[:, 0] + electrons_p4c_2[:, 1]).mass out_hists["mee"] = Hist1D(ak.to_numpy(mee), bins=bin_mZ, weights=ak.to_numpy(genWeight_2), label="mee") dR_ee = deltaR_devfunc1(electrons_2) out_hists["dR_ee"] = Hist1D(ak.to_numpy(dR_ee), bins=bin_dR, weights=ak.to_numpy(genWeight_2), label="dR_ee") out_hists["electron_pT2"] = Hist1D( ak.to_numpy(electrons_2.pt[:, 1]), bins=bin_pt2, weights=ak.to_numpy(genWeight_2), label="ele2 pt") out_hists["electron_eta2"] = Hist1D( ak.to_numpy(electrons_2.eta[:, 1]), bins=bin_eta, weights=ak.to_numpy(genWeight_2), label="eta2 eta") out_hists["electron_phi2"] = Hist1D( ak.to_numpy(electrons_2.phi[:, 1]), bins=bin_phi, weights=ak.to_numpy(genWeight_2), label="eta2 phi") out_hists["electron_iso2"] = Hist1D( ak.to_numpy(electrons_2.pfRelIso03_all[:, 1]), bins=bin_iso_lep, weights=ak.to_numpy(genWeight_2), label="eta2 iso") return out_hists
def process_tau(taus_all, genWeight_all): ## add dxy,dz, and explore decay mode out_hists = {} ntau = ak.num(taus_all) taus = taus_all[ntau > 0] genWeight = genWeight_all[ntau > 0] if len(taus) == 0: return out_hists else: out_hists["tau_pT1"] = Hist1D(ak.to_numpy(taus.pt[:, 0]), bins=bin_pt2, weights=ak.to_numpy(genWeight), label="tau1 pt") out_hists["tau_eta1"] = Hist1D(ak.to_numpy(taus.eta[:, 0]), bins=bin_eta, weights=ak.to_numpy(genWeight), label="tau1 eta") out_hists["tau_phi1"] = Hist1D(ak.to_numpy(taus.phi[:, 0]), bins=bin_phi, weights=ak.to_numpy(genWeight), label="tau1 phi") out_hists["tau_deeptau_vs_j_1"] = Hist1D( ak.to_numpy(taus.idDeepTau2017v2p1VSjet[:, 0]), bins=bin_deeptau, weights=ak.to_numpy(genWeight), label="tau1 deepTau vs j") out_hists["tau_deeptau_vs_m_1"] = Hist1D( ak.to_numpy(taus.idDeepTau2017v2p1VSmu[:, 0]), bins=bin_deeptau, weights=ak.to_numpy(genWeight), label="tau1 deepTau vs mu") out_hists["tau_deeptau_vs_e_1"] = Hist1D( ak.to_numpy(taus.idDeepTau2017v2p1VSe[:, 0]), bins=bin_deeptau, weights=ak.to_numpy(genWeight), label="tau1 deepTau vs e") out_hists["n_tau"] = Hist1D(ak.num(taus), bins=np.linspace(0, 5, 6), weights=ak.to_numpy(genWeight), label="n taus") taus_2 = taus_all[ntau == 2] genWeight_2 = genWeight_all[ntau == 2] if len(taus_2) == 0: return out_hists else: tau0 = taus_2[:, 0] tau1 = taus_2[:, 1] mtautau = np.sqrt( 2 * tau0.pt * tau1.pt * (np.cosh(tau0.eta - tau1.eta) - np.cos(tau0.phi - tau1.phi))) #mtautau = (taus_p4c_2[:, 0] + taus_p4c_2[:, 1]).mass out_hists["mtautau"] = Hist1D(ak.to_numpy(mtautau), bins=bin_mZ, weights=ak.to_numpy(genWeight_2), label="mtautau") dR_tautau = deltaR_devfunc1(taus_2) out_hists["dR_tautau"] = Hist1D(ak.to_numpy(dR_tautau), bins=bin_dR, weights=ak.to_numpy(genWeight_2), label="dR_tautau") out_hists["tau_pT2"] = Hist1D(ak.to_numpy(taus_2.pt[:, 1]), bins=bin_pt2, weights=ak.to_numpy(genWeight_2), label="tau2 pt") out_hists["tau_eta2"] = Hist1D(ak.to_numpy(taus_2.eta[:, 1]), bins=bin_eta, weights=ak.to_numpy(genWeight_2), label="tau2 eta") out_hists["tau_phi2"] = Hist1D(ak.to_numpy(taus_2.phi[:, 1]), bins=bin_phi, weights=ak.to_numpy(genWeight_2), label="tau2 phi") out_hists["tau_deeptau_vs_j_2"] = Hist1D( ak.to_numpy(taus_2.idDeepTau2017v2p1VSjet[:, 1]), bins=bin_deeptau, weights=ak.to_numpy(genWeight_2), label="tau2 deepTau vs j") out_hists["tau_deeptau_vs_m_2"] = Hist1D( ak.to_numpy(taus_2.idDeepTau2017v2p1VSmu[:, 1]), bins=bin_deeptau, weights=ak.to_numpy(genWeight_2), label="tau2 deepTau vs mu") out_hists["tau_deeptau_vs_e_2"] = Hist1D( ak.to_numpy(taus_2.idDeepTau2017v2p1VSe[:, 1]), bins=bin_deeptau, weights=ak.to_numpy(genWeight_2), label="tau2 deepTau vs e") return out_hists