Module flavio.physics.ckm

Functions needed for the CKM matrix as well as for frequently used combinations of CKM elements.

See the documentation of the ckmutil package for details on some of the functions:

https://davidmstraub.github.io/ckmutil/

Functions

def ckm_beta_gamma(Vus, Vcb, beta, gamma)
Expand source code
@lru_cache(maxsize=2)
def ckm_beta_gamma(Vus, Vcb, beta, gamma):
    return ckmutil.ckm.ckm_beta_gamma(Vus, Vcb, beta, gamma)
def ckm_standard(t12, t13, t23, delta)
Expand source code
@lru_cache(maxsize=2)
def ckm_standard(t12, t13, t23, delta):
    return ckmutil.ckm.ckm_standard(t12, t13, t23, delta)
def ckm_tree(Vus, Vub, Vcb, gamma)
Expand source code
@lru_cache(maxsize=2)
def ckm_tree(Vus, Vub, Vcb, gamma):
    return ckmutil.ckm.ckm_tree(Vus, Vub, Vcb, gamma)
def ckm_wolfenstein(laC, A, rhobar, etabar)
Expand source code
@lru_cache(maxsize=2)
def ckm_wolfenstein(laC, A, rhobar, etabar):
    return ckmutil.ckm.ckm_wolfenstein(laC, A, rhobar, etabar)
def get_ckm(par_dict)
Expand source code
def get_ckm(par_dict):
    return AuxiliaryQuantity['CKM matrix'].prediction(par_dict=par_dict, wc_obj=None)
def get_ckmangle_alpha(par)
Expand source code
def get_ckmangle_alpha(par):
    r"""Returns the CKM angle $\alpha$."""
    V = get_ckm(par)
    # see eq. (12.16) of http://pdg.lbl.gov/2015/reviews/rpp2014-rev-ckm-matrix.pdf
    return phase(-V[2,0]*V[2,2].conj()/V[0,0]/V[0,2].conj())

Returns the CKM angle $\alpha$.

def get_ckmangle_beta(par)
Expand source code
def get_ckmangle_beta(par):
    r"""Returns the CKM angle $\beta$."""
    V = get_ckm(par)
    # see eq. (12.16) of http://pdg.lbl.gov/2015/reviews/rpp2014-rev-ckm-matrix.pdf
    return phase(-V[1,0]*V[1,2].conj()/V[2,0]/V[2,2].conj())

Returns the CKM angle $\beta$.

def get_ckmangle_gamma(par)
Expand source code
def get_ckmangle_gamma(par):
    r"""Returns the CKM angle $\gamma$."""
    V = get_ckm(par)
    # see eq. (12.16) of http://pdg.lbl.gov/2015/reviews/rpp2014-rev-ckm-matrix.pdf
    return phase(-V[0,0]*V[0,2].conj()/V[1,0]/V[1,2].conj())

Returns the CKM angle $\gamma$.

def xi(a, bc)
Expand source code
def xi(a, bc):
    r"""Returns the CKM combination $\xi_a^{bc} = V_{ab}V_{ac}^\ast$ if `a` is
      in `['u','c','t']` or $\xi_a^{bc} = V_{ba}V_{ca}^\ast$ if `a` is in
      `['d','s','b']`.

      Parameters
      ----------
      - `a`: should be either one of `['u','c','t']` or one of `['d','s','b']`
      - `bc`: should be a two-letter string with two up-type or down-type flavours,
          e.g. `'cu'`, `'bs'`. If `a` is up-type, `bc` must be down-type and vice
          versa.

      Returns
      -------
      A function that takes a parameter dictionary as input, just like `get_ckm`.
    """
    if a in _q_dict_u:
        kl_num = _q_dict_u[a]
        i_num = _q_dict_d[bc[0]]
        j_num = _q_dict_d[bc[1]]
        return lambda par: xi_kl_ij(par, kl_num, kl_num, i_num, j_num)
    else:
        ij_num = _q_dict_d[a]
        k_num = _q_dict_u[bc[0]]
        l_num = _q_dict_u[bc[1]]
        return lambda par: xi_kl_ij(par, k_num, l_num, ij_num, ij_num)

Returns the CKM combination $\xi_a^{bc} = V_{ab}V_{ac}^\ast$ if a is in ['u','c','t'] or $\xi_a^{bc} = V_{ba}V_{ca}^\ast$ if a is in ['d','s','b'].

Parameters

  • a: should be either one of ['u','c','t'] or one of ['d','s','b']
  • bc: should be a two-letter string with two up-type or down-type flavours, e.g. 'cu', 'bs'. If a is up-type, bc must be down-type and vice versa.

Returns

A function that takes a parameter dictionary as input, just like get_ckm().

def xi_kl_ij(par, k, l, i, j)
Expand source code
def xi_kl_ij(par, k, l, i, j):
    V = get_ckm(par)
    return V[k,i] * V[l,j].conj()