def mis_energy(tree, histdict):
    '''Read the tree and fill the histogram event per events'''

    count_ISR_evt = 0

    for iev, evt in enumerate(tree):

        # if evt.reco_lepton_size == 0:
        #     continue

        # ISR_evt_flag = False

        if iev % 1000 == 0:
            print("Processing events {} on {} ".format(iev, tree.GetEntries()))

        # jet1_tlv = TLorentzVector(evt.reco_jet1_px, evt.reco_jet1_py, evt.reco_jet1_pz, evt.reco_jet1_e)
        # jet2_tlv = TLorentzVector(evt.reco_jet2_px, evt.reco_jet2_py, evt.reco_jet2_pz, evt.reco_jet2_e)

        # angle_jets = jet1_tlv.Angle(jet2_tlv.Vect())
        # histdict["h_recoJetsAngle"].Fill(angle_jets)
        # histdict["h_recoJetsTheta"].Fill(evt.reco_jet1_theta)
        # histdict["h_recoJetsTheta"].Fill(evt.reco_jet2_theta)
        # histdict["h_recoJetEnergy"].Fill(evt.reco_jet1_e)
        # histdict["h_recoJetEnergy"].Fill(evt.reco_jet2_e)

        lepton_tlv = TLorentzVector(evt.gen_lepton_px, evt.gen_lepton_py,
                                    evt.gen_lepton_pz, evt.gen_lepton_e)

        FSR_ph = zip(elementSelection(evt.fsr_e), elementSelection(evt.fsr_px),
                     elementSelection(evt.fsr_py),
                     elementSelection(evt.fsr_pz))
        for e, px, py, pz in FSR_ph:
            FSR_ph = TLorentzVector(px, py, pz, e)
            p_FSR = FSR_ph.P()
            E_p_FSR = e / p_FSR

            histdict["h_E_p_vs_E_FSR"].Fill(e, E_p_FSR)

            angle = FSR_ph.Angle(lepton_tlv.Vect())
            if e >= 0.2:
                histdict["h_FSR_lepton_angle_vs_E"].Fill(e, angle)

        nonFSR_ph = zip(elementSelection(evt.nonFSRPh_e),
                        elementSelection(evt.nonFSRPh_px),
                        elementSelection(evt.nonFSRPh_py),
                        elementSelection(evt.nonFSRPh_pz))
        for e, px, py, pz in nonFSR_ph:
            nonFSR_ph = TLorentzVector(px, py, pz, e)
            p_nonFSR = nonFSR_ph.P()
            E_p_nonFSR = e / p_nonFSR

            histdict["h_E_p_vs_E_nonFSR"].Fill(e, E_p_nonFSR)

            angle = nonFSR_ph.Angle(lepton_tlv.Vect())
            if e >= 0.2 and angle > 0.02:
                histdict["h_nonFSR_lepton_angle_vs_E"].Fill(e, angle)
def Boosted_Angle(pt1, eta1, phi1, pt2, eta2, phi2, ptz, etaz, phiz, mass):
    mu1 = TLorentzVector()
    mu2 = TLorentzVector()
    zb = TLorentzVector()
    mu1.SetPtEtaPhiM(pt1, eta1, phi1, 0)
    mu2.SetPtEtaPhiM(pt2, eta2, phi2, 0)
    angle = mu1.Angle(mu2.Vect())
    zb.SetPtEtaPhiM(ptz, etaz, phiz, mass)
    angle_Z1 = zb.Angle(mu1.Vect())
    angle_Z2 = zb.Angle(mu2.Vect())
    mu1.Boost(-zb.Px() / zb.E(), -zb.Py() / zb.E(), -zb.Pz() / zb.E())
    mu2.Boost(-zb.Px() / zb.E(), -zb.Py() / zb.E(), -zb.Pz() / zb.E())
    angleBoost = mu1.Angle(mu2.Vect())
    angleBoost_Z1 = zb.Angle(mu1.Vect())
    angleBoost_Z2 = zb.Angle(mu2.Vect())
    #print "******&&&&******", angle, angleBoost
    return [angleBoost, angle, angleBoost_Z1, angle_Z1, angle_Z2]
def sintheta_CM(pt1, eta1, phi1, ptz, etaz, phiz, mass):
    mu1 = TLorentzVector()
    zb = TLorentzVector()
    mu1.SetPtEtaPhiM(pt1, eta1, phi1, 0)
    zb.SetPtEtaPhiM(ptz, etaz, phiz, mass)
    Sintheta = 2.0 * (pt1 / mass) * math.sin(zb.Angle(mu1.Vect()))
    #if (	zb.Angle(mu1.Vect()) < 0.0 ):
    #print zb.Angle(mu1.Vect()), "******%%%%%%%%%%*"
    return Sintheta
Exemple #4
0
                higgs = mcpi
            elif mcpi.getPDG() == 21:
                higgs = mcpi
            elif mcpi.getPDG() == 23:
                higgs = mcpi

            if mcpi.getPDG() == 6:
                top = mcpi
            if mcpi.getPDG() == -6:
                topbar = mcpi

        higgs_4v = TLorentzVector(higgs.getMomentum())
        top_4v = TLorentzVector(top.getMomentum())
        topbar_4v = TLorentzVector(topbar.getMomentum())

        tHang1 = higgs_4v.Angle(top_4v.Vect())
        tHang2 = higgs_4v.Angle(topbar_4v.Vect())

        if (tHang1 < tHang2):
            higgs_hist.Fill(tHang1)
            higgs_coshist.Fill(math.cos(tHang1))
        else:
            higgs_hist.Fill(tHang2)
            higgs_coshist.Fill(math.cos(tHang2))

        event = reader.readNextEvent()

gluon_files = [
    100, 102, 103, 104, 105, 106, 109, 110, 111, 112, 113, 114, 115, 116, 118,
    119, 121, 122, 123
]
Exemple #5
0
    def Angle(self, other):

        if isinstance(other, TLorentzVector):
            return TLorentzVector.Angle(self, other.Vect())
        return TLorentzVector.Angle(self, other)
Exemple #6
0
            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)
    if 13 in madspin_pdgid_index: mu_posi = madspin_pdgid_index.index(13)
    if mu_posi != -999:
        mu_mad = madspin_TLorentzVector[mu_posi]
        mu_mad.Boost(-tau_mad_boost)
        muphi_mad.Fill(cos(mu_mad.Angle(tau_mad.Vect())), weight_mad)
    del madspin_TLorentzVector[:]
    del madspin_pdgid_index[:]
tauphi_mad.Scale(1. / tauphi_mad.Integral())