Particle total width not printed in param_card.dat

Asked by Ankit Beniwal on 2020-09-08

Hi,

I compute the new particle width within MG5 by calling "set wh2 AUTO" where wh2 is the particle width (default = 1 GeV in model file). As a result, the decay width of the particle into SM and non-SM states are computed. However, the total width in my param_card.dat reads 1 GeV (default) rather than the computed width.

I suspect something odd is going on at the level of param_card.dat. The width is computed, but it is not written into the param_card.dat. Any ideas?

Cheers.

Question information

Language:
English Edit question
Status:
Solved
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Solved by:
Olivier Mattelaer
Solved:
2020-09-09
Last query:
2020-09-09
Last reply:
2020-09-09

Hi Ankit,

Which version of MG5aMC are you using (and which version of Python?)

Olivier

Ankit Beniwal (multiankit93) said : #2

Hi Olivier,

I'm using MG5_aMC@NLO 2.7.3 with Python 2.7.16.

Thanks!

If you do

import model XXXX
display parameter

you will see various category of parameter:

parameter type: ('external',)
parameter type: ()
parameter type: ('aEWM1',)
...

In which category is your width?
If it is not in ('external',) then it means that your UFO model indicates to MG5aMC that such parameter is fixed (or given by a formula) and it would explain what you see.

Cheers,

Olivier

> On 8 Sep 2020, at 18:40, Ankit Beniwal <email address hidden> wrote:
>
> Question #692810 on MadGraph5_aMC@NLO changed:
> https://answers.launchpad.net/mg5amcnlo/+question/692810
>
> Status: Needs information => Open
>
> Ankit Beniwal gave more information on the question:
> Hi Olivier,
>
> I'm using MG5_aMC@NLO 2.7.3 with Python 2.7.16.
>
> Thanks!
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Ankit Beniwal (multiankit93) said : #4

Hi Olivier,

This is what I have in my "parameters.py" UFO file (wh2 = new particle width):

wh2 = Parameter(name = 'wh2',
                 nature = 'external',
                 type = 'real',
                 value = 1,
                 texname = '\\text{wh2}',
                 lhablock = 'DECAY',
                 lhacode = [ 29 ])

After calling "set wh2 AUTO" in launch command, I see the following output:

DECAY 29 1.000000e+00 # fixed by the model
                   9.976446e-01 2 30 30 # 0.0527855290838
                  2.347083e-03 2 -15 15 # 0.000124184536075
                  8.308918e-06 2 -13 13 # 4.39626149599e-07
                  1.943422e-10 2 -11 11 # 1.02826753608e-11

Note that I'm loading a "restricted model" by calling "import model SM_with_pNG-DM-q_masses" where I have a restrict_q_masses.dat file in models/SM_with_pNG_DM/ directory. The problem doesn't appear if I don't use any restrictions.

It might be quicker if I can you in person @ CP3; I also have another question re: missing ET cut. I might try to find you tomorrow. :)

Cheers.

Ankit Beniwal (multiankit93) said : #5

Hi Oliver,

Thanks for seeing me in person today.

For testing purpose, my model is "SM_with_pNG_UFO" (available from model datasbase through "import model SM_with_pNG_UFO" command).

Let me know if you need more details.

Cheers.

So the issue is that the printg of the information was bugged and did not printed the warning associated to the change of the width:
So here is the patch that fixed the issue:

=== modified file 'models/check_param_card.py'
--- models/check_param_card.py 2019-03-14 22:11:02 +0000
+++ models/check_param_card.py 2020-09-09 14:37:36 +0000
@@ -1318,7 +1318,7 @@
                             logger.log(log,'For model consistency, update %s with id %s to value %s',
                                         (block, id, 1.0), '$MG:BOLD')
                         elif log:
