aMCatNLOError : Poles do not cancel, run cannot continue

Created by marco zaro on
pole check
Last updated by:
Valentin Hirschi on

For some processes it can happen that the error
"aMCatNLOError : Poles do not cancel, run cannot continue"
is raised after compilation.
This should happen only if at the process generation time the warning
"WARNING: Some loop diagrams contributing to this process are discarded because they are not pure (QCD)-perturbation.
Make sure you did not want to include them."
is printed on screen.

What happens is that for these kind of processes the loops with non-QCD particles (W/Z/photons/higgs/...) in the loops are discarded.

One example is the case of pentagons (gluon exchange between the two quark lines) in vector-boson fusion.

These diagrams are often 0 for color conservation. In the case of VBF-like processes the non-vanishing diagrams are known to give a very little (<1%) contribution to the cross-section.

In some cases, however, they do not vanish.

With the current version of MG5_aMC@NLO one can continue the run disabling the poles check by editing the
file and setting
to -1d0

The next version capable of handling mixed QCD-EW expansion will allow the user to include also such diagrams.


Alternatively, versions 2.x can also handle those pentagon loop within a regular [QCD] computations since they are UV and IR finite and do not require any R2 counterterm. As a result, one can simply enable those loops in MadLoop when performing such VBF computation (and only then).
The instructions below recap the above and explain how to alternatively enable those loops:


1) These pentagon loops are color suppressed and most importantly kinematically suppressed since the gluon connects to quark lines travelling in opposite directions.
It has been checked that their contribution is negligible for most intended purposes and you can neglect their finite part (while still pretending to keep their IR poles so as to insure pole cancellation).
This, in practice, means that you can do the computation exactly as you intended to perform it, but simply disabling the Pole check.
You can do so by modifying the following entry in the file 'FKS_params.dat' in the 'Cards' directory of your process:




And then launch your process again.


2) You can also decide that you want to compute these contributions and
MadLoop can do that, but you have to tweak the code a bit so that the
missing pentagons are not filtered away. Here is how you can do so:

You will need to edit the file 'madgraph/loop/' around
line 515 and change the following line:

            if (diag.get_loop_line_types()-set(allowedpart))!=set() or \

--> to

            if (diag.get_loop_line_types()-set(allowedpart))!=set() or \

and then in the function 'def user_filter(self, model, structs,
filter=None):' around line 377, you can change the following line:

        edit_filter_manually = False


        edit_filter_manually = True

Finally add the following filter under the ' for diag in
self['loop_diagrams']:' do-loop in this 'user_filter' function (next to
the other commented examples):

             # Select only the pentagon QCD correction to the VBF, and kick out the other genuine EW corrections.
            if any(abs(pdg) in [22,23,24,25] for pdg in diag.get_loop_lines_pdgs()) and len(diag.get_loop_lines_pdgs())!=5:
                valid_diag = False

You should then be able to run your process:

MG5_aMC> set gauge Feynman
MG5_aMC> import model loop_sm
MG5_aMC> generate p p > h j j [QCD]

You should see the following warning now as well:

    The user-defined loop diagrams filter is turned on and discarded 24 loops

And when looking at the diagrams generated (either in the process output
or with the command 'display diagrams' [warning: it will display
diagrams for all channels]) you will see that the pentagon loops are

The IR pole cancellation should then be successful in this case.
Let me know if you try this and it works for you.

PS: In general, for loops with EW boson running in, the default 'model loop_sm' will not provide a correct result, and you need to load the model 'loop_qcd_qed_sm' to compute them correctly.
However, for this specific case of the pentagons, it will also be correct when computed in the 'loop_sm' model because these loops are UV-finite and do no receive any so-called R2 contributions.