How to Extract A Z Interference Term?

Asked by Daniel

Hi,

Like my topic, how to extract the A Z interference term of e- e+ > mu- mu+ in MadGraph?
Thank you.

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
Valentin Hirschi Edit question
Last query:
Last reply:
Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#1

This necessitates to alter your UFO model of interest to add new coupling
orders to the 'Z l+ l-' and 'a l+ l-' couplings so as to differentiate them.
You can do so as follows:

-------
*a)* Go to your UFO model directory of interest, in your cas probably the
'sm':
-------

cd <MG5_aMC_installation_directory>/models/sm
cp -R sm sm_for_interference
cd sm_for_interference

-------
* b)* In the working copy of the sm, i..e 'sm_for_interference', modify
'coupling_orders.py' so as to define new coupling orders (of arbitrary
name):
-------

-> add the following to the content of the file 'coupling_orders.py':

ZLL = CouplingOrder(name = 'ZLL',
                    expansion_order = 99,
                    hierarchy = 2)

GAMMALL = CouplingOrder(name = 'GAMMALL',
                    expansion_order = 99,
                    hierarchy = 2)

-------
*c)* In 'vertices.py', find the photon- and Z- lepton vertices and the
above coupling orders to their coupling:
-------

-> in the file vertices.py, you will find this:

[...]

V_98 = Vertex(name = 'V_98',
              particles = [ P.e__plus__, P.e__minus__, P.a ],
              color = [ '1' ],
              lorentz = [ L.FFV1 ],
              couplings = {(0,0):C.GC_3})

V_99 = Vertex(name = 'V_99',
              particles = [ P.mu__plus__, P.mu__minus__, P.a ],
              color = [ '1' ],
              lorentz = [ L.FFV1 ],
              couplings = {(0,0):C.GC_3})

[...]

V_107 = Vertex(name = 'V_107',
               particles = [ P.e__plus__, P.e__minus__, P.Z ],
               color = [ '1' ],
               lorentz = [ L.FFV2, L.FFV4 ],
               couplings = {(0,0):C.GC_50,(0,1):C.GC_59})

V_108 = Vertex(name = 'V_108',
               particles = [ P.mu__plus__, P.mu__minus__, P.Z ],
               color = [ '1' ],
               lorentz = [ L.FFV2, L.FFV4 ],
               couplings = {(0,0):C.GC_50,(0,1):C.GC_59})

-> So you can go the file 'couplings.py' and modify the couplings 'GC_3',
'GC_50' and 'GC_59' as follows:

GC_3 = Coupling(name = 'GC_3',
                value = '-(ee*complex(0,1))',
                order = {'QED':1}) --> Change this to: order = {'QED':1, '
GAMMALL':1})

[...]

GC_50 = Coupling(name = 'GC_50',
                 value = '-(cw*ee*complex(0,1))/(2.*sw)',
                 order = {'QED':1}) --> Change this to: order = {'QED':1, '
ZLL':1})

[....]

GC_59 = Coupling(name = 'GC_59',
                 value = '(ee*complex(0,1)*sw)/(2.*cw)',
                 order = {'QED':1}) --> Change this to: order = {'QED':1, '
ZLL':1})

-------
*d)* Finally remove all the '.pkl' files in that directory so that MG5_aMC
reloads this model from the source, hence making sure your changes are
considered/applied.
-------

rm <MG5_aMC_installation_directory>/models/sm_for_interference/*.pkl

-------
*e) *The model can now be used as usual and you can specify that you only
want the interference term as follows:
-------

cd rm <MG5_aMC_installation_directory>
./bin/mg5_aMC
MG5_aMC>import model sm_for_interference
MG5_aMC>generate e+ e- > mu+ mu- ZLL^2==2 GAMMALL^2==2

[... And proceed from there as usual ....]

With the "squared order coupling constraints" specified as indicated,
MG5_aMC will select only the interference term you are interested in during
the integration / event generation.

On Fri, Jul 21, 2017 at 5:43 AM, Daniel <
<email address hidden>> wrote:

> New question #651188 on MadGraph5_aMC@NLO:
> https://answers.launchpad.net/mg5amcnlo/+question/651188
>
> Hi,
>
> Like my topic, how to extract the A Z interference term of e- e+ > mu- mu+
> in MadGraph?
> Thank you.
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.
>

--
Valentin

Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#2

EDIT:

"cd rm <MG5_aMC_installation_directory>"

was evidently a typo. You want to execture:

"cd <MG5_aMC_installation_directory>"

On Fri, Jul 21, 2017 at 10:07 AM, Valentin Hirschi <
<email address hidden>> wrote:

> This necessitates to alter your UFO model of interest to add new coupling
> orders to the 'Z l+ l-' and 'a l+ l-' couplings so as to differentiate them.
> You can do so as follows:
>
> -------
> *a)* Go to your UFO model directory of interest, in your cas probably the
> 'sm':
> -------
>
> cd <MG5_aMC_installation_directory>/models/sm
> cp -R sm sm_for_interference
> cd sm_for_interference
>
> -------
> * b)* In the working copy of the sm, i..e 'sm_for_interference', modify
> 'coupling_orders.py' so as to define new coupling orders (of arbitrary
> name):
> -------
>
> -> add the following to the content of the file 'coupling_orders.py':
>
> ZLL = CouplingOrder(name = 'ZLL',
> expansion_order = 99,
> hierarchy = 2)
>
> GAMMALL = CouplingOrder(name = 'GAMMALL',
> expansion_order = 99,
> hierarchy = 2)
>
> -------
> *c)* In 'vertices.py', find the photon- and Z- lepton vertices and the
> above coupling orders to their coupling:
> -------
>
> -> in the file vertices.py, you will find this:
>
> [...]
>
> V_98 = Vertex(name = 'V_98',
> particles = [ P.e__plus__, P.e__minus__, P.a ],
> color = [ '1' ],
> lorentz = [ L.FFV1 ],
> couplings = {(0,0):C.GC_3})
>
> V_99 = Vertex(name = 'V_99',
> particles = [ P.mu__plus__, P.mu__minus__, P.a ],
> color = [ '1' ],
> lorentz = [ L.FFV1 ],
> couplings = {(0,0):C.GC_3})
>
> [...]
>
> V_107 = Vertex(name = 'V_107',
> particles = [ P.e__plus__, P.e__minus__, P.Z ],
> color = [ '1' ],
> lorentz = [ L.FFV2, L.FFV4 ],
> couplings = {(0,0):C.GC_50,(0,1):C.GC_59})
>
> V_108 = Vertex(name = 'V_108',
> particles = [ P.mu__plus__, P.mu__minus__, P.Z ],
> color = [ '1' ],
> lorentz = [ L.FFV2, L.FFV4 ],
> couplings = {(0,0):C.GC_50,(0,1):C.GC_59})
>
> -> So you can go the file 'couplings.py' and modify the couplings 'GC_3',
> 'GC_50' and 'GC_59' as follows:
>
> GC_3 = Coupling(name = 'GC_3',
> value = '-(ee*complex(0,1))',
> order = {'QED':1}) --> Change this to: order = {'QED':1, '
> GAMMALL':1})
>
> [...]
>
> GC_50 = Coupling(name = 'GC_50',
> value = '-(cw*ee*complex(0,1))/(2.*sw)',
> order = {'QED':1}) --> Change this to: order = {'QED':1, '
> ZLL':1})
>
>
> [....]
>
>
> GC_59 = Coupling(name = 'GC_59',
> value = '(ee*complex(0,1)*sw)/(2.*cw)',
> order = {'QED':1}) --> Change this to: order = {'QED':1,
> 'ZLL':1})
>
>
> -------
> *d)* Finally remove all the '.pkl' files in that directory so that
> MG5_aMC reloads this model from the source, hence making sure your changes
> are considered/applied.
> -------
>
>
> rm <MG5_aMC_installation_directory>/models/sm_for_interference/*.pkl
>
> -------
> *e) *The model can now be used as usual and you can specify that you only
> want the interference term as follows:
> -------
>
> cd rm <MG5_aMC_installation_directory>
> ./bin/mg5_aMC
> MG5_aMC>import model sm_for_interference
> MG5_aMC>generate e+ e- > mu+ mu- ZLL^2==2 GAMMALL^2==2
>
> [... And proceed from there as usual ....]
>
> With the "squared order coupling constraints" specified as indicated,
> MG5_aMC will select only the interference term you are interested in during
> the integration / event generation.
>
>
> On Fri, Jul 21, 2017 at 5:43 AM, Daniel <question651188@answers.
> launchpad.net> wrote:
>
>> New question #651188 on MadGraph5_aMC@NLO:
>> https://answers.launchpad.net/mg5amcnlo/+question/651188
>>
>> Hi,
>>
>> Like my topic, how to extract the A Z interference term of e- e+ > mu-
>> mu+ in MadGraph?
>> Thank you.
>>
>> --
>> You received this question notification because you are an answer
>> contact for MadGraph5_aMC@NLO.
>>
>
>
>
> --
> Valentin
>

--
Valentin

Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#3

You can double-check that the results obtained with the manipulations I
presented to you are correct by comparing your results to those obtained as
follow:

I will call 'ZRes', the results you get with:

[...]
MG5_aMC>generate e+ e- > mu+ mu- / a
[...]

'ARes' the results you get with:

[...]
MG5_aMC>generate e+ e- > mu+ mu- / z
[...]

And finall 'All' the results you get with

[...]
MG5_aMC>generate e+ e- > mu+ mu-
[...]

Then the pure interference contribution is also equal to:

All - ZRes - ARes

This is of course a much less efficient way of generating the results for
the interference contribution only, but it is very useful as a double check
of the more direct approach I presented in my earlier answer.

On Fri, Jul 21, 2017 at 10:08 AM, Valentin Hirschi <
<email address hidden>> wrote:

> EDIT:
>
> "cd rm <MG5_aMC_installation_directory>"
>
> was evidently a typo. You want to execture:
>
> "cd <MG5_aMC_installation_directory>"
>
>
> On Fri, Jul 21, 2017 at 10:07 AM, Valentin Hirschi <
> <email address hidden>> wrote:
>
>> This necessitates to alter your UFO model of interest to add new coupling
>> orders to the 'Z l+ l-' and 'a l+ l-' couplings so as to differentiate them.
>> You can do so as follows:
>>
>> -------
>> *a)* Go to your UFO model directory of interest, in your cas probably
>> the 'sm':
>> -------
>>
>> cd <MG5_aMC_installation_directory>/models/sm
>> cp -R sm sm_for_interference
>> cd sm_for_interference
>>
>> -------
>> * b)* In the working copy of the sm, i..e 'sm_for_interference', modify
>> 'coupling_orders.py' so as to define new coupling orders (of arbitrary
>> name):
>> -------
>>
>> -> add the following to the content of the file 'coupling_orders.py':
>>
>> ZLL = CouplingOrder(name = 'ZLL',
>> expansion_order = 99,
>> hierarchy = 2)
>>
>> GAMMALL = CouplingOrder(name = 'GAMMALL',
>> expansion_order = 99,
>> hierarchy = 2)
>>
>> -------
>> *c)* In 'vertices.py', find the photon- and Z- lepton vertices and the
>> above coupling orders to their coupling:
>> -------
>>
>> -> in the file vertices.py, you will find this:
>>
>> [...]
>>
>> V_98 = Vertex(name = 'V_98',
>> particles = [ P.e__plus__, P.e__minus__, P.a ],
>> color = [ '1' ],
>> lorentz = [ L.FFV1 ],
>> couplings = {(0,0):C.GC_3})
>>
>> V_99 = Vertex(name = 'V_99',
>> particles = [ P.mu__plus__, P.mu__minus__, P.a ],
>> color = [ '1' ],
>> lorentz = [ L.FFV1 ],
>> couplings = {(0,0):C.GC_3})
>>
>> [...]
>>
>> V_107 = Vertex(name = 'V_107',
>> particles = [ P.e__plus__, P.e__minus__, P.Z ],
>> color = [ '1' ],
>> lorentz = [ L.FFV2, L.FFV4 ],
>> couplings = {(0,0):C.GC_50,(0,1):C.GC_59})
>>
>> V_108 = Vertex(name = 'V_108',
>> particles = [ P.mu__plus__, P.mu__minus__, P.Z ],
>> color = [ '1' ],
>> lorentz = [ L.FFV2, L.FFV4 ],
>> couplings = {(0,0):C.GC_50,(0,1):C.GC_59})
>>
>> -> So you can go the file 'couplings.py' and modify the couplings 'GC_3',
>> 'GC_50' and 'GC_59' as follows:
>>
>> GC_3 = Coupling(name = 'GC_3',
>> value = '-(ee*complex(0,1))',
>> order = {'QED':1}) --> Change this to: order = {'QED':1,
>> 'GAMMALL':1})
>>
>> [...]
>>
>> GC_50 = Coupling(name = 'GC_50',
>> value = '-(cw*ee*complex(0,1))/(2.*sw)',
>> order = {'QED':1}) --> Change this to: order = {'QED':1,
>> 'ZLL':1})
>>
>>
>> [....]
>>
>>
>> GC_59 = Coupling(name = 'GC_59',
>> value = '(ee*complex(0,1)*sw)/(2.*cw)',
>> order = {'QED':1}) --> Change this to: order =
>> {'QED':1, 'ZLL':1})
>>
>>
>> -------
>> *d)* Finally remove all the '.pkl' files in that directory so that
>> MG5_aMC reloads this model from the source, hence making sure your changes
>> are considered/applied.
>> -------
>>
>>
>> rm <MG5_aMC_installation_directory>/models/sm_for_interference/*.pkl
>>
>> -------
>> *e) *The model can now be used as usual and you can specify that you
>> only want the interference term as follows:
>> -------
>>
>> cd rm <MG5_aMC_installation_directory>
>> ./bin/mg5_aMC
>> MG5_aMC>import model sm_for_interference
>> MG5_aMC>generate e+ e- > mu+ mu- ZLL^2==2 GAMMALL^2==2
>>
>> [... And proceed from there as usual ....]
>>
>> With the "squared order coupling constraints" specified as indicated,
>> MG5_aMC will select only the interference term you are interested in during
>> the integration / event generation.
>>
>>
>> On Fri, Jul 21, 2017 at 5:43 AM, Daniel <<email address hidden>
>> pad.net> wrote:
>>
>>> New question #651188 on MadGraph5_aMC@NLO:
>>> https://answers.launchpad.net/mg5amcnlo/+question/651188
>>>
>>> Hi,
>>>
>>> Like my topic, how to extract the A Z interference term of e- e+ > mu-
>>> mu+ in MadGraph?
>>> Thank you.
>>>
>>> --
>>> You received this question notification because you are an answer
>>> contact for MadGraph5_aMC@NLO.
>>>
>>
>>
>>
>> --
>> Valentin
>>
>
>
>
> --
> Valentin
>

--
Valentin

Revision history for this message
Didier Alexandre (didieralexandre) said :
#4

Dear Valentin,

I used your method described above for my study of the interference in VLQ processes, and it worked very well. But I am not sure I properly understand exactly why this works, i.e. I would be very glad if you could explain to me the meaning of the coupling orders, and in particular why this line:

generate p p > j w + b ∼ \ p bp bp ∼ x x ∼ tp tp ∼ z h a YWB^2 == 2 TWB^2 == 2

generates interference events only, while this one:

generate p p > j w + b ∼ \ p bp bp ∼ x x ∼ tp tp ∼ z h a YWB^2 > 2

generates interference and VLQ events.

Many thanks in advance for your explanations.
Didier

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

Hi,

All vertex of the Feynman Diagram are associated to a coupling type.
Looks like that in your case you have YWB and TWB.
The most common type of coupling are QCD and QED.

Base on that you can select the diagram/amplitude via rules like
QCD<=4
QED>2
QCD==2

Now if you ask for
QED<=2
you will have diagram of type
(QED=0, QCD=2) and (QED=2, QCD=0)

Now what we integrate is the amplitude square. In that case we have three contribution
the QED diagram squared: (QED=4,QCD=0)
The QCD diagram squared: (QED=0,QCD=4)
The interference between the two diagram which will be of order (QCD=2,QED=2)

We also offer to select the contribution at the diagram squared level.
To distinguish from the above one we add the "^2" flag to the constraint
so
QED^2==2 provides only the interference (since this is the only one with QED=2 at that level)
QED^2<=2 will provide the QCD diagram squared with itself (since this is QED=0) and the interference (since this is QED=2)

I can not really comment on your syntax with TWB and YWB since I do not know what type of couplings they refer to. But the above explanation should be good enough for you to do the same computation. When you look at the diagram generated, they all have below them to which coupling type (and at which power) they belong.

Cheers,

Olivier

Revision history for this message
Didier Alexandre (didieralexandre) said :
#6

Dear Oliver,

thanks a lot the clarifications above a few weeks ago. They were very helpful.

I have another question I would like to ask, if I may:

Is there also a trick to generate ONLY the SM processes that interfere with the NP processes?

Thanks a lot
Didier

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

Hi Didier,

If you generate the interference diagram, you should be able to modify (all) the matrix.f file to have them retrurning the SM contribution rather than the interference. But this is obviously a hacky way.

I guess a nicer hack should exists.
(like finding where the flag to specify which contribution was requested and change it to the SM flag).
But I have never try such type of hack before.

Cheers,

Olivier

Revision history for this message
Didier Alexandre (didieralexandre) said :
#8

Dear Oliver,

Thanks for the answer!

Indeed, I also see this as the only way to generate those SM processes only:

a) generate interference only
b) hack the matrix*.f files to use only the SM processes and ignore the NP diagrams

As an example, I have the following output in one of my fortran files (note the newly defined coupling orders YWB for vertices between the VLQ Y and Wb, and TWB for vertices between the top quark and Wb):

C Amplitude(s) for diagram number 1
      CALL FFV2_0(W(1,5),W(1,7),W(1,6),GC_59,AMP(1))
      CALL FFV2_3_2(W(1,5),W(1,4),GC_42,GC_43,MDL_MY,MDL_WY,W(1,7))
C Amplitude(s) for diagram number 2
      CALL FFV2_3_0(W(1,7),W(1,2),W(1,6),GC_42,GC_43,AMP(2))
      CALL FFV2_1(W(1,1),W(1,4),GC_59,MDL_MT,MDL_WT,W(1,6))
      CALL FFV2_3(W(1,3),W(1,2),GC_57,MDL_MW,MDL_WW,W(1,4))
C Amplitude(s) for diagram number 3
      CALL FFV2_0(W(1,5),W(1,6),W(1,4),GC_59,AMP(3))
C Amplitude(s) for diagram number 4
      CALL FFV2_3_0(W(1,7),W(1,1),W(1,4),GC_42,GC_43,AMP(4))
C JAMPs contributing to orders TWB=2 YWB=0
      JAMP(1,1)=-AMP(1)
      JAMP(2,1)=+AMP(3)
C JAMPs contributing to orders TWB=0 YWB=2
      JAMP(1,2)=-AMP(2)
      JAMP(2,2)=+AMP(4)

      MATRIX1 = 0.D0
      DO M = 1, NAMPSO
        DO I = 1, NCOLOR
          ZTEMP = (0.D0,0.D0)
          DO J = 1, NCOLOR
            ZTEMP = ZTEMP + CF(J,I)*JAMP(J,M)
          ENDDO
          DO N = 1, NAMPSO
            IF (CHOSEN_SO_CONFIGS(SQSOINDEX1(M,N))) THEN
              MATRIX1 = MATRIX1 + ZTEMP*DCONJG(JAMP(I,N))/DENOM(I)
            ENDIF
          ENDDO
        ENDDO
      ENDDO

My idea would be to change the line

      DO M = 1, NAMPSO

to

      DO M = 1, 1

so as to only consider JAMP(1,1) and JAMP(2,1) in the matrix squared calculations.

Would this be a correct approach?

Many thanks,
Didier

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

Hi,

I would have change the function
> CHOSEN_SO_CONFIGS(SQSOINDEX1(M,N))

Which is the part that select the correct contribution.
But if your change are equivalent (I did not check) then that’s good as well.

Cheers,

Olivier

> On Dec 11, 2017, at 17:37, Didier Alexandre <email address hidden> wrote:
>
> Question #651188 on MadGraph5_aMC@NLO changed:
> https://answers.launchpad.net/mg5amcnlo/+question/651188
>
> Didier Alexandre posted a new comment:
> Dear Oliver,
>
> Thanks for the answer!
>
> Indeed, I also see this as the only way to generate those SM processes
> only:
>
> a) generate interference only
> b) hack the matrix*.f files to use only the SM processes and ignore the NP diagrams
>
> As an example, I have the following output in one of my fortran files
> (note the newly defined coupling orders YWB for vertices between the VLQ
> Y and Wb, and TWB for vertices between the top quark and Wb):
>
> C Amplitude(s) for diagram number 1
> CALL FFV2_0(W(1,5),W(1,7),W(1,6),GC_59,AMP(1))
> CALL FFV2_3_2(W(1,5),W(1,4),GC_42,GC_43,MDL_MY,MDL_WY,W(1,7))
> C Amplitude(s) for diagram number 2
> CALL FFV2_3_0(W(1,7),W(1,2),W(1,6),GC_42,GC_43,AMP(2))
> CALL FFV2_1(W(1,1),W(1,4),GC_59,MDL_MT,MDL_WT,W(1,6))
> CALL FFV2_3(W(1,3),W(1,2),GC_57,MDL_MW,MDL_WW,W(1,4))
> C Amplitude(s) for diagram number 3
> CALL FFV2_0(W(1,5),W(1,6),W(1,4),GC_59,AMP(3))
> C Amplitude(s) for diagram number 4
> CALL FFV2_3_0(W(1,7),W(1,1),W(1,4),GC_42,GC_43,AMP(4))
> C JAMPs contributing to orders TWB=2 YWB=0
> JAMP(1,1)=-AMP(1)
> JAMP(2,1)=+AMP(3)
> C JAMPs contributing to orders TWB=0 YWB=2
> JAMP(1,2)=-AMP(2)
> JAMP(2,2)=+AMP(4)
>
> MATRIX1 = 0.D0
> DO M = 1, NAMPSO
> DO I = 1, NCOLOR
> ZTEMP = (0.D0,0.D0)
> DO J = 1, NCOLOR
> ZTEMP = ZTEMP + CF(J,I)*JAMP(J,M)
> ENDDO
> DO N = 1, NAMPSO
> IF (CHOSEN_SO_CONFIGS(SQSOINDEX1(M,N))) THEN
> MATRIX1 = MATRIX1 + ZTEMP*DCONJG(JAMP(I,N))/DENOM(I)
> ENDIF
> ENDDO
> ENDDO
> ENDDO
>
>
> My idea would be to change the line
>
> DO M = 1, NAMPSO
>
> to
>
> DO M = 1, 1
>
> so as to only consider JAMP(1,1) and JAMP(2,1) in the matrix squared
> calculations.
>
> Would this be a correct approach?
>
> Many thanks,
> Didier
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Can you help with this problem?

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

To post a message you must log in.