21 FFBLPRBase::FFBLPRBase() {
34 const double Mb = pBmes.
mass();
35 const double Mc = pDstarmes.
mass();
37 const double Sqq = pow(Mb, 2.) + pow(Mc, 2.) - 2. * (pBmes * pDstarmes);
39 evalAtPSPoint({Sqq}, {Mb, Mc});
42 void FFBLPRBase::initVars(
double w,
double z)
const {
44 _sqrt1wSq = sqrt(_wSq - 1);
47 _zp1Sq = (z+1.)*(z+1.);
48 _zm1Sq = (z-1.)*(z-1.);;
53 _wmwZSq = (w - _wZ)*(w - _wZ);
55 _rW = _lnwP/_sqrt1wSq;
56 _Omega = w/(2.*_sqrt1wSq)*( 2*DiLog(1 - _wM*z) - 2*DiLog(1 - _wP*z) + DiLog(1 - _wP*_wP) - DiLog(1 - _wM*_wM) ) - w*_rW*_lnz + 1.;
59 double FFBLPRBase::CS(
double w,
double z)
const {
60 if(
isZero(w - 1.)) w += 1e-6;
62 return (2.*_Omega*(w - _wZ)*z + (-1. + _zSq)*_lnz - (-1. + w)*_zp1Sq*_rW)/(3.*(w - _wZ)*z);
65 double FFBLPRBase::CP(
double w,
double z)
const {
66 if(
isZero(w - 1.)) w += 1e-6;
68 return (2.*_Omega*(w - _wZ)*z + (-1. + _zSq)*_lnz - (1. + w)*_zm1Sq*_rW)/(3.*(w - _wZ)*z);
71 double FFBLPRBase::CV1(
double w,
double z)
const {
72 if(
isZero(w - 1.)) w += 1e-6;
74 return (4.*_Omega*(w - _wZ)*z + 12*(-w + _wZ)*z + _lnz - _zSq*_lnz + 2.*(1. + w)*(-1. + (-1. + 3.*w - z)*z)*_rW)/(6.*(w - _wZ)*z);
77 double FFBLPRBase::CV2(
double w,
double z)
const {
78 if(
isZero(w - 1.)) w += 1e-6;
80 return (-(z*(-2.*(w - _wZ)*(-1. + z) + (3. - 2.*w + (2. - 4.*w)*z + _zSq)*_lnz)) + (-2. + (-1. + 5.*w + 2.*_wSq)*z - 2.*w*(1. + 2.*w)*_zSq + (1. + w)*_zCu)*_rW)/(6.*_wmwZSq*_zSq);
83 double FFBLPRBase::CV3(
double w,
double z)
const {
84 if(
isZero(w - 1.)) w += 1e-6;
86 return (-2.*(w - _wZ)*(-1. + z)*z + (1. + (2. - 4.*w)*z + (3. - 2.*w)*_zSq)*_lnz + (1. + 2.*_wSq*(-2. + z)*z - _zSq - 2.*_zCu + w*(1. - 2.*z + 5.*_zSq))*_rW)/(6.*_wmwZSq*z);
89 double FFBLPRBase::CA1(
double w,
double z)
const {
90 if(
isZero(w - 1.)) w += 1e-6;
92 return (-12*w*z + 4.*_Omega*(w - _wZ)*z + 12*_wZ*z + _lnz - _zSq*_lnz + 2.*(-1. + w)*(-1. + z + 3.*w*z - _zSq)*_rW)/(6.*(w - _wZ)*z);
95 double FFBLPRBase::CA2(
double w,
double z)
const {
96 if(
isZero(w - 1.)) w += 1e-6;
98 return (-(z*(-2.*(w - _wZ)*(1. + z) + (3. + 2.*w + (-2. - 4.*w)*z + _zSq)*_lnz)) + (-2. + (1. + 5.*w - 2.*_wSq)*z + 2.*(1. - 2.*w)*w*_zSq + (-1. + w)*_zCu)*_rW)/(6.*_wmwZSq*_zSq);
101 double FFBLPRBase::CA3(
double w,
double z)
const {
102 if(
isZero(w - 1.)) w += 1e-6;
104 return (-2.*(w - _wZ)*z*(1. + z) + (-1. + (2. + 4.*w)*z + (-3. - 2.*w)*_zSq)*_lnz + (1. - _zSq + 2.*_zCu + 2.*_wSq*z*(2. + z) - w*(1. + 2.*z + 5.*_zSq))*_rW)/(6.*_wmwZSq*z);
107 double FFBLPRBase::CT1(
double w,
double z)
const {
108 if(
isZero(w - 1.)) w += 1e-6;
110 return (-6.*w*z + 2.*_Omega*(w - _wZ)*z + 6.*_wZ*z + _lnz - _zSq*_lnz + (-1. + w)*(-1. + (2. + 4.*w)*z - _zSq)*_rW)/(3.*(w - _wZ)*z);
113 double FFBLPRBase::CT2(
double w,
double z)
const {
114 if(
isZero(w - 1.)) w += 1e-6;
116 return (-2.*((1. - w*z)*_rW + z*_lnz))/(3.*(-w + _wZ)*z);
119 double FFBLPRBase::CT3(
double w,
double z)
const {
120 if(
isZero(w - 1.)) w += 1e-6;
122 return (-2.*((w - z)*_rW + _lnz))/(3.*(-w + _wZ));
125 double FFBLPRBase::DiLog(
double z)
const {
133 constexpr
double HF = 0.5;
134 constexpr
double PI3 =
pi2/3.;
135 constexpr
double PI6 =
pi2/6.;
136 constexpr
double PI12 =
pi2/12.;
137 constexpr
double C[20] = {0.42996693560813697, 0.40975987533077105,
138 -0.01858843665014592, 0.00145751084062268,-0.00014304184442340,
139 0.00001588415541880,-0.00000190784959387, 0.00000024195180854,
140 -0.00000003193341274, 0.00000000434545063,-0.00000000060578480,
141 0.00000000008612098,-0.00000000001244332, 0.00000000000182256,
142 -0.00000000000027007, 0.00000000000004042,-0.00000000000000610,
143 0.00000000000000093,-0.00000000000000014, 0.00000000000000002};
145 double T,H,Y,S,A,ALFA,B1,B2,B0;
149 }
else if (
isZero(z + 1.)) {
158 A = -PI3+HF*(B1*B1-B2*B2);
163 A = -PI6+A*(A+log(1+1/T));
164 }
else if (T <= -0.5) {
168 A = -PI6+A*(-HF*A+log(1+T));
189 for (
int i=19;i>=0;i--){
190 B0 = C[i] + ALFA*B1-B2;
194 H = -(S*(B0-H*B2)+A);
199 void FFBLPRBase::addRefs()
const {
200 if(!getSettingsHandler()->checkReference(
"Bernlochner:2017jka")){
202 "@article{Bernlochner:2017jka,\n"
203 " author = \"Bernlochner, Florian U. and Ligeti, Zoltan and Papucci, Michele and Robinson, Dean J.\",\n"
204 " title = \"{Combined analysis of semileptonic $B$ decays to $D$ and $D^*$: $R(D^{(*)})$, $|V_{cb}|$, and new physics}\",\n"
205 " journal = \"Phys. Rev.\",\n"
206 " volume = \"D95\",\n"
207 " year = \"2017\",\n"
208 " number = \"11\",\n"
209 " pages = \"115008\",\n"
210 " doi = \"10.1103/PhysRevD.95.115008, 10.1103/PhysRevD.97.059902\",\n"
211 " note = \"[erratum: Phys. Rev.D97,no.5,059902(2018)]\",\n"
212 " eprint = \"1703.05330\",\n"
213 " archivePrefix = \"arXiv\",\n"
214 " primaryClass = \"hep-ph\",\n"
215 " SLACcitation = \"%%CITATION = ARXIV:1703.05330;%%\"\n"
217 getSettingsHandler()->addReference(
"Bernlochner:2017jka", ref);
static constexpr double pi2
double mass() const
returns the invariant mass if the invariant mass squared is negative returns
std::vector< Particle > ParticleList
bool isZero(const std::complex< double > val)
const FourMomentum & momentum() const
Various numerical constants.
Hammer base class for BLPR form factors.