diff --git a/src/eko/io/runcards.py b/src/eko/io/runcards.py index e9260a6eb..7dbbe2b34 100644 --- a/src/eko/io/runcards.py +++ b/src/eko/io/runcards.py @@ -212,8 +212,8 @@ def new_theory(self): new["xif"] = old["XIF"] new["n3lo_ad_variation"] = old.get("n3lo_ad_variation", (0, 0, 0, 0)) - # here PTO: 0 means truly LO - new["matching_order"] = old.get("PTO_matching", [old["PTO"], old["QED"]]) + # here PTO: 0 means truly LO, no QED matching is available so far. + new["matching_order"] = old.get("PTO_matching", [old["PTO"], 0]) return TheoryCard.from_dict(new) diff --git a/src/eko/runner/legacy.py b/src/eko/runner/legacy.py index ff1bb1e7b..991ec2bd0 100644 --- a/src/eko/runner/legacy.py +++ b/src/eko/runner/legacy.py @@ -77,9 +77,7 @@ def __init__( couplings=cs, interpol_dispatcher=bfd, n3lo_ad_variation=new_theory.n3lo_ad_variation, - matching_order=new_theory.matching_order - if new_theory.matching_order is not None - else new_theory.order, + matching_order=new_theory.matching_order, ) with EKO.create(path) as builder: diff --git a/src/eko/runner/parts.py b/src/eko/runner/parts.py index 4752aa357..67d2cda18 100644 --- a/src/eko/runner/parts.py +++ b/src/eko/runner/parts.py @@ -88,9 +88,10 @@ def evolve_configs(eko: EKO) -> dict: n_integration_cores=ocard.configs.n_integration_cores, ModSV=ocard.configs.scvar_method, n3lo_ad_variation=tcard.n3lo_ad_variation, + # Here order is shifted by one, no QED matching is available so far. matching_order=tcard.matching_order if tcard.matching_order is not None - else tcard.order, + else (tcard.order[0] - 1, 0), ) diff --git a/tests/eko/runner/test_parts.py b/tests/eko/runner/test_parts.py new file mode 100644 index 000000000..2ec217dd7 --- /dev/null +++ b/tests/eko/runner/test_parts.py @@ -0,0 +1,22 @@ +from eko.runner import parts + + +def test_evolve_configs(eko_factory): + # QCD@LO + e10 = eko_factory.get() + assert e10.theory_card.order == (1, 0) + p10 = parts.evolve_configs(e10) + assert p10["matching_order"] == (0, 0) + # QCD@N3LO + QED@N2LO w/o matching_order + eko_factory.theory.order = (4, 3) + eko_factory.theory.matching_order = None + e43 = eko_factory.get({}) + assert e43.theory_card.order == (4, 3) + p43 = parts.evolve_configs(e43) + assert p43["matching_order"] == (3, 0) + # QCD@N3LO + QED@N2LO w/ matching_order + eko_factory.theory.matching_order = (3, 0) + e43b = eko_factory.get({}) + assert e43b.theory_card.order == (4, 3) + p43b = parts.evolve_configs(e43b) + assert p43b["matching_order"] == (3, 0)