From 9fec448144532881220e9004191ba12f06f3c784 Mon Sep 17 00:00:00 2001 From: Josh Davies Date: Tue, 20 Jan 2026 12:43:13 +0000 Subject: [PATCH] feat(grcc): allow 2-pt vertex insertions when "NoSigma" --- sources/grcc.cc | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/sources/grcc.cc b/sources/grcc.cc index 4d7669a3..ee8b8c5a 100644 --- a/sources/grcc.cc +++ b/sources/grcc.cc @@ -7197,12 +7197,33 @@ Bool EGraph::optQGrafM(Options *opt) extk = 1; } if ( momj == momk) { + // We have a pair of lines with equal momenta. Determine if they have a + // common two-point vertex. We want to keep this type of "insertion" when + // in GRCC_QGRAF_OPT_NOSIGMA mode. + int commonNode = -1; + bool common2PtVtx = False; + if (econn->cedges[j].nodes[0] == econn->cedges[k].nodes[0]) + commonNode = econn->cedges[j].nodes[0]; + else if (econn->cedges[j].nodes[0] == econn->cedges[k].nodes[1]) + commonNode = econn->cedges[j].nodes[0]; + else if (econn->cedges[j].nodes[1] == econn->cedges[k].nodes[0]) + commonNode = econn->cedges[j].nodes[1]; + else if (econn->cedges[j].nodes[1] == econn->cedges[k].nodes[1]) + commonNode = econn->cedges[j].nodes[1]; + if (commonNode != -1) { + if (nodes[commonNode]->deg == 2) { + common2PtVtx = True; + } + } + if (nExtern == 2) { - if (extj + extk != 2) { + if (extj + extk != 2 && common2PtVtx == False) { ok = False; } } else { - ok = False; + if (common2PtVtx == False) { + ok = False; + } } } }