Merge lp:~maddevelopers/mg5amcnlo/labframe into lp:~maddevelopers/mg5amcnlo/LTS_dev

Proposed by Olivier Mattelaer
Status: Needs review
Proposed branch: lp:~maddevelopers/mg5amcnlo/labframe
Merge into: lp:~maddevelopers/mg5amcnlo/LTS_dev
Diff against target: 176 lines (+49/-16)
2 files modified
Template/NLO/SubProcesses/add_write_info.f (+26/-7)
Template/NLO/SubProcesses/madfks_plot.f (+23/-9)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/labframe
Reviewer Review Type Date Requested Status
Olivier Mattelaer Pending
Review via email: mp+415948@code.launchpad.net

This proposal supersedes a proposal from 2022-02-18.

Commit message

pass to the real lab frame for the plot (was hadronic CM frame)

Description of the change

Dear Olivier,

I have modified the "madfks_plot.f" file in order to get momenta in the lab frame for plotting. Earlier it was calculated in the hadronic CM frame. Please have a look and let me know your opinions.

Regards,
Laboni

To post a comment you must log in.
Revision history for this message
Rikkert Frederix (frederix) wrote :

Hi all,

Shouldn't this also be done for writing of the events (in MC@NLO mode)?

Best,
Rikkert

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

Hi Rik,

We actually do not know if MC@(N)LO does have that issue or not.
Manna will make the plot that make us discover the issue to check if we need it or not.
In the meantime, I have update this branch to have a candidate for such boost.

However, it is not 100% clear to me, how to handle those three functions:
put_on_MC_mshell_Hevin
put_on_MC_mshell_Hevout
put_on_MC_mshell_in

I have "corrected", put_on_MC_mshell_in
but the situation is quite "weird" for the two others. Can you comment on those functions?

Olivier

lp:~maddevelopers/mg5amcnlo/labframe updated
382. By olivier-mattelaer

better naming convention/text for FO boost

383. By olivier-mattelaer

add boost to labframe for aMC@NLO

Revision history for this message
Stefano Frixione (stefano-frixione) wrote :

Hi Olivier,
what are we talking about?
Those functions have been originally written by me. As far as I know,
they don't have bugs, so I don't know what you mean by "corrected".
What they do is to transform a massless-quark event into a massive-quark
one, by using the MC masses. This is essential for the MC to function
properly.
There is some arbitrariness on how one does this operation, and I'm
reluctant to contemplate changes (in the normal hadron-hadron operation
mode), unless they have a strong justification and are thoroughly tested,
Cheers, Stefano.

On Thu, 24 Feb 2022, Olivier Mattelaer wrote:

> Hi Rik,
>
> We actually do not know if MC@(N)LO does have that issue or not.
> Manna will make the plot that make us discover the issue to check if we need it or not.
> In the meantime, I have update this branch to have a candidate for such boost.
>
> However, it is not 100% clear to me, how to handle those three functions:
> put_on_MC_mshell_Hevin
> put_on_MC_mshell_Hevout
> put_on_MC_mshell_in
>
> I have "corrected", put_on_MC_mshell_in
> but the situation is quite "weird" for the two others. Can you comment on those functions?
>
> Olivier
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/labframe/+merge/415948
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/LTS_dev.
>
>

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :
Download full text (3.2 KiB)

Hi Stefano,

The original issue that we found/fixed is that for fixed order (both LO and NLO) the rapidity distribution were not in agreement with other codes when the two beams had asymmetric energies (i.e. the hadronic cm frame was not the lab frame).
Manna Laboni checked that the rapidity dstribution was actually plotted in the hadronic cm frame and not the lab frame.
And she proposed one additional boost before the plotting function to fix the issue.

Rikkert point out that one likely needs to implement a similar fix for aMC@(N)LO. We still need to double check that case but one can guess that it will suffer the same issue.

Now when looking at how one can implement the boost for aMC@NLO. I realised that the rapidity of a frame was also used in those three functions and for the third a clear warning was set that it should be the same rapidity as the one used to boost the event.

So what I mean by "corrected" is to modify the rapidity shift in "put_on_MC_mshell_in" to be consistent with the
additional boost used to write the events.

The situation for the two other function seems less clear to me.
They also use a shift in rapidity but computed in a different way (via ybst_til_tocm rather than via ybst_til_tolab variable).

So my question for you, is how can we check that those three functions are working correctly in presence of assymetric beams? (for the LHC, nothing will change actually) to be sure that the rapidity shift used in those function are fully consistent?

Thanks,

Olivier

> On 24 Feb 2022, at 15:45, Stefano Frixione <email address hidden> wrote:
>
> Hi Olivier,
> what are we talking about?
> Those functions have been originally written by me. As far as I know,
> they don't have bugs, so I don't know what you mean by "corrected".
> What they do is to transform a massless-quark event into a massive-quark
> one, by using the MC masses. This is essential for the MC to function
> properly.
> There is some arbitrariness on how one does this operation, and I'm
> reluctant to contemplate changes (in the normal hadron-hadron operation
> mode), unless they have a strong justification and are thoroughly tested,
> Cheers, Stefano.
>
>
>
> On Thu, 24 Feb 2022, Olivier Mattelaer wrote:
>
>> Hi Rik,
>>
>> We actually do not know if MC@(N)LO does have that issue or not.
>> Manna will make the plot that make us discover the issue to check if we need it or not.
>> In the meantime, I have update this branch to have a candidate for such boost.
>>
>> However, it is not 100% clear to me, how to handle those three functions:
>> put_on_MC_mshell_Hevin
>> put_on_MC_mshell_Hevout
>> put_on_MC_mshell_in
>>
>> I have "corrected", put_on_MC_mshell_in
>> but the situation is quite "weird" for the two others. Can you comment on those functions?
>>
>> Olivier
>> --
>> https://code.launchpad.net/~maddevelopers/mg5amcnlo/labframe/+merge/415948
>> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/LTS_dev.
>>
>>
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/labframe/+merge/415948 <https://code.launchpad.net/~maddevelopers/mg5amcnlo/labframe/+merge/415948>
> You proposed lp:~maddevelop...

Read more...

Revision history for this message
Stefano Frixione (stefano-frixione) wrote :
Download full text (4.1 KiB)

Hi Olivier,

> The original issue that we found/fixed is that for fixed order (both LO
> and NLO) the rapidity distribution were not in agreement with other
> codes when the two beams had asymmetric energies (i.e. the hadronic cm
> frame was not the lab frame).
well of course: for all applications so far, the hadronic cm is the
lab frame. The code has been constructed with LHC and Tevatron in mind;
at the NLO, at least.

> And she proposed one additional boost before the plotting function to
> fix the issue.
Well, I guess there's no fixing here: one gets what one asks for, which
is any observable in the hadronic cm. Having obtained that, the observable
in another frame can be obtained by boosting which, in the case of
rapidity, is particularly simple.

> Now when looking at how one can implement the boost for aMC@NLO. I
> realised that the rapidity of a frame was also used in those three
> functions and for the third a clear warning was set that it should be
> the same rapidity as the one used to boost the event.
NLO/MC@NLO uses extensively event projection, which in turn is based
on hadronic beams being back to back (and of equal energy, although I
suppose the latter condition can be relaxed).

> So what I mean by "corrected" is to modify the rapidity shift in
> "put_on_MC_mshell_in" to be consistent with the additional boost used to
> write the events.
>
> The situation for the two other function seems less clear to me. They
> also use a shift in rapidity but computed in a different way (via
> ybst_til_tocm rather than via ybst_til_tolab variable).
>
> So my question for you, is how can we check that those three functions
> are working correctly in presence of assymetric beams? (for the LHC,
> nothing will change actually) to be sure that the rapidity shift used in
> those function are fully consistent?
The answer to this might be difficult: it requires reconsidering the
various derivations, and (because of the recent work on e+e- at the NLO)
I can't find all of my notes, which I have probably lost at this point.

It seems to me that the easiest solution is that of performing a boost
after all the computations are finished: that boost depends solely on
your lab frame and the beam kinematics in that frame.

Cheers, Stefano.

>
> Thanks,
>
> Olivier
>
>
>
>
>
>
>
>
>
>
>
>
>> On 24 Feb 2022, at 15:45, Stefano Frixione <email address hidden> wrote:
>>
>> Hi Olivier,
>> what are we talking about?
>> Those functions have been originally written by me. As far as I know,
>> they don't have bugs, so I don't know what you mean by "corrected".
>> What they do is to transform a massless-quark event into a massive-quark
>> one, by using the MC masses. This is essential for the MC to function
>> properly.
>> There is some arbitrariness on how one does this operation, and I'm
>> reluctant to contemplate changes (in the normal hadron-hadron operation
>> mode), unless they have a strong justification and are thoroughly tested,
>> Cheers, Stefano.
>>
>>
>>
>> On Thu, 24 Feb 2022, Olivier Mattelaer wrote:
>>
>>> Hi Rik,
>>>
>>> We actually do not know if MC@(N)LO does have that issue or not.
>>> Manna will make the plot that make us d...

