cross-section highly dependent on convention for PDG particle code --fixed

Bug #921487 reported by Ben O'Leary
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MadGraph5_aMC@NLO
Fix Released
Low
Olivier Mattelaer

Bug Description

In the context of extended models with charged particles where one has to decide whether the particle with a negative electric charge gets a positive PDG code (like a tau') or a negative code (like another generation of chargino), or in the context of the MSSM without R-parity, where the 4th & 5th generations have the other sign for their code compared to the 1st 3 generations, it is very important that the cross-section does not depend on which way around the PDG code is chosen.

MadGraph 5 (v1.3.30, at least) does not work properly in this context.

The easiest way to show this is to do the following:
1) in MG5, do:
import model mssm -modelname
generate e+ e- > x1+ x1-
output defaultMssmElectronPositronToCharginoPair
exit
2) go to the mssm directory in MadGraph5_v1_3_30/models/ & delete all the .pyo files.
3) in that directory, edit particles.py by putting a '-' before "1000024" so that now the positive chargino has PDG code -1000024.
4) in MG5, do:
import model mssm -modelname
generate e+ e- > x1+ x1-
output signSwappedElectronPositronToCharginoPair
exit
5) copy an SLHA SPS1a spectrum to param_card.dat in both versions, & edit run_card.dat to make an ILC-like run, by changing lpp1 & lpp2 to 0 (so that MG doesn't look for the electron components of protons), & ebeam1 & ebeam2 to 500 each rather than the default 7000, & also reduce nevents to 1000 rather than the default 10000 just to save a bit of time.
6) in defaultMssmElectronPositronToCharginoPair/, do ./bin/survey, ./bin/refine, & then ./bin/generate_events
7) repeat step 6 in signSwappedElectronPositronToCharginoPair/
8) marvel at how the default-sign version gives a cross-section of 0.14458 pb while merely swapping the sign of the PDG code gives 0.93335 pb.
9) check that the Feynman diagrams are really the same, noting that it's just which particle MG labelled as 3 or 4, & which way the arrows are pointing on the fermion lines.

Since the UFO format cares about the PDG *only* to the extent that it is referred to as an index for the SLHA MASS block in parameters.py, the problem seems to be the way MG deals with fermion flow. I have read up on how it is described in section 2.2 of JHEP 1106(2011)128, and as far as I can see, the alogrithm _should_ work & give the same result either way. however, it obviously does not. the error on the cross-sections that MG quotes is about 0.3%. the contribution from each of the 3 diagrams is roughly the same, just each diagram produces ~6.5 more cross-section when the sign of the PDG code is swapped (not exactly the same factor, but I could believe that the differences are statistical), hence swapping the sign of the PDG code seems to generate ~6.5 times more cross-section per diagram, so maybe it's a normalization issue? one can check that the generated HELAS code really is different, but as far as I can tell it should be different, since it is working with the fermion-flow-conjugated vertices, though it should still produce exactly the same results for each case.

Happy hunting,
Ben

Revision history for this message
Ben O'Leary (ben-oleary) wrote :

Well, since nobody form the MadGraph team seems to be working on this, I'll just post a little more information that I have gathered about this bug:

1) Um, I wasn't really thinking when I made the statement about "the contribution from each of the 3 diagrams", since there are clearly interference terms.

2) The interference terms seem to be the crucial part, since apparently the results are the same if one only considers one diagram at a time:
"generate e+ e- > a > x1+ x1- @1
add process e+ e- > z > x1+ x1- @2
add process e+ e- > x1+ x1- / a z @3

the results for each individual process is the same with or without the minus sign." (thanks to Florian Bonnet)

3) It may be that the problem is MG getting the helicities wrong inconsistently, because one can take just coherent sum of the photon & Z diagrams, & then the result does not depend on which sign of code the chargino has; however, in these diagrams, there are no clashing arrows of fermion flow.

