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'
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'])
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).")
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).")
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"])
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$.")
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$.")
- `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):