Source code for slophep.Predictions.FormFactorsBToP.BToPFFCLN

from math import sqrt
import numpy as np
from slophep.Predictions.FormFactorsBToP import FormFactorBToP

[docs] class CLN_BToP(FormFactorBToP): def __init__(self, B: str, P: str, par: dict = None, scale: float = None, *ffargs): super().__init__(B, P, par, scale) self._name = "BToP_CLN" # Parameters from B->D CLN Hammer https://gitlab.com/mpapucci/Hammer/-/blob/v1.2.1/src/FormFactors/FFBtoDCLN.cc self._ffpar = { "RhoSq" : 1.186, "G1" : 1.082, "Delta" : 1.0 } self._params = [ "RhoSq", "G1" ] internalparams = { "a" : 1.0, # zero recoil expansion "ash" : 0.26/np.pi, "mcOnmb" : 0.29, "lamBar" : 0.48 } self._internalparams.update(internalparams) print(f"WARNING: {self.name} Tensor FFs are 0, SM only parameterisation")
[docs] def get_ff(self, q2: float) -> dict: """Calculates CLN FFs. Implementation lifted from Hammer https://gitlab.com/mpapucci/Hammer/-/blob/v1.2.1/src/FormFactors/FFBtoDCLN.cc, Parameters ---------- q2 : float Returns ------- dict FF dictionary """ Mb = self.internalparams["Mb"] Mc = self.internalparams["Mc"] rC = Mc/Mb sqrt2 = sqrt(2) w = max((Mb**2 + Mc**2 - q2) / (2 * Mb * Mc), 1) a = self.internalparams["a"] zCon = (sqrt(w+1) - sqrt2*a)/(sqrt(w+1) + sqrt2*a) RhoSq = self.ffpar["RhoSq"] G1par = self.ffpar["G1"] Delta = self.ffpar["Delta"] V1wOnV1 = 1. - 8.* RhoSq * zCon + (51. * RhoSq - 10.) * zCon * zCon - (252. * RhoSq - 84.) * zCon * zCon *zCon fp=((1. + rC)/(2.*sqrt(rC))*V1wOnV1)*G1par S1wOnV1w = 1 + Delta*(-0.019 + 0.041*(w - 1.) - 0.015*pow(w - 1.,2.)) f0 = (sqrt(rC)/(1. + rC)*(1+w)*S1wOnV1w*V1wOnV1)*G1par ff = { "f+" : fp, "f0" : f0, "fT" : 0.0 } return ff