4) Certainly one cannot state that it's just the result of a perverse choice of sign of code: if the down-antidown annihilation to charginos is correct, then the up-antiup equivalent has the problem, & vice-versa.

Maybe a little update from the MG team about the status of this bug would be appreciated? It's a rather serious issue: I'd like to be sure that all my cross-sections are not wrong by a factor of 6, & it has been almost a week since I reported this bug...

Thank you,
Ben

Revision history for this message
Ben O'Leary (ben-oleary) wrote :

more in-depth, thanks to Florian Staub:

The result for a "diff -rq" between both created directory (for a
positive and negative PDG of the chargino) looks like:

============
....
Files dir_run_check_SA_posPDG//Source/DHELAS/aloha_file.inc and
dir_run_check_SA_negPDG//Source/DHELAS/aloha_file.inc differ
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_0.f
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_2_0.f
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_2_3.f
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_3.f
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS2C1_0.f
Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS2C1_3.f
Files dir_run_check_SA_posPDG//SubProcesses/P0_ddx_x2mx2p/configs.inc
and dir_run_check_SA_negPDG//SubProcesses/P0_ddx_x2mx2p/configs.inc
differ
....
============

So, it seems at first glance that Madgraph generates helicity
amplitudes for the conjugated vertex. But, a comparison between
FFS1C1_0.f and FFS1_0.f leads to

=====
< SUBROUTINE FFS1C1_0(F1,F2,S3,COUP,VERTEX)
---
> SUBROUTINE FFS1_0(F1,F2,S3,COUP,VERTEX)
====

So, it's just a renaming of the routines. In that way everything would
be fine, if Madgraph would use always FFS1C1_0 and FFS1_0 and do no
other changes. However, comparing the two files for the matrix
elements (matrix.f), we see

==================
273,274c276,278
< CALL FFS1_2_0(W(1,3),W(1,2),W(1,10),GC_3554,GC_3555,AMP(6))
< CALL FFS1_2_3(W(1,1),W(1,4),GC_2344,GC_2345,MSU2, WSU2, W(1,11))
---
> CALL FFS1C1_2_0(W(1,12),W(1,2),W(1,11),GC_3554,GC_3555,AMP(6))
> CALL FFS1C1_2_3(W(1,3),W(1,10),GC_2344,GC_2345,MSU2, WSU2, W(1
> $ ,13))
276,277c280,282
===================

So, it uses the same expressions for the vertices (GC_3554, ...) in
the amplitudes, but combines them with different W functions (momenta?). It might (?)
by possible to recover the same result, if also the hermitian
conjugated of the vertex is used (i.e. interchanging e.g. GC_3554 <=>
GC_2345 and adding a complex conjugation, or something like that).

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Ben,

Many thanks for your report. We wanted to investigate this thoroughly before responding.
The reason for the problem is the precise manner that MadGraph treats fermion flow clashes, which was adapted to the UFO model standard from FeynRules - in particular, an anti-fermion (as defined by negative PDG code), always comes before a fermion in an interaction without fermion flow clash. If you reverse the order, the charge-conjugate vertex needs to be used.

A fixed version is under review in a separate MG branch (you can test that branch using Bazaar), but we need to make absolutely sure it doesn't affect any existing models before releasing it.

All the best,
Johan

Changed in madgraph5:
importance: Undecided → Low
status: New → Fix Committed
assignee: nobody → Olivier Mattelaer (olivier-mattelaer)
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote : Re: [Bug 921487] Re: cross-section highly dependent on convention for PDG particle code
Download full text (6.4 KiB)

Hi,

In fact, both Johan and I have created a fix for this problem.
So if you need this fix urgently you can use the current beta version:
lp:~maddevelopers/madgraph5/fix_fermion_order_interaction

(which is the Johan version).
Tommorow, I'll run an extensive test on that branch. to ensure that
this fix didn't breaks anything else.
If it passes, I will merge with my fix (which didn't cover all the
case, but avoid to use special routines in most of the case).

