Repository navigation
ALOHA: sort the tag in combine_name so Majorana MadLoop output links - #120
Merged
Merged
Conversation
oliviermattelaer
force-pushed
the
claude/mg5-bug-2159043-assessment-d135ae
branch
from
September 10, 2026 08:01
0a17b3f to
2bebe13
Compare
fa710f7 added tag.sort() to get_routine_name, so ALOHA now writes a loop wavefunction that also carries a conjugation flag as FFS4C1L3_2.f. combine_name, which builds the corresponding CALL, was not given the same normalisation and still emits CALL FFS4L3C1_2, in the order the caller happened to assemble the flags (helas_call_writers inserts the loop tag at the front of the conjugation tags). Every Majorana loop line therefore calls a routine no file defines, and MadLoop output fails at link time: ld: symbol(s) not found for architecture arm64 "_mp_ffs4l3c1_2_", referenced from: _ml5_0_mp_coef_construction_1_ Nothing in the SM or EW test surface puts a conjugation flag on a loop line, so the default suites stayed green while all gluino and neutralino NLO output was broken. Sort the tag in combine_name as well, keeping fa710f7 intact. With this, tests/parallel_tests/test_ML5MSSMQCD passes against the stored hard-coded references for g g > go go, u u~ > go go, g g > go go g, u u~ > go go g, g g > t1 t1~ g and g g > n1 n1; two of those are bypassed by default on recorded runtime and need -t to actually run. The MadLoop and FKS IOTest golden groups are unaffected. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
oliviermattelaer
force-pushed
the
claude/mg5-bug-2159043-assessment-d135ae
branch
from
September 10, 2026 09:04
2bebe13 to
795c9f3
Compare
Contributor
Author
|
Scope changed: the LP#2159043 loop-wavefunction fix has been moved to mg5amcnlo/mg5amcnlo#414, targeting This PR now carries only the ALOHA Rebased onto current |
oliviermattelaer
deleted the
claude/mg5-bug-2159043-assessment-d135ae
branch
September 10, 2026 10:01
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.
fa710f7ad("fixing some MSSM flavor merging issue") addedtag.sort()toaloha/aloha_writers.py :: get_routine_name, so ALOHA now writes a loop wavefunction that also carries a conjugation flag asFFS4C1L3_2.f.combine_name, which builds the corresponding CALL, was not given the same normalisation and still emitsCALL FFS4L3C1_2, in the order the caller assembled the flags —helas_call_writersinserts the loop tag in front of the conjugation tags.Every Majorana loop line therefore calls a routine no file defines, and MadLoop output fails at link time:
Nothing in the SM or EW test surface puts a conjugation flag on a loop line, so the default suites stayed green while all gluino and neutralino NLO output was broken.
Why sort rather than revert
06e163cb0(2013, "a small fix for calling the conjugated loop helas function, which will appear in process with majorana fermions") deliberately changedflag.append("L")toflag.insert(0,"L"): the L-before-C order at the call site was intentional and matched what ALOHA wrote when nothing sorted.fa710f7adreordered the routine name from the other side and silently broke that.Reverting
tag.sort()also makes the tests pass, but presumably re-breaks the flavour merging it was added for. Sorting both sides retires the order-sensitivity instead of re-pinning it.Not the same as 3a3e2c4
3a3e2c4a4("ALOHA: route the FLV flag through 'tags' for amplitudes in the cross-base name"), already on main, fixes the same class of bug in the same function — call site names a routine ALOHA did not write — but a different aspect: which placeholder carries the FLVMflag (%(propa)svs%(tags)s) in the cross-base scheme. That flag never enters thetaglist; it arrives through the format placeholders, and both naming schemes jointagbefore appending them. Disjoint statements, disjoint data. The link failure above reproduces on a pristinemainthat already contains3a3e2c4a4.MadGraph7 only
fa710f7adis not onmg5/3.8.0—get_routine_namethere has no sort — so this fix must not be ported upstream: it would make the call side sort while the routine side does not, which is how you would introduce the mismatch. Confirmed empirically: the MSSM MadLoop comparisons link and pass on 3.8.0 with no change tocombine_name.Tests
./tests/test_manager.py -p U loopstandalone_cppnaming, identical on an untouched treeLoopSquaredOrder_IOTestshort_ML_SMQCD_default/_optimizedlong_ML_SMQCD_default/_optimizedshort_ML_SMQCD_LoopInducedIOExportFKSTesttest_short_mssm_vs_stored_HCR_gg_gogo_QCDtest_long_mssm_vs_stored_HCR_gg_gogog_QCDtest_long_mssm_vs_stored_HCR_uux_gogog_QCD,gg_t1t1xg,gg_n1n1,uux_gogoNote
combine_nameis also called from the ALOHA writer side with the routine's own tag (aloha_writers.py:1329,2400,3114), and that same list is read a few lines later fordata['addon'] = ''.join(self.tag). Sorting in place therefore reorders it — the goldens above cover that path and are unchanged, because those tags already arrive sorted. The function already mutatedtagin place via the propagator shuffle, so this is not a new class of side effect.Related
The loop-wavefunction mother corruption originally in this PR (LP#2159043) is an upstream bug present in 3.8.0 verbatim, and has moved to mg5amcnlo/mg5amcnlo#414.
🤖 Generated with Claude Code