Skip to content

Conversation

@schmitse
Copy link

This PR includes updates adding all angular coefficients for $B_s^0 \rightarrow \phi \ell^+\ell^-$ decays.
It also implements in addition to the helicity formalism the transversity formalism which is frequently used in the literature, for example arXiv:1502.05509.
The amplitude formalism is changed to an AuxiliaryQuantity allowing to switch between the helicity formalism (for example in arXiv:1506.03970) and the transversity formalism.

This PR is accompanied by a writeup detailing all changes that have been done, it is currently being finalised and will be added to this discussion soon.

Description of the changes:

  • flavio/parameters: Add the meson mixing frequency $\Delta m_s / \Delta\Gamma_s$ from HFAG 2014 to default parameters.
  • flavio/physics/bdecays/angular.py:
    • Add function to compute the $s_i$ angular coefficients in the helicity formalism. (angularcoeffs_s_Gbasis_v),
    • conversion from $G$ to $g$ (compare with arXiv:1506.03970 Eq 32) (G_s_to_g_s)
    • function to return them similar to the $J_i$ and $h_i$ (angularcoeffs_s_v).
  • flavio/physics/bdecays/bvll/observables_bs.py:
    • bsvll_obs now uses AuxiliaryQuantity to compute $J_i$, $h_i$, and $s_i$ (new).
    • Generalise functions for the $S_i$ and $A_i$ computation at LHCb. Following arXiv:1502.05509 Eq. 42 and 43. This does not change the previously implemented observables! But now supports the additional angular coefficients in the time-integrated case.
    • Add all angular coefficients as observables.
  • flavio/physics/bdecays/bvll/amplitudes.py: add function to return $J_i$, $\bar{J}_i$, $h_i$, and $s_i$ from AuxiliaryQuantity and allow helicity amplitudes to be returned without QCDF and subleasing corrections (for comparison against transversity amplitudes.)
  • flavio/physics/bdecays/bvll/amplitudes_transversity.py: add all functions to compute transversity amplitudes and $J_i$, $\bar{J}_i$, $h_i$, and $s_i$ from transversity amplitudes.
  • flavio/data/config.yml: Add new AuxiliaryQuantity called B->Vll amplitude formalism. Currently features implementations: Helicity Amplitudes (default and what was used before), Helicity Amplitudes (no corrections), and Transversity Amplitudes (no corrections).
  • flavio/test_bsphimumu_obs.py: added unit test comparing all observables using the transversity and helicity amplitude formalism.

Please note that this PR supersedes PR #258 which implements A_theory_num_Bs without the caveat of Eq 42 and 43 in arXiv:1502.05509.

Sebastian Schmitt added 11 commits August 13, 2025 18:11
parameters_metadata.yml:
  - added description for DeltaM/Gamma_Bs
parameters_uncorrelated.yml:
  - added value for DeltaM/Gamma_Bs
…506.03970v3

New functions:
* angularcoeffs_s_v computes the s amplitudes for the observables_bs to be used.

* G_s_to_g_s converts between G and g for the s coefficients.

* angularcoeffs_s_Gbasis_v computes the G expressions for the s coefficients. adapted from D. Straubs function for the h coefficients.
Added time-integrated observables: AFB, S1s, S1c, S2s, S2c, A5, A6s, A8, and A9.
Added new time-dependent observables: K_i, W_i, H_i, Z_i, Q_i, M_i, P_i, AP_i for all indices.

Changes to functions:
* bsvll_obs added x (oscillation frequency) and gamma (width) to parameters loaded. add J_s coefficients and adapt return function call to use all of the former.
* S_experiment_num_Bs: adapt to new signature and generalise function to handle all indices.
* A_experiment_num_Bs: adapt to new signature and generalise function to handle all indices.
* SA_den_Bs: adapt to new signature
* FL_Bs: streamline function name to "FL_num_Bs" and adapt to new signature.

New functions added:
numerator and denominators for all angular coefficients measurable in the time-dependent flavour-tagged angular analysis.
K_i denote the CP-symmetries.
W_i denote the CP-asymmetries.
H_i and Z_i are the coefficients added by the time-dependent CP violation due to the final state being a CP eigenstate.
All K_i, W_i, H_i, and Z_i are normalised the same way that S_i and A_i are, using the integrated decay rate in the qsq region at hand.
Add functions to convert between theory angle convention and LHCb angle convention for the observables.