At that time, we will push that version as public.

So sorry to not have put any update on this topic, but behind the
scene, the work was done.

Cheers,

Olivier

On 31-janv.-12, at 04:32, Ben O'Leary wrote:

> more in-depth, thanks to Florian Staub:
>
> The result for a "diff -rq" between both created directory (for a
> positive and negative PDG of the chargino) looks like:
>
> ============
> ....
> Files dir_run_check_SA_posPDG//Source/DHELAS/aloha_file.inc and
> dir_run_check_SA_negPDG//Source/DHELAS/aloha_file.inc differ
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_0.f
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_2_0.f
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_2_3.f
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS1C1_3.f
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS2C1_0.f
> Only in dir_run_check_SA_negPDG//Source/DHELAS: FFS2C1_3.f
> Files dir_run_check_SA_posPDG//SubProcesses/P0_ddx_x2mx2p/configs.inc
> and dir_run_check_SA_negPDG//SubProcesses/P0_ddx_x2mx2p/configs.inc
> differ
> ....
> ============
>
> So, it seems at first glance that Madgraph generates helicity
> amplitudes for the conjugated vertex. But, a comparison between
> FFS1C1_0.f and FFS1_0.f leads to
>
>
> =====
> < SUBROUTINE FFS1C1_0(F1,F2,S3,COUP,VERTEX)
> ---
>> SUBROUTINE FFS1_0(F1,F2,S3,COUP,VERTEX)
> ====
>
> So, it's just a renaming of the routines. In that way everything would
> be fine, if Madgraph would use always FFS1C1_0 and FFS1_0 and do no
> other changes. However, comparing the two files for the matrix
> elements (matrix.f), we see
>
> ==================
> 273,274c276,278
> < CALL FFS1_2_0(W(1,3),W(1,2),W(1,10),GC_3554,GC_3555,AMP(6))
> < CALL FFS1_2_3(W(1,1),W(1,4),GC_2344,GC_2345,MSU2, WSU2,
> W(1,11))
> ---
>> CALL FFS1C1_2_0(W(1,12),W(1,2),W(1,11),GC_3554,GC_3555,AMP(6))
>> CALL FFS1C1_2_3(W(1,3),W(1,10),GC_2344,GC_2345,MSU2, WSU2, W(1
>> $ ,13))
> 276,277c280,282
> ===================
>
> So, it uses the same expressions for the vertices (GC_3554, ...) in
> the amplitudes, but combines them with different W functions
> (momenta?). It might (?)
> by possible to recover the same result, if also the hermitian
> conjugated of the vertex is used (i.e. interchanging e.g. GC_3554 <=>
> GC_2345 and adding a complex conjugation, or something like that).
>
> --
> You received this bug notification because you are a member of
> MadTeam,
> which is the registrant for MadGraph5.
> https://bugs.launchpad.net/bugs/921487
>
> Title:
> cross-section highly dependent on convention for PDG particle code
>
> Status in The MadGraph Matrix Element Generator version 5:
> New
>
> Bug description:
>
> In the conte...

Read more...

Revision history for this message
Ben O'Leary (ben-oleary) wrote : Re: cross-section highly dependent on convention for PDG particle code

I apologize about being impatient - I was just expecting a "bug reproduced & confirmed" or something, or that the website would say that it had been assigned to someone. I am grateful that this bug has been fixed. Thank you!

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Ben,

This bug (or convention dependence, if you wish) will be fixed in MG5 v. 1.4.2, which should be released within 24 h or so. Many thanks for your bug report.

All the best,
Johan

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

Hello Ben,

I just release 1.4.2 which contains the fix to this problem.
Sorry for the delay, with try multiple wrong directions for fixing this bug.

Cheers,

Olivier

Changed in madgraph5:
status: Fix Committed → Fix Released
summary: cross-section highly dependent on convention for PDG particle code
+ --fixed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.