Exclude syntax could work better (i.e. generate relic / X)

Asked by Andreas


I am trying to calculate the velocity averaged cross-section of DM annihilation. I would like to split this calculation by final state, to see what the individual contributions are. As an example let's say I want annihilation into everything except bbar.

Naively, one would expect this to be possible by calling "generate relic / b b~". Unfortunately, this does not work. The reason it does not work is the way madgraph is called in the generate_relic function in maddm_interface.py:

        if excluded_particles:
            proc = "dm_particles dm_particles > fs_particles fs_particles / %s %s @DM2SM" \
                    % (' '.join(excluded_particles), coupling)

Since the b quarks are part of fs_particles as well as excluded_particles, the slash notation to exclude b quarks is simply ignored by madgraph. E.g. "generate dm dm > b b~ / b b~" does give diagrams (Why MG decides to handle it like that is another question...)

A simple solution to this would be to simply kick the excluded particles out of the fs_particles group, as demonstrated here: https://gist.github.com/AndreasAlbert/91506ee6392b63ba9b395d23a7429020.

I think this would be a useful addition/fix of functionality to include in MadDM.



Question information

English Edit question
MadDM Edit question
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :


The reason for madgraph to handle it like it is. For which reason a user would do that if the idea is to have 0 matrix element generated. So what that syntax does is forbids that particle to appear as a propagator. (which is a dangerous syntax but ok).

For this kind of advance change, I was more thinking that the user should bypass the use of "generate relic"
and do it manually via
define fs = p / g b b~
generate dm dm > fs fs @DM2SM

But you are probably right. I will cross-check the documentation and discuss with other dev and more than likely implement something in those lines.



Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :

Hi Andreas,

We discuss today and decide that it was better to keep the current behaviour.
You can obviously patch the code yourself or use the syntax that I was proposing in the above post.



Can you help with this problem?

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

To post a message you must log in.