Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing calculation of BR(KL,KS->emu,mue) #141

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

hoodyn
Copy link
Contributor

@hoodyn hoodyn commented Feb 10, 2021

This is the (second) pull request aiming to fix the problems in calculations od LFV kaon decays to leptons, based on discussion in #138. (I'm aborting my original PR #140 which I polluted by bugs and wrong argumentation.)

The calculation actually still proceeds incorrectly,
but it is a matter of physics, not of programming,
and will be solved in next commits.
Like almost everywhere else, there is no need to distinguish between mass of KL and KS in the prefactors in amplitudes_LD.
Originally, the function `amplitudes_LD(par, K, l)` would send both long-distance coefficients - for KL and KS, despite the fact that it takes `K` as an argument; `amplitudes_eff` then always thrown one of them away.
The new implementation should be more transparent.
* The original `amplitudes` function renamed to `amplitudes_weak_eigst`
 as it actually yields amplitudes for K0, K0bar, not KL or KS.

* A new `amplitudes` function, which newly takes also `K` (to be `'KL'` or `'KS'`)
 as an argument, has been implemented.
 It makes proper linear combinations of amplitudes for K0 and K0bar
 and changes by sqrt(2) the normalization of the amplitudes
 (cf. arXiv:1602.00881 with 1711.11030).

* For l1=l2, `amplitudes` yields the imag/real parts of the S, P weak_eigs coefficients, as it should.
 Thus, taking real/imag parts is no longer tackled in `amplitudes_eff`,
 which now serves merely to add up short- and long-distance contributions, as it should.

* Relative signs between SD and LD contributions now tackled in `amplitudes_eff`.
 It is in accordance with the original version of this file;
 looks differently than in arXiv:1711.11030, but it is due to different WC
 conventions (see my notes for details).
As long as we neglect indirect CPV in kaons (which we do in kll.py),
WET predicts BR(KL,KS->e+mu-) = BR(KL,KS->mu+e-), so we do don't
calculate twice anymore at `br_kll_fct_lsum`.
@hoodyn
Copy link
Contributor Author

hoodyn commented Feb 10, 2021

Summary of the issues being solved and proposed changes:
Issues:
1: Call for a prediction of 'BR(KS->emu,mue)' was giving an error due to a bad implementation.
2: BR(KL->emu,mue) was calculated incorrectly, since simplified formulas were used which hold only for LF conserving cases.

Suggested updates

  1. K='KS', l1='e', l2='mu' is no longer an invalid combination of options in the function amplitudes_eff.

  2. Amplitudes for LFV decays (i.e. l1!=l2) were not calculated correctly. Fixing the physics required some nontrivial extension of the code:

  • the original function function amplitudes has been renamed to amplitudes_weak_eigst as it actually does not yield the relevant amplitudes for KL -> l1+l2- nor KS->l1+l2-, but for the decay of weak eigenstate K0bar -> l1+ l2-. Thus the usage:
S_K0bar, P_K0bar = amplitudes_weak_eigst(par, wc, l1, l2)

Also the amplitude for K0->l1+l2- can be obtained from this function as

S_aux, P_aux = amplitudes_weak_eigst(par, wc, l2, l1)
S_K0 = -S_aux.conjugate()
P_K0 = P_aux.conjugate()