Add observables with reduced sensitivity to hadronic form-factors: P_i, AP_i, Q_i, and M_i.
The P_i^(prime) are defined analogously to the Kst case. The AP_i are the asymmetries to the symmetric P_i. Q_i and M_i are optimised observables for the special angular coefficients s_i and h_i, respectively.
Also add functions to convert between theory angular convention and LHCb convention.
computation of the transversity amplitudes following arxiv:0811.1214 and implementation of the J, h, and s coefficients with the transversity amplitudes.
TODO: add AuxiliaryQuantity behaviour for observables?
TODO: add tests between helicity and transversity amplitudes.

Main functions:
bsvll_obs: drop in replacement for observables_bs "bsvll_obs" for computing the observables.
transversity_amps and transversity_amps_bar to be used as a drop-in replacement for the amplitudes.helicity_amps and amplitudes.helicity_amps_bar used in bsvll_obs to compute the J, h, and s coefficients.
Main changes: Add customisable choice for amplitude formalism to be used when computing J, h, and s coefficients.
Quantity Name: "B->Vll amplitude formalism" and implementations are "Helicity Amplitudes" (default and what was previously used), "Helicity Amplitudes (no corrections)" (same as before, but no QCDF and subleading corrections, main usage for comparison with transversity amplitudes), and "Transversity Amplitudes (no corrections)".

Main changes:
* observables_bs.py changed bsvll_obs function to get J, J_bar, J_h, and J_s from AuxQuantity.

* amplitudes.py added flag for QCDF and subleading corrections when computing the helicity amps.

* data/config.yml add default implementation for AuxQuantity

* auxiliary_quantities.py : functions for evaluating the J, J_bar, h, and s coefficients. And Auxiliary Quantity with implementations for the computation.

TODO: clean up amplitudes_transversity.py
remove bsvll_obs function as it is unused with the AuxQuantity implementaion for the amplitudes.
remove unused import, add rawstring for description to suppress warning for unescaped chars.
remove helicity amplitude functions as they are not used anymore.
test_bsphimumu_obs.py:
add TestBsToPhiMuMuObs which tests the time-integrated and time-dependent angular observables in Bs -> phi mumu between the transversity and helicity amplitudes.
test_bvll: fix function signature changing from addition of x, gamma, J_s to signatures.
observables_bs: add previously removed functions which are used in the test case - my bad.
@schmitse
Copy link
Author

I have adjusted the tests in test_bvll.py to also cover the new $K_i$ versus $S_i$ and the $W_i$ versus $A_i$ and check that all defined observables do not raise an error.

Add additional observables for the tagged time-integrated decay-rate.
@schmitse
Copy link
Author

Hi @peterstangl @DavidMStraub

I attach a small document about the changes in this PR.
I try to briefly recapitulate the intricacies of $B_s^0 \rightarrow \phi \mu^+\mu^-$ decays, compared to the maybe more famous $B^0 \rightarrow K^{\ast 0}\mu^+\mu^-$ case.
Then i show some comparisons i have performed between eos and flavio. (Note for this i needed to adjust eos a bit)
Afterwards i describe the changes to the code in more detail.
If something is unclear, please let me know then i can try to adapt the document.
Also note that these thoughts are my own and any mistakes would be mine as well.
main.pdf

I also attach the analysis file and script i used to create the predictions in eos, in case people want to have a go at trying to align the form-factors completely. Please excuse the lack of comments.
predictions_eos.zip

@schmitse schmitse marked this pull request as ready for review August 21, 2025 09:25
Sebastian Schmitt added 2 commits August 21, 2025 11:26
observables_bs.py: add new integration pprime ratio function which integrates both FL and FT before multiplying them, allowing the norm to be computed experimentally.
Adjust the function call for the optimised observable building to create optimised observables for K, W, S, and A.
@schmitse
Copy link
Author

I have updated the optimised $P_i^{(\prime)}$ and their asymmetries to include all the new angular observables, both in the time-independent and time-dependent case.
Also i have fixed the denominator for the primed variants which was $\int F_L \cdot F_T$ instead of $\int F_L \int F_T$.

Sebastian Schmitt added 3 commits August 21, 2025 18:11
Adapt pprime denominator function to cope with the Q/M_(4,5,7,8) denominator style.
Move definitions of the primed Q/M and 4,5,7,8 Q/M observables to the optimised observable definiton column.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant