Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the discussion in #138, we agreed that there are some bugs in Kll.py. I tried to repair them. Moreover, I commited some other small changes aiming to improve the readability of the code.
The KS->e mu is no longer an invalid option in the function
amplitudes_eff
.Amplitudes for LFV decays (i.e.
l1!=l2
) were not calculated correctly. The fix needed some nontrivial extension of the code as well as some physics considerations, which I will summarize now:amplitudes
has been renamed toamplitudes_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-.Also the amplitude for K0->l1+l2- can be obtained from this function as
I can attach some notes about why it is like this.
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 casel1 == 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 theamplitudes
, 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 newamplitudes
function now takesK
as a mandatory argument (to be'KL'
or'KS
').amplitudes
within theamplitudes_eff
function, which now serves purely to sum the short-distanceamplitudes
withamplitudes_LD
in the LF conserving cases. It also seems more consistent now -amplitudes_eff
has one and only one purpose.Furthermore, I made some additional small commits:
3. The function
amplitudes_LD(par, K, l)
was originally giving long-distance contributions for both KL and KS, although it takesK
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.4. I dared to change the normalization of the new short-distance
amplitudes
andamplitudes_LD
bysqrt(2)
and reduced the prefactor ofbr_kll
by 2 accordingly. The purpose is solely to makebr_kll
more consistent withbr_inst
in ./physics/kdecays/kll.py or with arXiv:1602.00881 from which the formulae have been adopted; also, the normalization ofamplitudes
as linear combinations ofamplitudes_weak_eigst
is the standard one, following from KL = (K0+K0bar)/sqrt(2),KS = (K0-K0bar)/sqrt(2).I also think I may have found another bug, which we haven't discussed in #138.
5. Originally,
amplitudes_eff
for the caseK=='KS'
was was summing the effective scalar amplitude asSeff = S.real + SLD
. However, ArXiv:1711.11030 (which is the cited source in the code) claims that these two terms should subtract from each other (overall phase is irrelevant).SLD
is implemented in flavio correctly according to Eq. (2.15) in 1711.11030 including the sign. Also, both flavio and 1711.11030 use the same convention for WCs: L_eff=-H_eff=C_A O_A. Thus, I think that originally the interference was inappropriately implemented. In my proposal it is corrected by the fact that the short-distance amplitudeS
is obtained as-S_K0bar.real * sqrt(2)
. (The minus sign is the important thing there; the sqrt(2) relates to what I discuss above in point 4.). Note that both flavio and 1711.11030 use the same convention for WCs: L_eff=-H_eff=C_A O_A.The similar issue for the case of KL (
Peff = P + PLD
) was (and still is) probably correctly handled by the extra minus sign in the definition of PLD:I didn't dig to details there (like what's the default sign of the parameter enteging ALgaga in flavio when in fact it is not known).