Пример #1
0
def decaytime(pf):
    print("Adding decay time branch...")
    PV_pos = TVector3Array(pf.pv_x,pf.pv_y,pf.pv_z)
    jpsiVertex_pos = TVector3Array(pf.jpsivtx_vtx_x,pf.jpsivtx_vtx_y,pf.jpsivtx_vtx_z)
    dist1 = (PV_pos - jpsiVertex_pos).mag
    decay_time1 = dist1 * 6.276 / (pf.Bpt_reco * 2.998e+10)
    #pf.copy()
    pf['decay_time'] = decay_time1
    return pf
Пример #2
0
def decaytime(pf):
    print("Adding decay time branch...")
    PV_pos = TVector3Array(pf.pv_x,pf.pv_y,pf.pv_z)
    jpsiVertex_pos1 = TVector3Array(pf.mu1_vx,pf.mu1_vy,pf.mu1_vz)
    jpsiVertex_pos2 = TVector3Array(pf.mu2_vx,pf.mu2_vy,pf.mu2_vz)

    dist1 = (PV_pos - jpsiVertex_pos1).mag
    dist2 = (PV_pos - jpsiVertex_pos2).mag

    decay_time1 = dist1 * 6.276 / (pf.Bpt_reco * 2.998e+10)
    decay_time2 = dist2 * 6.276 / (pf.Bpt_reco * 2.998e+10)
    pf.copy()
    pf['decay_time1'] = decay_time1
    pf['decay_time2'] = decay_time2
    return pf
Пример #3
0
def mcor(pf):
    #https://cds.cern.ch/record/2697350/files/1910.13404.pdf
    #only for bto3mu and bto2mutrk 
    print("Adding mcor variable...")
    b_dir_vec = TVector3Array(pf.jpsivtx_vtx_x - pf.pv_x,pf.jpsivtx_vtx_y - pf.pv_y,pf.jpsivtx_vtx_z - pf.pv_z )
    b_dir = b_dir_vec/np.sqrt(b_dir_vec.mag2)
    jpsimu_p4 = TLorentzVectorArray.from_ptetaphim(pf.Bpt,pf.Beta,pf.Bphi,pf.Bmass)
    jpsimu_p3 = jpsimu_p4.p3
    p_parallel = jpsimu_p3.dot(b_dir) 
    p_perp = np.sqrt(jpsimu_p3.mag2 - p_parallel * p_parallel)
    mcor = np.sqrt(pf.Bmass * pf.Bmass + p_perp* p_perp) + p_perp
    pf['mcor'] = mcor
    return pf