예제 #1
0
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
예제 #2
0
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
예제 #3
0
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