Read more...

Unmerged revisions

383. By olivier-mattelaer

add boost to labframe for aMC@NLO

382. By olivier-mattelaer

better naming convention/text for FO boost

381. By Laboni Manna

pass to the real lab frame for the plot (was hadronic CM frame)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Template/NLO/SubProcesses/add_write_info.f'
2--- Template/NLO/SubProcesses/add_write_info.f 2017-06-15 16:22:23 +0000
3+++ Template/NLO/SubProcesses/add_write_info.f 2022-02-24 14:06:03 +0000
4@@ -1,4 +1,4 @@
5- subroutine add_write_info(p_born,pp,ybst_til_tolab,iconfig,Hevents
6+ subroutine add_write_info(p_born,pp,ybst_til_cmhadron,iconfig,Hevents
7 & ,putonshell,ndim,x,jpart,npart,pb,shower_scale)
8 c Computes all the info needed to write out the events including the
9 c intermediate resonances. It also boosts the events to the lab frame
10@@ -13,7 +13,7 @@
11
12 c Arguments
13 double precision p_born(0:3,nexternal-1),pp(0:3,nexternal)
14- double precision ybst_til_tolab,shower_scale
15+ double precision ybst_til_cmhadron,shower_scale
16 integer iconfig
17 logical Hevents,putonshell
18 integer ndim,jpart(7,-nexternal+3:2*nexternal-3),npart
19@@ -28,6 +28,7 @@
20 logical firsttime,firsttime2
21 data firsttime/.true./
22 data firsttime2/.true./
23+ double precision ybst_til_tolab
24
25 c The process chosen to write
26 integer i_process_addwrite
27@@ -402,7 +403,7 @@
28 c Set-up the external momenta that should be written in event file
29 c Also boost them to the lab frame.
30 c
31- if (abs(ybst_til_tolab).le.1d-7) then
32+ if (abs(ybst_til_cmhadron).le.1d-7) then
33 do i=1,nexpart
34 do j=0,3
35 if (Hevents) then
36@@ -418,10 +419,11 @@
37 endif
38 enddo
39 else
40- chy=cosh(ybst_til_tolab)
41- shy=sinh(ybst_til_tolab)
42+ chy=cosh(ybst_til_cmhadron)
43+ shy=sinh(ybst_til_cmhadron)
44 chymo=chy-1d0
45 do i=1,nexpart
46+c boost the momenta to the Hadronic CM frame from partonic CM frame:
47 if (Hevents) then
48 call boostwdir2(chy,shy,chymo,xdir,
49 & pp(0,i),p1(0,i))
50@@ -429,6 +431,14 @@
51 call boostwdir2(chy,shy,chymo,xdir,
52 & p_born(0,i),p1(0,i))
53 endif
54+c boost the momenta to the lab frame from Hadronic CM frame :
55+ if (ebeam(1).ne.ebeam(2))then
56+ ybst_til_tolab = 0.5*log((ebeam(2))/(ebeam(1))) ! boost function
57+ chy=cosh(ybst_til_tolab)
58+ shy=sinh(ybst_til_tolab)
59+ chymo=chy-1.d0
60+ call boostwdir2(chy,shy,chymo,xdir,p1(0,i),p1(0,i))
61+ endif
62 do j=0,3
63 pb(j,i)=p1(j,i)
64 enddo
65@@ -1213,6 +1223,7 @@
66 subroutine put_on_MC_mshell_in(p,xm1,xm2,mfail)
67 implicit none
68 include 'nexternal.inc'
69+ include 'run.inc'
70 double precision p(0:3,nexternal),xm1,xm2
71 integer mfail
72 double precision xm1_r,xm2_r
73@@ -1222,6 +1233,9 @@
74 # sqrtshat,shat
75 double precision xmcmass(nexternal)
76 common/cxmcmass/xmcmass
77+
78+ double precision ycm
79+
80 c
81 if (p(0,1).lt.0d0) then
82 mfail=1
83@@ -1240,8 +1254,13 @@
84 xm1_r=xm1
85 xm2_r=xm2
86 c$$$CHECK AGAIN USE OF ybst_til_tolab IN getxmss.
87-c$$$MUST BE THE SAME BOOST AS WHEN WRITING EVENTS
88- call getxmss_madfks(shat,ybst_til_tolab,
89+c$$$ MUST BE THE SAME BOOST AS WHEN WRITING EVENTS
90+ ycm = ybst_til_tolab
91+ if (ebeam(1).ne.ebeam(2))then
92+ ycm = ycm + 0.5*log((ebeam(2))/(ebeam(1)))
93+ endif
94+
95+ call getxmss_madfks(shat,ycm,
96 # p(3,1),xm1_r,p(3,2),xm2_r,
97 # p(3,1),p(3,2),mfail)
98 if(mfail.eq.0)then
99
100=== modified file 'Template/NLO/SubProcesses/madfks_plot.f'
101--- Template/NLO/SubProcesses/madfks_plot.f 2017-06-15 19:31:40 +0000
102+++ Template/NLO/SubProcesses/madfks_plot.f 2022-02-24 14:06:03 +0000
103@@ -213,36 +213,40 @@
104 end
105
106
107- subroutine outfun(pp,ybst_til_tolab,www,iPDG,itype)
108+ subroutine outfun(pp,ybst_til_hadroncm,www,iPDG,itype)
109 C
110 C *WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING*
111 C
112 C In MadFKS, the momenta PP given in input to this function are in the
113 C reduced parton c.m. frame. If need be, boost them to the lab frame.
114-C The rapidity of this boost is
115+C The rapidity of the boost to hadronic CM frame is
116 C
117-C YBST_TIL_TOLAB
118+C YBST_TIL_hadroncm
119 C
120 C also given in input
121 C
122 C This is the rapidity that enters in the arguments of the sinh() and
123 C cosh() of the boost, in such a way that
124-C ylab = ycm - ybst_til_tolab
125-C where ylab is the rapidity in the lab frame and ycm the rapidity
126+C ylab = ycm - ybst_til_hadroncm
127+C where ylab is the rapidity in the hadronic center of mass frame
128+C and ycm the rapidity
129 C in the center-of-momentum frame.
130 C
131+C If the hadronic center of mass frame is not the same as the lab frame
132+C then a second boost is done to move to the lab frame
133 C *WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING*
134 use extra_weights
135 implicit none
136 include 'nexternal.inc'
137 include 'run.inc'
138 include 'genps.inc'
139- double precision pp(0:3,nexternal),ybst_til_tolab
140+ double precision pp(0:3,nexternal),ybst_til_hadroncm
141 integer itype
142 double precision p(0:4,nexternal),pplab(0:3,nexternal),chybst
143 $ ,shybst,chybstmo
144 integer i,j,ibody,i_wgt,ii,jj,kk,n,nn
145 double precision xd(3)
146+ double precision ybst_til_tolab
147 data (xd(i),i=1,3) /0d0,0d0,1d0/
148 integer istatus(nexternal),iPDG(nexternal)
149 double precision pmass(nexternal)
150@@ -265,13 +269,23 @@
151 write(*,*)'Error in outfun: unknown itype',itype
152 stop
153 endif
154-c Boost the momenta to the lab frame:
155- chybst=cosh(ybst_til_tolab)
156- shybst=sinh(ybst_til_tolab)
157+c Boost the momenta to the hadronic CM frame:
158+ chybst=cosh(ybst_til_hadroncm)
159+ shybst=sinh(ybst_til_hadroncm)
160 chybstmo=chybst-1.d0
161 do i=1,nexternal
162 call boostwdir2(chybst,shybst,chybstmo,xd,pp(0,i),pplab(0,i))
163 enddo
164+ if (ebeam(1).ne.ebeam(2))then
165+c boost the momenta to the lab frame from Hadronic CM frame :
166+ ybst_til_tolab = 0.5*log((ebeam(2))/(ebeam(1))) ! boost from CM hadron to lab frame
167+ chybst=cosh(ybst_til_tolab)
168+ shybst=sinh(ybst_til_tolab)
169+ chybstmo=chybst-1.d0
170+ do i=1,nexternal
171+ call boostwdir2(chybst,shybst,chybstmo,xd,pplab(0,i),pplab(0,i))
172+ enddo
173+ endif
174 c Fill the arrays (momenta, status and PDG):
175 do i=1,nexternal
176 if (i.le.nincoming) then

Subscribers

People subscribed via source and target branches

to all changes: