Module flavio.physics.wdecays.gammaw

$W\to\ell\nu$ decays.

Functions

def BRWlnu_fct(l)
Expand source code
def BRWlnu_fct(l):
    def fu(wc_obj, par):
        lep = ['e', 'mu', 'tau']
        # use calculated lifetime, which is more precise than measured one!
        return sum([GammaW(wc_obj, par, l, nu) for nu in lep]) / Gammatot(wc_obj, par)
    return fu
def GammaW(wc_obj, par, f1, f2)
Expand source code
def GammaW(wc_obj, par, f1, f2):
    scale = flavio.config['renormalization scale']['wdecays']
    wc_dict = wc_obj.get_wcxf(sector='all', scale=scale, par=par,
                              eft='SMEFT', basis='Warsaw')
    Nc = smeftew._QN[f1]['Nc']
    gW_SM = gWf_SM(f1, f2, par)
    GSM = GammaW_SM(f1, f2, par)
    d_gW = smeftew.d_gW(f1, f2, par, wc_dict)
    GNP = GammaW_NP(par, Nc, gW_SM, d_gW)
    return GSM + GNP
def GammaW_NP(par, Nc, gW_SM, d_gW)
Expand source code
def GammaW_NP(par, Nc, gW_SM, d_gW):
    GF, mW = par['GF'], par['m_W']
    return (sqrt(2) * GF * mW**3 / (3 * pi) * Nc
            * (2*(gW_SM*d_gW).real + abs(d_gW)**2))
def GammaW_SM(f1, f2, par)
Expand source code
def GammaW_SM(f1, f2, par):
    if f1 in smeftew._sectors['l']:
        return GammaWl_SM(f1, f2, par)
    if f1 in smeftew._sectors['u']:
        return GammaWq_SM(f1, f2, par)
def GammaWl_SM(f1, f2, par)
Expand source code
def GammaWl_SM(f1, f2, par):
    return 4 * abs(gWl_SM(f1, f2, par))**2 * par['GammaW_lep'] / 3
def GammaWq_SM(f1, f2, par)
Expand source code
def GammaWq_SM(f1, f2, par):
    return 4 * abs(gWq_SM(f1, f2, par))**2 * par['GammaW_had'] / 2
def Gammahad(wc_obj, par)
Expand source code
def Gammahad(wc_obj, par):
    return sum([GammaW(wc_obj, par, q1, q2) for q1 in 'uc' for q2 in 'dsb'])
def Gammalep(wc_obj, par)
Expand source code
def Gammalep(wc_obj, par):
    lep = ['e', 'mu', 'tau']
    return sum([GammaW(wc_obj, par, l1, l2) for l1 in lep for l2 in lep])
def Gammatot(wc_obj, par)
Expand source code
def Gammatot(wc_obj, par):
    return Gammalep(wc_obj, par) + Gammahad(wc_obj, par)
def RWcX(wc_obj, par)
Expand source code
def RWcX(wc_obj, par):
    q = ['d', 's', 'b']
    return sum([GammaW(wc_obj, par, 'c', d) for d in q]) / Gammahad(wc_obj, par)
def RWlnu_fct(l1, l2)
Expand source code
def RWlnu_fct(l1, l2):
    def fu(wc_obj, par):
        lep = ['e', 'mu', 'tau']
        # use calculated lifetime, which is more precise than measured one!
        num = sum([GammaW(wc_obj, par, l1, nu) for nu in lep])
        den = sum([GammaW(wc_obj, par, l2, nu) for nu in lep])
        return num / den
    return fu
def gWf_SM(f1, f2, par)
Expand source code
def gWf_SM(f1, f2, par):
    if f1 in smeftew._sectors['l']:
        return gWl_SM(f1, f2, par)
    else:
        return gWq_SM(f1, f2, par)
def gWl_SM(f1, f2, par)
Expand source code
def gWl_SM(f1, f2, par):
    if f1 == f2:
        return 1 / 2   # using neutrino flavour eigenstates
    else:
        return 0
def gWq_SM(f1, f2, par)
Expand source code
def gWq_SM(f1, f2, par):
    i = smeftew._sectors['u'][f1]
    j = smeftew._sectors['d'][f2]
    V = flavio.physics.ckm.get_ckm(par)
    return V[i - 1, j - 1] / 2