new Code in DHELAS

Asked by Adam Kaluza

Hello,

I'm using MadGraph-generated code for calculating matrix elements for different processes. Until now I used Version 1.5.3 and now I implemented code from the newer Version 1.5.11, which gives me totally different results. The difference occures in the subroutines in DHELAS (e.g. FFV2_3.f, VVS2_3.f, ...). Is there somewhere a documentation of this code or of the version changes?

If you need more specific information what I generated then please tell me!
Thank you in advace!

Best regards,
Adam

Question information

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

Hi Adam,

The routine present in DHELAS are inspire by the following paper: KEK-91-11
The code creating actually the DHELAS routine is ALOHA: ARXIV:1108.2041
That code have been improved and some of the change have been described in the following paper: arxiv:1308.1668

Otherwise all changes to ALOHA code are reported in the UpdateNote of MG5. This is the notes related to ALOHA between your two versions:

1.5.9: OM: Support of new UFO convention allowing to define custom propagator.
                      (Both in MG5 and ALOHA)
                  OM: Change ALOHA default propagator to have a specific expression for the
                      massless case allowing to speed up matrix element computation with
                      photon/gluon.
                  OM: Correct the default spin 3/2 propagator (wrong incoming/outcoming
                      definition)
1.5.8 (05/05/13) OM: Fix critical bug introduce in 1.5.0. ALOHA was wrongly written
                      HELAS routine for expression containing expression square.
                      (like P(-1,1)**2). None of the default model of MG5 (like sm/mssm)
                      have such type of expression. More information in bug report #1132996
                      (Thanks Gezim)
1.5.5: OM: Fixed Bug #1077877. Aloha crashing for pseudo-scalar, 3 bosons
                      interactions (introduces in 1.5.4)

1.5.4: OM: Fix a compilation crash due to aloha (thanks Tim T)

Now note that ALOHA doesn't have any fix convention on the meaning of FFV2_3 for two different model this function can have two different meaning,
so if your model change (or simply the way the code is written for a given model), the meaning of the function can change as well.

> If you need more specific information what I generated then please tell me!

That might be great to know
1) what is your process/ model/cuts/ parameters (i.e. everything I need to reproduce the problem)

2) What do you mean by totally different? Did you compute cross via MG5 and have two different results? or did you play with those files in a non automatic way?

Cheers,

Olivier

On Aug 26, 2013, at 11:21 AM, Adam Kaluza <email address hidden> wrote:

> New question #234650 on MadGraph5:
> https://answers.launchpad.net/madgraph5/+question/234650
>
> Hello,
>
> I'm using MadGraph-generated code for calculating matrix elements for different processes. Until now I used Version 1.5.3 and now I implemented code from the newer Version 1.5.11, which gives me totally different results. The difference occures in the subroutines in DHELAS (e.g. FFV2_3.f, VVS2_3.f, ...). Is there somewhere a documentation of this code or of the version changes?
>
> If you need more specific information what I generated then please tell me!
> Thank you in advace!
>
> Best regards,
> Adam
>
> --
> You received this question notification because you are a member of
> MadTeam, which is an answer contact for MadGraph5.

Revision history for this message
Adam Kaluza (adamkalu) said :
#2

Hi Olivier,

thank you very much so far! I will have a look into the papers.

The model I used is heft and the process:
p p > h , h > w+ w- > e+ ve mu- vm~

From my own code I have an adapter to use the MadGraph output as calculator for the matrixelement. So the parameters are the standard ones (the Higgs mass and width can I adjust via my code.) And there are no cuts applied. I deliver only the four momenta of the gluons, leptons and neutrinos and as output I get the matrixelement.

As example the different subroutines for FFV2_3: (diff -yw)

old new

C This File is Automatically generated by ALOHA C This File is Automatically generated by ALOHA
C The process calculated in this file is: C The process calculated in this file is:
C Gamma(3,2,-1)*ProjM(-1,1) C Gamma(3,2,-1)*ProjM(-1,1)
C C
      SUBROUTINE FFV2_3(F1, F2, COUP, M3, W3, V3) SUBROUTINE FFV2_3(F1, F2, COUP, M3, W3,V3)
      IMPLICIT NONE IMPLICIT NONE
      DOUBLE COMPLEX F1(*) | COMPLEX*16 CI
      DOUBLE COMPLEX F2(*) | PARAMETER (CI=(0D0,1D0))
      DOUBLE COMPLEX V3(*) | COMPLEX*16 DENOM
      DOUBLE COMPLEX COUP | COMPLEX*16 V3(6)
      DOUBLE COMPLEX DENOM | REAL*8 W3
      DOUBLE PRECISION M3, W3 | COMPLEX*16 TMP0
      DOUBLE COMPLEX OM3 | REAL*8 P3(0:3)
      DOUBLE PRECISION P3(0:3) | REAL*8 M3
             | COMPLEX*16 F1(*)
      V3(5)= -F1(5)+F2(5) | COMPLEX*16 F2(*)
      V3(6)= -F1(6)+F2(6) | REAL*8 OM3
      P3(0) = - DBLE(V3(5)) | COMPLEX*16 COUP
      P3(1) = - DBLE(V3(6)) <
      P3(2) = - DIMAG(V3(6)) <
      P3(3) = - DIMAG(V3(5)) <
      OM3 = 0D0 OM3 = 0D0
      IF (M3 .NE. 0D0) OM3=1D0/M3**2 IF (M3.NE.0D0) OM3=1D0/M3**2
             | V3(1) = +F1(1)+F2(1)
      DENOM =1D0/(( (M3*( -M3+(0, 1)*W3))+( (P3(0)**2)-(P3(1) | V3(2) = +F1(2)+F2(2)
     $ -(P3(2)**2)-(P3(3)**2)))) | P3(0) = -DBLE(V3(1))
      V3(1)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3( | P3(1) = -DBLE(V3(2))
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2) | P3(2) = -DIMAG(V3(2))
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)* | P3(3) = -DIMAG(V3(1))
     $ )*P3(0))+( (0, -1)*(F2(3)*F1(1))+(0, -1)*(F2(4)*F1(2)) | TMP0 = (F1(3)*(F2(5)*(P3(0)+P3(3))+F2(6)*(P3(1)+CI*(P3(
      V3(2)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3( | $ +F1(4)*(F2(5)*(P3(1)-CI*(P3(2)))+F2(6)*(P3(0)-P3(3))))
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2) | DENOM = COUP/(P3(0)**2-P3(1)**2-P3(2)**2-P3(3)**2 - M3
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)* | $ -CI* W3))
     $ )*P3(1))+( (0, 1)*(F2(4)*F1(1))+(0, 1)*(F2(3)*F1(2)))) | V3(3)= DENOM*-CI*(F2(5)*F1(3)+F2(6)*F1(4)-P3(0)*OM3*TMP
      V3(3)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3( | V3(4)= DENOM*-CI*(-F2(6)*F1(3)-F2(5)*F1(4)-P3(1)*OM3*TM
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2) | V3(5)= DENOM*-CI*(-CI*(F2(6)*F1(3))+CI*(F2(5)*F1(4))-P3
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)* | $ *TMP0)
     $ )*P3(2))+( -(F2(4)*F1(1))+(F2(3)*F1(2)))) | V3(6)= DENOM*-CI*(F2(6)*F1(4)-F2(5)*F1(3)-P3(3)*OM3*TMP
      V3(4)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3( <
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2) <
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)* <
     $ )*P3(3))+( (0, 1)*(F2(3)*F1(1))+(0, -1)*(F2(4)*F1(2))) <
      END END

Thank you!

Cheers,
Adam

Revision history for this message
Adam Kaluza (adamkalu) said :
#3

Sorry, the Code is displayed badly...

Old:

