Closed
Conversation
The original `amplitudes` function renamed to `amplitudes_weak_eigst` as it actually only yields amplitudes relevant for decays of weak eigenstates K0, K0bar. A new `amplitudes` function, which newly takes also `K` (to be `'KL'` or `'KS'`) as an argument, has been implemented. In merely makes proper linear combinations of amplitudes for K0 and K0bar. 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, I believe. The bug which lead to error in `amplitudes_eff` for 'KS' and l1!=l2, has been fixed.
There was an odd comment above a normalization coefficient, so I've updated it.
Originally, the function `amplitudes_LD(par, K, l)` was always sending 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. Now, it should be clearer.
Taking an extra factor of 2 from the prefactor in `br_kll` and putting a factor of sqrt(2) to both short distance `amplitudes` and `amplitudes_LD`. This does not affect the result, of course. Now, the formula for the BR is the more standard one (the same that is used for B->l1 l2 in flavio), and also combining weak-K0-eigenstate amplitudes to those of KL or KS is more intuitive now.
Like almost everywhere else, there is no need to distinguish between mass of KL and KS in the prefactors in amplitudes_LD.
Member
|
@hoodyn thank you very much for your PR and the detailed explanations of what you did! I hope I find time soon to check everything in detail. |
As @peterstangl noted, comparisons like ``` 'K' == 'KL' ``` were present, while the correct version is ``` K == 'KL' ```
peterstangl
approved these changes
Jan 29, 2021
Contributor
Author
|
@peterstangl I'm attaching some notes which may help you checking the code after me. |
Contributor
Author
|
For too many bugs and misargumentation in this PR, I've iniciated a new one (#141). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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:amplitudeshas been renamed toamplitudes_weak_eigstas 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 newamplitudesfunction now takesKas a mandatory argument (to be'KL'or'KS').amplitudeswithin theamplitudes_efffunction, which now serves purely to sum the short-distanceamplitudeswithamplitudes_LDin the LF conserving cases. It also seems more consistent now -amplitudes_effhas 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 takesKas 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
amplitudesandamplitudes_LDbysqrt(2)and reduced the prefactor ofbr_kllby 2 accordingly. The purpose is solely to makebr_kllmore consistent withbr_instin ./physics/kdecays/kll.py or with arXiv:1602.00881 from which the formulae have been adopted; also, the normalization ofamplitudesas linear combinations ofamplitudes_weak_eigstis 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_efffor 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).SLDis 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 amplitudeSis 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).