p3 = TLorentzVector(px3, py3, pz3, e3)

                    if bbar:
                        px4 = float(bbar[0].split()[6])
                        py4 = float(bbar[0].split()[7])
                        pz4 = float(bbar[0].split()[8])
                        e4 = float(bbar[0].split()[9])
                        p4 = TLorentzVector(px4, py4, pz4, e4)

                    HggP4 = p1 + p2
                    HbbP4 = p3 + p4
                    m_H1.append(HggP4.M())
                    m_H2.append(HbbP4.M())

                    b_pT.append(p3.Pt())
                    b_eta.append(p3.Eta())
                    b_phi.append(p3.Phi())

                    bbar_pT.append(p4.Pt())
                    bbar_eta.append(p4.Eta())
                    bbar_phi.append(p4.Phi())

                    a_pT.append(p1.Pt())
                    a_eta.append(p1.Eta())
                    a_phi.append(p1.Phi())

    for i in m_H1:
        h_m_H1.Fill(i)
    hists1.append(h_m_H1)

    for i in m_H2:
Exemple #2
0
def main():
    usage = 'usage: %prog [options]'
    parser = optparse.OptionParser(usage)
    parser.add_option('-i',
                      '--in',
                      dest='inputfiles',
                      help='name of input files',
                      default=None,
                      type='string')
    parser.add_option('-o',
                      '--out',
                      dest='outputfiles',
                      help='name output files',
                      default=None,
                      type='string')
    (opt, args) = parser.parse_args()

    histo_array = {}

    h_weight = TH1F('weight', 'weight', 2, -1, 1)
    #LHE histos
    h_lep1pt_LHE = TH1F('lep1pt_LHE', 'lep1pt_LHE', 75, 0, 150)
    h_lep1eta_LHE = TH1F('lep1eta_LHE', 'lep1eta_LHE', 60, -3, 3)
    h_lep1phi_LHE = TH1F('lep1phi_LHE', 'lep1phi_LHE', 80, -4, 4)
    h_lep2pt_LHE = TH1F('lep2pt_LHE', 'lep2pt_LHE', 75, 0, 150)
    h_lep2eta_LHE = TH1F('lep2eta_LHE', 'lep2eta_LHE', 60, -3, 3)
    h_lep2phi_LHE = TH1F('lep2phi_LHE', 'lep2phi_LHE', 80, -4, 4)
    h_Vpt_LHE = TH1F('Vpt_LHE', 'Vpt_LHE', 75, 0, 150)
    h_HT_LHE = TH1F('HT_LHE', 'HT_LHE', 60, 0, 300)
    h_Njets_LHE = TH1F('Njets_LHE', 'Njets_LHE', 5, 0, 5)

    h_j1pt_LHE = TH1F('j1pt_LHE', 'j1pt_LHE', 100, 0, 200)
    h_j1eta_LHE = TH1F('j1eta_LHE', 'j1eta_LHE', 100, -5, 5)
    h_j1phi_LHE = TH1F('j1phi_LHE', 'j1phi_LHE', 80, -4, 4)
    h_j1mass_LHE = TH1F('j1mass_LHE', 'j1mass_LHE', 40, 0, 40)
    h_j2pt_LHE = TH1F('j2pt_LHE', 'j2pt_LHE', 100, 0, 200)
    h_j2eta_LHE = TH1F('j2eta_LHE', 'j2eta_LHE', 100, -5, 5)
    h_j2phi_LHE = TH1F('j2phi_LHE', 'j2phi_LHE', 80, -4, 4)
    h_j2mass_LHE = TH1F('j2mass_LHE', 'j2mass_LHE', 40, 0, 40)
    h_j3pt_LHE = TH1F('j3pt_LHE', 'j3pt_LHE', 100, 0, 200)
    h_j3eta_LHE = TH1F('j3eta_LHE', 'j3eta_LHE', 100, -5, 5)
    h_j3phi_LHE = TH1F('j3phi_LHE', 'j3phi_LHE', 80, -4, 4)
    h_j3mass_LHE = TH1F('j3mass_LHE', 'j3mass_LHE', 40, 0, 40)

    h_drlep1j1_LHE = TH1F('drlep1j1_LHE', 'drlep1j1_LHE', 60, 0, 3)
    h_drlep1j2_LHE = TH1F('drlep1j2_LHE', 'drlep1j2_LHE', 60, 0, 3)
    h_drlep1j3_LHE = TH1F('drlep1j3_LHE', 'drlep1j3_LHE', 60, 0, 3)
    h_drlep2j1_LHE = TH1F('drlep2j1_LHE', 'drlep2j1_LHE', 60, 0, 3)
    h_drlep2j2_LHE = TH1F('drlep2j2_LHE', 'drlep2j2_LHE', 60, 0, 3)
    h_drlep2j3_LHE = TH1F('drlep2j3_LHE', 'drlep2j3_LHE', 60, 0, 3)
    h_drl1l2_LHE = TH1F('drl1l2_LHE', 'drl1l2_LHE', 60, 0, 3)
    h_drj1j2_LHE = TH1F('drj1j2_LHE', 'drj1j2_LHE', 60, 0, 3)
    h_drj1j3_LHE = TH1F('drj1j3_LHE', 'drj1j3_LHE', 60, 0, 3)
    h_drj2j3_LHE = TH1F('drj2j3_LHE', 'drj2j3_LHE', 60, 0, 3)

    #GEN histos
    h_ngenjet_GEN = TH1F('ngenjet', 'ngenjet', 10, 0, 10)
    h_j1pt_GEN = TH1F('j1pt_GEN', 'j1pt_GEN', 100, 0, 200)
    h_j1eta_GEN = TH1F('j1eta_GEN', 'j1eta_GEN', 100, -5, 5)
    h_j1phi_GEN = TH1F('j1phi_GEN', 'j1phi_GEN', 80, -4, 4)
    h_j1mass_GEN = TH1F('j1mass_GEN', 'j1mass_GEN', 40, 0, 40)
    h_j2pt_GEN = TH1F('j2pt_GEN', 'j2pt_GEN', 100, 0, 200)
    h_j2eta_GEN = TH1F('j2eta_GEN', 'j2eta_GEN', 100, -5, 5)
    h_j2phi_GEN = TH1F('j2phi_GEN', 'j2phi_GEN', 80, -4, 4)
    h_j2mass_GEN = TH1F('j2mass_GEN', 'j2mass_GEN', 40, 0, 40)
    h_j3pt_GEN = TH1F('j3pt_GEN', 'j3pt_GEN', 100, 0, 200)
    h_j3eta_GEN = TH1F('j3eta_GEN', 'j3eta_GEN', 100, -5, 5)
    h_j3phi_GEN = TH1F('j3phi_GEN', 'j3phi_GEN', 80, -4, 4)
    h_j3mass_GEN = TH1F('j3mass_GEN', 'j3mass_GEN', 40, 0, 40)
    h_HT_GEN = TH1F('HT_GEN', 'HT_GEN', 80, 0, 400)

    h_Dressedlep1pt_GEN = TH1F('Dressedlep1pt_GEN', 'Dressedlep1pt_GEN', 75, 0,
                               150)
    h_Dressedlep1eta_GEN = TH1F('Dressedlep1eta_GEN', 'Dressedlep1eta_GEN', 60,
                                -3, 3)
    h_Dressedlep1phi_GEN = TH1F('Dressedlep1phi_GEN', 'Dressedlep1phi_GEN', 80,
                                -4, 4)
    h_Dressedlep2pt_GEN = TH1F('Dressedlep2pt_GEN', 'Dressedlep2pt_GEN', 75, 0,
                               150)
    h_Dressedlep2eta_GEN = TH1F('Dressedlep2eta_GEN', 'Dressedlep2eta_GEN', 60,
                                -3, 3)
    h_Dressedlep2phi_GEN = TH1F('Dressedlep2phi_GEN', 'Dressedlep2phi_GEN', 80,
                                -4, 4)

    h_Zmass_GEN = TH1F('Zmass_GEN', 'Zmass_GEN', 80, 50, 130)
    h_Zpt_GEN = TH1F('Zpt_GEN', 'Zpt_GEN', 100, 0, 200)
    h_Zeta_GEN = TH1F('Zeta_GEN', 'Zeta_GEN', 100, -5, 5)
    h_Zphi_GEN = TH1F('Zphi_GEN', 'Zphi_GEN', 80, -4, 4)
    h_Wpt_GEN = TH1F('Wpt_GEN', 'Wpt_GEN', 100, 0, 200)
    h_Weta_GEN = TH1F('Weta_GEN', 'Weta_GEN', 100, -5, 5)
    h_Wphi_GEN = TH1F('Wphi_GEN', 'Wphi_GEN', 80, -4, 4)

    h_drlep1j1_GEN = TH1F('drlep1j1_GEN', 'drlep1j1_GEN', 60, 0, 3)
    h_drlep1j2_GEN = TH1F('drlep1j2_GEN', 'drlep1j2_GEN', 60, 0, 3)
    h_drlep1j3_GEN = TH1F('drlep1j3_GEN', 'drlep1j3_GEN', 60, 0, 3)
    h_drlep2j1_GEN = TH1F('drlep2j1_GEN', 'drlep2j1_GEN', 60, 0, 3)
    h_drlep2j2_GEN = TH1F('drlep2j2_GEN', 'drlep2j2_GEN', 60, 0, 3)
    h_drlep2j3_GEN = TH1F('drlep2j3_GEN', 'drlep2j3_GEN', 60, 0, 3)

    h_drl1l2_GEN = TH1F('drl1l2_GEN', 'drl1l2_GEN', 60, 0, 3)
    h_drj1j2_GEN = TH1F('drj1j2_GEN', 'drj1j2_GEN', 60, 0, 3)
    h_drj1j3_GEN = TH1F('drj1j3_GEN', 'drj1j3_GEN', 60, 0, 3)
    h_drj2j3_GEN = TH1F('drj2j3_GEN', 'drj2j3_GEN', 60, 0, 3)

    h_Vistaupt_GEN = TH1F('Vistaupt_GEN', 'Vistaupt_GEN', 100, 0, 200)
    h_Vistaueta_GEN = TH1F('Vistaueta_GEN', 'Vistaueta_GEN', 60, -3, 3)
    h_Vistauphi_GEN = TH1F('Vistauphi_GEN', 'Vistauphi_GEN', 80, -4, 4)

    h_METpt_GEN = TH1F('METpt_GEN', 'METpt_GEN', 50, 0, 100)
    h_METphi_GEN = TH1F('METphi_GEN', 'METphi_GEN', 80, -4, 4)

    #add histos dictionary
    histo_array['h_weight'] = h_weight
    histo_array['h_lep1pt_LHE'] = h_lep1pt_LHE
    histo_array['h_lep1eta_LHE'] = h_lep1eta_LHE
    histo_array['h_lep1phi_LHE'] = h_lep1phi_LHE
    histo_array['h_lep2pt_LHE'] = h_lep2pt_LHE
    histo_array['h_lep2eta_LHE'] = h_lep2eta_LHE
    histo_array['h_lep2phi_LHE'] = h_lep2phi_LHE
    histo_array['h_Vpt_LHE'] = h_Vpt_LHE
    histo_array['h_HT_LHE'] = h_HT_LHE
    histo_array['h_Njets_LHE'] = h_Njets_LHE

    histo_array['h_j1pt_LHE'] = h_j1pt_LHE
    histo_array['h_j1eta_LHE'] = h_j1eta_LHE
    histo_array['h_j1phi_LHE'] = h_j1phi_LHE
    histo_array['h_j1mass_LHE'] = h_j1mass_LHE
    histo_array['h_j2pt_LHE'] = h_j2pt_LHE
    histo_array['h_j2eta_LHE'] = h_j2eta_LHE
    histo_array['h_j2phi_LHE'] = h_j2phi_LHE
    histo_array['h_j2mass_LHE'] = h_j2mass_LHE
    histo_array['h_j3pt_LHE'] = h_j3pt_LHE
    histo_array['h_j3eta_LHE'] = h_j3eta_LHE
    histo_array['h_j3phi_LHE'] = h_j3phi_LHE
    histo_array['h_j3mass_LHE'] = h_j3mass_LHE

    histo_array['h_drlep1j1_LHE'] = h_drlep1j1_LHE
    histo_array['h_drlep1j2_LHE'] = h_drlep1j2_LHE
    histo_array['h_drlep1j3_LHE'] = h_drlep1j3_LHE
    histo_array['h_drlep2j1_LHE'] = h_drlep2j1_LHE
    histo_array['h_drlep2j2_LHE'] = h_drlep2j2_LHE
    histo_array['h_drlep2j3_LHE'] = h_drlep2j3_LHE
    histo_array['h_drl1l2_LHE'] = h_drl1l2_LHE
    histo_array['h_drj1j2_LHE'] = h_drj1j2_LHE
    histo_array['h_drj1j3_LHE'] = h_drj1j3_LHE
    histo_array['h_drj2j3_LHE'] = h_drj2j3_LHE

    histo_array['h_ngenjet_GEN'] = h_ngenjet_GEN
    histo_array['h_j1pt_GEN'] = h_j1pt_GEN
    histo_array['h_j1eta_GEN'] = h_j1eta_GEN
    histo_array['h_j1phi_GEN'] = h_j1phi_GEN
    histo_array['h_j1mass_GEN'] = h_j1mass_GEN
    histo_array['h_j2pt_GEN'] = h_j2pt_GEN
    histo_array['h_j2eta_GEN'] = h_j2eta_GEN
    histo_array['h_j2phi_GEN'] = h_j2phi_GEN
    histo_array['h_j2mass_GEN'] = h_j2mass_GEN
    histo_array['h_j3pt_GEN'] = h_j3pt_GEN
    histo_array['h_j3eta_GEN'] = h_j3eta_GEN
    histo_array['h_j3phi_GEN'] = h_j3phi_GEN
    histo_array['h_j3mass_GEN'] = h_j3mass_GEN
    histo_array['h_HT_GEN'] = h_HT_GEN
    histo_array['h_Dressedlep1pt_GEN'] = h_Dressedlep1pt_GEN
    histo_array['h_Dressedlep1eta_GEN'] = h_Dressedlep1eta_GEN
    histo_array['h_Dressedlep1phi_GEN'] = h_Dressedlep1phi_GEN
    histo_array['h_Dressedlep2pt_GEN'] = h_Dressedlep2pt_GEN
    histo_array['h_Dressedlep2eta_GEN'] = h_Dressedlep2eta_GEN
    histo_array['h_Dressedlep2phi_GEN'] = h_Dressedlep2phi_GEN
    histo_array['h_Zmass_GEN'] = h_Zmass_GEN
    histo_array['h_Zpt_GEN'] = h_Zpt_GEN
    histo_array['h_Zeta_GEN'] = h_Zeta_GEN
    histo_array['h_Zphi_GEN'] = h_Zphi_GEN
    histo_array['h_Wpt_GEN'] = h_Wpt_GEN
    histo_array['h_Weta_GEN'] = h_Weta_GEN
    histo_array['h_Wphi_GEN'] = h_Wphi_GEN
    histo_array['h_drlep1j1_GEN'] = h_drlep1j1_GEN
    histo_array['h_drlep1j2_GEN'] = h_drlep1j2_GEN
    histo_array['h_drlep1j3_GEN'] = h_drlep1j3_GEN
    histo_array['h_drlep2j1_GEN'] = h_drlep2j1_GEN
    histo_array['h_drlep2j2_GEN'] = h_drlep2j2_GEN
    histo_array['h_drlep2j3_GEN'] = h_drlep2j3_GEN
    histo_array['h_drl1l2_GEN'] = h_drl1l2_GEN
    histo_array['h_drj1j2_GEN'] = h_drj1j2_GEN
    histo_array['h_drj1j3_GEN'] = h_drj1j3_GEN
    histo_array['h_drj2j3_GEN'] = h_drj2j3_GEN
    histo_array['h_Vistaupt_GEN'] = h_Vistaupt_GEN
    histo_array['h_Vistaueta_GEN'] = h_Vistaueta_GEN
    histo_array['h_Vistauphi_GEN'] = h_Vistauphi_GEN
    histo_array['h_METpt_GEN'] = h_METpt_GEN
    histo_array['h_METphi_GEN'] = h_METphi_GEN

    for key in histo_array:
        histo_array[key].SetStats(0)
        histo_array[key].Sumw2()
        histo_array[key].GetYaxis().SetTitle("a.u.")
        histo_array[key].GetYaxis().SetTitleSize(0.05)
        histo_array[key].GetYaxis().SetTitleOffset(0.75)
        histo_array[key].GetXaxis().SetTitle(key)
        histo_array[key].SetMinimum(0)

    if not os.path.isfile(opt.inputfiles):
        print 'inputfile does not exist!!'
    filein = TFile.Open(opt.inputfiles)
    treein = filein.Get('Events')
    npos = treein.GetEntries('genWeight>0')
    nneg = treein.GetEntries('genWeight<0')
    h_weight.SetBinContent(1, nneg)
    h_weight.SetBinContent(2, npos)

    for entry in range(0, treein.GetEntries()):
        p4temp = TLorentzVector()
        wp4temp = TLorentzVector()
        zp4 = TLorentzVector()
        LHElep = []
        LHEjet = []
        GENjet = []
        GENDressLep = []
        HT_GEN = 0.
        treein.GetEntry(entry)
        weight = (treein.genWeight) / (abs(treein.genWeight))

        #LHE info
        histo_array['h_Vpt_LHE'].Fill(treein.LHE_Vpt, weight)
        histo_array['h_Njets_LHE'].Fill(ord(treein.LHE_Njets), weight)
        histo_array['h_HT_LHE'].Fill(treein.LHE_HT, weight)

        for iLHE in range(2, treein.nLHEPart):
            # LHE leptons
            if (abs(treein.LHEPart_pdgId[iLHE]) == 11
                    or abs(treein.LHEPart_pdgId[iLHE]) == 13):
                p4temp.SetPtEtaPhiM(treein.LHEPart_pt[iLHE],
                                    treein.LHEPart_eta[iLHE],
                                    treein.LHEPart_phi[iLHE],
                                    treein.LHEPart_mass[iLHE])
                LHElep.append(p4temp.Clone())
            # LHE jets
            if treein.LHEPart_status[iLHE] == 1 and (
                    abs(treein.LHEPart_pdgId[iLHE]) == 1
                    or abs(treein.LHEPart_pdgId[iLHE]) == 2
                    or abs(treein.LHEPart_pdgId[iLHE]) == 3
                    or abs(treein.LHEPart_pdgId[iLHE]) == 4
                    or abs(treein.LHEPart_pdgId[iLHE]) == 5
                    or abs(treein.LHEPart_pdgId[iLHE]) == 21):
                p4temp.SetPtEtaPhiM(treein.LHEPart_pt[iLHE],
                                    treein.LHEPart_eta[iLHE],
                                    treein.LHEPart_phi[iLHE],
                                    treein.LHEPart_mass[iLHE])
                LHEjet.append(p4temp.Clone())
        # end loop LHEpart

        if len(LHElep) > 0: LHElep.sort(key=lambda x: x.Pt())
        if len(LHElep) == 1:
            histo_array['h_lep1pt_LHE'].Fill(LHElep[0].Pt(), weight)
            histo_array['h_lep1eta_LHE'].Fill(LHElep[0].Eta(), weight)
            histo_array['h_lep1phi_LHE'].Fill(LHElep[0].Phi(), weight)
        if len(LHElep) == 2:
            histo_array['h_lep1pt_LHE'].Fill(LHElep[0].Pt(), weight)
            histo_array['h_lep1eta_LHE'].Fill(LHElep[0].Eta(), weight)
            histo_array['h_lep1phi_LHE'].Fill(LHElep[0].Phi(), weight)
            histo_array['h_lep2pt_LHE'].Fill(LHElep[1].Pt(), weight)
            histo_array['h_lep2eta_LHE'].Fill(LHElep[1].Eta(), weight)
            histo_array['h_lep2phi_LHE'].Fill(LHElep[1].Phi(), weight)
            histo_array['h_drl1l2_LHE'].Fill(LHElep[0].DeltaR(LHElep[1]),
                                             weight)

        if len(LHEjet) > 2:
            histo_array['h_j1pt_LHE'].Fill(LHEjet[0].Pt(), weight)
            histo_array['h_j1eta_LHE'].Fill(LHEjet[0].Eta(), weight)
            histo_array['h_j1phi_LHE'].Fill(LHEjet[0].Phi(), weight)
            histo_array['h_j1mass_LHE'].Fill(LHEjet[0].M(), weight)
            histo_array['h_j2pt_LHE'].Fill(LHEjet[1].Pt(), weight)
            histo_array['h_j2eta_LHE'].Fill(LHEjet[1].Eta(), weight)
            histo_array['h_j2phi_LHE'].Fill(LHEjet[1].Phi(), weight)
            histo_array['h_j2mass_LHE'].Fill(LHEjet[1].M(), weight)
            histo_array['h_j3pt_LHE'].Fill(LHEjet[2].Pt(), weight)
            histo_array['h_j3eta_LHE'].Fill(LHEjet[2].Eta(), weight)
            histo_array['h_j3phi_LHE'].Fill(LHEjet[2].Phi(), weight)
            histo_array['h_j3mass_LHE'].Fill(LHEjet[2].M(), weight)
            histo_array['h_drj1j2_LHE'].Fill(LHEjet[0].DeltaR(LHEjet[1]),
                                             weight)
            histo_array['h_drj1j3_LHE'].Fill(LHEjet[0].DeltaR(LHEjet[2]),
                                             weight)
            histo_array['h_drj2j3_LHE'].Fill(LHEjet[1].DeltaR(LHEjet[2]),
                                             weight)
            if len(LHElep) == 2:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep1j2_LHE'].Fill(LHElep[0].DeltaR(LHEjet[1]),
                                                   weight)
                histo_array['h_drlep1j3_LHE'].Fill(LHElep[0].DeltaR(LHEjet[2]),
                                                   weight)
                histo_array['h_drlep2j1_LHE'].Fill(LHElep[1].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep2j2_LHE'].Fill(LHElep[1].DeltaR(LHEjet[1]),
                                                   weight)
                histo_array['h_drlep2j3_LHE'].Fill(LHElep[1].DeltaR(LHEjet[2]),
                                                   weight)
            elif len(LHElep) == 1:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep1j2_LHE'].Fill(LHElep[0].DeltaR(LHEjet[1]),
                                                   weight)
                histo_array['h_drlep1j3_LHE'].Fill(LHElep[0].DeltaR(LHEjet[2]),
                                                   weight)
        elif len(LHEjet) > 1:
            histo_array['h_j1pt_LHE'].Fill(LHEjet[0].Pt(), weight)
            histo_array['h_j1eta_LHE'].Fill(LHEjet[0].Eta(), weight)
            histo_array['h_j1phi_LHE'].Fill(LHEjet[0].Phi(), weight)
            histo_array['h_j1mass_LHE'].Fill(LHEjet[0].M(), weight)
            histo_array['h_j2pt_LHE'].Fill(LHEjet[1].Pt(), weight)
            histo_array['h_j2eta_LHE'].Fill(LHEjet[1].Eta(), weight)
            histo_array['h_j2phi_LHE'].Fill(LHEjet[1].Phi(), weight)
            histo_array['h_j2mass_LHE'].Fill(LHEjet[1].M(), weight)
            histo_array['h_drj1j2_LHE'].Fill(LHEjet[0].DeltaR(LHEjet[1]),
                                             weight)
            if len(LHElep) == 2:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep1j2_LHE'].Fill(LHElep[0].DeltaR(LHEjet[1]),
                                                   weight)
                histo_array['h_drlep2j1_LHE'].Fill(LHElep[1].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep2j2_LHE'].Fill(LHElep[1].DeltaR(LHEjet[1]),
                                                   weight)
            elif len(LHElep) == 1:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep1j2_LHE'].Fill(LHElep[0].DeltaR(LHEjet[1]),
                                                   weight)
        elif len(LHEjet) > 0:
            histo_array['h_j1pt_LHE'].Fill(LHEjet[0].Pt(), weight)
            histo_array['h_j1eta_LHE'].Fill(LHEjet[0].Eta(), weight)
            histo_array['h_j1phi_LHE'].Fill(LHEjet[0].Phi(), weight)
            histo_array['h_j1mass_LHE'].Fill(LHEjet[0].M(), weight)
            if len(LHElep) == 2:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
                histo_array['h_drlep2j1_LHE'].Fill(LHElep[1].DeltaR(LHEjet[0]),
                                                   weight)
            elif len(LHElep) == 1:
                histo_array['h_drlep1j1_LHE'].Fill(LHElep[0].DeltaR(LHEjet[0]),
                                                   weight)
        else:
            pass
        #end lhe info

        #GEN info
        histo_array['h_ngenjet_GEN'].Fill(treein.nGenJet, weight)
        for ijet in range(0, treein.nGenJet):
            HT_GEN = HT_GEN + treein.GenJet_pt[ijet]
            p4temp.SetPtEtaPhiM(treein.GenJet_pt[ijet],
                                treein.GenJet_eta[ijet],
                                treein.GenJet_phi[ijet],
                                treein.GenJet_mass[ijet])
            GENjet.append(p4temp.Clone())  #no need to sort
        if treein.nGenJet > 2:
            histo_array['h_j1pt_GEN'].Fill(treein.GenJet_pt[0], weight)
            histo_array['h_j1eta_GEN'].Fill(treein.GenJet_eta[0], weight)
            histo_array['h_j1phi_GEN'].Fill(treein.GenJet_phi[0], weight)
            histo_array['h_j1mass_GEN'].Fill(treein.GenJet_mass[0], weight)
            histo_array['h_j2pt_GEN'].Fill(treein.GenJet_pt[1], weight)
            histo_array['h_j2eta_GEN'].Fill(treein.GenJet_eta[1], weight)
            histo_array['h_j2phi_GEN'].Fill(treein.GenJet_phi[1], weight)
            histo_array['h_j2mass_GEN'].Fill(treein.GenJet_mass[1], weight)
            histo_array['h_j3pt_GEN'].Fill(treein.GenJet_pt[2], weight)
            histo_array['h_j3eta_GEN'].Fill(treein.GenJet_eta[2], weight)
            histo_array['h_j3phi_GEN'].Fill(treein.GenJet_phi[2], weight)
            histo_array['h_j3mass_GEN'].Fill(treein.GenJet_mass[2], weight)
            histo_array['h_drj1j2_GEN'].Fill(GENjet[0].DeltaR(GENjet[1]),
                                             weight)
            histo_array['h_drj1j3_GEN'].Fill(GENjet[0].DeltaR(GENjet[2]),
                                             weight)
            histo_array['h_drj2j3_GEN'].Fill(GENjet[1].DeltaR(GENjet[2]),
                                             weight)

        elif treein.nGenJet > 1:
            histo_array['h_j1pt_GEN'].Fill(treein.GenJet_pt[0], weight)
            histo_array['h_j1eta_GEN'].Fill(treein.GenJet_eta[0], weight)
            histo_array['h_j1phi_GEN'].Fill(treein.GenJet_phi[0], weight)
            histo_array['h_j1mass_GEN'].Fill(treein.GenJet_mass[0], weight)
            histo_array['h_j2pt_GEN'].Fill(treein.GenJet_pt[1], weight)
            histo_array['h_j2eta_GEN'].Fill(treein.GenJet_eta[1], weight)
            histo_array['h_j2phi_GEN'].Fill(treein.GenJet_phi[1], weight)
            histo_array['h_j2mass_GEN'].Fill(treein.GenJet_mass[1], weight)
            histo_array['h_drj1j2_GEN'].Fill(GENjet[0].DeltaR(GENjet[1]),
                                             weight)
        elif treein.nGenJet > 0:
            histo_array['h_j1pt_GEN'].Fill(treein.GenJet_pt[0], weight)
            histo_array['h_j1eta_GEN'].Fill(treein.GenJet_eta[0], weight)
            histo_array['h_j1phi_GEN'].Fill(treein.GenJet_phi[0], weight)
            histo_array['h_j1mass_GEN'].Fill(treein.GenJet_mass[0], weight)
        else:
            pass
        histo_array['h_HT_GEN'].Fill(HT_GEN, weight)

        if treein.nGenDressedLepton > 0:
            for idressedlep in range(0, treein.nGenDressedLepton):
                if treein.GenDressedLepton_hasTauAnc[idressedlep]: continue
                p4temp.SetPtEtaPhiM(treein.GenDressedLepton_pt[idressedlep],
                                    treein.GenDressedLepton_eta[idressedlep],
                                    treein.GenDressedLepton_phi[idressedlep],
                                    treein.GenDressedLepton_mass[idressedlep])
                GENDressLep.append(
                    extend_p4(p4temp.Clone(),
                              treein.GenDressedLepton_pdgId[idressedlep]))
            GENDressLep.sort(key=lambda x: x.p4_vector.Pt())
            if len(GENDressLep) == 1:
                wp4temp = wreco(GENDressLep[0].p4_vector, treein.GenMET_pt,
                                treein.GenMET_phi)
                histo_array['h_Weta_GEN'].Fill(wp4temp.Eta(), weight)
                histo_array['h_Wpt_GEN'].Fill(wp4temp.Pt(), weight)
                histo_array['h_Wphi_GEN'].Fill(wp4temp.Phi(), weight)
                histo_array['h_Dressedlep1pt_GEN'].Fill(
                    GENDressLep[0].p4_vector.Pt(), weight)
                histo_array['h_Dressedlep1eta_GEN'].Fill(
                    GENDressLep[0].p4_vector.Eta(), weight)
                histo_array['h_Dressedlep1phi_GEN'].Fill(
                    GENDressLep[0].p4_vector.Phi(), weight)
                if treein.nGenJet > 2:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep1j2_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[1]), weight)
                    histo_array['h_drlep1j3_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[2]), weight)
                elif treein.nGenJet > 1:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep1j2_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[1]), weight)
                elif treein.nGenJet > 0:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                else:
                    pass
            if len(GENDressLep) == 2:
                histo_array['h_Dressedlep1pt_GEN'].Fill(
                    GENDressLep[0].p4_vector.Pt(), weight)
                histo_array['h_Dressedlep1eta_GEN'].Fill(
                    GENDressLep[0].p4_vector.Eta(), weight)
                histo_array['h_Dressedlep1phi_GEN'].Fill(
                    GENDressLep[0].p4_vector.Phi(), weight)
                histo_array['h_Dressedlep2pt_GEN'].Fill(
                    GENDressLep[1].p4_vector.Pt(), weight)
                histo_array['h_Dressedlep2eta_GEN'].Fill(
                    GENDressLep[1].p4_vector.Eta(), weight)
                histo_array['h_Dressedlep2phi_GEN'].Fill(
                    GENDressLep[1].p4_vector.Phi(), weight)
                histo_array['h_drl1l2_GEN'].Fill(
                    GENDressLep[0].p4_vector.DeltaR(GENDressLep[1].p4_vector),
                    weight)
                if treein.nGenJet > 2:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep1j2_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[1]), weight)
                    histo_array['h_drlep1j3_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[2]), weight)
                    histo_array['h_drlep2j1_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep2j2_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[1]), weight)
                    histo_array['h_drlep2j3_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[2]), weight)
                elif treein.nGenJet > 1:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep1j2_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[1]), weight)
                    histo_array['h_drlep2j1_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep2j2_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[1]), weight)
                elif treein.nGenJet > 0:
                    histo_array['h_drlep1j1_GEN'].Fill(
                        GENDressLep[0].p4_vector.DeltaR(GENjet[0]), weight)
                    histo_array['h_drlep2j1_GEN'].Fill(
                        GENDressLep[1].p4_vector.DeltaR(GENjet[0]), weight)
                else:
                    pass

                if (GENDressLep[0].pdgid + GENDressLep[1].pdgid) == 0:
                    zp4 = GENDressLep[0].p4_vector + GENDressLep[1].p4_vector
                    histo_array['h_Zmass_GEN'].Fill(zp4.M(), weight)
                    histo_array['h_Zeta_GEN'].Fill(zp4.Eta(), weight)
                    histo_array['h_Zpt_GEN'].Fill(zp4.Pt(), weight)
                    histo_array['h_Zphi_GEN'].Fill(zp4.Phi(), weight)

        if treein.nGenVisTau > 0:
            histo_array['h_Vistaupt_GEN'].Fill(treein.GenVisTau_pt[0], weight)
            histo_array['h_Vistaueta_GEN'].Fill(treein.GenVisTau_eta[0],
                                                weight)
            histo_array['h_Vistauphi_GEN'].Fill(treein.GenVisTau_phi[0],
                                                weight)

        histo_array['h_METpt_GEN'].Fill(treein.GenMET_pt, weight)
        histo_array['h_METphi_GEN'].Fill(treein.GenMET_phi, weight)

    fileout = TFile.Open(opt.outputfiles + '.root', 'RECREATE')
    fileout.cd()
    for key in histo_array:
        histo_array[key].Write()
    fileout.Close()
def ClosestTrkVars(collections):
  results=[]
  mll_e1_trk=[]
  mll_e2_trk=[]
  minxy1_b_trk=[]
  minxy2_b_trk=[]
  minxy3_b_trk=[]
  meanxy_b_trk=[]
  tracks=collections[0]
  Bcands=collections[1]
  Electrons=collections[2]

  for Bcand in Bcands:
    e1_vec=TLorentzVector();   e2_vec=TLorentzVector(); 
    trk1_vec=TLorentzVector(); trk2_vec=TLorentzVector();
    k_idx=getattr(Bcand,"kIdx")
    recoE1=Electrons[getattr(Bcand,"l1Idx")]
    recoE2=Electrons[getattr(Bcand,"l2Idx")]
    recoK=tracks[k_idx]
    e1_vec.SetPtEtaPhiM(getattr(recoE1,"pt"),getattr(recoE1,"eta"),getattr(recoE1,"phi"),0.0005)
    e2_vec.SetPtEtaPhiM(getattr(recoE2,"pt"),getattr(recoE2,"eta"),getattr(recoE2,"phi"),0.0005)
    k_eta=getattr(recoK,"eta");       k_phi=getattr(recoK,"phi")
    b_eta=getattr(Bcand,"fit_eta");   b_phi=getattr(Bcand,"fit_phi")

    vx_e1=getattr(Bcand,"l1Vx");   vy_e1=getattr(Bcand,"l1Vy")
    vx_e2=getattr(Bcand,"l2Vx");   vy_e2=getattr(Bcand,"l2Vy")
    vx_b=getattr(Bcand,"vtx_x");   vy_b=getattr(Bcand,"vtx_y")

    min_distance_trk_e1=100;   
    min_distance_trk_e2=100;
    imin_distance_trk_e1=-1;        
    imin_distance_trk_e2=-1;     
    distances_b_trk=[]         
    mean_b_trk=0;      
    imean_b_trk=0. 
    
    for itrk,track in enumerate(tracks):
      if k_idx==itrk:  continue
      vx_trk=getattr(track,"vx")   
      vy_trk=getattr(track,"vy")
      vz_trk=getattr(track,"vz")
      trk_eta=getattr(track,"eta")  
      trk_phi=getattr(track,"phi")
      
      if deltaR(e1_vec.Eta(),e1_vec.Phi(),trk_eta,trk_phi)<0.03 or \
         deltaR(e2_vec.Eta(),e2_vec.Phi(),trk_eta,trk_phi)<0.03 or \
         deltaR(k_eta,k_phi,trk_eta,trk_phi)<0.03:
           continue;
      if min_distance_trk_e1> sqrt( (vx_e1-vx_trk)**(2) + (vy_e1-vy_trk)**(2) ):
         min_distance_trk_e1 = sqrt( (vx_e1-vx_trk)**(2) + (vy_e1-vy_trk)**(2) )
         imin_distance_trk_e1=itrk
      if min_distance_trk_e2> sqrt( (vx_e2-vx_trk)**(2) + (vy_e2-vy_trk)**(2) ):
         min_distance_trk_e2 = sqrt( (vx_e2-vx_trk)**(2) + (vy_e2-vy_trk)**(2) )
         imin_distance_trk_e2=itrk
      distances_b_trk.append(sqrt( (vx_b-vx_trk)**(2) + (vy_b-vy_trk)**(2) ) )
      if deltaR(b_eta,b_phi,trk_eta,trk_phi)<0.4:
         mean_b_trk+= sqrt( (vx_b-vx_trk)**(2) + (vy_b-vy_trk)**(2) )
         imean_b_trk+=1.0
    distances_b_trk=sorted(distances_b_trk)     

    if imin_distance_trk_e1>-1:
      trk1_vec.SetPtEtaPhiM(getattr(tracks[imin_distance_trk_e1],"pt"),getattr(tracks[imin_distance_trk_e1],"eta"),getattr(tracks[imin_distance_trk_e1],"phi"),0.139)
      mll_e1_trk.append( (trk1_vec+e1_vec).M() )
    else:
      mll_e1_trk.append(-1. )

    if imin_distance_trk_e2>-1:
      trk2_vec.SetPtEtaPhiM(getattr(tracks[imin_distance_trk_e2],"pt"),getattr(tracks[imin_distance_trk_e2],"eta"),getattr(tracks[imin_distance_trk_e2],"phi"),0.139)
      mll_e2_trk.append( (trk2_vec+e2_vec).M() )
    else:
      mll_e2_trk.append( -1. )


    if len(distances_b_trk)>0: minxy1_b_trk.append(distances_b_trk[0])
    else: minxy1_b_trk.append(10)
    if len(distances_b_trk)>1: minxy2_b_trk.append(distances_b_trk[1])
    else: minxy2_b_trk.append(10)
    if len(distances_b_trk)>2: minxy3_b_trk.append(distances_b_trk[2])
    else: minxy3_b_trk.append(10)
    if imean_b_trk>0: meanxy_b_trk.append(mean_b_trk/imean_b_trk)
    else: meanxy_b_trk.append(10)

  results=[ mll_e1_trk, mll_e2_trk, minxy1_b_trk, minxy2_b_trk, minxy3_b_trk,\
            meanxy_b_trk ]
  return results
    #Create lepton vectors
    lep1.SetPtEtaPhiM(lep_pt[ev][index1], lep_eta[ev][index1],
                      lep_phi[ev][index1], lep_mass[ev][index1])
    lep2.SetPtEtaPhiM(lep_pt[ev][index2], lep_eta[ev][index2],
                      lep_phi[ev][index2], lep_mass[ev][index2])
    lep3.SetPtEtaPhiM(lep_pt[ev][index3], lep_eta[ev][index3],
                      lep_phi[ev][index3], lep_mass[ev][index3])

    threeleps = lep1 + lep2 + lep3
    Met = TLorentzVector()
    Met.SetPtEtaPhiM(MET[ev], 0, MET_phi[ev], 0)

    ot.idL1[0], ot.idL2[0], ot.idL3[0] = lep_id[ev][index1], lep_id[ev][
        index2], lep_id[ev][index3]
    ot.pTL1[0], ot.pTL2[0], ot.pTL3[0] = lep1.Pt(), lep2.Pt(), lep3.Pt()
    ot.etaL1[0], ot.etaL2[0], ot.etaL3[0] = lep1.Eta(), lep2.Eta(), lep3.Eta()
    ot.phiL1[0], ot.phiL2[0], ot.phiL3[0] = lep1.Phi(), lep2.Phi(), lep3.Phi()
    ot.IsoL1[0], ot.IsoL2[0], ot.IsoL3[0] = lep_iso[ev][index1], lep_iso[ev][
        index2], lep_iso[ev][index3]
    ot.ip3dL1[0], ot.ip3dL2[0], ot.ip3dL3[0] = lep_ip[ev][index1], lep_ip[ev][
        index2], lep_ip[ev][index3]
    ot.sip3dL1[0], ot.sip3dL2[0], ot.sip3dL3[0] = lep_sip[ev][index1], lep_sip[
        ev][index2], lep_sip[ev][index3]
    ot.massL1[0], ot.massL2[0], ot.massL3[0] = lep1.M(), lep2.M(), lep3.M()
    ot.tightIdL1[0], ot.tightIdL2[0], ot.tightIdL3[0] = lep_tight[ev][
        index1], lep_tight[ev][index2], lep_tight[ev][index3]
    ot.medIdL1[0], ot.medIdL2[0], ot.medIdL3[0] = lep_med[ev][index1], lep_med[
        ev][index2], lep_med[ev][index3]
    ot.dR12[0] = deltaR(lep1.Eta(), lep1.Phi(), lep2.Eta(), lep2.Phi())
    ot.dR13[0] = deltaR(lep1.Eta(), lep1.Phi(), lep3.Eta(), lep3.Phi())
    ot.dR23[0] = deltaR(lep2.Eta(), lep2.Phi(), lep3.Eta(), lep3.Phi())
Exemple #5
0
 event.getByLabel(geninfoLabel, geninfo)
 info_pruned = geninfo.product()
 weight_mad = info_pruned.weight() / abs(info_pruned.weight())
 neu_posi = -999
 ele_posi = -999
 mu_posi = -999
 for p in pruned:
     if (p.isDirectHardProcessTauDecayProductFinalState()):
         print 'ID:', p.pdgId()
         lep_mad.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
         madspin_TLorentzVector.append(lep_mad.Clone())
         madspin_pdgid_index.append(p.pdgId())
 for i in range(len(madspin_pdgid_index)):
     tau_mad = tau_mad + madspin_TLorentzVector[i]
 tauphi_mad.Fill(tau_mad.Phi(), weight_mad)
 taueta_mad.Fill(tau_mad.Eta(), weight_mad)
 taupt_mad.Fill(tau_mad.Pt(), weight_mad)
 tau_mad_boost = tau_mad.BoostVector()
 tau_mad.Boost(-tau_mad_boost)
 if -16 in madspin_pdgid_index: neu_posi = madspin_pdgid_index.index(-16)
 if 16 in madspin_pdgid_index: neu_posi = madspin_pdgid_index.index(16)
 neu_mad = madspin_TLorentzVector[neu_posi]
 neu_mad.Boost(-tau_mad_boost)
 nphi_mad.Fill(cos(neu_mad.Angle(tau_mad.Vect())), weight_mad)
 if -11 in madspin_pdgid_index: ele_posi = madspin_pdgid_index.index(-11)
 if 11 in madspin_pdgid_index: ele_posi = madspin_pdgid_index.index(11)
 if ele_posi != -999:
     ele_mad = madspin_TLorentzVector[ele_posi]
     ele_mad.Boost(-tau_mad_boost)
     elephi_mad.Fill(cos(ele_mad.Angle(tau_mad.Vect())), weight_mad)
 if -13 in madspin_pdgid_index: mu_posi = madspin_pdgid_index.index(-13)
def ClosestTrkVarsMC(collections):
 
  mll_e1_trk=-99
  mll_e2_trk=-99
  minxy1_b_trk=-99
  minxy2_b_trk=-99
  minxy3_b_trk=-99
  meanxy_b_trk=-99
  results=[mll_e1_trk,mll_e2_trk,minxy1_b_trk,minxy2_b_trk,minxy3_b_trk, meanxy_b_trk]
  tracks=collections[0]
  Bcands=collections[1]
  Bidx=collections[2]
  reco_electrons=collections[3]
  idx_e1=collections[4]
  idx_e2=collections[5]
  


  if Bidx<0:
    return results
  recoB=Bcands[Bidx]; 
  idx_k=getattr(recoB,"kIdx");
  recoE1=reco_electrons[idx_e1];  
  recoE2=reco_electrons[idx_e2];
  recoK=tracks[idx_k]
  e1_vec=TLorentzVector();   
  e2_vec=TLorentzVector();
  e1_vec.SetPtEtaPhiM(getattr(recoE1,"pt"),getattr(recoE1,"eta"),getattr(recoE1,"phi"),0.0005)
  e2_vec.SetPtEtaPhiM(getattr(recoE2,"pt"),getattr(recoE2,"eta"),getattr(recoE2,"phi"),0.0005)
  
  k_eta=getattr(recoK,"eta");       k_phi=getattr(recoK,"phi")
  b_eta=getattr(recoB,"fit_eta");   b_phi=getattr(recoB,"fit_phi")
  vx_b=getattr(recoB,"vtx_x");      vy_b=getattr(recoB,"vtx_y")
  vx_e1=getattr(recoE1,"vx");       vy_e1=getattr(recoE1,"vy");
  vx_e2=getattr(recoE2,"vx");       vy_e2=getattr(recoE2,"vy");


  min_dist_e1=100;   min_dist_e2=100;
  itrk_e1=-1;        itrk_e2=-1;     
  distance_b_trk=[]
  mean_b_trk=0.
  imean_b_trk=0.
  for itrk,track in enumerate(tracks):
      if itrk==idx_k:
         continue
      vx_trk=getattr(track,"vx")   
      vy_trk=getattr(track,"vy")
      trk_eta=getattr(track,"eta")  
      trk_phi=getattr(track,"phi")
      if deltaR(e1_vec.Eta(),e1_vec.Phi(),trk_eta,trk_phi)<0.03 or \
         deltaR(e2_vec.Eta(),e2_vec.Phi(),trk_eta,trk_phi)<0.03 or \
         deltaR(k_eta,k_phi,trk_eta,trk_phi)<0.03:
           continue;
      if min_dist_e1> sqrt( (vx_e1-vx_trk)**(2) + (vy_e1-vy_trk)**(2) ): 
         min_dist_e1 = sqrt( (vx_e1-vx_trk)**(2) + (vy_e1-vy_trk)**(2) )
         itrk_e1=itrk
      if min_dist_e2> sqrt( (vx_e2-vx_trk)**(2) + (vy_e2-vy_trk)**(2) ):
         min_dist_e2 = sqrt( (vx_e2-vx_trk)**(2) + (vy_e2-vy_trk)**(2) )
         itrk_e2=itrk
      distance_b_trk.append(sqrt( (vx_b-vx_trk)**(2) + (vy_b-vy_trk)**(2) ) )
      if deltaR(b_eta,b_phi,trk_eta,trk_phi)<0.4:
         mean_b_trk+= sqrt( (vx_b-vx_trk)**(2) + (vy_b-vy_trk)**(2) )
         imean_b_trk+=1.0
  distance_b_trk=sorted(distance_b_trk)     
  minxy_e1_trk=min_dist_e1;  
  minxy_e2_trk=min_dist_e2; 
  trk1_vec=TLorentzVector();
  trk2_vec=TLorentzVector();
  if itrk_e1>-1:
    trk1_vec.SetPtEtaPhiM(getattr(tracks[itrk_e1],"pt"),getattr(tracks[itrk_e1],"eta"),getattr(tracks[itrk_e1],"phi"),0.139)
    mll_e1_trk= (trk1_vec+e1_vec).M()
  else:
    mll_e1_trk=-1.

  if itrk_e2>-1:
    trk2_vec.SetPtEtaPhiM(getattr(tracks[itrk_e2],"pt"),getattr(tracks[itrk_e2],"eta"),getattr(tracks[itrk_e2],"phi"),0.139)
    mll_e2_trk= (trk2_vec+e2_vec).M()
  else:
    mll_e2_trk=-1.

  if len(distance_b_trk)>0: minxy1_b_trk=distance_b_trk[0]
  else: minxy1_b_trk=10
  if len(distance_b_trk)>1: minxy2_b_trk=distance_b_trk[1]
  else: minxy2_b_trk=10
  if len(distance_b_trk)>2: minxy3_b_trk=distance_b_trk[2]
  else: minxy3_b_trk=10
  if imean_b_trk>0:
    meanxy_b_trk=mean_b_trk/imean_b_trk
  else:
    meanxy_b_trk=10

  results=[ mll_e1_trk, mll_e2_trk, minxy1_b_trk, minxy2_b_trk, minxy3_b_trk,\
            meanxy_b_trk]
  return results
                px4 = float(bbar[0].split()[6])
                py4 = float(bbar[0].split()[7])
                pz4 = float(bbar[0].split()[8])
                e4 = float(bbar[0].split()[9])

                p3 = TLorentzVector(px3, py3, pz3, e3)
                p4 = TLorentzVector(px4, py4, pz4, e4)

                if (pi.Pt() > 200):
                    selEvents1.append(pi.Pt())

                if (pi.Pt() > 200) and (p3.Pt() > 50) and (p4.Pt() > 50):
                    selEvents2.append(pi.Pt())

                if (pi.Pt() > 200) and (p3.Pt() > 50) and (p4.Pt() > 50) and (
                        abs(p3.Eta()) < 2.5) and (abs(p4.Eta()) < 2.5):
                    selEvents3.append(pi.Pt())
                    selEvents.append(pi.Pt())

    print("myEvet", len(selEvents))
    print("totalEvent", len(genMET))
    eff.append((float(len(selEvents))) / (float(len(genMET))))
    print("Myeff", (float(len(selEvents))) / (float(len(genMET))))
    sel1_masspoint.append(selEvents1)
    sel2_masspoint.append(selEvents2)
    sel3_masspoint.append(selEvents3)

fout = open('Efficiency_cut.txt', 'w')
for i in eff:
    print("eff", i)
    fout.write(str(i) + '\n')
    pruned = handlePruned.product()

    event.getByLabel(geninfoLabel, geninfo)

    for p in pruned:
        if abs(p.pdgId()) == 22 and p.pt() > 10 and abs(p.eta()) < 2.5 and (
                p.statusFlags().isPrompt()) and p.status() == 1:
            gamma_num = gamma_num + 1
            if g1.Pt() == 0:
                g1.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
            elif g2.Pt == 0:
                if p.pt() < g1.Pt():
                    g2.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
                else:
                    temp.SetPtEtaPhiE(g1.Pt(), g1.Eta(), g1.Phi(), g1.E())
                    g1.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
                    g2.SetPtEtaPhiE(temp.Pt(), temp.Eta(), temp.Phi(),
                                    temp.E())
            else:
                if p.pt() > g1.Pt():
                    g2.SetPtEtaPhiE(g1.Pt(), g1.Eta(), g1.Phi(), g1.E())
                    g1.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
                elif p.pt() > g2.Pt():
                    g2.SetPtEtaPhiE(p.pt(), p.eta(), p.phi(), p.energy())
                else:
                    continue
    if gamma_num < 2: continue
    g1_pt.Fill(g1.Pt())
    g2_pt.Fill(g2.Pt())
    mgg.Fill((g1 + g2).M())
Exemple #9
0
def main():
  usage = 'usage: %prog [options]'
  parser = optparse.OptionParser(usage)
  parser.add_option('-i', '--in', dest='inputfiles', help='name of input files', default=None, type='string')
  parser.add_option('-o', '--out', dest='outputfiles', help='name output files', default=None, type='string')
  (opt, args) = parser.parse_args()

  h_weight = TH1F('weight','weight',2,-1,1)
  ####################  histos #########################################
  h_lep1pt_LHE = TH1F('lep1pt_LHE', 'lep1pt_LHE', 75, 0, 150)
  h_lep1eta_LHE = TH1F('lep1eta_LHE', 'lep1eta_LHE', 60, -3, 3)
  h_lep1phi_LHE = TH1F('lep1phi_LHE', 'lep1phi_LHE', 80, -4, 4)
  h_lep2pt_LHE = TH1F('lep2pt_LHE', 'lep2pt_LHE', 75, 0, 150)
  h_lep2eta_LHE = TH1F('lep2eta_LHE', 'lep2eta_LHE', 60, -3, 3)
  h_lep2phi_LHE = TH1F('lep2phi_LHE', 'lep2phi_LHE', 80, -4, 4)
  h_lep3pt_LHE = TH1F('lep3pt_LHE', 'lep3pt_LHE', 75, 0, 150)
  h_lep3eta_LHE = TH1F('lep3eta_LHE', 'lep3eta_LHE', 60, -3, 3)
  h_lep3phi_LHE = TH1F('lep3phi_LHE', 'lep3phi_LHE', 80, -4, 4)
  h_lep4pt_LHE = TH1F('lep4pt_LHE', 'lep4pt_LHE', 75, 0, 150)
  h_lep4eta_LHE = TH1F('lep4eta_LHE', 'lep4eta_LHE', 60, -3, 3)
  h_lep4phi_LHE = TH1F('lep4phi_LHE', 'lep4phi_LHE', 80, -4, 4)
  h_apt_LHE = TH1F('apt_LHE', 'apt_LHE', 75, 0, 50)
  h_aeta_LHE = TH1F('aeta_LHE', 'aeta_LHE', 60, -3, 6)
  h_aphi_LHE = TH1F('aphi_LHE', 'aphi_LHE', 80, -4, 4)

  h_Z1mass_LHE = TH1F('Z1mass_LHE', 'Z1mass_LHE', 80, 0, 130)
  h_Z1pt_LHE = TH1F('Z1pt_LHE', 'Z1pt_LHE', 100, 0, 200)
  h_Z1eta_LHE = TH1F('Z1eta_LHE', 'Z1eta_LHE', 100, -5, 5)
  h_Z1phi_LHE = TH1F('Z1phi_LHE', 'Z1phi_LHE', 80, -4, 4)
  h_Z2mass_LHE = TH1F('Z2mass_LHE', 'Z2mass_LHE', 80, 0, 130)
  h_Z2pt_LHE = TH1F('Z2pt_LHE', 'Z2pt_LHE', 100, 0, 200)
  h_Z2eta_LHE = TH1F('Z2eta_LHE', 'Z2eta_LHE', 100, -5, 5)
  h_Z2phi_LHE = TH1F('Z2phi_LHE', 'Z2phi_LHE', 80, -4, 4)

  h_Vpt_LHE = TH1F('Vpt_LHE', 'Vpt_LHE', 75, 0, 150)
  
  h_Dressedlep1pt_GEN = TH1F('Dressedlep1pt_GEN', 'Dressedlep1pt_GEN', 75, 0, 150)
  h_Dressedlep1eta_GEN = TH1F('Dressedlep1eta_GEN', 'Dressedlep1eta_GEN', 60, -3, 3)
  h_Dressedlep1phi_GEN = TH1F('Dressedlep1phi_GEN', 'Dressedlep1phi_GEN', 80, -4, 4)
  h_Dressedlep2pt_GEN = TH1F('Dressedlep2pt_GEN', 'Dressedlep2pt_GEN', 75, 0, 150)
  h_Dressedlep2eta_GEN = TH1F('Dressedlep2eta_GEN', 'Dressedlep2eta_GEN', 60, -3, 3)
  h_Dressedlep2phi_GEN = TH1F('Dressedlep2phi_GEN', 'Dressedlep2phi_GEN', 80, -4, 4)
  h_Dressedlep3pt_GEN = TH1F('Dressedlep3pt_GEN', 'Dressedlep3pt_GEN', 75, 0, 150)
  h_Dressedlep3eta_GEN = TH1F('Dressedlep3eta_GEN', 'Dressedlep3eta_GEN', 60, -3, 3)
  h_Dressedlep3phi_GEN = TH1F('Dressedlep3phi_GEN', 'Dressedlep3phi_GEN', 80, -4, 4)
  h_Dressedlep4pt_GEN = TH1F('Dressedlep4pt_GEN', 'Dressedlep4pt_GEN', 75, 0, 150)
  h_Dressedlep4eta_GEN = TH1F('Dressedlep4eta_GEN', 'Dressedlep4eta_GEN', 60, -3, 3)
  h_Dressedlep4phi_GEN = TH1F('Dressedlep4phi_GEN', 'Dressedlep4phi_GEN', 80, -4, 4)
  
  h_apt_GEN = TH1F('apt_GEN', 'apt_GEN', 75, 0, 50)
  h_aeta_GEN = TH1F('aeta_GEN', 'aeta_GEN', 60, -3, 3)
  h_aphi_GEN = TH1F('aphi_GEN', 'aphi_GEN', 80, -4, 4)

  h_Z1mass_GEN = TH1F('Z1mass_GEN', 'Z1mass_GEN', 80, 0, 130)
  h_Z1pt_GEN = TH1F('Z1pt_GEN', 'Z1pt_GEN', 100, 0, 200)
  h_Z1eta_GEN = TH1F('Z1eta_GEN', 'Z1eta_GEN', 100, -5, 5)
  h_Z1phi_GEN = TH1F('Z1phi_GEN', 'Z1phi_GEN', 80, -4, 4)
  h_Z2mass_GEN = TH1F('Z2mass_GEN', 'Z2mass_GEN', 80, 0, 130)
  h_Z2pt_GEN = TH1F('Z2pt_GEN', 'Z2pt_GEN', 100, 0, 200)
  h_Z2eta_GEN = TH1F('Z2eta_GEN', 'Z2eta_GEN', 100, -5, 5)
  h_Z2phi_GEN = TH1F('Z2phi_GEN', 'Z2phi_GEN', 80, -4, 4)

  
  h_drl1l2_GEN = TH1F('drl1l2_GEN', 'drl1l2_GEN', 60, 0, 3)
  h_drl1l3_GEN = TH1F('drl1l3_GEN', 'drl1l3_GEN', 60, 0, 3)
  h_drl1l4_GEN = TH1F('drl1l4_GEN', 'drl1l4_GEN', 60, 0, 3)
  h_drl2l3_GEN = TH1F('drl2l3_GEN', 'drl2l3_GEN', 60, 0, 3)
  h_drl2l4_GEN = TH1F('drl2l4_GEN', 'drl2l4_GEN', 60, 0, 3)
  h_drl3l4_GEN = TH1F('drl3l4_GEN', 'drl3l4_GEN', 60, 0, 3)
  h_drl1a_GEN = TH1F('drl1a_GEN', 'drl1a_GEN', 60, 0, 3)
  h_drl2a_GEN = TH1F('drl2a_GEN', 'drl2a_GEN', 60, 0, 3)
  h_drl3a_GEN = TH1F('drl3a_GEN', 'drl3a_GEN', 60, 0, 3)
  h_drl4a_GEN = TH1F('drl4a_GEN', 'drl4a_GEN', 60, 0, 3)
  h_drz1a_GEN = TH1F('drz1a_GEN', 'drz1a_GEN', 60, 0, 6)
  h_drz2a_GEN = TH1F('drz2a_GEN', 'drz2a_GEN', 60, 0, 6)
  h_drz1z2_GEN = TH1F('drz1z2_GEN', 'drz1z2_GEN', 60, 0, 6)

  h_Vistaupt_GEN = TH1F('Vistaupt_GEN', 'Vistaupt_GEN', 100, 0, 200)
  h_Vistaueta_GEN = TH1F('Vistaueta_GEN', 'Vistaueta_GEN', 60, -3, 3)
  h_Vistauphi_GEN = TH1F('Vistauphi_GEN', 'Vistauphi_GEN', 80, -4, 4)
  h_METpt_GEN = TH1F('METpt_GEN', 'METpt_GEN', 50, 0, 100)
  h_METphi_GEN = TH1F('METphi_GEN', 'METphi_GEN', 80, -4, 4)
  h_mzz_GEN = TH1F('mzz_GEN', 'mzz_GEN', 100, 0, 300)
  
  #######################  add histos dictionary ##############################
  histo_array = {}
  histo_array['h_weight']=h_weight
  histo_array['h_lep1pt_LHE']=h_lep1pt_LHE
  histo_array['h_lep1eta_LHE']=h_lep1eta_LHE
  histo_array['h_lep1phi_LHE']=h_lep1phi_LHE
  histo_array['h_lep2pt_LHE']=h_lep2pt_LHE
  histo_array['h_lep2eta_LHE']=h_lep2eta_LHE
  histo_array['h_lep2phi_LHE'] = h_lep2phi_LHE
  histo_array['h_lep3pt_LHE']=h_lep3pt_LHE
  histo_array['h_lep3eta_LHE']=h_lep3eta_LHE
  histo_array['h_lep3phi_LHE'] = h_lep3phi_LHE
  histo_array['h_lep4pt_LHE']=h_lep4pt_LHE
  histo_array['h_lep4eta_LHE']=h_lep4eta_LHE
  histo_array['h_lep4phi_LHE'] = h_lep4phi_LHE
  histo_array['h_Vpt_LHE'] = h_Vpt_LHE
  
  histo_array['h_Z1mass_LHE']=h_Z1mass_LHE
  histo_array['h_Z1pt_LHE']=h_Z1pt_LHE
  histo_array['h_Z1eta_LHE']=h_Z1eta_LHE
  histo_array['h_Z1phi_LHE']=h_Z1phi_LHE
  histo_array['h_Z2mass_LHE']=h_Z2mass_LHE
  histo_array['h_Z2pt_LHE']=h_Z2pt_LHE
  histo_array['h_Z2eta_LHE']=h_Z2eta_LHE
  histo_array['h_Z2phi_LHE']=h_Z2phi_LHE

  histo_array['h_apt_LHE'] = h_apt_LHE
  histo_array['h_aeta_LHE'] = h_aeta_LHE
  histo_array['h_aphi_LHE'] = h_aphi_LHE


  histo_array['h_Dressedlep1pt_GEN']=h_Dressedlep1pt_GEN
  histo_array['h_Dressedlep1eta_GEN']=h_Dressedlep1eta_GEN
  histo_array['h_Dressedlep1phi_GEN']=h_Dressedlep1phi_GEN
  histo_array['h_Dressedlep2pt_GEN']=h_Dressedlep2pt_GEN
  histo_array['h_Dressedlep2eta_GEN']=h_Dressedlep2eta_GEN
  histo_array['h_Dressedlep2phi_GEN'] = h_Dressedlep2phi_GEN
  histo_array['h_Dressedlep3pt_GEN']=h_Dressedlep3pt_GEN
  histo_array['h_Dressedlep3eta_GEN']=h_Dressedlep3eta_GEN
  histo_array['h_Dressedlep3phi_GEN'] = h_Dressedlep3phi_GEN
  histo_array['h_Dressedlep4pt_GEN']=h_Dressedlep4pt_GEN
  histo_array['h_Dressedlep4eta_GEN']=h_Dressedlep4eta_GEN
  histo_array['h_Dressedlep4phi_GEN'] = h_Dressedlep4phi_GEN
  histo_array['h_apt_GEN']=h_apt_GEN
  histo_array['h_aeta_GEN']=h_aeta_GEN
  histo_array['h_aphi_GEN'] = h_aphi_GEN

  histo_array['h_Z1mass_GEN']=h_Z1mass_GEN
  histo_array['h_Z1pt_GEN']=h_Z1pt_GEN
  histo_array['h_Z1eta_GEN']=h_Z1eta_GEN
  histo_array['h_Z1phi_GEN']=h_Z1phi_GEN
  histo_array['h_Z2mass_GEN']=h_Z2mass_GEN
  histo_array['h_Z2pt_GEN']=h_Z2pt_GEN
  histo_array['h_Z2eta_GEN']=h_Z2eta_GEN
  histo_array['h_Z2phi_GEN']=h_Z2phi_GEN
  
  histo_array['h_drl1l2_GEN'] = h_drl1l2_GEN
  histo_array['h_drl1l3_GEN'] = h_drl1l3_GEN
  histo_array['h_drl1l4_GEN'] = h_drl1l4_GEN
  histo_array['h_drl2l3_GEN'] = h_drl2l3_GEN
  histo_array['h_drl2l4_GEN'] = h_drl2l4_GEN
  histo_array['h_drl3l4_GEN'] = h_drl3l4_GEN
  histo_array['h_drl1a_GEN'] = h_drl1a_GEN
  histo_array['h_drl2a_GEN'] = h_drl2a_GEN
  histo_array['h_drl3a_GEN'] = h_drl3a_GEN
  histo_array['h_drl4a_GEN'] = h_drl4a_GEN

  histo_array['h_drz1a_GEN'] = h_drz1a_GEN
  histo_array['h_drz2a_GEN'] = h_drz2a_GEN
  histo_array['h_drz1z2_GEN'] = h_drz1z2_GEN

  histo_array['h_Vistaupt_GEN']=h_Vistaupt_GEN
  histo_array['h_Vistaueta_GEN']=h_Vistaueta_GEN
  histo_array['h_Vistauphi_GEN']=h_Vistauphi_GEN
  histo_array['h_METpt_GEN']=h_METpt_GEN
  histo_array['h_METphi_GEN'] = h_METphi_GEN
  histo_array['h_mzz_GEN'] = h_mzz_GEN
  

  for key in histo_array:
    histo_array[key].SetStats(0)
    histo_array[key].Sumw2()
    histo_array[key].GetYaxis().SetTitle("a.u.")
    histo_array[key].GetYaxis().SetTitleSize(0.05)
    histo_array[key].GetYaxis().SetTitleOffset(0.75)
    histo_array[key].GetXaxis().SetTitle(key)
    histo_array[key].SetMinimum(0)

  if not os.path.isfile(opt.inputfiles):
    print 'inputfile does not exist!!'
  filein=TFile.Open(opt.inputfiles)
  treein=filein.Get('Events')
  npos=treein.GetEntries('genWeight>0')
  nneg=treein.GetEntries('genWeight<0')
  h_weight.SetBinContent(1,nneg)
  h_weight.SetBinContent(2,npos)

  for entry in range(0,treein.GetEntries()):
    p4temp = TLorentzVector()
    wp4temp=TLorentzVector()
    zp4 = TLorentzVector()
    LHElep = []
    LHEjet = []
    LHEa = []
    treein.GetEntry(entry)
    weight=(treein.genWeight)/(abs(treein.genWeight))

    # LHE info
    #histo_array['h_Vpt_LHE'].Fill(treein.LHE_Vpt, weight)
    #histo_array['h_Njets_LHE'].Fill(ord(treein.LHE_Njets), weight)
    #histo_array['h_HT_LHE'].Fill(treein.LHE_HT, weight)

    for iLHE in range(2,treein.nLHEPart):
      # LHE leptons
      if (abs(treein.LHEPart_pdgId[iLHE])==11 or abs(treein.LHEPart_pdgId[iLHE])==13):
        p4temp.SetPtEtaPhiM(treein.LHEPart_pt[iLHE], treein.LHEPart_eta[iLHE], treein.LHEPart_phi[iLHE], treein.LHEPart_mass[iLHE])
        LHElep.append(extend_p4(p4temp.Clone(), treein.LHEPart_pdgId[iLHE]))
      # LHE jets
      if treein.LHEPart_status[iLHE] == 1 and (abs(treein.LHEPart_pdgId[iLHE]) == 1 or abs(treein.LHEPart_pdgId[iLHE]) == 2 or
                                               abs(treein.LHEPart_pdgId[iLHE]) == 3 or abs(treein.LHEPart_pdgId[iLHE]) == 4 or
                                               abs(treein.LHEPart_pdgId[iLHE]) == 5 or abs(treein.LHEPart_pdgId[iLHE]) == 21):
        p4temp.SetPtEtaPhiM(treein.LHEPart_pt[iLHE], treein.LHEPart_eta[iLHE], treein.LHEPart_phi[iLHE], treein.LHEPart_mass[iLHE])
        LHEjet.append(p4temp.Clone())
      if treein.LHEPart_pdgId[iLHE] == 22:
        p4temp.SetPtEtaPhiM(treein.LHEPart_pt[iLHE], treein.LHEPart_eta[iLHE], treein.LHEPart_phi[iLHE], treein.LHEPart_mass[iLHE])
        LHEa.append(p4temp.Clone())
    #--end loop LHEpart

    if len(LHElep) > 0: LHElep.sort(key=lambda x: x.p4_vector.Pt())  # sort the lep by pt
    if len(LHElep) == 4  and len(LHEa) == 1:
      histo_array['h_lep1pt_LHE'].Fill(LHElep[0].p4_vector.Pt(), weight)
      histo_array['h_lep2pt_LHE'].Fill(LHElep[1].p4_vector.Pt(), weight)
      histo_array['h_lep3pt_LHE'].Fill(LHElep[2].p4_vector.Pt(), weight)
      histo_array['h_lep4pt_LHE'].Fill(LHElep[3].p4_vector.Pt(), weight)
      histo_array['h_lep1eta_LHE'].Fill(LHElep[0].p4_vector.Eta(), weight)
      histo_array['h_lep2eta_LHE'].Fill(LHElep[1].p4_vector.Eta(), weight)
      histo_array['h_lep3eta_LHE'].Fill(LHElep[2].p4_vector.Eta(), weight)
      histo_array['h_lep4eta_LHE'].Fill(LHElep[3].p4_vector.Eta(), weight)
      histo_array['h_lep1phi_LHE'].Fill(LHElep[0].p4_vector.Phi(), weight)
      histo_array['h_lep2phi_LHE'].Fill(LHElep[1].p4_vector.Phi(), weight)
      histo_array['h_lep3phi_LHE'].Fill(LHElep[2].p4_vector.Phi(), weight)
      histo_array['h_lep4phi_LHE'].Fill(LHElep[3].p4_vector.Phi(), weight)

      histo_array['h_apt_LHE'].Fill(LHEa[0].Pt(), weight)
      histo_array['h_aphi_LHE'].Fill(LHEa[0].Phi(), weight)
      histo_array['h_aeta_LHE'].Fill(LHEa[0].Eta(), weight)


      minZ_lhe, otherZ_lhe = mll(LHElep)
      histo_array['h_Z1mass_LHE'].Fill(minZ_lhe.M(), weight)
      histo_array['h_Z1pt_LHE'].Fill(minZ_lhe.Pt(), weight)
      histo_array['h_Z1phi_LHE'].Fill(minZ_lhe.Phi(), weight)
      histo_array['h_Z1eta_LHE'].Fill(minZ_lhe.Eta(), weight)
      histo_array['h_Z2mass_LHE'].Fill(otherZ_lhe.M(), weight)
      histo_array['h_Z2pt_LHE'].Fill(otherZ_lhe.Pt(), weight)
      histo_array['h_Z2phi_LHE'].Fill(otherZ_lhe.Phi(), weight)
      histo_array['h_Z2eta_LHE'].Fill(otherZ_lhe.Eta(), weight)
    ##--end lhe info

    GENjet = []
    GENDressLep = []
    GENgamma_tmp = []
    GENgamma = []
    Gena = TLorentzVector()
    HT_GEN = 0.
    ##-GEN info
    if treein.nGenDressedLepton>0:
      for idressedlep in range(0, treein.nGenDressedLepton):
        if treein.GenDressedLepton_hasTauAnc[idressedlep]: continue
        p4temp.SetPtEtaPhiM(treein.GenDressedLepton_pt[idressedlep],treein.GenDressedLepton_eta[idressedlep],treein.GenDressedLepton_phi[idressedlep],treein.GenDressedLepton_mass[idressedlep])
        GENDressLep.append(extend_p4(p4temp.Clone(), treein.GenDressedLepton_pdgId[idressedlep]))
      #-sort by pt
      GENDressLep.sort(key=lambda x: x.p4_vector.Pt())
      if len(GENDressLep)==4:
        if GENDressLep[0].p4_vector.Pt() < 10:
          continue
        histo_array['h_Dressedlep1pt_GEN'].Fill(GENDressLep[0].p4_vector.Pt(), weight)
        histo_array['h_Dressedlep1eta_GEN'].Fill(GENDressLep[0].p4_vector.Eta(), weight)
        histo_array['h_Dressedlep1phi_GEN'].Fill(GENDressLep[0].p4_vector.Phi(), weight)
        histo_array['h_Dressedlep2pt_GEN'].Fill(GENDressLep[1].p4_vector.Pt(), weight)
        histo_array['h_Dressedlep2eta_GEN'].Fill(GENDressLep[1].p4_vector.Eta(), weight)
        histo_array['h_Dressedlep2phi_GEN'].Fill(GENDressLep[1].p4_vector.Phi(), weight)
        histo_array['h_Dressedlep3pt_GEN'].Fill(GENDressLep[2].p4_vector.Pt(), weight)
        histo_array['h_Dressedlep3eta_GEN'].Fill(GENDressLep[2].p4_vector.Eta(), weight)
        histo_array['h_Dressedlep3phi_GEN'].Fill(GENDressLep[2].p4_vector.Phi(), weight)
        histo_array['h_Dressedlep4pt_GEN'].Fill(GENDressLep[3].p4_vector.Pt(), weight)
        histo_array['h_Dressedlep4eta_GEN'].Fill(GENDressLep[3].p4_vector.Eta(), weight)
        histo_array['h_Dressedlep4phi_GEN'].Fill(GENDressLep[3].p4_vector.Phi(), weight)
      
        histo_array['h_drl1l2_GEN'].Fill(GENDressLep[0].p4_vector.DeltaR(GENDressLep[1].p4_vector), weight)
        histo_array['h_drl1l3_GEN'].Fill(GENDressLep[0].p4_vector.DeltaR(GENDressLep[2].p4_vector), weight)
        histo_array['h_drl1l4_GEN'].Fill(GENDressLep[0].p4_vector.DeltaR(GENDressLep[3].p4_vector), weight)
        histo_array['h_drl2l3_GEN'].Fill(GENDressLep[1].p4_vector.DeltaR(GENDressLep[2].p4_vector), weight)
        histo_array['h_drl2l4_GEN'].Fill(GENDressLep[1].p4_vector.DeltaR(GENDressLep[3].p4_vector), weight)
        histo_array['h_drl3l4_GEN'].Fill(GENDressLep[2].p4_vector.DeltaR(GENDressLep[3].p4_vector), weight)
      
        minZ_gen, otherZ_gen = mll(GENDressLep)
        histo_array['h_Z1mass_GEN'].Fill(minZ_gen.M(), weight)
        histo_array['h_Z1pt_GEN'].Fill(minZ_gen.Pt(), weight)
        histo_array['h_Z1phi_GEN'].Fill(minZ_gen.Phi(), weight)
        histo_array['h_Z1eta_GEN'].Fill(minZ_gen.Eta(), weight)
        histo_array['h_Z2mass_GEN'].Fill(otherZ_gen.M(), weight)
        histo_array['h_Z2pt_GEN'].Fill(otherZ_gen.Pt(), weight)
        histo_array['h_Z2phi_GEN'].Fill(otherZ_gen.Phi(), weight)
        histo_array['h_Z2eta_GEN'].Fill(otherZ_gen.Eta(), weight)
        histo_array['h_drz1z2_GEN'].Fill(otherZ_gen.DeltaR(minZ_gen), weight)
        histo_array['h_mzz_GEN'].Fill((minZ_gen + otherZ_gen).M(), weight)
        
    #--end nGenDressedLepton
    if len(GENDressLep)==4 and treein.nGenPart>0:
      for iGenPart in range(0, treein.nGenPart):
        if treein.GenPart_pdgId[iGenPart]==22: # and treein.GenPart_statusFlags[iGenPart] == 0
          p4temp.SetPtEtaPhiM(treein.GenPart_pt[iGenPart],treein.GenPart_eta[iGenPart],treein.GenPart_phi[iGenPart],treein.GenPart_mass[iGenPart])
          GENgamma_tmp.append(p4temp.Clone())
      for iGENgamma_tmp in range(0, len(GENgamma_tmp)):
        if GENDressLep[0].p4_vector.DeltaR(GENgamma_tmp[iGENgamma_tmp])>0.5 and GENDressLep[1].p4_vector.DeltaR(GENgamma_tmp[iGENgamma_tmp])>0.5 and GENDressLep[2].p4_vector.DeltaR(GENgamma_tmp[iGENgamma_tmp])>0.5 and GENDressLep[3].p4_vector.DeltaR(GENgamma_tmp[iGENgamma_tmp])>0.5:
          GENgamma.append(GENgamma_tmp[iGENgamma_tmp].Clone())
      GENgamma.sort(key=lambda x: x.Pt(), reverse=True)
      if len(GENgamma) == 0: continue
      Gena = GENgamma[0]
      # finished selecting gamma
      histo_array['h_apt_GEN'].Fill(Gena.Pt())
      histo_array['h_aeta_GEN'].Fill(Gena.Eta())
      histo_array['h_aphi_GEN'].Fill(Gena.Phi())
      histo_array['h_drl1a_GEN'].Fill(Gena.DeltaR(GENDressLep[0].p4_vector))
      histo_array['h_drl2a_GEN'].Fill(Gena.DeltaR(GENDressLep[1].p4_vector))
      histo_array['h_drl3a_GEN'].Fill(Gena.DeltaR(GENDressLep[2].p4_vector))
      histo_array['h_drl4a_GEN'].Fill(Gena.DeltaR(GENDressLep[3].p4_vector))
      histo_array['h_drz1a_GEN'].Fill(Gena.DeltaR(minZ_gen))
      histo_array['h_drz2a_GEN'].Fill(Gena.DeltaR(otherZ_gen))
    if treein.nGenVisTau>0:
      histo_array['h_Vistaupt_GEN'].Fill(treein.GenVisTau_pt[0], weight)
      histo_array['h_Vistaueta_GEN'].Fill(treein.GenVisTau_eta[0], weight)
      histo_array['h_Vistauphi_GEN'].Fill(treein.GenVisTau_phi[0], weight)
    histo_array['h_METpt_GEN'].Fill(treein.GenMET_pt, weight)
    histo_array['h_METphi_GEN'].Fill(treein.GenMET_phi, weight)

    #if entry > 10:
    #  break

  fileout=TFile.Open(opt.outputfiles+'.root','RECREATE')
  # fileout=TFile.Open(opt.outputfiles+'.root','UPDATE')
  fileout.cd()
  #print histo_array.keys()
  for key in histo_array:
    histo_array[key].Write()
  fileout.Close()
Exemple #10
0
    if data_chain.jet_num < 1:
        continue

    jet_0 = TLorentzVector(0, 0, 0, 0)
    jet_1 = TLorentzVector(0, 0, 0, 0)


    jet_0.SetPtEtaPhiM(data_chain.fj_ak8_pt[0], data_chain.fj_ak8_eta[0], data_chain.fj_ak8_phi[0], data_chain.fj_ak8_trimmed_mass[0])
    jet_1.SetPtEtaPhiM(data_chain.fj_ak8_pt[1], data_chain.fj_ak8_eta[1], data_chain.fj_ak8_phi[1], data_chain.fj_ak8_trimmed_mass[1])

 
    m0 = data_chain.fj_ak8_trimmed_mass[0]
    m1 = data_chain.fj_ak8_trimmed_mass[1]
    
    mass_asym = abs(m0 - m1)/(m0 + m1)
    delta_eta = abs(jet_0.Eta() - jet_1.Eta())
    
    if m0 + m1 == 0:
        continue

    if mass_asym > 0.5:
        continue

    if data_chain.fj_ak8_pt[0] < 280 or data_chain.fj_ak8_pt[1] < 280:
        continue
     
    ak8_pt_0[0] = data_chain.fj_ak8_pt[0]
    ak8_eta_0[0] = data_chain.fj_ak8_eta[0]
    ak8_phi_0[0] = data_chain.fj_ak8_phi[0]
    ak8_m_0[0] = data_chain.fj_ak8_trimmed_mass[0]
    ak8_m_0[0] = data_chain.fj_ak8_m[0]
Exemple #11
0
    # At least 1 B jet (using deepcsvm value)
    ngoodjets = len(jetsP4)
    #print 'ngoodjets: ', ngoodjets
    centBjetsP4 = []
    BjetsP4 = []
    deepcsvm = 0.4941
    nMedBjets = 0
    for j in range(0, ngoodjets):
        tempjet = TLorentzVector(0.0, 0.0, 0.0, 0.0)
        tempjet = jetsP4[j]
        tempjetcsv = goodjetcsv[j]
        if tempjetcsv >= deepcsvm:
            nMedBjets += 1
            BjetsP4.append(tempjet)
            jeteta = tempjet.Eta()
            if abs(jeteta) < 2.4:
                centBjetsP4.append(tempjet)

    if nMedBjets == 0: continue
    ncut += 1
    hCutflow.Fill(ncut, evtwt)

    # Met > 20 GeV
    if met_pt < 20: continue
    ncut += 1
    hCutflow.Fill(ncut, evtwt)

    ak8jet_pt = t.AK8Jets_pt
    ak8jet_eta = t.AK8Jets_eta
    ak8jet_phi = t.AK8Jets_phi