wilson-eft / wilson

A Python package for the running and matching of Wilson coefficients above and below the electroweak scale
https://wilson-eft.github.io
MIT License
26 stars 18 forks source link

`loop` argument not forwarded to `alpha_s` in `m_{b|c|s}` #23

Closed JLTastet closed 5 years ago

JLTastet commented 5 years ago

The loop kwarg in m_b, m_c and m_s from the wilson.util.qcd module is not forwarded to alpha_s, resulting in the default value loop=3 always being used to evaluate the strong coupling constant.

This leads to a small discrepancy with respect to the Mathematica version of RunDec.

The tests in wilson.util.test_qcd currently only cover the default (loop=3) case.

Not sure if this is actually an issue, since the difference is small and the docstring explicitly specifies "3-loop computation", but it surprised me a bit so I prefer to report it just in case. Feel free to close if this is intended :-)

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L20

m_b

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L58 https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L64

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L67

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L83

m_c

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L95 https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L102

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L104

m_s

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L121 https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L128

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L130

https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L146

Also, small typo: https://github.com/wilson-eft/wilson/blob/131f2730f7fe5490da825288f254904cb11fe703/wilson/util/qcd.py#L21

DavidMStraub commented 5 years ago

Hi, you are right and this is in fact not intentional.

JLTastet commented 5 years ago

Okay, I will prepare a PR then. How can I run the test suite locally?

DavidMStraub commented 5 years ago

Great. I was planning to release version 1.5 later today, do you think you can make it for that?

To run the tests, you need the nose package, then you can just run nostests in the source directory. (For development I would suggest to install the cloned repository in development mode with pip3 install -e . --user).

JLTastet commented 5 years ago

Yes, I can surely make it. I already fixed the code, so I just need to write new tests with loop != 3. I am using nose as well, so there should be no technical difficulties here.

JLTastet commented 5 years ago

There are still two failing tests, which give a slightly different answer from the Mathematica version. This might be an issue with my validation code. Hopefully I will figure it out today.

Partial progress here (do not merge yet): https://github.com/Element-126/wilson/tree/fix-23

JLTastet commented 5 years ago

I have found what is causing the failures, but I am still not sure what is the proper way to fix it. I'll read the relevant part of the RunDec paper again and this will hopefully clarify everything.

JLTastet commented 5 years ago

Hmm... this might just be a numerical issue in the end. Decoupling up and then down causes an error which can be larger than the current deltam=1e-5 threshold. I still don't fully understand the results from RunDec, and the documentation is a bit ambiguous (the input parameters for Dec{As|Mq}DownXX list the number of light quarks nl as a parameter, while the examples seem to imply that nf = nl+1 should be used instead). So for now I will just raise the threshold a bit, but I would definitely like to understand the results better.