示例#1
0
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]
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
		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()