def Return_mTbs(jet, metPt, metPhi): #setting of the 4vectors seems fine naeively? met4Vec = TLorentzVector() met4Vec.SetPtEtaPhiE(metPt, 0, metPhi, metPt) bjet4Vec = TLorentzVector() bjet4Vec.SetPtEtaPhiE(jet[0], jet[1], jet[2], jet[3]) mTb = (met4Vec + bjet4Vec).Mt() # this assumes masses for the b-jet #using 4vectors and dPhi method (massless particles) mTb0 = math.sqrt(2. * met4Vec.Et() * bjet4Vec.Et() * (1. - math.cos(met4Vec.DeltaPhi(bjet4Vec)))) return {'mTb_mass': mTb, 'mTb_massless': mTb0}
def TransBoosted_Angle(pt1,eta1,phi1,pt2,eta2,phi2,ptz,etaz,phiz,mass,Met,Metphi): mu1 = TLorentzVector() mu2 = TLorentzVector() zb = TLorentzVector() met = TLorentzVector() mu1.SetPtEtaPhiM(pt1,0,phi1,0) mu2.SetPtEtaPhiM(pt2,0,phi2,0) zb.SetPtEtaPhiM(ptz,0,phiz,mass) MET.SetPtEtaPhiM(Met,0,Metphi,0) MET.Boost(-zb.Px()/zb.Et(),-zb.Py()/zb.Et(),0) mu1.Boost(-zb.Px()/zb.Et(),-zb.Py()/zb.Et(),0) mu2.Boost(-zb.Px()/zb.Et(),-zb.Py()/zb.Et(),0) angleBoost_1 = MET.DeltaPhi(mu1) angleBoost_2 = MET.DeltaPhi(mu2) angleBoost_Z = MET.DeltaPhi(zb) return [angleBoost_Z,angleBoost_1,angleBoost_2]
def TagVars(collections): results=[]; Et_ratio=[]; Dphi=[]; projB=[]; DzTagMuK=[]; DzTagMuL1=[]; DzTagMuL2=[]; tracks=collections[0] Bcands=collections[2] trgmuons=(collections[1]) trgmuon_vec=TLorentzVector() trgmuon_vec.SetPtEtaPhiM(0,0,0,0) trgmuon_vz=-99 for trgmuon in trgmuons: if not getattr(trgmuon,"isTriggering"): continue; trgmuon_vec.SetPtEtaPhiM(getattr(trgmuon,"pt"),getattr(trgmuon,"eta"),getattr(trgmuon,"phi"),0.105) trgmuon_vz=getattr(trgmuon,"vz") break if trgmuon_vec.M()==0: result=[[0], [0], [0], [0], [0], [0]] return result sum_track_vec=trgmuon_vec; sum_track=trgmuon_vec.Pt(); for track in tracks: track_vec=TLorentzVector(); track_vec.SetPtEtaPhiM(getattr(track,"pt"),getattr(track,"eta"),getattr(track,"phi"),0.139) if trgmuon_vec.DrEtaPhi(track_vec)>0.4: continue sum_track_vec=sum_track_vec+track_vec; sum_track+=track_vec.Pt() for Bcand in Bcands: Bcand_vec=TLorentzVector(); Bcand_vec.SetPtEtaPhiM(getattr(Bcand,"fit_pt"),getattr(Bcand,"fit_eta"),getattr(Bcand,"fit_phi"),getattr(Bcand,"fit_mass")) if sum_track>0: Et_ratio.append(Bcand_vec.Et()/sum_track) else: Et_ratio.append(0) Dphi.append(Bcand_vec.DeltaPhi(sum_track_vec)) projB.append(Bcand_vec*sum_track_vec) DzTagMuK.append( abs(trgmuon_vz-getattr(Bcand,"kVz")) ) DzTagMuL1.append( abs(trgmuon_vz-getattr(Bcand,"l1Vz")) ) DzTagMuL2.append( abs(trgmuon_vz-getattr(Bcand,"l2Vz")) ) result=[Et_ratio, Dphi, projB, DzTagMuL1, DzTagMuL2, DzTagMuK] return result
def TagVarsMC(collections): results=[]; Et_ratio=-99.; Dphi=-99.; projB=-99. tracks=collections[0] trgmuons=collections[1] recoB_pt=collections[2] recoB_eta=collections[3] recoB_phi=collections[4] recoB_mass=collections[5] recoE1_vz=collections[6] recoE2_vz=collections[7] recoK_vz=collections[8] trgmuon_vec=TLorentzVector() trgmuon_vec.SetPtEtaPhiM(0,0,0,0) for trgmuon in trgmuons: if getattr(trgmuon,"isTriggering")==0: continue trgmuon_vec.SetPtEtaPhiM(getattr(trgmuon,"pt"),getattr(trgmuon,"eta"),getattr(trgmuon,"phi"),0.105) break if trgmuon_vec.M()==0: result=[-99.,-99.,-99.,-99.,-99.,-99.] return result sum_track_vec=trgmuon_vec; sum_track=trgmuon_vec.Pt(); trgmuon_vz=getattr(trgmuon,"vz") for track in tracks: track_vec=TLorentzVector(); track_vec.SetPtEtaPhiM(getattr(track,"pt"),getattr(track,"eta"),getattr(track,"phi"),0.139) if trgmuon_vec.DrEtaPhi(track_vec)>0.4: continue sum_track_vec=sum_track_vec+track_vec; sum_track+=track_vec.Pt() recoB_vec=TLorentzVector(); recoB_vec.SetPtEtaPhiM(recoB_pt,recoB_eta,recoB_phi,recoB_mass) if sum_track>0: Et_ratio=recoB_vec.Et()/sum_track else: Et_ratio=0 Dphi=recoB_vec.DeltaPhi(sum_track_vec) projB=recoB_vec*sum_track_vec result=[Et_ratio,Dphi,projB,abs(trgmuon_vz-recoE1_vz),abs(trgmuon_vz-recoE2_vz),abs(trgmuon_vz-recoK_vz)] return result
def TagVarsMC(collections): results = [] Et_ratio = [] Dphi = [] projB = [] tracks = collections[0] trgmuons = collections[1] recoB_pt = collections[2] recoB_eta = collections[3] recoB_phi = collections[4] recoB_mass = collections[5] if len(trgmuons) == 0: default = [-99., -99., -99.] return default trgmuon = trgmuons[0] trgmuon_vec = TLorentzVector() trgmuon_vec.SetPtEtaPhiM(getattr(trgmuon, "pt"), getattr(trgmuon, "eta"), getattr(trgmuon, "phi"), 0.105) sum_track_vec = trgmuon_vec sum_track = trgmuon_vec.Pt() for track in tracks: track_vec = TLorentzVector() track_vec.SetPtEtaPhiM(getattr(track, "pt"), getattr(track, "eta"), getattr(track, "phi"), 0.139) if trgmuon_vec.DrEtaPhi(track_vec) > 0.4: continue sum_track_vec = sum_track_vec + track_vec sum_track += track_vec.Pt() recoB_vec = TLorentzVector() recoB_vec.SetPtEtaPhiM(recoB_pt, recoB_eta, recoB_phi, recoB_mass) if sum_track > 0: Et_ratio = recoB_vec.Et() / sum_track else: Et_ratio = 0 Dphi = recoB_vec.DeltaPhi(sum_track_vec) projB = recoB_vec * sum_track_vec result = [Et_ratio, Dphi, projB] return result
def TagVars(collections): results = [] Et_ratio = [] Dphi = [] projB = [] tracks = collections[0] Bcands = collections[2] trgmuon = (collections[1])[0] trgmuon_vec = TLorentzVector() trgmuon_vec.SetPtEtaPhiM(getattr(trgmuon, "pt"), getattr(trgmuon, "eta"), getattr(trgmuon, "phi"), 0.105) sum_track_vec = trgmuon_vec sum_track = trgmuon_vec.Pt() for track in tracks: track_vec = TLorentzVector() track_vec.SetPtEtaPhiM(getattr(track, "pt"), getattr(track, "eta"), getattr(track, "phi"), 0.139) if trgmuon_vec.DrEtaPhi(track_vec) > 0.4: continue sum_track_vec = sum_track_vec + track_vec sum_track += track_vec.Pt() for Bcand in Bcands: Bcand_vec = TLorentzVector() Bcand_vec.SetPtEtaPhiM(getattr(Bcand, "fit_pt"), getattr(Bcand, "fit_eta"), getattr(Bcand, "fit_phi"), getattr(Bcand, "fit_mass")) if sum_track > 0: Et_ratio.append(Bcand_vec.Et() / sum_track) else: Et_ratio.append(0) Dphi.append(Bcand_vec.DeltaPhi(sum_track_vec)) projB.append(Bcand_vec * sum_track_vec) result = [Et_ratio, Dphi, projB] return result
MET.SetPtEtaPhiM(met[0],0,metphi[0],0) ##for h in HiggsMass: ##exec('MET'+h+'.SetPtEtaPhiM(met[0],0,metphi[0],'+h+')') ##exec('TransMass'+h+'[0] = (L1 + L2 + MET'+h+').Mt()') ##exec('TransMass_Eff'+h+'[0] = L1.Et() + L2.Et() + MET'+h+'.Et()') Thrust[0] = (L1-L2).Pt() DeltaPz[0] = abs((L1-L2).Pz()) DeltaPhi_ZH[0] = abs(ZB.DeltaPhi(MET)) #TransMass_Eff[0] = l1pt[0] + l2pt[0] + met[0] #TransMass_EffZ[0] = math.sqrt(zpt[0]**2 + mass[0]**2) + met[0] TransMass[0] = (L1 + L2 + MET).Mt() TransMass_Eff[0] = L1.Et() + L2.Et() + MET.Et() #print costheta_CS(1.0) CScostheta[0] = costheta_CS(l1pt[0],l1eta[0],l1phi[0],l2pt[0],l2eta[0],l2phi[0]) #CScostheta[0] = costheta_CS(1,0.5,0.5,2,0.2,0.2) #ST[0] = L1.Pt() + L2.Pt() + MET.Pt() #CScos[0] = CSAngle(l1pt[0],l1eta[0],l1phi[0],l2pt[0],l2eta[0],l2phi[0]) #TransMass_EffZ[0] = (ZB + MET).Mt() #TransMass[0] = mass[0]**2 + massH**2 + math.sqrt(mass[0]**2 + zpt[0]**2)*math.sqrt(massH**2 + met[0]**2)*2 - 2*zpt[0]*met[0]*cos(DeltaPhi_ZH[0]) #TransMass[0] = (mass[0]**2 + massH**2 + 2*(((mass[0]**2 + zpt[0]**2))**(0.5))*(((massH**2 + met[0]**2))**(0.5)) - 2*zpt[0]*met[0]*cos(DeltaPhi_ZH[0]))**(0.5) #XX[0] = l1pt[0] + l2pt[0] tout.Fill() fout.Write()