Exemple #1
0
 nKSL = 0
 KS = f.Events.recoVertexCompositePtrCandidates_slimmedKshortVertices__RECO.product(
 )
 TLk = TLorentzVector()
 mK = []
 for k in KS:
     kl = k.p4()
     TLk.SetPtEtaPhiM(kl.pt(), kl.eta(), kl.phi(), kl.mass())
     if TLk.DeltaR(TLs4) < 0.5:
         print k.numberOfDaughters(), k.daughter(0), k.daughter(
             0).pt(), k.daughter(0).eta(), k.daughter(0).phi(), k.daughter(
                 1), k.daughter(1).pt(), k.daughter(1).eta(), k.daughter(
                     1).phi(), "V", k.vx(), k.vy(), k.vz()  #, dir(k)
         print "Match K", k.pt() / s4.pt(), k.mass(), isS
         nKSL += 1
         mK.append(TLk.Clone())
 # EDM
 # Lam = f.Events.recoVertexCompositeCandidates_generalV0Candidates_Lambda_RECO.product()\
 # MiniAOD
 Lam = f.Events.recoVertexCompositePtrCandidates_slimmedLambdaVertices__RECO.product(
 )
 for k in Lam:
     k = k.p4()
     TLk.SetPtEtaPhiE(k.pt(), k.eta(), k.phi(), k.e())
     if TLk.DeltaR(TLs4) < 0.5:
         print "Match L", k.pt() / s4.pt(), k.mass(), isS
         nKSL += 1
 if nKSL > 0: print "Total KS/Lambda: ", nKSL
 if len(mK) == 0: continue
 jtl = TLorentzVector()
 Jets = f.Events.patJets_slimmedJets__RECO.product()
Exemple #2
0
 neu_mad = TLorentzVector(0, 0, 0, 0)
 count = count + 1
 if count % 100 == 0: print "count = ", count
 event.getByLabel(labelPruned, handlePruned)
 pruned = handlePruned.product()
 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)
Exemple #3
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()
Exemple #4
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()