how to do crossing

Asked by ninh

Hello,
consider this process u d~ -> u~ d g, whose amplitude is A1.
The crossed process u g -> u~ d d has amplitude A2. How can I get A2 from A1?
I do not want to generate another code for A2, because A2 can be related to A1 via crossing and
A1 can be easier to optimize than A2 (because of the different particle order ...).
I am using MG4 standalone version to generate amplitude expressions.
Thanks, Duc Ninh LE.

Question information

Language:
English Edit question
Status:
Solved
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Solved by:
ninh
Solved:
Last query:
Last reply:

This question was reopened

  • by ninh
Revision history for this message
Johan Alwall (johan-alwall) said :
#1

Hello Duc,

If you want to cross an amplitude, you can just change the momentum numbers in the external wavefunctions (P(0,N) in matrix.f:

      CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))
      CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))
      CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))
      CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4))
      CALL VXXXXX(P(0,5),ZERO,NHEL(5),+1*IC(5),W(1,5))

Note however that you might need to change the denominator factor IDEN (which gives the spin and color averaging of initial states as well as the symmetry factor for identical final states).

Also note that you specify processes using incoming and outgoing particles. So the two processes you refer to are
u d~ -> u d~ g
and
u g -> u d~ d

All the best,
Johan

Revision history for this message
ninh (leducninh) said :
#2

Dear Johan,
thanks a lot for your answer. It seems for me that your answer is not complete. For example, from the process u d~ -> u d~ g,
and i want to cross to u u~ -> d d~ g, i have to change the momentum number as you said, BUT in addition i have to change also the sign of IC(2), IC(3), NHEL(2) and NHEL(3).

Yes, a possible change in the averaging and symmetry factor is obvious.

Is there a manual where this kind of topic is discussed? I am new to MadGraph. I like the structure of the amplitude output since it is easy to combine many subprocesses and do further optimization.
Best regards, Ninh.

Revision history for this message
Johan Alwall (johan-alwall) said :
#3

That is correct, you also need to change sign for IC(2) and IC(3). Regarding NHEL, they are related to the particles (as you see if you cross a process with a W boson in it), so they should not be changed when you cross the process. I would recommend to compare with the directly generated process in order to make sure the crossing is done correctly. Note however that the optimizations that are already implemented in the MadEvent output of MadGraph 5 are quite extensive (you can read about some of them in the MadGraph 5 release paper), and unless you have very particular requirements, further optimizations such as using crossing are typically not necessary.

Regarding a manual, there are unlimited number of possible issues that could be discussed and it is difficult to guess everything that users need, so we prefer to use this forum (and the MadGraph wiki) as an interactive "manual", and use inline help, README files and the MG5 built-in tutorial to help people get started. So thank you for contributing your questions!

All the best,
Johan

Revision history for this message
ninh (leducninh) said :
#4

Hello,
yes, i have compare the crossed amplitudes with the ones directly generated by MadGraph. By doing this i realize that the sign of NHEL must also be changed. Of course, if you sum over all helicity configurations then that change is not needed. It is easy to see this point by considering the process u u -> d d g w+ w+. Each diagram contains 2 quark lines with 1 w+ attached to each. Thus, the helicity of the quarks are /u, u, d, d/ = /-1,-1,-1,-1/ (-1 for particle, +1 for antiparticle). We now cross to u d~ -> u~ d g w+ w+, the non-vanishing helicity configuration is /-1, 1,1,-1/; hence a change in sign.

As for optimization, what i have in mind is that, consider the above process with the leptonic decays of w, there is a sum over the 2 helicity states of the gluon. Through this sum, all the wavefuntions remain unchanged (hence can be reused) except the gluon wavefunction. A particular feature of MadGraph4 (still true for version 5?) is that EVERY diagram is calculated in the form
Amp = W(6)*Rest.
In more detail:
      CALL JIOXXX(W(1,7 ),W(1,8 ),GWF ,WMASS ,WWIDTH ,W(1,9 ))
      CALL FVOXXX(W(1,2 ),W(1,9 ),GWF ,ZERO ,ZERO ,W(1,10 ))
      CALL JIOXXX(W(1,3 ),W(1,10 ),GG ,ZERO ,ZERO ,W(1,11 ))
      CALL FVIXXX(W(1,4 ),W(1,11 ),GG ,ZERO ,ZERO ,W(1,12 ))
      CALL JIOXXX(W(1,12 ),W(1,1 ),GWF ,WMASS ,WWIDTH ,W(1,13 ))
