MadSpin thinks "qcd<=2" is particle

Asked by Richard Ruiz

Hi Folks,

I have a strange MadSpin crash that might be a bug. I am generating ttbar@NLO and then decaying, but MadSpin crashes because it thinks "qcd<=2" in the proc_card is a particle. My release is 2.5.1. Details, including a solution (a hack really), are below.

Best,
Richard

1. The process is:
generate p p > t t~ QCD<=2 QED=0 [QCD]

2. For MadSpin I have:
define tt = t t~
define bb = b b~
define ww = w+ w-
define emu = e+ e- mu+ mu-
define vemu = ve ve~ vm vm~
define lj = emu vemu j

decay tt > ww bb, ww > lj lj

3. After MadSpin starts without a problem but then crashes when generating the square matrix element:

INFO: generating the production square matrix element
INFO: generate p p > t t~ QCD<=2 QED=0 --no_warning=duplicate;define pert_QCD = -5 -4 -3 -2 -1 1 2 3 4 5 21;add process p p > t t~ QCD<=2 pert_QCD QED=0 --no_warning=duplicate;
Command "launch " interrupted with error:
InvalidCmd : No particle qcd<=2 in model
Please report this bug on https://bugs.launchpad.net/mg5amcnlo
More information is found in '/.../run_01_debug.log'.
Please attach this file to your report.

4. The log file points the finger at " QCD<=2":
File "/.../madgraph/interface/madgraph_interface.py", line 4523, in extract_process
    raise self.InvalidCmd, "No particle %s in model" % part_name
InvalidCmd: No particle qcd<=2 in model

5. A quick hack is to modify the file "Cards/proc_card_mg5.dat" and change "QCD<=2" to "QCD=2". After this, everything runs smoothly. This is obviously problematic since MG yells "Interpreting 'QCD=2' as 'QCD<=2'", if you do not specify "<".

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#1

Thanks a lot.

I will include the patch in 2.5.2.

you will find it below:

Cheers,

Olivier

=== modified file 'MadSpin/decay.py'
--- MadSpin/decay.py 2016-08-26 13:55:42 +0000
+++ MadSpin/decay.py 2016-12-09 00:26:47 +0000
@@ -2707,16 +2707,20 @@
                     commandline += "define pert_%s = %s;" % (order, ' '.join(map(str,pert)) )

                     # check if we have to increase by one the born order
- if '%s=' % order in process:
+ if '%s=' % order in process or '%s<=' % order in process:
                         result=re.split(' ',process)
                         process=''
                         for r in result:
                             if '%s=' % order in r:
                                 ior=re.split('=',r)
- r='QCD=%i' % (int(ior[1])+1)
+ r='%s<=%i' % (order,int(ior[1])+1)
+ elif '%s<=' % order in r:
+ ior=re.split('=',r)
+ r='%s<=%i' % (order,int(ior[1])+1)
+
                             process=process+r+' '
                     #handle special tag $ | / @
- result = re.split('([/$@]|\w+=\w+)', process, 1)
+ result = re.split('([/$@]|\w+<?=\w+)', process, 1)
                     if len(result) ==3:
                         process, split, rest = result
                         commandline+="add process %s pert_%s %s%s %s --no_warning=duplicate;" % (process, order ,split, rest, proc_nb)
@@ -2809,16 +2813,20 @@
                         commandline += "define pert_%s = %s;" % (order, ' '.join(map(str,pert)) )

                         # check if we have to increase by one the born order
- if '%s=' % order in process:
+ if '%s=' % order in process or '%s<=' % order in process:
                             result=re.split(' ',process)
                             process=''
                             for r in result:
                                 if '%s=' % order in r:
                                     ior=re.split('=',r)
- r='QCD=%i' % (int(ior[1])+1)
+ r='%s=%i' % (order,int(ior[1])+1)
+ elif '%s<=' % order in r:
+ ior=re.split('=',r)
+ r='%s<=%i' % (order,int(ior[1])+1)
                                 process=process+r+' '
+
                         #handle special tag $ | / @
- result = re.split('([/$@]|\w+=\w+)', process, 1)
+ result = re.split('([/$@]|\w+<?=\w+)', process, 1)
                         if len(result) ==3:
                             process, split, rest = result
                             commandline+="add process %s pert_%s %s%s , %s %s --no_warning=duplicate;" % \

Can you help with this problem?

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

To post a message you must log in.