Example #1
0
processes_H2L = ['B->K', 'B->pi']  # heavy to light
processes_H2H = [
    'B->D',
]  # heavy to heavy


def ff_function(function, process, **kwargs):
    return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, **
                                                 kwargs)


for p in processes_H2L + processes_H2H:
    quantity = p + ' form factor'
    a = AuxiliaryQuantity(name=quantity, arguments=['q2'])
    a.set_description('Hadronic form factor for the ' + p + ' transition')

    iname = p + ' BSZ3'
    i = Implementation(name=iname,
                       quantity=quantity,
                       function=ff_function(bsz.ff, p, n=3))
    i.set_description(
        "3-parameter BSZ parametrization (see arXiv:1811.00983).")

    iname = p + ' BCL3'
    i = Implementation(name=iname,
                       quantity=quantity,
                       function=ff_function(bcl.ff, p, n=3))
    i.set_description("3-parameter BCL parametrization (see arXiv:0807.2722).")

    iname = p + ' BCL4'
Example #2
0
    return ckmutil.ckm.tree_to_wolfenstein(Vus, Vub, Vcb, delta)


@lru_cache(maxsize=2)
def ckm_wolfenstein(laC, A, rhobar, etabar):
    return ckmutil.ckm.ckm_wolfenstein(laC, A, rhobar, etabar)


@lru_cache(maxsize=2)
def ckm_tree(Vus, Vub, Vcb, delta):
    return ckmutil.ckm.ckm_tree(Vus, Vub, Vcb, delta)


# Auxiliary Quantity instance
a = AuxiliaryQuantity(name='CKM matrix')
a.set_description(
    'Cabibbo-Kobayashi-Maskawa matrix in the standard phase convention')

# Implementation instances


def _func_standard(wc_obj, par):
    return ckm_standard(par['t12'], par['t13'], par['t23'], par['delta'])


def _func_tree(wc_obj, par):
    return ckm_tree(par['Vus'], par['Vub'], par['Vcb'], par['delta'])


def _func_wolfenstein(wc_obj, par):
    return ckm_wolfenstein(par['laC'], par['A'], par['rhobar'], par['etabar'])
Example #3
0
from flavio.physics.bdecays.formfactors.b_p import bcl, cln, bsz
from flavio.classes import AuxiliaryQuantity, Implementation
from flavio.config import config

processes_H2L = ['B->K', 'B->pi']  # heavy to light
processes_H2H = ['B->D', ]  # heavy to heavy


def ff_function(function, process, **kwargs):
    return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, **kwargs)


for p in processes_H2L + processes_H2H:
    quantity = p + ' form factor'
    a = AuxiliaryQuantity(name=quantity, arguments=['q2'])
    a.set_description('Hadronic form factor for the ' + p + ' transition')

    iname = p + ' BSZ3'
    i = Implementation(name=iname, quantity=quantity,
                       function=ff_function(bsz.ff, p, n=3))
    i.set_description("3-parameter BSZ parametrization (see arXiv:1811.00983).")

    iname = p + ' BCL3'
    i = Implementation(name=iname, quantity=quantity,
                   function=ff_function(bcl.ff, p, n=3))
    i.set_description("3-parameter BCL parametrization (see arXiv:0807.2722).")

    iname = p + ' BCL4'
    i = Implementation(name=iname, quantity=quantity,
                   function=ff_function(bcl.ff, p, n=4))
    i.set_description("4-parameter BCL parametrization (see arXiv:0807.2722).")
Example #4
0
def ff(q2, par, B):
    r"""Central value of $B(s)\to \gamma$ form factors

    See hep-ph/0208256.pdf.
    """
    flavio.citations.register("Kruger:2002gf")
    fB = par['f_' + B]
    mB = par['m_' + B]
    name = 'B->gamma KM '
    ff = {}
    ff['v'] = par[name + 'betav'] * fB * mB / (par[name + 'deltav'] + mB / 2 *
                                               (1 - q2 / mB**2))
    ff['a'] = par[name + 'betaa'] * fB * mB / (par[name + 'deltaa'] + mB / 2 *
                                               (1 - q2 / mB**2))
    ff['tv'] = par[name + 'betatv'] * fB * mB / (par[name + 'deltatv'] +
                                                 mB / 2 * (1 - q2 / mB**2))
    ff['ta'] = par[name + 'betata'] * fB * mB / (par[name + 'deltata'] +
                                                 mB / 2 * (1 - q2 / mB**2))
    return ff


quantity = 'B->gamma form factor'
a = AuxiliaryQuantity(name=quantity, arguments=['q2'])
a.set_description('Form factor for the B(s)->gamma transition')

i = Implementation(
    name="B->gamma KM",
    quantity=quantity,
    function=lambda wc_obj, par_dict, q2, B: ff(q2, par_dict, B))
i.set_description("KM parametrization (see hep-ph/0208256.pdf).")
Example #5
0
from flavio.physics.bdecays.formfactors.b_v import bsz, sse, cln
from flavio.classes import AuxiliaryQuantity, Implementation
from flavio.config import config

processes = ["B->K*", "B->rho", "B->omega", "Bs->phi", "Bs->K*", "B->D*"]


def ff_function(function, process, **kwargs):
    return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, **kwargs)