X CALL IOVXXX(W(1,5 ),W(1,6 ),W(1,13 ),GWF ,AMP(1 ))
      CALL FVIXXX(W(1,3 ),W(1,9 ),GWF ,ZERO ,ZERO ,W(1,14 ))
      CALL JIOXXX(W(1,14 ),W(1,2 ),GG ,ZERO ,ZERO ,W(1,15 ))
      CALL FVIXXX(W(1,4 ),W(1,15 ),GG ,ZERO ,ZERO ,W(1,16 ))
      CALL JIOXXX(W(1,16 ),W(1,1 ),GWF ,WMASS ,WWIDTH ,W(1,17 ))
X CALL IOVXXX(W(1,5 ),W(1,6 ),W(1,17 ),GWF ,AMP(2 ))
      CALL FVOXXX(W(1,1 ),W(1,9 ),GWF ,ZERO ,ZERO ,W(1,18 ))
      CALL JIOXXX(W(1,4 ),W(1,18 ),GG ,ZERO ,ZERO ,W(1,19 ))
      CALL FVIXXX(W(1,3 ),W(1,19 ),GG ,ZERO ,ZERO ,W(1,20 ))
      CALL JIOXXX(W(1,20 ),W(1,2 ),GWF ,WMASS ,WWIDTH ,W(1,21 ))
X CALL IOVXXX(W(1,5 ),W(1,6 ),W(1,21 ),GWF ,AMP(3 ))

watch the lines begin with X, all contain W(1,6)!

This means that if i put the gluon in the position 6th, then the helicity sum can be optimized (the factor Rest is reused).
From this example i see that it would be very nice if there is an option to change the output form, e.g. to write the above amplitude alternatively in the form:
Amp = W(1)*Rest
(i.e. all the above X-marked lines contain W(1,1) ).
I wonder if this kind of optimization in the helicity sum is done in MadGraph 5 ?

Your answer helps me to understand MadGraph. Thank you for making this wonderful tool!
Ninh.

Revision history for this message
Johan Alwall (johan-alwall) said :
#5

Dear Ninh,

Thanks for your reply. As usual, you are right. Very good.

Just one comment: The diagram generation algorithm is completely replaced in MG5, which also yields different HELAS calls (in fact, considerably more optimized, as discussed in the MG5 release paper). So I don't think there would be any such "special wavefunction" in MG5.

All the best,
Johan

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

Hi Johan, Ninh,

In fact Ninh is correct, they are one additional optimization that we can do for the matrix element.
We were discussing this with Valentin in fact.

The point is that for the moment we do an explicit sum over the polarization.
But in principle if we unfold this sum, we can have a more efficient recycling between the different helicity.

In practice, this is efficient only if most of the helicity are contributing and if we don't monte-carlo over the helicity…
Indeed at current stage we never compute (after the first 100 phase-space points) the helicity configuration which are always zero.
But with such optimization this is just impossible (as well as the monte-carlo over the helicity)

So applying such optimization does not guarantee to have a significant gain at the end.

Cheers,

Olivier

On Jul 30, 2012, at 4:31 AM, Johan Alwall wrote:

> Question #204343 on MadGraph5 changed:
> https://answers.launchpad.net/madgraph5/+question/204343
>
> Johan Alwall posted a new comment:
> Dear Ninh,
>
> Thanks for your reply. As usual, you are right. Very good.
>
> Just one comment: The diagram generation algorithm is completely
> replaced in MG5, which also yields different HELAS calls (in fact,
> considerably more optimized, as discussed in the MG5 release paper). So
> I don't think there would be any such "special wavefunction" in MG5.
>
> All the best,
> Johan
>
> --
> You received this question notification because you are a member of
> MadTeam, which is an answer contact for MadGraph5.