C This File is Automatically generated by ALOHA
C The process calculated in this file is:
C Gamma(3,2,-1)*ProjM(-1,1)
C
      SUBROUTINE FFV2_3(F1, F2, COUP, M3, W3, V3)
      IMPLICIT NONE
      DOUBLE COMPLEX F1(*)
      DOUBLE COMPLEX F2(*)
      DOUBLE COMPLEX V3(*)
      DOUBLE COMPLEX COUP
      DOUBLE COMPLEX DENOM
      DOUBLE PRECISION M3, W3
      DOUBLE COMPLEX OM3
      DOUBLE PRECISION P3(0:3)

      V3(5)= -F1(5)+F2(5)
      V3(6)= -F1(6)+F2(6)
      P3(0) = - DBLE(V3(5))
      P3(1) = - DBLE(V3(6))
      P3(2) = - DIMAG(V3(6))
      P3(3) = - DIMAG(V3(5))
      OM3 = 0D0
      IF (M3 .NE. 0D0) OM3=1D0/M3**2

      DENOM =1D0/(( (M3*( -M3+(0, 1)*W3))+( (P3(0)**2)-(P3(1)**2)
     $ -(P3(2)**2)-(P3(3)**2))))
      V3(1)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3(1)
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2)*( (F2(3)
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)*P3(3)))))
     $ )*P3(0))+( (0, -1)*(F2(3)*F1(1))+(0, -1)*(F2(4)*F1(2))))
      V3(2)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3(1)
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2)*( (F2(3)
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)*P3(3)))))
     $ )*P3(1))+( (0, 1)*(F2(4)*F1(1))+(0, 1)*(F2(3)*F1(2))))
      V3(3)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3(1)
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2)*( (F2(3)
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)*P3(3)))))
     $ )*P3(2))+( -(F2(4)*F1(1))+(F2(3)*F1(2))))
      V3(4)= COUP*DENOM*( (OM3*( (F1(1)*( (F2(4)*( (0, 1)*P3(1)
     $ -P3(2)))+(F2(3)*( (0, 1)*P3(0)+(0, 1)*P3(3)))))+(F1(2)*( (F2(3)
     $ *( (0, 1)*P3(1)+P3(2)))+(F2(4)*( (0, 1)*P3(0)+(0, -1)*P3(3)))))
     $ )*P3(3))+( (0, 1)*(F2(3)*F1(1))+(0, -1)*(F2(4)*F1(2))))
      END

new:

C This File is Automatically generated by ALOHA
C The process calculated in this file is:
C Gamma(3,2,-1)*ProjM(-1,1)
C
      SUBROUTINE FFV2_3(F1, F2, COUP, M3, W3,V3)
      IMPLICIT NONE
      COMPLEX*16 CI
      PARAMETER (CI=(0D0,1D0))
      COMPLEX*16 DENOM
      COMPLEX*16 V3(6)
      REAL*8 W3
      COMPLEX*16 TMP0
      REAL*8 P3(0:3)
      REAL*8 M3
      COMPLEX*16 F1(*)
      COMPLEX*16 F2(*)
      REAL*8 OM3
      COMPLEX*16 COUP
      OM3 = 0D0
      IF (M3.NE.0D0) OM3=1D0/M3**2
      V3(1) = +F1(1)+F2(1)
      V3(2) = +F1(2)+F2(2)
      P3(0) = -DBLE(V3(1))
      P3(1) = -DBLE(V3(2))
      P3(2) = -DIMAG(V3(2))
      P3(3) = -DIMAG(V3(1))

      TMP0 = (F1(3)*(F2(5)*(P3(0)+P3(3))+F2(6)*(P3(1)+CI*(P3(2))))
     $ +F1(4)*(F2(5)*(P3(1)-CI*(P3(2)))+F2(6)*(P3(0)-P3(3))))
      DENOM = COUP/(P3(0)**2-P3(1)**2-P3(2)**2-P3(3)**2 - M3 * (M3
     $ -CI* W3))
      V3(3)= DENOM*-CI*(F2(5)*F1(3)+F2(6)*F1(4)-P3(0)*OM3*TMP0)
      V3(4)= DENOM*-CI*(-F2(6)*F1(3)-F2(5)*F1(4)-P3(1)*OM3*TMP0)
      V3(5)= DENOM*-CI*(-CI*(F2(6)*F1(3))+CI*(F2(5)*F1(4))-P3(2)*OM3
     $ *TMP0)
      V3(6)= DENOM*-CI*(F2(6)*F1(4)-F2(5)*F1(3)-P3(3)*OM3*TMP0)

      END

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

Hi,

Yes all those changes are done on purpose.
1) the momenta are now the two first component (easier to handle for loop computation)
2) the convention for the momentum of fermion change
3) the expression is compute in a nicer way.

The point is that the matrix-element should be the same at the end. isn't it?

Revision history for this message
Adam Kaluza (adamkalu) said :
#5

Thank you for you help. The matrix elements are the same now (I found a small bug in the implementation).

Cheers,
Adam