for p in processes:
    quantity = p + " form factor"
    a = AuxiliaryQuantity(name=quantity, arguments=["q2"])
    a.set_description("Hadronic form factor for the " + p + " transition")

    iname = p + " BSZ2"
    i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=2))
    i.set_description("2-parameter BSZ parametrization (see arXiv:1503.05534)")

    iname = p + " BSZ3"
    i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=3))
    i.set_description("3-parameter BSZ parametrization (see arXiv:1503.05534)")

    iname = p + " SSE"
    i = Implementation(name=iname, quantity=quantity, function=ff_function(sse.ff, p, n=2))
    i.set_description("2-parameter simplified series expansion")

    iname = p + " CLN-IW"
    i = Implementation(
        name=iname, quantity=quantity, function=ff_function(cln.ff, p, scale=config["renormalization scale"]["bvll"])
Example #6
0
    fp_bar = exp(q2/mpi**2 * (Lp + H))
    ff = {}
    ff['f+'] = fp_0 * fp_bar
    ff['f0'] = fp_0 * f0_bar
    return ff

def fT_pole(q2, par):
    # specific parameters
    fT_0 = par['K->pi fT(0)']
    sT = par['K->pi sT']
    ff = {}
    # (4) of 1108.1021
    ff['fT'] = fT_0 / (1- sT * q2)
    return ff

def ff_dispersive_pole(wc_obj, par_dict, q2):
    ff = {}
    ff.update( fp0_dispersive(q2, par_dict) )
    ff.update( fT_pole(q2, par_dict) )
    return ff

quantity = 'K->pi form factor'
a = AuxiliaryQuantity(name=quantity, arguments=['q2'])
a.set_description(r'Hadronic form factor for the $K\to\pi$ transition')

iname = 'K->pi dispersive + pole'
i = Implementation(name=iname, quantity=quantity,
               function=ff_dispersive_pole)
i.set_description(r"Dispersive parametrization (see arXiv:hep-ph/0603202) for "
                  r"$f_+$ and $f_0$ and simple pole for $f_T$.")
Example #7
0
    ff['f+'] = fp_0 * fp_bar
    ff['f0'] = fp_0 * f0_bar
    return ff


def fT_pole(q2, par):
    # specific parameters
    fT_0 = par['K->pi fT(0)']
    sT = par['K->pi sT']
    ff = {}
    # (4) of 1108.1021
    ff['fT'] = fT_0 / (1 - sT * q2)
    return ff


def ff_dispersive_pole(wc_obj, par_dict, q2):
    ff = {}
    ff.update(fp0_dispersive(q2, par_dict))
    ff.update(fT_pole(q2, par_dict))
    return ff


quantity = 'K->pi form factor'
a = AuxiliaryQuantity(name=quantity, arguments=['q2'])
a.set_description(r'Hadronic form factor for the $K\to\pi$ transition')

iname = 'K->pi dispersive + pole'
i = Implementation(name=iname, quantity=quantity, function=ff_dispersive_pole)
i.set_description(r"Dispersive parametrization (see arXiv:hep-ph/0603202) for "
                  r"$f_+$ and $f_0$ and simple pole for $f_T$.")
Example #8
0
    - `Vcb`: CKM matrix element $V_{cb}$
    - `gamma`: CKM phase $\gamma=\delta$ in radians
    """
    return np.array([[sqrt(1 - Vub**2)*sqrt(1 - Vus**2/(1 - Vub**2)),
        Vus,
        Vub/exp(1j*gamma)],
        [-((sqrt(1 - Vcb**2/(1 - Vub**2))*Vus)/sqrt(1 - Vub**2)) - (Vub*exp(1j*gamma)*Vcb*sqrt(1 - Vus**2/(1 - Vub**2)))/sqrt(1 - Vub**2),
        -((Vub*exp(1j*gamma)*Vcb*Vus)/(1 - Vub**2)) + sqrt(1 - Vcb**2/(1 - Vub**2))*sqrt(1 - Vus**2/(1 - Vub**2)),
        Vcb],
        [(Vcb*Vus)/(1 - Vub**2) - Vub*exp(1j*gamma)*sqrt(1 - Vcb**2/(1 - Vub**2))*sqrt(1 - Vus**2/(1 - Vub**2)),
        -((Vub*exp(1j*gamma)*sqrt(1 - Vcb**2/(1 - Vub**2))*Vus)/sqrt(1 - Vub**2)) - (Vcb*sqrt(1 - Vus**2/(1 - Vub**2)))/sqrt(1 - Vub**2),
        sqrt(1 - Vub**2)*sqrt(1 - Vcb**2/(1 - Vub**2))]])

# Auxiliary Quantity instance
a = AuxiliaryQuantity(name='CKM matrix')
a.set_description('Cabibbo-Kobayashi-Maskawa matrix in the standard phase convention')

# Implementation instances

def _func_standard(wc_obj, par):
    return ckm_standard(par['t12'], par['t13'], par['t23'], par['delta'])
def _func_tree(wc_obj, par):
    return ckm_tree(par['Vus'], par['Vub'], par['Vcb'], par['gamma'])
def _func_wolfenstein(wc_obj, par):
    return ckm_wolfenstein(par['laC'], par['A'], par['rhobar'], par['etabar'])

i = Implementation(name='Standard', quantity='CKM matrix', function=_func_standard)
i = Implementation(name='Tree', quantity='CKM matrix', function=_func_tree)
i = Implementation(name='Wolfenstein', quantity='CKM matrix', function=_func_wolfenstein)

def get_ckm(par_dict):