- logger.log(log,'For model consistency, update %s with id %s to value %s',
+ logger.log(log,'For model consistency, update %s with id %s to value %s' %
                                         (block, id, 1.0))

Now if you do not want to restrict the width to a single value but still want to have the default value set to 1, then you can use this special value: 9.999999e-1 in the restriction_card.
I guess that for width it should be fine in general but using that value for mass/.... can obviously create issue.

Cheers,

Olivier

Ankit Beniwal (multiankit93) said : #7

Hi Olivier,

With the patch in models/check_param_card.py, I now get the desired warning message:

     WARNING: For model consistency, update decay with id [29] to value 1.0

Why should the width of h2 particle be set to its default value of 1.0? If h2 can decay, then MG5 should compute its width and set it in the DECAY block, no? Why is it setting it to 1.0 instead?

Cheers.

===========
For reference, I add my old error message (fixed now) below:

INFO: Update the dependent parameter of the param_card.dat
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 868, in emit
    msg = self.format(record)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 741, in format
    return fmt.format(record)
  File "/Users/ankitbeniwal/Documents/Projects/Interference/MG5_aMC_v2_7_3/madgraph/interface/coloring_logging.py", line 70, in format
    message = logging.Formatter.format(self, record)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 465, in format
    record.message = record.getMessage()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 329, in getMessage
    msg = msg % self.args
TypeError: not enough arguments for format string
Logged from file check_param_card.py, line 1322

Hi,

This is because you use a restriction_card.

The way restriction_card works (See MadGraph5 paper) is that all parameter set to 0 and 1 will be removed from the model and freeze to that value without the possibility of the user to modify them via the param_card.
So in general does are not written in the param_card anymore.
The exception to that rule is for mass/width since by convention all mass/width should be written within the param_card such that other code can use it.

Due to this constraint that all masses/widths should be written in the param_card, we have entry within the param_card which are not read by madgraph. This not only happens to parameter fixed due the the restriction_card but also for internal parameter of the model (like often the W mass).

For Madgraph, you can set any value that you ant for such parameter, we will never use them.
(so in your case any matrix-element will be evaluated with the unity width whatever value you set in the param_card).

In principle, this is the user responsibility to provide all those entries in a consistent way in case any other program (like a shower) run with such input. However in order to simplify the life of our user, we added at some point an automatic update of the param_card to check it and update any restricted/internal parameter to the value actually used by madgraph making the param_card automatically consistent with the model.
(Such check is however not always possible to perform and when we fail to do it, you have a warning)

In your case, you should ask yourself if you really want to use the restriction_card that you are using.
If you do not want to freeze the width to a fix value of 1, then do not do it and use another value in the restriction_card.

If you are a model builder and want to share your restriction_card and want to have a default value set to 1 when the user starts to edit the card, then you can use the special value in the restriction card that i mentioned before: 9.999999e-1.

Now I believe that it is possible to avoid the check of MG5aMC, in order to let MG5aMC runs with width set by the model (in this case his restriction) but still having in the card another value such that subsequent program like parton-shower will not get the value used by MG5aMC. If you are interested in that trick, I will double check how to do that.

Cheers,

Olivier

> On 9 Sep 2020, at 22:10, Ankit Beniwal <email address hidden> wrote:
>
> Question #692810 on MadGraph5_aMC@NLO changed:
> https://answers.launchpad.net/mg5amcnlo/+question/692810
>
> Ankit Beniwal posted a new comment:
> Hi Olivier,
>
> With the patch in models/check_param_card.py, I now get the desired
> warning message:
>
> WARNING: For model consistency, update decay with id [29] to value
> 1.0
>
> Why should the width of h2 particle be set to its default value of 1.0?
> If h2 can decay, then MG5 should compute its width and set it in the
> DECAY block, no? Why is it setting it to 1.0 instead?
>
> Cheers.
>
> ===========
> For reference, I add my old error message (fixed now) below:
>
> INFO: Update the dependent parameter of the param_card.dat
> Traceback (most recent call last):
> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 868, in emit
> msg = self.format(record)
> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 741, in format
> return fmt.format(record)
> File "/Users/ankitbeniwal/Documents/Projects/Interference/MG5_aMC_v2_7_3/madgraph/interface/coloring_logging.py", line 70, in format
> message = logging.Formatter.format(self, record)
> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 465, in format
> record.message = record.getMessage()
> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 329, in getMessage
> msg = msg % self.args
> TypeError: not enough arguments for format string
> Logged from file check_param_card.py, line 1322
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Ankit Beniwal (multiankit93) said : #9

Thanks Olivier Mattelaer, that solved my question.