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

Exa couplings2 #1806

Merged
merged 26 commits into from
Oct 5, 2023
Merged

Exa couplings2 #1806

merged 26 commits into from
Oct 5, 2023

Conversation

niclaurenti
Copy link
Contributor

@niclaurenti niclaurenti commented Sep 18, 2023

This PR implements the alphaem exact running in the Alpha class in the validphys.photon module.
In this way it is consistent with the running used in EKO for QED.
Such running also considers the mixed terms between the RGEs of alphas and alphaem (therefore they are evolved together).
Edit: Since the solution must enter in the fiatlux integral, and the exact solution is slower than the truncated one, the strategy is to compute $\alpha$ for some reference values in the integration range and then interpolate with scipy (the function is continuous since the matching is applied to $\alpha_s$ only but probably not smooth in the matching points)
Edit n. 2: interpolating with scipy was still too slow so I interpolated with numpy, that is faster
Edit n. 3 (Theoretical issue): the Lux formula uses $\alpha(Q^2)$ to very low values of $Q^2$, below the Landau pole of $\alpha_s$. For this reason I had to remove the mixed terms in the evolution of $\alpha(Q^2)$, i.e. the terms that couple the evolutions of the two couplings. In this way $\alpha$ running is decoupled from $\alpha_s$ running.
It means that the evolution will be slightly inconsistent with the one used in EKO (but in the perturbative regions the difference is sub-permil).

I've performed a fit with this branch and it seems to be good:

Copy link
Member

@scarlehoff scarlehoff left a comment

Choose a reason for hiding this comment

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

Thanks for opening the new branch!

I've left a few comments. The general trend is that some more explanation on the docstr (and some comments in the parts where the code might get a bit confusing, specially when many things are happening in the background e.g. due to eko doing stuff) would be good.

validphys2/src/validphys/tests/photon/test_compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/tests/photon/test_compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/tests/photon/test_compute.py Outdated Show resolved Hide resolved
alpha = Alpha(theory, 1e8)
coupl_ref = [theory["alphas"], theory["alphaqed"]]

for q in [80, 10, 5]:
Copy link
Member

Choose a reason for hiding this comment

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

Instead of doing like this, you might want to use the hypothesis module to test random values of q (one example here)

https://github.com/NNPDF/nnpdf/blob/master/validphys2/src/validphys/tests/test_utils.py

This has the advantage of being more robust, but the disadvantage that you might not want to test some fringe values.
Not required just in case you want to play a bit with this. It will make the tests more robust and cleaner!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I would skip this since my fear is that some values of q would make the test fail. For example in test_exa_interpolation I had to manually increase the error until I found the one for which the tests were passing, but maybe there are some values for which the error is larger.
Anyway, with the last commit this PR is done

validphys2/src/validphys/photon/compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/photon/compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/photon/compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/photon/compute.py Outdated Show resolved Hide resolved
validphys2/src/validphys/photon/compute.py Outdated Show resolved Hide resolved
@niclaurenti
Copy link
Contributor Author

Hi @scarlehoff and @Zaharid , for the reason that I explained in

RGEs for the couplings. See Eqs. (5-6) of arXiv:hep-ph/9803211.

I had to decouple the $\alpha$ evolution from the $\alpha_s$ evolution. Therefore, all the $\alpha_s$ part in the photon module is now unused. This will cause a little inconsistence with the EKO evolution but the differences are very small in the perturbative region of QCD.
So what I can do is the following:

  • I can leave it implemented, with some parts that are commented out, so that if some day we will need it or we will find a solution we don't have to reimplement it (and moreover it is not slowing down the code).
  • I can remove it
    What do you think?

@scarlehoff
Copy link
Member

scarlehoff commented Sep 21, 2023

I'm in favor of the removal since if/when someone wants to deal with the problem either this would be the smallest part of the job (and they will have to recheck that everything is correct anyway) or (if it is you or someone already involved in the project) would be able to find the commit in which it was removed looking at this PR

(and past experiences tell me that dead code starts smelling after a while and ends up being removed anyway)

That said, if other people want to keep it I won't make a fuss about it.

edit: unless there's a plan already of dealing with this in the near future, but from your msg I understand this is something that won't be deal with any time soon

@niclaurenti
Copy link
Contributor Author

I'm in favor of the removal since if/when someone wants to deal with the problem either this would be the smallest part of the job (and they will have to recheck that everything is correct anyway) or (if it is you or someone already involved in the project) would be able to find the commit in which it was removed looking at this PR

(and past experiences tell me that dead code starts smelling after a while and ends up being removed anyway)

That said, if other people want to keep it I won't make a fuss about it.

edit: unless there's a plan already of dealing with this in the near future, but from your msg I understand this is something that won't be deal with any time soon

ok then I'll remove it

Copy link
Member

@scarlehoff scarlehoff left a comment

Choose a reason for hiding this comment

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

Are you running the qed fits already with this branch? (if so I guess everything works so feel free to merge)

validphys2/src/validphys/tests/photon/test_compute.py Outdated Show resolved Hide resolved
@niclaurenti
Copy link
Contributor Author

Are you running the qed fits already with this branch? (if so I guess everything works so feel free to merge)

Yes. Then as soon as the tests pass I will merge

@scarlehoff scarlehoff merged commit 0a1446a into master Oct 5, 2023
4 checks passed
@scarlehoff scarlehoff deleted the exa_couplings2 branch October 5, 2023 18:28
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.

2 participants