I will attach some updated notes explaining these matters in detail.

  • An entirely new function amplitudes(par, wc, K, l1, l2) has been implemented. It simply makes proper linear combinations of amplitudes for K0 and K0bar which correspond to the approximate mass eigenstates KL, KS (in fact, CP eigenstates are used instead). In the special case l1 == l2, this can be simplified to the expressions with imaginary or real parts of S,P, which had been there originally, adopted from ArXiv:1711.11030 (I guess). I implemented this special case separately inside the amplitudes, for the reason of both effectivity and better possibility to check that the new formulae are consistent with the old ones. If the maintainers find this separate treatment redundant, it can be removed, of course. The new amplitudes function now takes K as a mandatory argument (to be 'KL' or 'KS').
  • There is no longer a need to take real or imaginary parts of the amplitudes within the amplitudes_eff function, which now serves purely to sum the short-distance amplitudes with amplitudes_LD in the LF-conserving cases. It also seems more consistent now to me. Concerning LF-conserving decays: Due to different sign conventions, amplitudes_eff subtracts the LD and SD contributions in this version, but in fact the interference works the same way as it did before. (For 'KL', an extra minus sign had been present in original implementation of P in amplitudes_LD. For 'KS', the sign is compensated with S=-S_K0bar.real inside amplitudes function yields .

Furthermore, I made an additional small commit:
3. The function amplitudes_LD(par, K, l) was originally giving long-distance contributions for both 'KL' and 'KS', although it takes K as an argument. Eventually, everything had been calculated correctly but the implementation seemed little awkward to me. So I've changed it in order to make things clearer.

@coveralls
Copy link

Coverage Status

Coverage decreased (-0.07%) to 93.798% when pulling 0c1865b on hoodyn:Kll-repair into 011236d on flav-io:master.

@hoodyn
Copy link
Contributor Author

hoodyn commented Feb 11, 2021

Here's my notes about the leptonic kaon decays in EFT. (I haven't found any suitable text in the literature.) Might be helpful to understand the changes in the implementation.
kaon_decays.pdf

@peterstangl
Copy link
Collaborator

@hoodyn thank you again for all the work you have put into this! Since your results differ from those in published papers, I think it would be good to do some cross checks before merging this PR. Unfortunately, I don't have enough time at the moment to do that. So I will keep this PR open until I find time for this or somebody else can do some cross checks. Did you actually contact the authors of the paper that seems to contain mistakes?

@peterstangl peterstangl linked an issue Mar 7, 2021 that may be closed by this pull request
@hoodyn
Copy link
Contributor Author

hoodyn commented Mar 7, 2021

@peterstangl
Hi, I haven't contacted the authors of 1602.00881. I think that the mistakes in that paper can be qualified just as "big typos". This paper does not give formulae for KL,KS -> emu anyway, so I don't think it is important for this PR.

Btw, I used my branch of flavio to successfully crosscheck predictions of Ref. 1801.02895. The same crosscheck fails for the current master branch. This, however, says nothing about the problems I see in Ref. 1602.00881.

@hoodyn thank you again for all the work you have put into this! Since your results differ from those in published papers, I think it would be good to do some cross checks before merging this PR. Unfortunately, I don't have enough time at the moment to do that. So I will keep this PR open until I find time for this or somebody else can do some cross checks. Did you actually contact the authors of the paper that seems to contain mistakes?

@peterstangl
Copy link
Collaborator

Here's my notes about the leptonic kaon decays in EFT. (I haven'tfound any suitable text in the literature.) Might be helpful to
understand the changes in the implementation.
kaon_decays.pdf

@hoodyn I cross-checked your notes and found overall agreement. I found
a few disagreements, which are, however, probably just typos. Nevertheless, I list them in the following:

  • In Eq. (16) I think there is a factor m_K0 missing.
  • In Eq. (20) I think there should be a minus instead of a plus inside the square
    bracket on the second line (S_sdmue S_sdemu - P_sdmue P_sdemu).
  • In Eqs. (25a-25d) I think \bar{m}_K should be replaced by \bar{m}_K/m_K and m_mu should be replaced by m_l everywhere.

Concerning the implementation, I will comment directly on the code.

# Simplified expressions for special cases. See also arXiv:1711.11030.
elif l1 == l2:
if K == 'KL':
S = -1j * S_K0bar.imag
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comparing this to your notes, Eq. (22a), shouldn't this be +1j * S_K0bar.imag?

- `l1` and `l2`: should be `'e'` or `'mu'`
"""
# KL, KS are linear combinations of K0, K0bar. So are the amplitudes.
# Normalization differs by sqrt(2) from `amplitudes_weak_eigst`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a particular reason not to use the same normalization?

if K == 'KL':
Peff = P.real + PLD
Seff = S.imag
# The relative sign due to different conventions. Cf. my notes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe instead of Cf. my notes., you could put the link to the notes there. Otherwise it will be impossible find them just by looking at this comment in the code.

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.

Errors in implementation of K0->ll'
3 participants