Revision history for this message
ninh (leducninh) said :
#7

Dear Olivier, Johan,
i am glad that there is some mind overlap here! So, let me share with you what i am doing with the amplitude output of MadGraph 4. Consider this process
p p -> j j g w+ w+, with leptonic decays.
The list of subprocesses includes (with w+ w+ removed for simplicity):
C Crossing 1: u d~ -> u~ d g (16 diagrams)
C Crossing 2: u d~ -> c~ s g (8 diagrams)
... and many others. I want to sum over helicities and over all subprocesses. The helicity sum is optimized as above explained. The subprocess sum can be also optimized by observing that the Crossing 1 includes all the diagrams of Crossing 2. The only difference is the color matrix. Thus, in practice, the Crossing 2 can be calculated almost by free (little computing cost) when Crossing 1 is done. I guess this kind of optimization may have been already done in MadGraph 5.
Cheers, Ninh.

Revision history for this message
Johan Alwall (johan-alwall) said :
#8

Hello Ninh, Olivier,

Olivier, I completely agree with your analysis regarding unfolding the helicity sum. Where we need to do the full sum is mainly in decay processes, where a large number of helicities are zero. For processes such as pure QCD, where all helicities have similar weight, the most efficient is to set nhel=2 in the run_card.dat.

Ninh, in MadEvent we only calculate one subprocess per phase space point. However, in the Pythia 8 output, we need to calculate all subprocesses together. There, we perform the optimization you are looking for. So you can study the Pythia 8 (C++) matrix element output.

All the best,
Johan

Revision history for this message
ninh (leducninh) said :
#9

Hello,
with MadGraph4 I can do 1 crossing as above explained. This means I can get the amplitude for
g d~ -> u~ d u~ from u d~ -> u~ d g via crossing.

However, if I do 2 crossings (or 1 crossing and 1 exchange) in a row, then it does not work.
In detail, i want to get d~ g -> u~ d u~ from u d~ -> u~ d g. I can do this in 2 ways:
1) cross (1,3) then exchange(1,2), where exchange(1,2) means exchange only the momenta p1 and p2.
2) cross (2,3) then cross(1,3).
The two methods do not agree and both give wrong result.
Do you have any idea why this happens and how to make it works?
Thanks and best regards, Ninh.

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

Hi Ninh,

I don't see what to add compare to all the informations present in this topic.
I would guess that you have a kind of bug somewhere, if you can make one crossing, I don't see why you can't make two in a row.

For the exchange, as you said you changing the momenta should be enough, did you test this alone?

Cheers,

Olivier

Revision history for this message
ninh (leducninh) said :
#11

Hi Olivier,
that is very strange for me too. Yes, i have tested the exchange of momenta alone and it works.
i will do the check with 2 crossings (or 1 cross and 1 exchange) again then let you know.
Thanks for your reply, Ninh.

Revision history for this message
ninh (leducninh) said :
#12

Hi Olivier,
i did the check with 2 crossings (or 1 cross and 1 exchange) again and this time it works!
You were right to guess there is a bug. Indeed, i made a mistake with the labeling of momenta.
If i choose the correct momenta then it's fine.
Thank you, Ninh.

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

Great Thanks for the update :-)

Olivier
On Sep 13, 2012, at 7:15 AM, ninh <email address hidden> wrote:

> Question #204343 on MadGraph5 changed:
> https://answers.launchpad.net/madgraph5/+question/204343
>
> Status: Answered => Solved
>
> ninh confirmed that the question is solved:
> Hi Olivier,
> i did the check with 2 crossings (or 1 cross and 1 exchange) again and this time it works!
> You were right to guess there is a bug. Indeed, i made a mistake with the labeling of momenta.
> If i choose the correct momenta then it's fine.
> Thank you, Ninh.
>
> --
> You received this question notification because you are a member of
> MadTeam, which is an answer contact for MadGraph5.