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
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 ]
def Angle(self, other): if isinstance(other, TLorentzVector): return TLorentzVector.Angle(self, other.Vect()) return TLorentzVector.Angle(self, other)
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())