Loop interference

Asked by Mathieu

Dear Madgraph developers,

I am trying to compute a pure QCD loop interfered with a pure EW diagram.
The process is:
u u~ > c c~

I tried:
generate u u~ > c c~ QCD=0 QED=2 [virt=QCD] QCD^2==4 QED^2==2
I would hope that this would take the QCD loop amplitude of order QCD=4 QED=0 and square it with the EW diagram of order QCD=0 and QED=2.
But this is not working.

If I do:
generate u u~ > c c~ [virt=QCD] QCD^2==4 QED^2==2,
I obtain the contributions I am looking for but with additional one not desired.
More precisely I do not want the EW Born with a QCD loop correction at the vertex squared with a QCD Born (or QCD Born with a QED loop correction at the vertex squared with a QCD Born).
In particular, in the set of contributions I obtain with the previous commands, box type diagrams with both EW and QCD propagators are missing.

Thus, is there a way then to specify which born diagram I can square with a given loop diagram?

Best regards,

Mathieu

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
Valentin Hirschi Edit question
Last query:
Last reply:
Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#1

Dear Mathieu,

Sorry for the late reply.
You original syntax doesn't work because if you restrict the amplitude order QCD=0 then it has precedence over the squared order constraint QCD^2==4 which cannot be achieved then. So your second syntax is correct then:

generate u u~ > c c~ [virt=QCD] QCD^2==4 QED^2==2

The reason why you don't have loops such as the box one with a gluon and a photon running in is because they are not QCD loop but mixed QCD-EW ones. In order to obtain those loops, you need to specify [virt=QCD QED] (i.e. QED actually includes the whole EW sector). When doing so MG5_aMC will automatically load a different UFO model (loop_qcd_qed_sm) which contains all the extra information needed to treat those loops.

Now, even once you have all these loop included, the squared order restriction ' QCD^2==4 QED^2==2' will do its job and include *all* squared contributions leading to that coupling order combination. This will includes those unwanted contributions you mentioned (i.e. EW vertex corrections, etc...).

If you want to cherry-pick individual squared terms, you will have to edit directly the fortran code 'loop_matrix.f' output by MadLoop. In your case however, it seems that you simply one to remove completely the contribution of certain loops.
This is actually quite simpler, and I advise you to have a look at the python function 'user_filter' in the MG5_aMC python source file madgraph/loop/loop_diagram_generation.py. I have put examples there, so that the user can easily build the filter he/she needs.
The simplest one being simply listing the diagram numbers you wish to keep (as they appear in the postscript generated with the command 'display diagrams'):

# Ex. 0: Chose a list of diagram numbers to keep, such as 2,3 and 43 for example.
            if i not in [2, 3, 43]:
                valid_diag = False

I hope this helps.

Revision history for this message
Mathieu (pellen) said :
#2

Dear Valentin,

thank you very much for your answer.

I am now using the command [virt=QCD QED].
This way I can check all EW contributions.
And indeed I obtain all the diagrams I want (both the pure EW correction and the QCD correction squared with the Born EW).

For the simple process I mentioned above, your filter is working perfectly.
Nonetheless for more complicated processes (with thousands loop diagrams), it becomes impossible to select diagrams by their number.
Indeed, they are not numbered by coupling order in the postscript.

Maybe it is possible to apply such a filter on the Born diagrams?
As there are around hundreds of them, it is possible to cherry-pick them by their number.
In this way, I could at least obtain the "pure" EW loops (i.e. not the pure QCD loop interfered with EW Born).

Ideally, I would select in the filter the loop diagrams based on their oder (EW/QCD).
But I do not know if this is possible?

Cheers,
Mathieu

Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#3

You can get a dictionary providing the list of coupling order building the loop (i.e. excluding the ones building the tree-branches attached to the loop) with the following inside the user_filter function:

                loop_orders=diag.get_loop_orders(model)

Can you help with this problem?

Provide an answer of your own, or ask Mathieu for more information if necessary.

To post a message you must log in.