Add the possibility of evolving the fit with hoppet - #2485
Conversation
97b9976 to
9bf30b1
Compare
| eko_path, exportgrids, theory_id | ||
| ) | ||
| else: | ||
| # We read the EKO to a temporary directory that will vanish upon exiting |
There was a problem hiding this comment.
| # We read the EKO to a temporary directory that will vanish upon exiting | |
| # We extract the EKO to a temporary directory that will vanish upon exiting |
why is the native EKO.read behaviour not good enough? like with eko.EKO.read
There was a problem hiding this comment.
mh? how is this related to my question here? this is rather the proper issue to this line
nnpdf/n3fit/src/evolven3fit/hoppet_evolve.py
Line 121 in 9bf30b1
There was a problem hiding this comment.
Ah, sorry, I'm looking at the comments with my phone, that's the only problem with eko's default behaviour I can remember right now.
I'd need to have a closer look to remember ^^U
| wether the fit is hessian | ||
| eko_path: str or pathlib.Path | ||
| path where the eko is stored (if None the eko will be recomputed) | ||
| hoppet: bol |
There was a problem hiding this comment.
| hoppet: bol | |
| hoppet: bool |
| pid_columns = [exportgrid.pids.index(pid) for pid in HOPPET_QCD_PIDS] | ||
| pdfgrid = exportgrid.pdfgrid[:, pid_columns] | ||
|
|
||
| dispatcher = InterpolatorDispatcher(xgrid, interpolation_degree, mode_N=False) |
There was a problem hiding this comment.
just remember that you rely on log=True here, which is what you want
| qref=nnpdf_theory.Qref, | ||
| q0=nnpdf_theory.Q0, | ||
| nloop=nloop, | ||
| mur_over_q=nnpdf_theory.XIR, |
There was a problem hiding this comment.
This looks wrong. Maybe you mean
| mur_over_q=nnpdf_theory.XIR, | |
| mur_over_q=nnpdf_theory.XIF, |
? Recall that in NNPDF nomenclature the renormalization scale (and hence XIR) refers to the hard scattering, the partonic matrix elements and not to evolution. However, in SV scheme A you shift the evaluation of the strong coupling which multiplies the anomalous dimensions by a factor (see here or the mentioned papers there) and most likely this is what hoppet calls mur_over_q (I haven't check hoppet explicitly). This is because I suspect very much that hoppet can only do scheme A (as with Pegasus for example). Thus at the minimum you need to check the SV scheme here in addition and also match that.
There was a problem hiding this comment.
I should check, probably I read mur and translated it to xir (I only tested central fits so wouldn't see the error in my test)
| if nnpdf_theory.PTO > 2: | ||
| raise NotImplementedError("Only up to NNLO for now with hoppet") |
There was a problem hiding this comment.
actually, why? hoppet should be able to do N3LO by now, no?
There was a problem hiding this comment.
Is to be tested! I was waiting for our own 4.1 n3lo fits for that
| raise NotImplementedError("Only up to NNLO for now with hoppet") | ||
|
|
||
| masses = (nnpdf_theory.mc, nnpdf_theory.mb, nnpdf_theory.mt) | ||
| # Note: for hoppet this is both the masses and the thresholds |
There was a problem hiding this comment.
so we should check they are the same for us, i.e. k=1
| # Note: for hoppet this is both the masses and the thresholds | ||
|
|
||
| nloop = nnpdf_theory.PTO + 1 | ||
| fns = nnpdf_theory.FNS.split("-")[0] |
There was a problem hiding this comment.
Is this correct? it looks too simple to me (but I haven't checked hoppet). I suspect however, you need either (some variation of) "VFNS" or "FFNS". However, in many cases our FNS should be "FONLL" - which should be mapped to "VFNS".
This PR implements the evolution of the PDF using HOPPET with the
--hoppetflag.The generation of the xgrid, qgrid, etc, is the same as with the vanilla evolution and the results are, at NNLO, equivalent for Q > mc.
For Q < mc the way HOPPET and EKO invert the threshold is different, see:
EKO: https://eko.readthedocs.io/en/latest/theory/Matching.html#backward-evolution
HOPPET: https://github.com/hoppet-code/hoppet/blob/31a2ff92aa82f227505ee0ce111db8acfce340a0/src/evolution.f90#L329
We would need to set
inversion_method = expandedand the mass of the charm to 0 to get the exact same results with both.N3LO to be tested.