From fdc6e9c0cb870e834acc03dbd92e0f57f01e1c7b Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Wed, 25 Feb 2026 02:28:23 +0100 Subject: [PATCH 1/8] rescale bvll subleading b_i parameters --- flavio/data/parameters_correlated.yml | 44 +++++++++++------------ flavio/physics/bdecays/bvll/subleading.py | 15 ++++---- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/flavio/data/parameters_correlated.yml b/flavio/data/parameters_correlated.yml index 70605cbde..2c336d8ea 100644 --- a/flavio/data/parameters_correlated.yml +++ b/flavio/data/parameters_correlated.yml @@ -113,9 +113,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7 b_0 Re: 0 ± 0.05 - - B+->K*+ deltaC7 b_0 Re: 0 ± 0.05 - - Bs->phi deltaC7 b_0 Re: 0 ± 0.05 + - B0->K*0 deltaC7 b_0 Re: 0 ± 2.16 # ± 0.05 * (2*mb*mB) + - B+->K*+ deltaC7 b_0 Re: 0 ± 2.16 + - Bs->phi deltaC7 b_0 Re: 0 ± 2.16 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -127,9 +127,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p b_+ Re: 0 ± 0.005 - - B+->K*+ deltaC7p b_+ Re: 0 ± 0.005 - - Bs->phi deltaC7p b_+ Re: 0 ± 0.005 + - B0->K*0 deltaC7p b_+ Re: 0 ± 0.216 # ± 0.005 * (2*mb*mB) + - B+->K*+ deltaC7p b_+ Re: 0 ± 0.216 + - Bs->phi deltaC7p b_+ Re: 0 ± 0.216 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -140,10 +140,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 b_- Re: 0 ± 0.01 # see eq. (26) of arXiv:1503.05534v1 - - B+->K*+ deltaC7 b_- Re: 0 ± 0.01 - - Bs->phi deltaC7 b_- Re: 0 ± 0.01 + values: # see eq. (26) of arXiv:1503.05534v1 + - B0->K*0 deltaC7 b_- Re: 0 ± 0.43 # ± 0.01 * (2*mb*mB) + - B+->K*+ deltaC7 b_- Re: 0 ± 0.43 + - Bs->phi deltaC7 b_- Re: 0 ± 0.43 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -154,10 +154,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 b_0 Im: 0 ± 0.05 # see eq. (12) of arXiv:1411.3161v4 - - B+->K*+ deltaC7 b_0 Im: 0 ± 0.05 - - Bs->phi deltaC7 b_0 Im: 0 ± 0.05 + values: # see eq. (12) of arXiv:1411.3161v4 + - B0->K*0 deltaC7 b_0 Im: 0 ± 2.16 # ± 0.05 * (2*mb*mB) + - B+->K*+ deltaC7 b_0 Im: 0 ± 2.16 + - Bs->phi deltaC7 b_0 Im: 0 ± 2.16 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -169,9 +169,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p b_+ Im: 0 ± 0.005 - - B+->K*+ deltaC7p b_+ Im: 0 ± 0.005 - - Bs->phi deltaC7p b_+ Im: 0 ± 0.005 + - B0->K*0 deltaC7p b_+ Im: 0 ± 0.216 # ± 0.005 * (2*mb*mB) + - B+->K*+ deltaC7p b_+ Im: 0 ± 0.216 + - Bs->phi deltaC7p b_+ Im: 0 ± 0.216 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -182,10 +182,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 b_- Im: 0 ± 0.01 # see eq. (26) of arXiv:1503.05534v1 - - B+->K*+ deltaC7 b_- Im: 0 ± 0.01 - - Bs->phi deltaC7 b_- Im: 0 ± 0.01 + values: # see eq. (26) of arXiv:1503.05534v1 + - B0->K*0 deltaC7 b_- Im: 0 ± 0.43 # ± 0.01 * (2*mb*mB) + - B+->K*+ deltaC7 b_- Im: 0 ± 0.43 + - Bs->phi deltaC7 b_- Im: 0 ± 0.43 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -393,7 +393,7 @@ # Electromagnetic corrections in Kl3 decays # 1005.2323 table 1 & eq. 18 -# Set just the Kmu3 parameters here, as we use +# Set just the Kmu3 parameters here, as we use # updated Ke3 values (but without correlations) - values: diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index 632ae6de6..add6ff30f 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -50,12 +50,15 @@ def __call__(self): B = self.B V = self.V q2 = self.q2 - deltaC7_0 =( par[B+'->'+V+' deltaC7 a_0 Re'] + par[B+'->'+V+' deltaC7 b_0 Re'] *q2 - +1j*( par[B+'->'+V+' deltaC7 a_0 Im'] + par[B+'->'+V+' deltaC7 b_0 Im'] *q2 )) - deltaC7p_pl =( par[B+'->'+V+' deltaC7p a_+ Re'] + par[B+'->'+V+' deltaC7p b_+ Re'] *q2 - +1j*( par[B+'->'+V+' deltaC7p a_+ Im'] + par[B+'->'+V+' deltaC7p b_+ Im'] *q2 )) - deltaC7_mi =( par[B+'->'+V+' deltaC7 a_- Re'] + par[B+'->'+V+' deltaC7 b_- Re'] *q2 - +1j*( par[B+'->'+V+' deltaC7 a_- Im'] + par[B+'->'+V+' deltaC7 b_- Im'] *q2 )) + mB = self.mB + mb = self.mb + q2_factor = q2/(2*mb*mB) + deltaC7_0 =( par[B+'->'+V+' deltaC7 a_0 Re'] + par[B+'->'+V+' deltaC7 b_0 Re'] *q2_factor + +1j*( par[B+'->'+V+' deltaC7 a_0 Im'] + par[B+'->'+V+' deltaC7 b_0 Im'] *q2_factor )) + deltaC7p_pl =( par[B+'->'+V+' deltaC7p a_+ Re'] + par[B+'->'+V+' deltaC7p b_+ Re'] *q2_factor + +1j*( par[B+'->'+V+' deltaC7p a_+ Im'] + par[B+'->'+V+' deltaC7p b_+ Im'] *q2_factor )) + deltaC7_mi =( par[B+'->'+V+' deltaC7 a_- Re'] + par[B+'->'+V+' deltaC7 b_- Re'] *q2_factor + +1j*( par[B+'->'+V+' deltaC7 a_- Im'] + par[B+'->'+V+' deltaC7 b_- Im'] *q2_factor )) ha = {} ha['0', 'V'] = self.ha_deltaC(deltaC7_0, '7')['0', 'V'] ha['pl', 'V'] = self.ha_deltaC(deltaC7p_pl, '7p')['pl', 'V'] From 467c21129398ac8f4db8c49af0c859ebe8d024c2 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Fri, 27 Feb 2026 03:37:30 +0100 Subject: [PATCH 2/8] rescale bvll subleading a_i parameters --- flavio/data/parameters_correlated.yml | 42 +++++++++++------------ flavio/physics/bdecays/bvll/subleading.py | 13 ++++--- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/flavio/data/parameters_correlated.yml b/flavio/data/parameters_correlated.yml index 2c336d8ea..6b1a10959 100644 --- a/flavio/data/parameters_correlated.yml +++ b/flavio/data/parameters_correlated.yml @@ -106,9 +106,9 @@ # Subleading hadronic effects in B->Vll - values: - - B0->K*0 deltaC7 a_0 Re: 0 ± 0.12 - - B+->K*+ deltaC7 a_0 Re: 0 ± 0.12 - - Bs->phi deltaC7 a_0 Re: 0 ± 0.12 + - B0->K*0 deltaC7 a_0 Re: 0 ± 0.186 # ± 0.12 * (2*mb/mB) + - B+->K*+ deltaC7 a_0 Re: 0 ± 0.186 + - Bs->phi deltaC7 a_0 Re: 0 ± 0.186 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -120,9 +120,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p a_+ Re: 0 ± 0.004 - - B+->K*+ deltaC7p a_+ Re: 0 ± 0.004 - - Bs->phi deltaC7p a_+ Re: 0 ± 0.004 + - B0->K*0 deltaC7p a_+ Re: 0 ± 0.006 # ± 0.004 * (2*mb/mB) + - B+->K*+ deltaC7p a_+ Re: 0 ± 0.006 + - Bs->phi deltaC7p a_+ Re: 0 ± 0.006 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -133,10 +133,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 a_- Re: 0 ± 0.015 # see eq. (26) of arXiv:1503.05534v1 - - B+->K*+ deltaC7 a_- Re: 0 ± 0.015 - - Bs->phi deltaC7 a_- Re: 0 ± 0.015 + values: # see eq. (26) of arXiv:1503.05534v1 + - B0->K*0 deltaC7 a_- Re: 0 ± 0.023 # ± 0.015 * (2*mb/mB) + - B+->K*+ deltaC7 a_- Re: 0 ± 0.023 + - Bs->phi deltaC7 a_- Re: 0 ± 0.023 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -147,10 +147,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 a_0 Im: 0 ± 0.12 # see eq. (26) of arXiv:1503.05534v1 - - B+->K*+ deltaC7 a_0 Im: 0 ± 0.12 - - Bs->phi deltaC7 a_0 Im: 0 ± 0.12 + values: # see eq. (26) of arXiv:1503.05534v1 + - B0->K*0 deltaC7 a_0 Im: 0 ± 0.186 # ± 0.12 * (2*mb/mB) + - B+->K*+ deltaC7 a_0 Im: 0 ± 0.186 + - Bs->phi deltaC7 a_0 Im: 0 ± 0.186 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -162,9 +162,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p a_+ Im: 0 ± 0.004 - - B+->K*+ deltaC7p a_+ Im: 0 ± 0.004 - - Bs->phi deltaC7p a_+ Im: 0 ± 0.004 + - B0->K*0 deltaC7p a_+ Im: 0 ± 0.006 # ± 0.004 * (2*mb/mB) + - B+->K*+ deltaC7p a_+ Im: 0 ± 0.006 + - Bs->phi deltaC7p a_+ Im: 0 ± 0.006 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -175,10 +175,10 @@ correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - - values: - - B0->K*0 deltaC7 a_- Im: 0 ± 0.015 # see eq. (26) of arXiv:1503.05534v1 - - B+->K*+ deltaC7 a_- Im: 0 ± 0.015 - - Bs->phi deltaC7 a_- Im: 0 ± 0.015 + values: # see eq. (26) of arXiv:1503.05534v1 + - B0->K*0 deltaC7 a_- Im: 0 ± 0.023 # ± 0.015 * (2*mb/mB) + - B+->K*+ deltaC7 a_- Im: 0 ± 0.023 + - Bs->phi deltaC7 a_- Im: 0 ± 0.023 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index add6ff30f..5493522d9 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -52,13 +52,12 @@ def __call__(self): q2 = self.q2 mB = self.mB mb = self.mb - q2_factor = q2/(2*mb*mB) - deltaC7_0 =( par[B+'->'+V+' deltaC7 a_0 Re'] + par[B+'->'+V+' deltaC7 b_0 Re'] *q2_factor - +1j*( par[B+'->'+V+' deltaC7 a_0 Im'] + par[B+'->'+V+' deltaC7 b_0 Im'] *q2_factor )) - deltaC7p_pl =( par[B+'->'+V+' deltaC7p a_+ Re'] + par[B+'->'+V+' deltaC7p b_+ Re'] *q2_factor - +1j*( par[B+'->'+V+' deltaC7p a_+ Im'] + par[B+'->'+V+' deltaC7p b_+ Im'] *q2_factor )) - deltaC7_mi =( par[B+'->'+V+' deltaC7 a_- Re'] + par[B+'->'+V+' deltaC7 b_- Re'] *q2_factor - +1j*( par[B+'->'+V+' deltaC7 a_- Im'] + par[B+'->'+V+' deltaC7 b_- Im'] *q2_factor )) + deltaC7_0 =( par[B+'->'+V+' deltaC7 a_0 Re'] + par[B+'->'+V+' deltaC7 b_0 Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' deltaC7 a_0 Im'] + par[B+'->'+V+' deltaC7 b_0 Im'] *q2/mB**2 )) *mB/(2*mb) + deltaC7p_pl =( par[B+'->'+V+' deltaC7p a_+ Re'] + par[B+'->'+V+' deltaC7p b_+ Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' deltaC7p a_+ Im'] + par[B+'->'+V+' deltaC7p b_+ Im'] *q2/mB**2 )) *mB/(2*mb) + deltaC7_mi =( par[B+'->'+V+' deltaC7 a_- Re'] + par[B+'->'+V+' deltaC7 b_- Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' deltaC7 a_- Im'] + par[B+'->'+V+' deltaC7 b_- Im'] *q2/mB**2 )) *mB/(2*mb) ha = {} ha['0', 'V'] = self.ha_deltaC(deltaC7_0, '7')['0', 'V'] ha['pl', 'V'] = self.ha_deltaC(deltaC7p_pl, '7p')['pl', 'V'] From 27ff85c92556589722d2895518c4808321a7285d Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Tue, 10 Mar 2026 14:17:26 +0100 Subject: [PATCH 3/8] add one more digit to subleading bvll b- parameter --- flavio/data/parameters_correlated.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flavio/data/parameters_correlated.yml b/flavio/data/parameters_correlated.yml index 6b1a10959..58b736b4f 100644 --- a/flavio/data/parameters_correlated.yml +++ b/flavio/data/parameters_correlated.yml @@ -141,9 +141,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 b_- Re: 0 ± 0.43 # ± 0.01 * (2*mb*mB) - - B+->K*+ deltaC7 b_- Re: 0 ± 0.43 - - Bs->phi deltaC7 b_- Re: 0 ± 0.43 + - B0->K*0 deltaC7 b_- Re: 0 ± 0.432 # ± 0.01 * (2*mb*mB) + - B+->K*+ deltaC7 b_- Re: 0 ± 0.432 + - Bs->phi deltaC7 b_- Re: 0 ± 0.432 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - @@ -183,9 +183,9 @@ [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 b_- Im: 0 ± 0.43 # ± 0.01 * (2*mb*mB) - - B+->K*+ deltaC7 b_- Im: 0 ± 0.43 - - Bs->phi deltaC7 b_- Im: 0 ± 0.43 + - B0->K*0 deltaC7 b_- Im: 0 ± 0.432 # ± 0.01 * (2*mb*mB) + - B+->K*+ deltaC7 b_- Im: 0 ± 0.432 + - Bs->phi deltaC7 b_- Im: 0 ± 0.432 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - From 62381e5202f58acf0e9e7c6f130d330669a4e048 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Mon, 30 Mar 2026 17:50:13 +0200 Subject: [PATCH 4/8] address comments about backwards compatibility and ambiguity --- flavio/data/config.yml | 6 +- flavio/data/parameters_correlated.yml | 77 +++++++++--------- flavio/data/parameters_metadata.yml | 96 +++++++++++------------ flavio/physics/bdecays/bvll/subleading.py | 47 +++++++++-- flavio/physics/bdecays/bvll/test_bvll.py | 40 ++++++++++ 5 files changed, 172 insertions(+), 94 deletions(-) diff --git a/flavio/data/config.yml b/flavio/data/config.yml index a472119e0..1f9fd18df 100644 --- a/flavio/data/config.yml +++ b/flavio/data/config.yml @@ -133,9 +133,9 @@ implementation: Bs->K*0ll spectator scattering: Bs->K*0ll QCDF interpolated # B->Vll subleading hadronic effects - B0->K*0ll subleading effects at low q2: B0->K*0ll deltaC7, 7p polynomial - B+->K*+ll subleading effects at low q2: B+->K*+ll deltaC7, 7p polynomial - Bs->phill subleading effects at low q2: Bs->phill deltaC7, 7p polynomial + B0->K*0ll subleading effects at low q2: B0->K*0ll delta_C7, 7p polynomial + B+->K*+ll subleading effects at low q2: B+->K*+ll delta_C7, 7p polynomial + Bs->phill subleading effects at low q2: Bs->phill delta_C7, 7p polynomial B0->K*0ll subleading effects at high q2: B0->K*0ll deltaC9 shift B+->K*+ll subleading effects at high q2: B+->K*+ll deltaC9 shift Bs->phill subleading effects at high q2: Bs->phill deltaC9 shift diff --git a/flavio/data/parameters_correlated.yml b/flavio/data/parameters_correlated.yml index 58b736b4f..0329848a8 100644 --- a/flavio/data/parameters_correlated.yml +++ b/flavio/data/parameters_correlated.yml @@ -104,88 +104,93 @@ correlation: 0.99 # Subleading hadronic effects in B->Vll +# New convention (flavio v2.7): delta_C7 = (a + b*q2/mB^2) * mB/(2*mb) +# Rescaling from old (deltaC7 = a + b*q2) convention uses: +# mb(4.8 GeV) = 4.094 GeV, m_B0 = 5.280 GeV, m_B+ = 5.279 GeV, m_Bs = 5.367 GeV +# a params: old * 2*mb/mB (B0/B+: 1.551, Bs: 1.526) +# b params: old * 2*mb*mB (B0/B+: 43.23, Bs: 43.95) - values: - - B0->K*0 deltaC7 a_0 Re: 0 ± 0.186 # ± 0.12 * (2*mb/mB) - - B+->K*+ deltaC7 a_0 Re: 0 ± 0.186 - - Bs->phi deltaC7 a_0 Re: 0 ± 0.186 + - B0->K*0 delta_C7 a_0 Re: 0 ± 0.186 # 0.12 * 1.551 + - B+->K*+ delta_C7 a_0 Re: 0 ± 0.186 # 0.12 * 1.551 + - Bs->phi delta_C7 a_0 Re: 0 ± 0.183 # 0.12 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7 b_0 Re: 0 ± 2.16 # ± 0.05 * (2*mb*mB) - - B+->K*+ deltaC7 b_0 Re: 0 ± 2.16 - - Bs->phi deltaC7 b_0 Re: 0 ± 2.16 + - B0->K*0 delta_C7 b_0 Re: 0 ± 2.16 # 0.05 * 43.23 + - B+->K*+ delta_C7 b_0 Re: 0 ± 2.16 # 0.05 * 43.23 + - Bs->phi delta_C7 b_0 Re: 0 ± 2.20 # 0.05 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p a_+ Re: 0 ± 0.006 # ± 0.004 * (2*mb/mB) - - B+->K*+ deltaC7p a_+ Re: 0 ± 0.006 - - Bs->phi deltaC7p a_+ Re: 0 ± 0.006 + - B0->K*0 delta_C7p a_+ Re: 0 ± 0.006 # 0.004 * 1.551 + - B+->K*+ delta_C7p a_+ Re: 0 ± 0.006 # 0.004 * 1.551 + - Bs->phi delta_C7p a_+ Re: 0 ± 0.006 # 0.004 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p b_+ Re: 0 ± 0.216 # ± 0.005 * (2*mb*mB) - - B+->K*+ deltaC7p b_+ Re: 0 ± 0.216 - - Bs->phi deltaC7p b_+ Re: 0 ± 0.216 + - B0->K*0 delta_C7p b_+ Re: 0 ± 0.216 # 0.005 * 43.23 + - B+->K*+ delta_C7p b_+ Re: 0 ± 0.216 # 0.005 * 43.23 + - Bs->phi delta_C7p b_+ Re: 0 ± 0.220 # 0.005 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 a_- Re: 0 ± 0.023 # ± 0.015 * (2*mb/mB) - - B+->K*+ deltaC7 a_- Re: 0 ± 0.023 - - Bs->phi deltaC7 a_- Re: 0 ± 0.023 + - B0->K*0 delta_C7 a_- Re: 0 ± 0.023 # 0.015 * 1.551 + - B+->K*+ delta_C7 a_- Re: 0 ± 0.023 # 0.015 * 1.551 + - Bs->phi delta_C7 a_- Re: 0 ± 0.023 # 0.015 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 b_- Re: 0 ± 0.432 # ± 0.01 * (2*mb*mB) - - B+->K*+ deltaC7 b_- Re: 0 ± 0.432 - - Bs->phi deltaC7 b_- Re: 0 ± 0.432 + - B0->K*0 delta_C7 b_- Re: 0 ± 0.432 # 0.01 * 43.23 + - B+->K*+ delta_C7 b_- Re: 0 ± 0.432 # 0.01 * 43.23 + - Bs->phi delta_C7 b_- Re: 0 ± 0.440 # 0.01 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 a_0 Im: 0 ± 0.186 # ± 0.12 * (2*mb/mB) - - B+->K*+ deltaC7 a_0 Im: 0 ± 0.186 - - Bs->phi deltaC7 a_0 Im: 0 ± 0.186 + - B0->K*0 delta_C7 a_0 Im: 0 ± 0.186 # 0.12 * 1.551 + - B+->K*+ delta_C7 a_0 Im: 0 ± 0.186 # 0.12 * 1.551 + - Bs->phi delta_C7 a_0 Im: 0 ± 0.183 # 0.12 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (12) of arXiv:1411.3161v4 - - B0->K*0 deltaC7 b_0 Im: 0 ± 2.16 # ± 0.05 * (2*mb*mB) - - B+->K*+ deltaC7 b_0 Im: 0 ± 2.16 - - Bs->phi deltaC7 b_0 Im: 0 ± 2.16 + - B0->K*0 delta_C7 b_0 Im: 0 ± 2.16 # 0.05 * 43.23 + - B+->K*+ delta_C7 b_0 Im: 0 ± 2.16 # 0.05 * 43.23 + - Bs->phi delta_C7 b_0 Im: 0 ± 2.20 # 0.05 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p a_+ Im: 0 ± 0.006 # ± 0.004 * (2*mb/mB) - - B+->K*+ deltaC7p a_+ Im: 0 ± 0.006 - - Bs->phi deltaC7p a_+ Im: 0 ± 0.006 + - B0->K*0 delta_C7p a_+ Im: 0 ± 0.006 # 0.004 * 1.551 + - B+->K*+ delta_C7p a_+ Im: 0 ± 0.006 # 0.004 * 1.551 + - Bs->phi delta_C7p a_+ Im: 0 ± 0.006 # 0.004 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: - - B0->K*0 deltaC7p b_+ Im: 0 ± 0.216 # ± 0.005 * (2*mb*mB) - - B+->K*+ deltaC7p b_+ Im: 0 ± 0.216 - - Bs->phi deltaC7p b_+ Im: 0 ± 0.216 + - B0->K*0 delta_C7p b_+ Im: 0 ± 0.216 # 0.005 * 43.23 + - B+->K*+ delta_C7p b_+ Im: 0 ± 0.216 # 0.005 * 43.23 + - Bs->phi delta_C7p b_+ Im: 0 ± 0.220 # 0.005 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 a_- Im: 0 ± 0.023 # ± 0.015 * (2*mb/mB) - - B+->K*+ deltaC7 a_- Im: 0 ± 0.023 - - Bs->phi deltaC7 a_- Im: 0 ± 0.023 + - B0->K*0 delta_C7 a_- Im: 0 ± 0.023 # 0.015 * 1.551 + - B+->K*+ delta_C7 a_- Im: 0 ± 0.023 # 0.015 * 1.551 + - Bs->phi delta_C7 a_- Im: 0 ± 0.023 # 0.015 * 1.526 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - values: # see eq. (26) of arXiv:1503.05534v1 - - B0->K*0 deltaC7 b_- Im: 0 ± 0.432 # ± 0.01 * (2*mb*mB) - - B+->K*+ deltaC7 b_- Im: 0 ± 0.432 - - Bs->phi deltaC7 b_- Im: 0 ± 0.432 + - B0->K*0 delta_C7 b_- Im: 0 ± 0.432 # 0.01 * 43.23 + - B+->K*+ delta_C7 b_- Im: 0 ± 0.432 # 0.01 * 43.23 + - Bs->phi delta_C7 b_- Im: 0 ± 0.440 # 0.01 * 43.95 correlation: [[1, 0.99, 0.9], [1, 0.9], [1]] # B+/B0 correlation is 99%, B0/Bs is 90% - diff --git a/flavio/data/parameters_metadata.yml b/flavio/data/parameters_metadata.yml index 2207d54be..7c8d7b63b 100644 --- a/flavio/data/parameters_metadata.yml +++ b/flavio/data/parameters_metadata.yml @@ -312,10 +312,10 @@ a1_perp_phi: description: First Gegenbauer moment of the transversely polarized $\phi$ LCDA at 1 GeV # Parameters for subleading hadronic effects in B->Vll -B0->K*0 deltaC7 a_0 Re: +B0->K*0 delta_C7 a_0 Re: tex: $\text{Re}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_0 Re: +B0->K*0 delta_C7 b_0 Re: tex: $\text{Re}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ B0->K*0 deltaC9 a_0 Re: @@ -324,28 +324,28 @@ B0->K*0 deltaC9 a_0 Re: B0->K*0 deltaC9 b_0 Re: tex: $\text{Re}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 a_+ Re: +B0->K*0 delta_C7 a_+ Re: tex: $\text{Re}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_+ Re: +B0->K*0 delta_C7 b_+ Re: tex: $\text{Re}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7p a_+ Re: +B0->K*0 delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7p b_+ Re: +B0->K*0 delta_C7p b_+ Re: tex: $\text{Re}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 a_- Re: +B0->K*0 delta_C7 a_- Re: tex: $\text{Re}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_- Re: +B0->K*0 delta_C7 b_- Re: tex: $\text{Re}\,b^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_0 Re: +B+->K*+ delta_C7 a_0 Re: tex: $\text{Re}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_0 Re: +B+->K*+ delta_C7 b_0 Re: tex: $\text{Re}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ B+->K*+ deltaC9 a_0 Re: @@ -354,25 +354,25 @@ B+->K*+ deltaC9 a_0 Re: B+->K*+ deltaC9 b_0 Re: tex: $\text{Re}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_+ Re: +B+->K*+ delta_C7 a_+ Re: tex: $\text{Re}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_+ Re: +B+->K*+ delta_C7 b_+ Re: tex: $\text{Re}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7p a_+ Re: +B+->K*+ delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7p b_+ Re: +B+->K*+ delta_C7p b_+ Re: tex: $\text{Re}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_- Re: +B+->K*+ delta_C7 a_- Re: tex: $\text{Re}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_- Re: +B+->K*+ delta_C7 b_- Re: tex: $\text{Re}\,b^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_0 Re: +Bs->phi delta_C7 a_0 Re: tex: $\text{Re}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ Bs->phi deltaC9 b_0 Re: @@ -381,31 +381,31 @@ Bs->phi deltaC9 b_0 Re: Bs->phi deltaC9 a_0 Re: tex: $\text{Re}\,a^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_0 Re: +Bs->phi delta_C7 b_0 Re: tex: $\text{Re}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_+ Re: +Bs->phi delta_C7 a_+ Re: tex: $\text{Re}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_+ Re: +Bs->phi delta_C7 b_+ Re: tex: $\text{Re}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7p a_+ Re: +Bs->phi delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7p b_+ Re: +Bs->phi delta_C7p b_+ Re: tex: $\text{Re}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_- Re: +Bs->phi delta_C7 a_- Re: tex: $\text{Re}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_- Re: +Bs->phi delta_C7 b_- Re: tex: $\text{Re}\,b^{\Delta_7}_-$ description: -B0->K*0 deltaC7 a_0 Im: +B0->K*0 delta_C7 a_0 Im: tex: $\text{Im}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_0 Im: +B0->K*0 delta_C7 b_0 Im: tex: $\text{Im}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ B0->K*0 deltaC9 a_0 Im: @@ -414,28 +414,28 @@ B0->K*0 deltaC9 a_0 Im: B0->K*0 deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 a_+ Im: +B0->K*0 delta_C7 a_+ Im: tex: $\text{Im}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_+ Im: +B0->K*0 delta_C7 b_+ Im: tex: $\text{Im}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7p a_+ Im: +B0->K*0 delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7p b_+ Im: +B0->K*0 delta_C7p b_+ Im: tex: $\text{Im}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 a_- Im: +B0->K*0 delta_C7 a_- Im: tex: $\text{Im}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 deltaC7 b_- Im: +B0->K*0 delta_C7 b_- Im: tex: $\text{Im}\,b^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_0 Im: +B+->K*+ delta_C7 a_0 Im: tex: $\text{Im}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_0 Im: +B+->K*+ delta_C7 b_0 Im: tex: $\text{Im}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ B+->K*+ deltaC9 a_0 Im: @@ -444,28 +444,28 @@ B+->K*+ deltaC9 a_0 Im: B+->K*+ deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_+ Im: +B+->K*+ delta_C7 a_+ Im: tex: $\text{Im}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_+ Im: +B+->K*+ delta_C7 b_+ Im: tex: $\text{Im}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7p a_+ Im: +B+->K*+ delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7p b_+ Im: +B+->K*+ delta_C7p b_+ Im: tex: $\text{Im}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 a_- Im: +B+->K*+ delta_C7 a_- Im: tex: $\text{Im}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ deltaC7 b_- Im: +B+->K*+ delta_C7 b_- Im: tex: $\text{Im}\,b^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_0 Im: +Bs->phi delta_C7 a_0 Im: tex: $\text{Im}\,a^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_0 Im: +Bs->phi delta_C7 b_0 Im: tex: $\text{Im}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ Bs->phi deltaC9 a_0 Im: @@ -474,22 +474,22 @@ Bs->phi deltaC9 a_0 Im: Bs->phi deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_+ Im: +Bs->phi delta_C7 a_+ Im: tex: $\text{Im}\,a^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_+ Im: +Bs->phi delta_C7 b_+ Im: tex: $\text{Im}\,b^{\Delta_7}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7p a_+ Im: +Bs->phi delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7p b_+ Im: +Bs->phi delta_C7p b_+ Im: tex: $\text{Im}\,b^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 a_- Im: +Bs->phi delta_C7 a_- Im: tex: $\text{Im}\,a^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi deltaC7 b_- Im: +Bs->phi delta_C7 b_- Im: tex: $\text{Im}\,b^{\Delta_7}_-$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ B0->K*0 deltaC9 c_0 Re: diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index 5493522d9..9f93899f5 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -2,6 +2,7 @@ decays.""" +import warnings import flavio from flavio.classes import AuxiliaryQuantity, Implementation from flavio.physics.common import conjugate_par @@ -45,19 +46,51 @@ class HelicityAmpsDeltaC_77p_polynomial(HelicityAmpsDeltaC): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + # Temporary backward-compatibility shim for the old deltaC7/deltaC7p + # parameter names. This method and the old parameter names will be + # removed in a future version of flavio. + def _migrate_old_params(self): + """If old-style deltaC7/deltaC7p parameters are found in par, + rescale them to the new delta_C7/delta_C7p convention and warn.""" + par = self.par + prefix = self.B + '->' + self.V + mb = self.mb + mB = self.mB + for old_name, new_name in [('deltaC7', 'delta_C7'), + ('deltaC7p', 'delta_C7p')]: + for coeff in ['a_0', 'b_0', 'a_+', 'b_+', 'a_-', 'b_-']: + for ri in ['Re', 'Im']: + old_key = '{} {} {} {}'.format(prefix, old_name, coeff, ri) + if old_key in par: + new_key = '{} {} {} {}'.format(prefix, new_name, coeff, ri) + if coeff.startswith('a'): + par[new_key] = par[old_key] * 2 * mb / mB + else: + par[new_key] = par[old_key] * 2 * mb * mB + warnings.warn( + "Parameter '{}' uses the old convention and has " + "been rescaled to '{}'. The old parameter names " + "will be removed in a future version of flavio. " + "Please update to the new delta_C7/delta_C7p " + "parameterization introduced in flavio v2.7." + .format(old_key, new_key), + FutureWarning + ) + def __call__(self): + self._migrate_old_params() # Temporary backward-compatibility shim for the old deltaC7/deltaC7p parameter names par = self.par B = self.B V = self.V q2 = self.q2 mB = self.mB mb = self.mb - deltaC7_0 =( par[B+'->'+V+' deltaC7 a_0 Re'] + par[B+'->'+V+' deltaC7 b_0 Re'] *q2/mB**2 - +1j*( par[B+'->'+V+' deltaC7 a_0 Im'] + par[B+'->'+V+' deltaC7 b_0 Im'] *q2/mB**2 )) *mB/(2*mb) - deltaC7p_pl =( par[B+'->'+V+' deltaC7p a_+ Re'] + par[B+'->'+V+' deltaC7p b_+ Re'] *q2/mB**2 - +1j*( par[B+'->'+V+' deltaC7p a_+ Im'] + par[B+'->'+V+' deltaC7p b_+ Im'] *q2/mB**2 )) *mB/(2*mb) - deltaC7_mi =( par[B+'->'+V+' deltaC7 a_- Re'] + par[B+'->'+V+' deltaC7 b_- Re'] *q2/mB**2 - +1j*( par[B+'->'+V+' deltaC7 a_- Im'] + par[B+'->'+V+' deltaC7 b_- Im'] *q2/mB**2 )) *mB/(2*mb) + deltaC7_0 =( par[B+'->'+V+' delta_C7 a_0 Re'] + par[B+'->'+V+' delta_C7 b_0 Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' delta_C7 a_0 Im'] + par[B+'->'+V+' delta_C7 b_0 Im'] *q2/mB**2 )) *mB/(2*mb) + deltaC7p_pl =( par[B+'->'+V+' delta_C7p a_+ Re'] + par[B+'->'+V+' delta_C7p b_+ Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' delta_C7p a_+ Im'] + par[B+'->'+V+' delta_C7p b_+ Im'] *q2/mB**2 )) *mB/(2*mb) + deltaC7_mi =( par[B+'->'+V+' delta_C7 a_- Re'] + par[B+'->'+V+' delta_C7 b_- Re'] *q2/mB**2 + +1j*( par[B+'->'+V+' delta_C7 a_- Im'] + par[B+'->'+V+' delta_C7 b_- Im'] *q2/mB**2 )) *mB/(2*mb) ha = {} ha['0', 'V'] = self.ha_deltaC(deltaC7_0, '7')['0', 'V'] ha['pl', 'V'] = self.ha_deltaC(deltaC7p_pl, '7p')['pl', 'V'] @@ -109,7 +142,7 @@ def fct(wc_obj, par_dict, q2, cp_conjugate): # Implementation: C7-C7'-polynomial - iname = process + ' deltaC7, 7p polynomial' + iname = process + ' delta_C7, 7p polynomial' i = Implementation(name=iname, quantity=quantity, function=fct_deltaC7C7p_polynomial(B=had[0], V=had[1])) i.set_description(r"Effective shift in the Wilson coefficient $C_7(\mu_b)$" diff --git a/flavio/physics/bdecays/bvll/test_bvll.py b/flavio/physics/bdecays/bvll/test_bvll.py index a99e325f9..1dc4b85e6 100644 --- a/flavio/physics/bdecays/bvll/test_bvll.py +++ b/flavio/physics/bdecays/bvll/test_bvll.py @@ -169,6 +169,46 @@ def g(q2): self.assertAlmostEqual(nintegrate_pole(g, 0.0005, 2)/nintegrate(g, 0.0005, 2, epsrel=0.001), 1, delta=0.01) + # Test of temporary backward-compatibility shim for the old deltaC7/deltaC7p + # parameter names. This test will be removed in a future version of flavio. + def test_deltaC7_backward_compat(self): + """Test that old-style deltaC7/deltaC7p parameters are migrated + correctly, covering a-type (rescale by 2*mb/mB) and b-type + (rescale by 2*mb*mB) parameters.""" + from flavio.physics.bdecays.bvll.subleading import HelicityAmpsDeltaC_77p_polynomial + from flavio.config import config + import flavio.physics.running.running as running + par = flavio.default_parameters.get_central_all() + q2 = 3.0 + B, V = 'B0', 'K*0' + prefix = B + '->' + V + scale = config['renormalization scale']['bvll'] + mb = running.get_mb(par, scale) + mB = par['m_' + B] + old_val = 0.1 + # test cases: (old_name, new_name, coeff, rescale_factor) + test_cases = [ + ('deltaC7', 'delta_C7', 'a_0 Re', 2 * mb / mB), + ('deltaC7', 'delta_C7', 'b_- Im', 2 * mb * mB), + ('deltaC7p', 'delta_C7p', 'a_+ Re', 2 * mb / mB), + ('deltaC7p', 'delta_C7p', 'b_+ Im', 2 * mb * mB), + ] + for old_name, new_name, coeff, factor in test_cases: + old_key = '{} {} {}'.format(prefix, old_name, coeff) + new_key = '{} {} {}'.format(prefix, new_name, coeff) + # result using old-style parameter (migrated by shim) + par_old = par.copy() + par_old[old_key] = old_val + with self.assertWarns(FutureWarning): + ha_old = HelicityAmpsDeltaC_77p_polynomial(B, V, par_old, q2)() + # result using new-style parameter with manually rescaled value + par_new = par.copy() + par_new[new_key] = old_val * factor + ha_new = HelicityAmpsDeltaC_77p_polynomial(B, V, par_new, q2)() + for key in ha_old: + self.assertAlmostEqual(ha_old[key], ha_new[key], places=10, + msg="Mismatch for old param '{}'".format(old_key)) + def test_qcdf_warning(self): # computing the BR at q²=8 should warn with self.assertWarnsRegex(UserWarning, r"The QCDF corrections should not be trusted .*"): From 8d8da77bdf3821180500988105e1094739653aa7 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Mon, 30 Mar 2026 17:53:39 +0200 Subject: [PATCH 5/8] slightly modify text in warning --- flavio/physics/bdecays/bvll/subleading.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index 9f93899f5..bd34cd110 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -69,8 +69,8 @@ def _migrate_old_params(self): par[new_key] = par[old_key] * 2 * mb * mB warnings.warn( "Parameter '{}' uses the old convention and has " - "been rescaled to '{}'. The old parameter names " - "will be removed in a future version of flavio. " + "been rescaled to '{}'. Support for the old parameter " + "names will be removed in a future version of flavio. " "Please update to the new delta_C7/delta_C7p " "parameterization introduced in flavio v2.7." .format(old_key, new_key), From 989dac0973b3ef5b7779731aeb7828ce2e0cae20 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Mon, 30 Mar 2026 18:00:25 +0200 Subject: [PATCH 6/8] clarify behaviour in warning --- flavio/physics/bdecays/bvll/subleading.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index bd34cd110..9b051de4e 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -69,10 +69,12 @@ def _migrate_old_params(self): par[new_key] = par[old_key] * 2 * mb * mB warnings.warn( "Parameter '{}' uses the old convention and has " - "been rescaled to '{}'. Support for the old parameter " - "names will be removed in a future version of flavio. " - "Please update to the new delta_C7/delta_C7p " - "parameterization introduced in flavio v2.7." + "been rescaled and written to '{}', overwriting " + "any existing value. Support for the old parameter " + "names will be removed in a future version of " + "flavio. Please update to the new delta_C7/" + "delta_C7p parameterization introduced in " + "flavio v2.7." .format(old_key, new_key), FutureWarning ) From 61811adf9c8592b3479247335731d30646f54ab2 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Mon, 30 Mar 2026 18:18:17 +0200 Subject: [PATCH 7/8] make backwards compatibility shim more efficient --- flavio/physics/bdecays/bvll/subleading.py | 95 ++++++++++++++++------- 1 file changed, 67 insertions(+), 28 deletions(-) diff --git a/flavio/physics/bdecays/bvll/subleading.py b/flavio/physics/bdecays/bvll/subleading.py index 9b051de4e..8eb792600 100644 --- a/flavio/physics/bdecays/bvll/subleading.py +++ b/flavio/physics/bdecays/bvll/subleading.py @@ -39,6 +39,52 @@ def ha_deltaC(self, deltaC, C_name): self.ff, wc, self.prefactor) +# Temporary backward-compatibility shim for the old deltaC7/deltaC7p parameter +# names (before flavio v2.7). Maps old full parameter keys to (new_key, type) +# where type 'a' means rescale by 2*mb/mB, 'b' by 2*mb*mB. +# This mapping and the associated migration code will be removed in a future +# version of flavio. +_OLD_DELTAC7_MAP = { + 'B0->K*0 deltaC7 a_0 Re': ('B0->K*0 delta_C7 a_0 Re', 'a'), + 'B0->K*0 deltaC7 a_0 Im': ('B0->K*0 delta_C7 a_0 Im', 'a'), + 'B0->K*0 deltaC7 b_0 Re': ('B0->K*0 delta_C7 b_0 Re', 'b'), + 'B0->K*0 deltaC7 b_0 Im': ('B0->K*0 delta_C7 b_0 Im', 'b'), + 'B0->K*0 deltaC7 a_- Re': ('B0->K*0 delta_C7 a_- Re', 'a'), + 'B0->K*0 deltaC7 a_- Im': ('B0->K*0 delta_C7 a_- Im', 'a'), + 'B0->K*0 deltaC7 b_- Re': ('B0->K*0 delta_C7 b_- Re', 'b'), + 'B0->K*0 deltaC7 b_- Im': ('B0->K*0 delta_C7 b_- Im', 'b'), + 'B0->K*0 deltaC7p a_+ Re': ('B0->K*0 delta_C7p a_+ Re', 'a'), + 'B0->K*0 deltaC7p a_+ Im': ('B0->K*0 delta_C7p a_+ Im', 'a'), + 'B0->K*0 deltaC7p b_+ Re': ('B0->K*0 delta_C7p b_+ Re', 'b'), + 'B0->K*0 deltaC7p b_+ Im': ('B0->K*0 delta_C7p b_+ Im', 'b'), + 'B+->K*+ deltaC7 a_0 Re': ('B+->K*+ delta_C7 a_0 Re', 'a'), + 'B+->K*+ deltaC7 a_0 Im': ('B+->K*+ delta_C7 a_0 Im', 'a'), + 'B+->K*+ deltaC7 b_0 Re': ('B+->K*+ delta_C7 b_0 Re', 'b'), + 'B+->K*+ deltaC7 b_0 Im': ('B+->K*+ delta_C7 b_0 Im', 'b'), + 'B+->K*+ deltaC7 a_- Re': ('B+->K*+ delta_C7 a_- Re', 'a'), + 'B+->K*+ deltaC7 a_- Im': ('B+->K*+ delta_C7 a_- Im', 'a'), + 'B+->K*+ deltaC7 b_- Re': ('B+->K*+ delta_C7 b_- Re', 'b'), + 'B+->K*+ deltaC7 b_- Im': ('B+->K*+ delta_C7 b_- Im', 'b'), + 'B+->K*+ deltaC7p a_+ Re': ('B+->K*+ delta_C7p a_+ Re', 'a'), + 'B+->K*+ deltaC7p a_+ Im': ('B+->K*+ delta_C7p a_+ Im', 'a'), + 'B+->K*+ deltaC7p b_+ Re': ('B+->K*+ delta_C7p b_+ Re', 'b'), + 'B+->K*+ deltaC7p b_+ Im': ('B+->K*+ delta_C7p b_+ Im', 'b'), + 'Bs->phi deltaC7 a_0 Re': ('Bs->phi delta_C7 a_0 Re', 'a'), + 'Bs->phi deltaC7 a_0 Im': ('Bs->phi delta_C7 a_0 Im', 'a'), + 'Bs->phi deltaC7 b_0 Re': ('Bs->phi delta_C7 b_0 Re', 'b'), + 'Bs->phi deltaC7 b_0 Im': ('Bs->phi delta_C7 b_0 Im', 'b'), + 'Bs->phi deltaC7 a_- Re': ('Bs->phi delta_C7 a_- Re', 'a'), + 'Bs->phi deltaC7 a_- Im': ('Bs->phi delta_C7 a_- Im', 'a'), + 'Bs->phi deltaC7 b_- Re': ('Bs->phi delta_C7 b_- Re', 'b'), + 'Bs->phi deltaC7 b_- Im': ('Bs->phi delta_C7 b_- Im', 'b'), + 'Bs->phi deltaC7p a_+ Re': ('Bs->phi delta_C7p a_+ Re', 'a'), + 'Bs->phi deltaC7p a_+ Im': ('Bs->phi delta_C7p a_+ Im', 'a'), + 'Bs->phi deltaC7p b_+ Re': ('Bs->phi delta_C7p b_+ Re', 'b'), + 'Bs->phi deltaC7p b_+ Im': ('Bs->phi delta_C7p b_+ Im', 'b'), +} +_OLD_DELTAC7_KEYS = frozenset(_OLD_DELTAC7_MAP) + + class HelicityAmpsDeltaC_77p_polynomial(HelicityAmpsDeltaC): r"""Helicity amps from an effective shift in the Wilson coefficients $C_7$ (for the 0 and $-$ amplitudes) and $C_7'$ (for the $+$) amplitude @@ -49,38 +95,31 @@ def __init__(self, *args, **kwargs): # Temporary backward-compatibility shim for the old deltaC7/deltaC7p # parameter names. This method and the old parameter names will be # removed in a future version of flavio. - def _migrate_old_params(self): + @staticmethod + def _migrate_old_params(par, mb, mB): """If old-style deltaC7/deltaC7p parameters are found in par, rescale them to the new delta_C7/delta_C7p convention and warn.""" - par = self.par - prefix = self.B + '->' + self.V - mb = self.mb - mB = self.mB - for old_name, new_name in [('deltaC7', 'delta_C7'), - ('deltaC7p', 'delta_C7p')]: - for coeff in ['a_0', 'b_0', 'a_+', 'b_+', 'a_-', 'b_-']: - for ri in ['Re', 'Im']: - old_key = '{} {} {} {}'.format(prefix, old_name, coeff, ri) - if old_key in par: - new_key = '{} {} {} {}'.format(prefix, new_name, coeff, ri) - if coeff.startswith('a'): - par[new_key] = par[old_key] * 2 * mb / mB - else: - par[new_key] = par[old_key] * 2 * mb * mB - warnings.warn( - "Parameter '{}' uses the old convention and has " - "been rescaled and written to '{}', overwriting " - "any existing value. Support for the old parameter " - "names will be removed in a future version of " - "flavio. Please update to the new delta_C7/" - "delta_C7p parameterization introduced in " - "flavio v2.7." - .format(old_key, new_key), - FutureWarning - ) + for old_key in _OLD_DELTAC7_KEYS & par.keys(): + new_key, coeff_type = _OLD_DELTAC7_MAP[old_key] + if coeff_type == 'a': + par[new_key] = par[old_key] * 2 * mb / mB + else: + par[new_key] = par[old_key] * 2 * mb * mB + warnings.warn( + "Parameter '{}' uses the old convention and has " + "been rescaled and written to '{}', overwriting " + "any existing value. Support for the old parameter " + "names will be removed in a future version of " + "flavio. Please update to the new delta_C7/" + "delta_C7p parameterization introduced in " + "flavio v2.7." + .format(old_key, new_key), + FutureWarning + ) def __call__(self): - self._migrate_old_params() # Temporary backward-compatibility shim for the old deltaC7/deltaC7p parameter names + if _OLD_DELTAC7_KEYS & self.par.keys(): + self._migrate_old_params(self.par, self.mb, self.mB) par = self.par B = self.B V = self.V From 6b7d55d95350bad6bbfe1e678497f51703b01be1 Mon Sep 17 00:00:00 2001 From: Peter Stangl Date: Mon, 30 Mar 2026 18:33:01 +0200 Subject: [PATCH 8/8] remove old unused metadata --- flavio/data/parameters_metadata.yml | 36 ----------------------------- 1 file changed, 36 deletions(-) diff --git a/flavio/data/parameters_metadata.yml b/flavio/data/parameters_metadata.yml index 7c8d7b63b..0d4466ba9 100644 --- a/flavio/data/parameters_metadata.yml +++ b/flavio/data/parameters_metadata.yml @@ -324,12 +324,6 @@ B0->K*0 deltaC9 a_0 Re: B0->K*0 deltaC9 b_0 Re: tex: $\text{Re}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 delta_C7 a_+ Re: - tex: $\text{Re}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 delta_C7 b_+ Re: - tex: $\text{Re}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ B0->K*0 delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ @@ -354,12 +348,6 @@ B+->K*+ deltaC9 a_0 Re: B+->K*+ deltaC9 b_0 Re: tex: $\text{Re}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ delta_C7 a_+ Re: - tex: $\text{Re}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ delta_C7 b_+ Re: - tex: $\text{Re}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ B+->K*+ delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ @@ -384,12 +372,6 @@ Bs->phi deltaC9 a_0 Re: Bs->phi delta_C7 b_0 Re: tex: $\text{Re}\,b^{\Delta_7}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi delta_C7 a_+ Re: - tex: $\text{Re}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi delta_C7 b_+ Re: - tex: $\text{Re}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ Bs->phi delta_C7p a_+ Re: tex: $\text{Re}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ @@ -414,12 +396,6 @@ B0->K*0 deltaC9 a_0 Im: B0->K*0 deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 delta_C7 a_+ Im: - tex: $\text{Im}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ -B0->K*0 delta_C7 b_+ Im: - tex: $\text{Im}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ B0->K*0 delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^0\to K^{*0}\ell^+\ell^-$ at low $q^2$ @@ -444,12 +420,6 @@ B+->K*+ deltaC9 a_0 Im: B+->K*+ deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ delta_C7 a_+ Im: - tex: $\text{Im}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ -B+->K*+ delta_C7 b_+ Im: - tex: $\text{Im}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ B+->K*+ delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B^+\to K^{*+}\ell^+\ell^-$ at low $q^2$ @@ -474,12 +444,6 @@ Bs->phi deltaC9 a_0 Im: Bs->phi deltaC9 b_0 Im: tex: $\text{Im}\,b^{\Delta_9}_0$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi delta_C7 a_+ Im: - tex: $\text{Im}\,a^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ -Bs->phi delta_C7 b_+ Im: - tex: $\text{Im}\,b^{\Delta_7}_+$ - description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$ Bs->phi delta_C7p a_+ Im: tex: $\text{Im}\,a^{\Delta_7^\prime}_+$ description: Parameter for subleading hadronic effects in $B_s\to \phi\ell^+\ell^-$ at low $q^2$