Merge lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging into lp:~mg5core2/mg5amcnlo/2.6.1

Proposed by marco zaro
Status: Merged
Merged at revision: 314
Proposed branch: lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging
Merge into: lp:~mg5core2/mg5amcnlo/2.6.1
Diff against target: 1014 lines (+549/-82)
29 files modified
Template/NLO/Source/setrun.f (+1/-1)
Template/NLO/SubProcesses/driver_mintFO.f (+5/-5)
Template/NLO/SubProcesses/driver_mintMC.f (+5/-5)
Template/NLO/SubProcesses/fks_singular.f (+4/-1)
Template/NLO/SubProcesses/reweight.f (+9/-3)
UpdateNotes.txt (+5/-0)
madgraph/fks/fks_helas_objects.py (+12/-6)
madgraph/interface/madgraph_interface.py (+1/-1)
madgraph/interface/master_interface.py (+5/-2)
madgraph/iolibs/export_fks.py (+265/-13)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc (+11/-11)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_info.dat (+54/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat (+8/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc (+1/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%real_from_born_configs.inc (+2/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc (+11/-11)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_info.dat (+20/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat (+17/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc (+1/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%real_from_born_configs.inc (+2/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc (+11/-11)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_info.dat (+20/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat (+17/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc (+1/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%real_from_born_configs.inc (+2/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved (+4/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved (+4/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved (+4/-0)
tests/unit_tests/iolibs/test_export_fks.py (+47/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging
Reviewer Review Type Date Requested Status
Olivier Mattelaer Approve
Rikkert Frederix (community) Approve
Review via email: mp+331151@code.launchpad.net

Description of the change

The LOonly output mode has been modified in order to have the diagram and color informations needed to do FxFx merging including LO matrix elements after a given multiplicity.
Josh Bendavid suggested to make this functionality available in the next release even some more tests need to be done on the results.

To post a comment you must log in.
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

Hi,

That's cool, before starting the review:

So What would be the syntax in this case? (Do you have this documented somewhere?
Would it be:
generate p p > e+ e- [QCD]
add process p p > e+ e- j [LOonly]
add process p p > e+ e- j j [LOonly]
Or should I skip the one jet multiplicity?

Do I understand correctly that this is not working for UNLOPS?

Can you be more specific by "it required more test"? Should we release this functionality as "beta"?

Cheers,

Olivier

Revision history for this message
Rikkert Frederix (frederix) wrote :

Hi Olivier,

Yes, that's indeed the syntax.

All tests with kind of low statistics have been performed. However, we wanted to give the code to Josh Bendavid (who requested this feature) to perform some high-statistics tests and to confirm that's working within the CMS framework. He prefers that the code is part of the main branch, as he's loosing track of all separate contributions. That's why Marco wrote that some more testing is needed. Hence, we should keep this functionality somewhat hidden (or in beta) for the moment.

Indeed, it's not working with UNLOPS. However, with UNLOPS one can always generate separate samples and put them together at the end (at the cost of introducing large fractions of negative weights).

best,
Rikkert

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

Hi,

I'm starting to look at this. My question are so far on the interface/physics limitation.
Actually a lot of the point below should also be consider for FxFx run in general since they are not specific to LOonly.

1) the syntax "add process p p > e+ e- j [LOonly]" does not work. Would be great to not be force to do "add process p p > e+ e- j [LOonly=QCD]" since the QCD here is meaningless (I guess)

2) It would be great that ickkw being on default on 3 in this case.

3) Would be great that the code crash if it is on 4.

4) What would be the meaning of having order=LO in this setup? (This is actually a valid question even without the LOonly option). I guess the answer is None. Should we prevent it?
(actually same question with fixed_order=ON)

5) Does it make sense to have the shower ON by default? should not we have turn it off?

6) If this is to be consider as beta, I would prefer that a warning appear when the matrix-element are generated. (Such that this is clear)

7) When running, I have the following:
   --------------------------------------------------------------
      Summary:
      Process p p > e+ e- [QCD] ; p p > e+ e- j [LOonly=QCD]
      Run at p-p collider (6500.0 + 6500.0 GeV)
      Number of events generated: 10000
      Total cross section: 2.103e+03 +- 8.4e+00 pb
   --------------------------------------------------------------
      Scale variation (computed from LHE events):
          Dynamical_scale_choice -1 (envelope of 9 values):
              2.130e+03 pb +6.3% -11.9%
   --------------------------------------------------------------

Can we trust the scale variation?

I did not test the physics but I checked the code and this sounds fine.
I would have prefer that you factorise the code to have less a huge function with a bunch of if.
But this is not critical and we will be able to split the function in smaller piece if needed in the future.

Thanks for this work,

Olivier

Revision history for this message
Rikkert Frederix (frederix) wrote :

Hi Olivier,

I see your points. However, most are very generally to FxFx and do not really apply specifically to this branch. Therefore, I'm not sure that this is the right time to implement them...

>
> 1) the syntax "add process p p > e+ e- j [LOonly]" does not work. Would be
> great to not be force to do "add process p p > e+ e- j [LOonly=QCD]" since the
> QCD here is meaningless (I guess)

I think this would be a good idea. Marco, do you know if this is easy? Will at then also work with add-ons like MadSpin?

> 2) It would be great that ickkw being on default on 3 in this case.
>

Boahh.. don't know. Is this relevant? And how do you know when to put this? Do you suggest to count the 'j' in each 'add process' and check if it's more than in the 'generate' command? Is this sufficient?

> 3) Would be great that the code crash if it is on 4.
>

Same as for previous comment.

> 4) What would be the meaning of having order=LO in this setup? (This is
> actually a valid question even without the LOonly option). I guess the answer
> is None. Should we prevent it?
> (actually same question with fixed_order=ON)
>

The results for order=LO are not necessarily wrong. Therefore I would keep it. Same for fixed_order=ON.

> 5) Does it make sense to have the shower ON by default? should not we have
> turn it off?
>

It should be "On" in my opinion. But also here: in practice this will only be used by experimentalists. They know how to deal with either On or Off.

>
> 6) If this is to be consider as beta, I would prefer that a warning appear
> when the matrix-element are generated. (Such that this is clear)
>

The [LOonly=QCD] option is not in beta. Rather the NLO+LO merging is. Hence at the level of the generation, one doesn't know yet if the user will use the merging or not.

>
> 7) When running, I have the following:
> --------------------------------------------------------------
> Summary:
> Process p p > e+ e- [QCD] ; p p > e+ e- j [LOonly=QCD]
> Run at p-p collider (6500.0 + 6500.0 GeV)
> Number of events generated: 10000
> Total cross section: 2.103e+03 +- 8.4e+00 pb
> --------------------------------------------------------------
> Scale variation (computed from LHE events):
> Dynamical_scale_choice -1 (envelope of 9 values):
> 2.130e+03 pb +6.3% -11.9%
> --------------------------------------------------------------
>
> Can we trust the scale variation?

No. Nor the cross section as the showering will/should reject a fraction of the events. Just as for NLO FxFx. However, I'm against removing this since it serves as a check that all required weights are written correctly in the event-file.

Best,
Rikkert

Revision history for this message
marco zaro (marco-zaro) wrote :
Download full text (3.6 KiB)

Hi,
thanks to Olivier for the review and to Rik for the answers
On 02 Oct 2017, at 15:38, Rikkert Frederix <email address hidden> wrote:

> Hi Olivier,
>
> I see your points. However, most are very generally to FxFx and do not really apply specifically to this branch. Therefore, I'm not sure that this is the right time to implement them...
>
>>
>> 1) the syntax "add process p p > e+ e- j [LOonly]" does not work. Would be
>> great to not be force to do "add process p p > e+ e- j [LOonly=QCD]" since the
>> QCD here is meaningless (I guess)
> I think this would be a good idea. Marco, do you know if this is easy? Will at then also work with add-ons like MadSpin?

hmm…
currently the code searches a regular expression like [<option> = <orders>]. If option is not there (like for [QCD]) the option is set to ‘all’. In our case, [LOonly] would be equivalent to ‘all=LOonly’, which is certainly something that does not make sense. So, i don’t have any smarter idea than checking that, when one has orders=LOonly and option =all, then one assigns orders=QCD, option=LOonly with an ‘if’ around line 177 inside master_interface.
It is rather ugly, but I have no smarter idea…
What would you say?

Cheers,

Marco

>
>> 2) It would be great that ickkw being on default on 3 in this case.
>>
>
> Boahh.. don't know. Is this relevant? And how do you know when to put this? Do you suggest to count the 'j' in each 'add process' and check if it's more than in the 'generate' command? Is this sufficient?
>
>
>> 3) Would be great that the code crash if it is on 4.
>>
>
> Same as for previous comment.
>
>> 4) What would be the meaning of having order=LO in this setup? (This is
>> actually a valid question even without the LOonly option). I guess the answer
>> is None. Should we prevent it?
>> (actually same question with fixed_order=ON)
>>
>
> The results for order=LO are not necessarily wrong. Therefore I would keep it. Same for fixed_order=ON.
>
>> 5) Does it make sense to have the shower ON by default? should not we have
>> turn it off?
>>
>
> It should be "On" in my opinion. But also here: in practice this will only be used by experimentalists. They know how to deal with either On or Off.
>
>>
>> 6) If this is to be consider as beta, I would prefer that a warning appear
>> when the matrix-element are generated. (Such that this is clear)
>>
>
> The [LOonly=QCD] option is not in beta. Rather the NLO+LO merging is. Hence at the level of the generation, one doesn't know yet if the user will use the merging or not.
>
>>
>> 7) When running, I have the following:
>> --------------------------------------------------------------
>> Summary:
>> Process p p > e+ e- [QCD] ; p p > e+ e- j [LOonly=QCD]
>> Run at p-p collider (6500.0 + 6500.0 GeV)
>> Number of events generated: 10000
>> Total cross section: 2.103e+03 +- 8.4e+00 pb
>> --------------------------------------------------------------
>> Scale variation (computed from LHE events):
>> Dynamical_scale_choice -1 (envelope of 9 values):
>> 2.130e+03 pb +6.3% -11.9%
>> --------------------------------------------------------------
>>
>> Can we trus...

Read more...

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

Hi Olivier,
a few scattered comments. In general, this branch has been set up to
comply with CMS request of having a LO option on top of FxFx, in order
to extend somewhat the multiplicity reach. So I'm not sure a discussion
unrelated to FxFx does make sense (although technically it does).

> 1) the syntax "add process p p > e+ e- j [LOonly]" does not work. Would
> be great to not be force to do "add process p p > e+ e- j
> [LOonly=QCD]" since the QCD here is meaningless (I guess)
not necessarily: there could be processes mediated by either QCD
or QED, with the same final state.
Since this is going to be used by advanced users, I think the effort
spent into rendering this cleaner is not particularly worth.

> 2) It would be great that ickkw being on default on 3 in this case.
Same as before.

> 3) Would be great that the code crash if it is on 4.
Same as before.

> 5) Does it make sense to have the shower ON by default? should not we
> have turn it off?
I'm inclined to have it off, since this prevents the code from crashing
in absence of MC installations (or if they have been done incorrectly).

> 7) When running, I have the following:
> --------------------------------------------------------------
> Summary:
> Process p p > e+ e- [QCD] ; p p > e+ e- j [LOonly=QCD]
> Run at p-p collider (6500.0 + 6500.0 GeV)
> Number of events generated: 10000
> Total cross section: 2.103e+03 +- 8.4e+00 pb
> --------------------------------------------------------------
> Scale variation (computed from LHE events):
> Dynamical_scale_choice -1 (envelope of 9 values):
> 2.130e+03 pb +6.3% -11.9%
> --------------------------------------------------------------
>
> Can we trust the scale variation?
I agree with Rikkert: maybe not, but it's a double check.

Cheers, Stefano.

>
> I did not test the physics but I checked the code and this sounds fine.
> I would have prefer that you factorise the code to have less a huge function with a bunch of if.
> But this is not critical and we will be able to split the function in smaller piece if needed in the future.
>
> Thanks for this work,
>
> Olivier
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging/+merge/331151
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging.
>

Revision history for this message
marco zaro (marco-zaro) wrote :

Hi all,
any news on this?

thanks!
cheers,

Marco

Revision history for this message
Rikkert Frederix (frederix) :
review: Approve
303. By Olivier Mattelaer

merge with 2.6.1

304. By Olivier Mattelaer

merge with latest 2.6.1

305. By Olivier Mattelaer

allow [LOonly] syntax

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

I'm doing the merge

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Template/NLO/Source/setrun.f'
--- Template/NLO/Source/setrun.f 2017-07-25 14:13:14 +0000
+++ Template/NLO/Source/setrun.f 2017-11-30 23:06:43 +0000
@@ -125,7 +125,7 @@
125 else125 else
126 idbmup(i)=lpp(i)126 idbmup(i)=lpp(i)
127 endif127 endif
128 ebmup(i)=ebeam(i)128 ebmup(i)=ebeam(i)
129 enddo129 enddo
130 call get_pdfup(pdlabel,pdfgup,pdfsup,lhaid)130 call get_pdfup(pdlabel,pdfgup,pdfsup,lhaid)
131c Fill the nmemPDF(i) array with the number of PDF error set. This we131c Fill the nmemPDF(i) array with the number of PDF error set. This we
132132
=== modified file 'Template/NLO/SubProcesses/driver_mintFO.f'
--- Template/NLO/SubProcesses/driver_mintFO.f 2017-06-19 17:15:00 +0000
+++ Template/NLO/SubProcesses/driver_mintFO.f 2017-11-30 23:06:43 +0000
@@ -784,11 +784,11 @@
784 write (*,*) 'Process generated with [LOonly=QCD]. '/784 write (*,*) 'Process generated with [LOonly=QCD]. '/
785 $ /'Setting abrv to "born".'785 $ /'Setting abrv to "born".'
786 abrv='born'786 abrv='born'
787 if (ickkw.eq.3) then787c$$$ if (ickkw.eq.3) then
788 write (*,*) 'FxFx merging not possible with'/788c$$$ write (*,*) 'FxFx merging not possible with'/
789 $ /' [LOonly=QCD] processes'789c$$$ $ /' [LOonly=QCD] processes'
790 stop 1790c$$$ stop 1
791 endif791c$$$ endif
792 endif792 endif
793 endif793 endif
794c794c
795795
=== modified file 'Template/NLO/SubProcesses/driver_mintMC.f'
--- Template/NLO/SubProcesses/driver_mintMC.f 2017-07-29 08:03:34 +0000
+++ Template/NLO/SubProcesses/driver_mintMC.f 2017-11-30 23:06:43 +0000
@@ -711,11 +711,11 @@
711 write (*,*) 'Process generated with [LOonly=QCD]. '/711 write (*,*) 'Process generated with [LOonly=QCD]. '/
712 $ /'Setting abrv to "born".'712 $ /'Setting abrv to "born".'
713 abrv='born'713 abrv='born'
714 if (ickkw.eq.3) then714c$$$ if (ickkw.eq.3) then
715 write (*,*) 'FxFx merging not possible with'/715c$$$ write (*,*) 'FxFx merging not possible with'/
716 $ /' [LOonly=QCD] processes'716c$$$ $ /' [LOonly=QCD] processes'
717 stop 1717c$$$ stop 1
718 endif718c$$$ endif
719 endif719 endif
720 endif720 endif
721 if(nbody.and.abrv.ne.'born'.and.abrv(1:2).ne.'vi'721 if(nbody.and.abrv.ne.'born'.and.abrv(1:2).ne.'vi'
722722
=== modified file 'Template/NLO/SubProcesses/fks_singular.f'
--- Template/NLO/SubProcesses/fks_singular.f 2017-07-26 11:45:39 +0000
+++ Template/NLO/SubProcesses/fks_singular.f 2017-11-30 23:06:43 +0000
@@ -54,6 +54,8 @@
54 common /cxiScut_used/xiScut_used,xiBSVcut_used54 common /cxiScut_used/xiScut_used,xiBSVcut_used
55 double precision fxfx_exp_rewgt55 double precision fxfx_exp_rewgt
56 common /c_fxfx_exp_regt/ fxfx_exp_rewgt56 common /c_fxfx_exp_regt/ fxfx_exp_rewgt
57 character*4 abrv
58 common /to_abrv/ abrv
57 call cpu_time(tBefore)59 call cpu_time(tBefore)
58 if (f_nb.eq.0d0) return60 if (f_nb.eq.0d0) return
59 if (xi_i_fks_ev .gt. xiBSVcut_used) return61 if (xi_i_fks_ev .gt. xiBSVcut_used) return
@@ -62,7 +64,8 @@
62 g22=g**(nint(2*wgtbpower+2))64 g22=g**(nint(2*wgtbpower+2))
63 wgt1=wgtnstmp*f_nb/g2265 wgt1=wgtnstmp*f_nb/g22
64 wgt4=wgtnstmp_avgvirt*f_nb/g2266 wgt4=wgtnstmp_avgvirt*f_nb/g22
65 if (ickkw.eq.3 .and. fxfx_exp_rewgt.ne.0d0) then67 if (ickkw.eq.3 .and. fxfx_exp_rewgt.ne.0d0 .and. abrv.ne.'born')
68 $ then
66 wgt1=wgt1 - fxfx_exp_rewgt*born_wgt*f_nb/g2/(4d0*pi)69 wgt1=wgt1 - fxfx_exp_rewgt*born_wgt*f_nb/g2/(4d0*pi)
67 elseif (ickkw.eq.-1) then70 elseif (ickkw.eq.-1) then
68 if (wgtbpower.ne.0) then71 if (wgtbpower.ne.0) then
6972
=== modified file 'Template/NLO/SubProcesses/reweight.f'
--- Template/NLO/SubProcesses/reweight.f 2017-06-19 14:42:53 +0000
+++ Template/NLO/SubProcesses/reweight.f 2017-11-30 23:06:43 +0000
@@ -48,7 +48,7 @@
48 stop48 stop
49 endif49 endif
5050
51 if (iipdg.eq.21) then51 if (abs(iipdg).eq.21) then
52c Gluon sudakov 52c Gluon sudakov
53c g->gg contribution53c g->gg contribution
54 gamma=CA*alphasq0*log(Q1/q0)/pi ! A154 gamma=CA*alphasq0*log(Q1/q0)/pi ! A1
@@ -211,7 +211,9 @@
211 integer ipdg, irfl211 integer ipdg, irfl
212 integer get_color212 integer get_color
213213
214 isqcd=(iabs(get_color(ipdg)).gt.1)214 irfl=ipdg
215 if (irfl.eq.-21)irfl=21
216 isqcd=(iabs(get_color(irfl)).gt.1)
215217
216 return218 return
217 end219 end
@@ -276,6 +278,9 @@
276 idmo=ipdg(imo)278 idmo=ipdg(imo)
277 idda1=ipdg(ida1)279 idda1=ipdg(ida1)
278 idda2=ipdg(ida2)280 idda2=ipdg(ida2)
281 if (idmo.eq.-21) idmo=21
282 if (idda1.eq.-21) idda1=21
283 if (idda2.eq.-21) idda2=21
279284
280 if (btest(mlevel,4)) then285 if (btest(mlevel,4)) then
281 write(*,*) ' updating ipart for: ',ida1,ida2,' -> ',imo286 write(*,*) ' updating ipart for: ',ida1,ida2,' -> ',imo
@@ -429,6 +434,7 @@
429 idmo=ipdg(imo)434 idmo=ipdg(imo)
430 idda1=ipdg(ida1)435 idda1=ipdg(ida1)
431 idda2=ipdg(ida2)436 idda2=ipdg(ida2)
437
432c Check QCD vertex438c Check QCD vertex
433 if(islast.or..not.isqcd(idmo).or..not.isqcd(idda1).or.439 if(islast.or..not.isqcd(idmo).or..not.isqcd(idda1).or.
434 & .not.isqcd(idda2)) then440 & .not.isqcd(idda2)) then
@@ -795,7 +801,7 @@
795c line801c line
796 if(goodjet(ida(3-i))) then802 if(goodjet(ida(3-i))) then
797 if(partonline(j).or.803 if(partonline(j).or.
798 $ ipdgcl(ida(3-i),igraphs(1),nFKSprocess).eq.21)then804 $ abs(ipdgcl(ida(3-i),igraphs(1),nFKSprocess)).eq.21)then
799c Need to include gluon to avoid soft singularity805c Need to include gluon to avoid soft singularity
800 iqjets(ipart(1,ida(3-i)))=1 ! 1 means for sure jet806 iqjets(ipart(1,ida(3-i)))=1 ! 1 means for sure jet
801 else807 else
802808
=== modified file 'UpdateNotes.txt'
--- UpdateNotes.txt 2017-11-24 22:52:27 +0000
+++ UpdateNotes.txt 2017-11-30 23:06:43 +0000
@@ -1,4 +1,9 @@
1Update notes for MadGraph5_aMC@NLO (in reverse time order)1Update notes for MadGraph5_aMC@NLO (in reverse time order)
22.6.1 (XX/XX/17)
3 New Functionalities:
4 --------------------
5 RF+MZ: It is now possible to add LO matrix elements (with [LOonly])
6 to Fx-Fx merged samples. Thanks to Josh Bendavid for testing.
27
32.6.182.6.1
4 OM: Re-factoring the code asking which program to use (both at LO and NLO)9 OM: Re-factoring the code asking which program to use (both at LO and NLO)
510
=== modified file 'madgraph/fks/fks_helas_objects.py'
--- madgraph/fks/fks_helas_objects.py 2016-02-23 09:08:23 +0000
+++ madgraph/fks/fks_helas_objects.py 2017-11-30 23:06:43 +0000
@@ -125,6 +125,8 @@
125 gen_color=False)125 gen_color=False)
126126
127 processes = helasfull.born_matrix_element.get('processes')127 processes = helasfull.born_matrix_element.get('processes')
128
129 max_configs = helasfull.born_matrix_element.get_num_configs()
128 130
129 metag = helas_objects.IdentifyMETag.create_tag(helasfull.born_matrix_element.get('base_amplitude'))131 metag = helas_objects.IdentifyMETag.create_tag(helasfull.born_matrix_element.get('base_amplitude'))
130 132
@@ -134,7 +136,7 @@
134 cPickle.dump(outdata,output,protocol=2)136 cPickle.dump(outdata,output,protocol=2)
135 output.close()137 output.close()
136 138
137 return [output.name,metag,has_loops,processes]139 return [output.name,metag,has_loops,processes,max_configs]
138140
139141
140def async_finalize_matrix_elements(args):142def async_finalize_matrix_elements(args):
@@ -322,6 +324,8 @@
322 self['has_loops'] = self['has_loops'] or has_loops324 self['has_loops'] = self['has_loops'] or has_loops
323 processes = bornout[3]325 processes = bornout[3]
324 self['processes'].extend(processes)326 self['processes'].extend(processes)
327 self['max_particles'] = max([self['max_configs']] + [len(p['legs']) + 1 for p in bornout[3]])
328 self['max_configs'] = max(self['max_configs'], bornout[4])
325 unique = True329 unique = True
326 for ime2,bornout2 in enumerate(unique_me_list):330 for ime2,bornout2 in enumerate(unique_me_list):
327 mefile2 = bornout2[0]331 mefile2 = bornout2[0]
@@ -394,12 +398,12 @@
394 break398 break
395 self['has_virtuals'] = has_virtuals399 self['has_virtuals'] = has_virtuals
396 400
397 configs_list = []401 configs_list = [self['max_configs']]
398 for meout in realmapout:402 for meout in realmapout:
399 configs_list.append(meout[1])403 configs_list.append(meout[1])
400 self['max_configs'] = max(configs_list)404 self['max_configs'] = max(configs_list)
401 405
402 nparticles_list = []406 nparticles_list = [self['max_particles']]
403 for meout in realmapout:407 for meout in realmapout:
404 nparticles_list.append(meout[2])408 nparticles_list.append(meout[2])
405 self['max_particles'] = max(nparticles_list) 409 self['max_particles'] = max(nparticles_list)
@@ -453,14 +457,16 @@
453457
454 def get_max_configs(self):458 def get_max_configs(self):
455 """Return max_configs"""459 """Return max_configs"""
456460
457 if self['max_configs'] < 0:461 if self['max_configs'] < 0:
458 try:462 try:
459 self['max_configs'] = max([me.get_num_configs() \463 self['max_configs'] = max([me.get_num_configs() \
460 for me in self['real_matrix_elements']])464 for me in self['real_matrix_elements']])
461 except ValueError:465 except ValueError:
462 self['max_configs'] = max([me.born_matrix_element.get_num_configs() \466 pass
463 for me in self['matrix_elements']])467 self['max_configs'] = max(self['max_configs'],\
468 max([me.born_matrix_element.get_num_configs() \
469 for me in self['matrix_elements']]))
464470
465 return self['max_configs']471 return self['max_configs']
466472
467473
=== modified file 'madgraph/interface/madgraph_interface.py'
--- madgraph/interface/madgraph_interface.py 2017-11-23 12:05:44 +0000
+++ madgraph/interface/madgraph_interface.py 2017-11-30 23:06:43 +0000
@@ -4535,7 +4535,7 @@
4535 raise self.InvalidCmd, "No particle %s in model" % part_name4535 raise self.InvalidCmd, "No particle %s in model" % part_name
45364536
4537 # Apply the keyword 'all' for perturbed coupling orders.4537 # Apply the keyword 'all' for perturbed coupling orders.
4538 if perturbation_couplings.lower()=='all':4538 if perturbation_couplings.lower() in ['all', 'loonly']:
4539 perturbation_couplings=' '.join(self._curr_model['perturbation_couplings'])4539 perturbation_couplings=' '.join(self._curr_model['perturbation_couplings'])
45404540
4541 if filter(lambda leg: leg.get('state') == True, myleglist):4541 if filter(lambda leg: leg.get('state') == True, myleglist):
45424542
=== modified file 'madgraph/interface/master_interface.py'
--- madgraph/interface/master_interface.py 2017-03-27 08:37:47 +0000
+++ madgraph/interface/master_interface.py 2017-11-30 23:06:43 +0000
@@ -184,8 +184,11 @@
184 else:184 else:
185 # If not option is set the convention is that the mode is 'all'185 # If not option is set the convention is that the mode is 'all'
186 # unless no perturbation orders is defined.186 # unless no perturbation orders is defined.
187 if len(orders)>0:187 # if order is set to LOonly assume LOonly=QCD
188 return ('NLO','all',orders)188 if orders == ['LOonly']:
189 return ('NLO', 'LOonly', ['QCD'])
190 elif len(orders)>0:
191 return ('NLO','all',orders)
189 else:192 else:
190 return ('tree',None,[]) 193 return ('tree',None,[])
191 else:194 else:
192195
=== modified file 'madgraph/iolibs/export_fks.py'
--- madgraph/iolibs/export_fks.py 2017-06-16 15:25:01 +0000
+++ madgraph/iolibs/export_fks.py 2017-11-30 23:06:43 +0000
@@ -524,7 +524,7 @@
524 ncolor,maxflow,fortran_model)524 ncolor,maxflow,fortran_model)
525525
526 filename = 'configs_and_props_info.dat'526 filename = 'configs_and_props_info.dat'
527 nconfigs,max_leg_number,nfksconfs=self.write_configs_and_props_info_file(527 nconfigs,max_leg_number=self.write_configs_and_props_info_file(
528 filename, 528 filename,
529 matrix_element)529 matrix_element)
530530
@@ -670,12 +670,6 @@
670 else:670 else:
671 os.system("ln -s ../BinothLHA_user.f ./BinothLHA.f")671 os.system("ln -s ../BinothLHA_user.f ./BinothLHA.f")
672672
673
674 #import nexternal/leshouches in Source
675# ln('nexternal.inc', '../../Source', log=False)
676# ln('born_leshouche.inc', '../../Source', log=False)
677
678
679 # Return to SubProcesses dir673 # Return to SubProcesses dir
680 os.chdir(os.path.pardir)674 os.chdir(os.path.pardir)
681 # Add subprocess to subproc.mg675 # Add subprocess to subproc.mg
@@ -683,7 +677,6 @@
683 files.append_to_file(filename,677 files.append_to_file(filename,
684 self.write_subproc,678 self.write_subproc,
685 borndir)679 borndir)
686
687 680
688 os.chdir(cwd)681 os.chdir(cwd)
689 # Generate info page682 # Generate info page
@@ -955,9 +948,28 @@
955 lines.append("data (real_from_born_conf(irfbc,%d),irfbc=1,%d) /%s/" \948 lines.append("data (real_from_born_conf(irfbc,%d),irfbc=1,%d) /%s/" \
956 % (iFKS,len(links),real_configs))949 % (iFKS,len(links),real_configs))
957950
951 # this is for 'LOonly' processes; in this case, a fake configuration
952 # with all the born diagrams is written
953 if not matrix_element.get_fks_info_list():
954 # compute (again) the number of configurations at the born
955 base_diagrams = born_me.get('base_amplitude').get('diagrams')
956 minvert = min([max([len(vert.get('legs')) for vert in \
957 diag.get('vertices')]) for diag in base_diagrams])
958
959 for idiag, diag in enumerate(base_diagrams):
960 if any([len(vert.get('legs')) > minvert for vert in
961 diag.get('vertices')]):
962 # Only 3-vertices allowed in configs.inc
963 continue
964 max_links = max_links + 1
965
966 real_configs=', '.join(['%d' % i for i in range(1, max_links+1)])
967 lines.append("data (real_from_born_conf(irfbc,%d),irfbc=1,%d) /%s/" \
968 % (1,max_links,real_configs))
969
958 lines2.append("integer irfbc")970 lines2.append("integer irfbc")
959 lines2.append("integer real_from_born_conf(%d,%d)" \971 lines2.append("integer real_from_born_conf(%d,%d)" \
960 % (max_links,len(matrix_element.get_fks_info_list())))972 % (max_links, max(len(matrix_element.get_fks_info_list()),1)))
961 # Write the file973 # Write the file
962 writer.writelines(lines2+lines)974 writer.writelines(lines2+lines)
963975
@@ -1057,12 +1069,14 @@
1057 lines.append("# M -> PMASS_D/PWIDTH_D") 1069 lines.append("# M -> PMASS_D/PWIDTH_D")
1058 lines.append("# P -> POW_D") 1070 lines.append("# P -> POW_D")
1059 lines2 = []1071 lines2 = []
1060 nconfs = len(matrix_element.get_fks_info_list())
1061 (nexternal, ninitial) = matrix_element.get_nexternal_ninitial()1072 (nexternal, ninitial) = matrix_element.get_nexternal_ninitial()
10621073
1063 max_iconfig=01074 max_iconfig=0
1064 max_leg_number=01075 max_leg_number=0
10651076
1077 ########################################################
1078 # this is for standard processes with [(real=)XXX]
1079 ########################################################
1066 for iFKS, conf in enumerate(matrix_element.get_fks_info_list()):1080 for iFKS, conf in enumerate(matrix_element.get_fks_info_list()):
1067 iFKS=iFKS+11081 iFKS=iFKS+1
1068 iconfig = 01082 iconfig = 0
@@ -1147,11 +1161,141 @@
1147 (iFKS,leg.get('number'), iconf + 1, leg.get('id')))1161 (iFKS,leg.get('number'), iconf + 1, leg.get('id')))
1148 lines2.append("P %4d %4d %4d %4d " % \1162 lines2.append("P %4d %4d %4d %4d " % \
1149 (iFKS,leg.get('number'), iconf + 1, pow_part))1163 (iFKS,leg.get('number'), iconf + 1, pow_part))
1164
1165 ########################################################
1166 # this is for [LOonly=XXX]
1167 ########################################################
1168 if not matrix_element.get_fks_info_list():
1169 born_me = matrix_element.born_matrix_element
1170 # as usual, in this case we assume just one FKS configuration
1171 # exists with diagrams corresponding to born ones X the ij -> i,j
1172 # splitting. Here j is chosen to be the last colored particle in
1173 # the particle list
1174 bornproc = born_me.get('processes')[0]
1175 colors = [l.get('color') for l in bornproc.get('legs')]
1176
1177 fks_i = len(colors)
1178 # use the last colored particle if it exists, or
1179 # just the last
1180 fks_j=1
1181 for cpos, col in enumerate(colors):
1182 if col != 1:
1183 fks_j = cpos+1
1184 fks_j_id = [l.get('id') for l in bornproc.get('legs')][cpos]
1185
1186 # for the moment, if j is initial-state, we do nothing
1187 if fks_j > ninitial:
1188 iFKS=1
1189 iconfig = 0
1190 s_and_t_channels = []
1191 mapconfigs = []
1192 base_diagrams = born_me.get('base_amplitude').get('diagrams')
1193 model = born_me.get('base_amplitude').get('process').get('model')
1194 minvert = min([max([len(vert.get('legs')) for vert in \
1195 diag.get('vertices')]) for diag in base_diagrams])
1196
1197 lines.append("# ")
1198 lines.append("# nFKSprocess %d" % iFKS)
1199 for idiag, diag in enumerate(base_diagrams):
1200 if any([len(vert.get('legs')) > minvert for vert in
1201 diag.get('vertices')]):
1202 # Only 3-vertices allowed in configs.inc
1203 continue
1204 iconfig = iconfig + 1
1205 helas_diag = born_me.get('diagrams')[idiag]
1206 mapconfigs.append(helas_diag.get('number'))
1207 lines.append("# Diagram %d for nFKSprocess %d" % \
1208 (helas_diag.get('number'),iFKS))
1209 # Correspondance between the config and the amplitudes
1210 lines.append("C %4d %4d %4d " % (iFKS,iconfig,
1211 helas_diag.get('number')))
1212
1213 # Need to reorganize the topology so that we start with all
1214 # final state external particles and work our way inwards
1215 schannels, tchannels = helas_diag.get('amplitudes')[0].\
1216 get_s_and_t_channels(ninitial, model, 990)
1217
1218 s_and_t_channels.append([schannels, tchannels])
1219
1220 #the first thing to write is the splitting ij -> i,j
1221 lines.append("F %4d %4d %4d %4d" % \
1222 (iFKS,-1,iconfig,2))
1223 #(iFKS,last_leg.get('number'), iconfig, len(daughters)))
1224 lines.append("D %4d" % nexternal)
1225 lines.append("D %4d" % fks_j)
1226 lines.append("S %4d %4d %4d %10d" % \
1227 (iFKS,-1, iconfig,fks_j_id))
1228 # now we continue with all the other vertices of the diagrams;
1229 # we need to shift the 'last_leg' by 1 and replace leg fks_j with -1
1230
1231 # Write out propagators for s-channel and t-channel vertices
1232 allchannels = schannels
1233 if len(tchannels) > 1:
1234 # Write out tchannels only if there are any non-trivial ones
1235 allchannels = schannels + tchannels
1236
1237 for vert in allchannels:
1238 daughters = [leg.get('number') for leg in vert.get('legs')[:-1]]
1239 last_leg = vert.get('legs')[-1]
1240 lines.append("F %4d %4d %4d %4d" % \
1241 (iFKS,last_leg.get('number')-1, iconfig, len(daughters)))
1242
1243 # legs with negative number in daughters have to be shifted by -1
1244 for i_dau in range(len(daughters)):
1245 if daughters[i_dau] < 0:
1246 daughters[i_dau] += -1
1247 # finally relable fks with -1 if it appears in daughters
1248 if fks_j in daughters:
1249 daughters[daughters.index(fks_j)] = -1
1250 for d in daughters:
1251 lines.append("D %4d" % d)
1252 if vert in schannels:
1253 lines.append("S %4d %4d %4d %10d" % \
1254 (iFKS,last_leg.get('number')-1, iconfig,
1255 last_leg.get('id')))
1256 elif vert in tchannels[:-1]:
1257 lines.append("T %4d %4d %4d %10d" % \
1258 (iFKS,last_leg.get('number')-1, iconfig,
1259 abs(last_leg.get('id'))))
1260
1261 # update what the array sizes (mapconfig,iforest,etc) will be
1262 max_leg_number = min(max_leg_number,last_leg.get('number')-1)
1263 max_iconfig = max(max_iconfig,iconfig)
1264
1265 # Write out number of configs
1266 lines.append("# Number of configs for nFKSprocess %d" % iFKS)
1267 lines.append("C %4d %4d %4d" % (iFKS,0,iconfig))
1268
1269 # write the props.inc information
1270 lines2.append("# ")
1271 particle_dict = born_me.get('processes')[0].get('model').\
1272 get('particle_dict')
1273
1274 for iconf, configs in enumerate(s_and_t_channels):
1275 lines2.append("M %4d %4d %4d %10d " % \
1276 (iFKS,-1, iconf + 1, fks_j_id))
1277 pow_part = 1 + int(particle_dict[fks_j_id].is_boson())
1278 lines2.append("P %4d %4d %4d %4d " % \
1279 (iFKS,-1, iconf + 1, pow_part))
1280 for vertex in configs[0] + configs[1][:-1]:
1281 leg = vertex.get('legs')[-1]
1282 if leg.get('id') not in particle_dict:
1283 # Fake propagator used in multiparticle vertices
1284 pow_part = 0
1285 else:
1286 particle = particle_dict[leg.get('id')]
1287
1288 pow_part = 1 + int(particle.is_boson())
1289
1290 lines2.append("M %4d %4d %4d %10d " % \
1291 (iFKS,leg.get('number')-1, iconf + 1, leg.get('id')))
1292 lines2.append("P %4d %4d %4d %4d " % \
1293 (iFKS,leg.get('number')-1, iconf + 1, pow_part))
1150 1294
1151 # Write the file1295 # Write the file
1152 open(filename,'w').write('\n'.join(lines+lines2))1296 open(filename,'w').write('\n'.join(lines+lines2))
11531297
1154 return max_iconfig, max_leg_number, nconfs1298 return max_iconfig, max_leg_number
11551299
11561300
1157 def write_leshouche_info_declarations(self, writer, nfksconfs, 1301 def write_leshouche_info_declarations(self, writer, nfksconfs,
@@ -1203,6 +1347,11 @@
1203 maxproc = max(maxproc, nprocs)1347 maxproc = max(maxproc, nprocs)
1204 maxflow = max(maxflow, nflows)1348 maxflow = max(maxflow, nflows)
12051349
1350 # this is for LOonly
1351 if not matrix_element.get_fks_info_list():
1352 (newlines, nprocs, nflows) = self.get_leshouche_lines_dummy(matrix_element.born_matrix_element, 1)
1353 lines.extend(newlines)
1354
1206 # Write the file1355 # Write the file
1207 open(filename,'w').write('\n'.join(lines))1356 open(filename,'w').write('\n'.join(lines))
12081357
@@ -2206,8 +2355,8 @@
2206 charges = [0.] * len(colors) 2355 charges = [0.] * len(colors)
22072356
2208 fks_i = len(colors)2357 fks_i = len(colors)
2209 # use the first colored particle if it exists, or 2358 # use the last colored particle if it exists, or
2210 # just the first2359 # just the last
2211 fks_j=12360 fks_j=1
2212 for cpos, col in enumerate(colors[:-1]):2361 for cpos, col in enumerate(colors[:-1]):
2213 if col != 1:2362 if col != 1:
@@ -2709,6 +2858,109 @@
2709 return lines, nproc, nflow2858 return lines, nproc, nflow
27102859
27112860
2861 def get_leshouche_lines_dummy(self, matrix_element, ime):
2862 #test written
2863 """As get_leshouche_lines, but for 'fake' real emission processes (LOonly
2864 In this case, write born color structure times ij -> i,j splitting)
2865 """
2866
2867 bornproc = matrix_element.get('processes')[0]
2868 colors = [l.get('color') for l in bornproc.get('legs')]
2869
2870 fks_i = len(colors)
2871 # use the last colored particle if it exists, or
2872 # just the last
2873 fks_j=1
2874 for cpos, col in enumerate(colors):
2875 if col != 1:
2876 fks_j = cpos+1
2877
2878 # Extract number of external particles
2879 (nexternal, ninitial) = matrix_element.get_nexternal_ninitial()
2880 nexternal+=1 # remember, in this case matrix_element is born
2881
2882 lines = []
2883 for iproc, proc in enumerate(matrix_element.get('processes')):
2884 # add the fake extra leg
2885 legs = proc.get_legs_with_decays() + \
2886 [fks_common.FKSLeg({'id': -21,
2887 'number': nexternal,
2888 'state': True,
2889 'fks': 'i',
2890 'color': 8,
2891 'charge': 0.,
2892 'massless': True,
2893 'spin': 3,
2894 'is_part': True,
2895 'self_antipart': True})]
2896
2897 lines.append("I %4d %4d %s" % \
2898 (ime, iproc + 1,
2899 " ".join([str(l.get('id')) for l in legs])))
2900 for i in [1, 2]:
2901 lines.append("M %4d %4d %4d %s" % \
2902 (ime, i, iproc + 1,
2903 " ".join([ "%3d" % 0 ] * ninitial + \
2904 [ "%3d" % i ] * (nexternal - ninitial))))
2905
2906 # Here goes the color connections corresponding to the JAMPs
2907 # Only one output, for the first subproc!
2908 if iproc == 0:
2909 # If no color basis, just output trivial color flow
2910 if not matrix_element.get('color_basis'):
2911 for i in [1, 2]:
2912 lines.append("C %4d %4d 1 %s" % \
2913 (ime, i,
2914 " ".join([ "%3d" % 0 ] * nexternal)))
2915 color_flow_list = []
2916 nflow = 1
2917
2918 else:
2919 # in this case the last particle (-21) has two color indices
2920 # and it has to be emitted by j_fks
2921 # First build a color representation dictionnary
2922 repr_dict = {}
2923 for l in legs[:-1]:
2924 repr_dict[l.get('number')] = \
2925 proc.get('model').get_particle(l.get('id')).get_color()\
2926 * (-1)**(1+l.get('state'))
2927 # Get the list of color flows
2928 color_flow_list = \
2929 matrix_element.get('color_basis').color_flow_decomposition(repr_dict,
2930 ninitial)
2931 # And output them properly
2932 for cf_i, color_flow_dict in enumerate(color_flow_list):
2933 # we have to add the extra leg (-21), linked to the j_fks leg
2934 # first, find the maximum color label
2935 maxicol = max(sum(color_flow_dict.values(), []))
2936 #then, replace the color labels
2937 if color_flow_dict[fks_j][0] == 0:
2938 anti = True
2939 icol_j = color_flow_dict[fks_j][1]
2940 else:
2941 anti = False
2942 icol_j = color_flow_dict[fks_j][0]
2943
2944 if anti:
2945 color_flow_dict[nexternal] = (maxicol + 1, color_flow_dict[fks_j][1])
2946 color_flow_dict[fks_j][1] = maxicol + 1
2947 else:
2948 color_flow_dict[nexternal] = (color_flow_dict[fks_j][0], maxicol + 1)
2949 color_flow_dict[fks_j][0] = maxicol + 1
2950
2951 for i in [0, 1]:
2952 lines.append("C %4d %4d %4d %s" % \
2953 (ime, i + 1, cf_i + 1,
2954 " ".join(["%3d" % color_flow_dict[l.get('number')][i] \
2955 for l in legs])))
2956
2957 nflow = len(color_flow_list)
2958
2959 nproc = len(matrix_element.get('processes'))
2960
2961 return lines, nproc, nflow
2962
2963
2712 #===============================================================================2964 #===============================================================================
2713 # get_den_factor_lines2965 # get_den_factor_lines
2714 #===============================================================================2966 #===============================================================================
27152967
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc 2016-02-27 14:33:01 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc 2017-11-30 23:06:43 +0000
@@ -1,12 +1,12 @@
1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
2 PARAMETER (LMAXCONFIGS_USED= 0)2 PARAMETER (LMAXCONFIGS_USED= 3)
3 PARAMETER (MAX_BRANCH_USED = 0)3 PARAMETER (MAX_BRANCH_USED = 3)
4 INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED)4 INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED)
5 INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)5 INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
6 INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)6 INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
7 INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)7 INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
8 DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-18 DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1
9 $ ,LMAXCONFIGS_USED)9 $ ,LMAXCONFIGS_USED)
10 DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-110 DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1
11 $ ,LMAXCONFIGS_USED)11 $ ,LMAXCONFIGS_USED)
12 INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)12 INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
1313
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_info.dat 2017-11-30 23:06:43 +0000
@@ -3,4 +3,57 @@
3# S -> SPROP_D3# S -> SPROP_D
4# T -> TPRID_D4# T -> TPRID_D
5# M -> PMASS_D/PWIDTH_D5# M -> PMASS_D/PWIDTH_D
6# P -> POW_D
7\ No newline at end of file6\ No newline at end of file
7# P -> POW_D
8#
9# nFKSprocess 1
10# Diagram 1 for nFKSprocess 1
11C 1 1 1
12F 1 -1 1 2
13D 5
14D 4
15S 1 -1 1 -6
16F 1 -2 1 2
17D -1
18D 3
19S 1 -2 1 21
20# Diagram 2 for nFKSprocess 1
21C 1 2 2
22F 1 -1 2 2
23D 5
24D 4
25S 1 -1 2 -6
26F 1 -2 2 2
27D 1
28D 3
29T 1 -2 2 6
30F 1 -3 2 2
31D -2
32D -1
33# Diagram 3 for nFKSprocess 1
34C 1 3 3
35F 1 -1 3 2
36D 5
37D 4
38S 1 -1 3 -6
39F 1 -2 3 2
40D 1
41D -1
42T 1 -2 3 6
43F 1 -3 3 2
44D -2
45D 3
46# Number of configs for nFKSprocess 1
47C 1 0 3
48#
49M 1 -1 1 -6
50P 1 -1 1 1
51M 1 -2 1 21
52P 1 -2 1 2
53M 1 -1 2 -6
54P 1 -1 2 1
55M 1 -2 2 6
56P 1 -2 2 1
57M 1 -1 3 -6
58P 1 -1 3 1
59M 1 -2 3 -6
60P 1 -2 3 1
8\ No newline at end of file61\ No newline at end of file
962
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000
@@ -1,3 +1,10 @@
1# I -> IDUP_D1# I -> IDUP_D
2# M -> MOTHUP_D2# M -> MOTHUP_D
3# C -> ICOLUP_D
4\ No newline at end of file3\ No newline at end of file
4# C -> ICOLUP_D
5I 1 1 21 21 6 -6 -21
6M 1 1 1 0 0 1 1 1
7M 1 2 1 0 0 2 2 2
8C 1 1 1 501 502 501 0 504
9C 1 2 1 502 503 0 504 503
10C 1 1 2 503 501 501 0 504
11C 1 2 2 502 503 0 504 502
5\ No newline at end of file12\ No newline at end of file
613
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,2 @@
1 INTEGER N_MAX_CG1 INTEGER N_MAX_CG
2 PARAMETER (N_MAX_CG=0)2 PARAMETER (N_MAX_CG=3)
33
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%real_from_born_configs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%real_from_born_configs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%real_from_born_configs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,3 @@
1 INTEGER IRFBC1 INTEGER IRFBC
2 INTEGER REAL_FROM_BORN_CONF(0,0)2 INTEGER REAL_FROM_BORN_CONF(3,1)
3 DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,3) /1, 2, 3/
34
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc 2016-02-27 14:33:01 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc 2017-11-30 23:06:43 +0000
@@ -1,12 +1,12 @@
1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
2 PARAMETER (LMAXCONFIGS_USED= 0)2 PARAMETER (LMAXCONFIGS_USED= 1)
3 PARAMETER (MAX_BRANCH_USED = 0)3 PARAMETER (MAX_BRANCH_USED = 2)
4 INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED)4 INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED)
5 INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)5 INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
6 INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)6 INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
7 INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)7 INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
8 DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-18 DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1
9 $ ,LMAXCONFIGS_USED)9 $ ,LMAXCONFIGS_USED)
10 DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-110 DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1
11 $ ,LMAXCONFIGS_USED)11 $ ,LMAXCONFIGS_USED)
12 INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)12 INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
1313
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_info.dat 2017-11-30 23:06:43 +0000
@@ -3,4 +3,23 @@
3# S -> SPROP_D3# S -> SPROP_D
4# T -> TPRID_D4# T -> TPRID_D
5# M -> PMASS_D/PWIDTH_D5# M -> PMASS_D/PWIDTH_D
6# P -> POW_D
7\ No newline at end of file6\ No newline at end of file
7# P -> POW_D
8#
9# nFKSprocess 1
10# Diagram 1 for nFKSprocess 1
11C 1 1 1
12F 1 -1 1 2
13D 5
14D 4
15S 1 -1 1 -6
16F 1 -2 1 2
17D -1
18D 3
19S 1 -2 1 21
20# Number of configs for nFKSprocess 1
21C 1 0 1
22#
23M 1 -1 1 -6
24P 1 -1 1 1
25M 1 -2 1 21
26P 1 -2 1 2
8\ No newline at end of file27\ No newline at end of file
928
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000
@@ -1,3 +1,19 @@
1# I -> IDUP_D1# I -> IDUP_D
2# M -> MOTHUP_D2# M -> MOTHUP_D
3# C -> ICOLUP_D
4\ No newline at end of file3\ No newline at end of file
4# C -> ICOLUP_D
5I 1 1 2 -2 6 -6 -21
6M 1 1 1 0 0 1 1 1
7M 1 2 1 0 0 2 2 2
8C 1 1 1 501 0 502 0 503
9C 1 2 1 0 501 0 503 502
10C 1 1 2 502 0 502 0 503
11C 1 2 2 0 501 0 503 501
12I 1 2 4 -4 6 -6 -21
13M 1 1 2 0 0 1 1 1
14M 1 2 2 0 0 2 2 2
15I 1 3 1 -1 6 -6 -21
16M 1 1 3 0 0 1 1 1
17M 1 2 3 0 0 2 2 2
18I 1 4 3 -3 6 -6 -21
19M 1 1 4 0 0 1 1 1
20M 1 2 4 0 0 2 2 2
5\ No newline at end of file21\ No newline at end of file
622
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,2 @@
1 INTEGER N_MAX_CG1 INTEGER N_MAX_CG
2 PARAMETER (N_MAX_CG=0)2 PARAMETER (N_MAX_CG=1)
33
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%real_from_born_configs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%real_from_born_configs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%real_from_born_configs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,3 @@
1 INTEGER IRFBC1 INTEGER IRFBC
2 INTEGER REAL_FROM_BORN_CONF(0,0)2 INTEGER REAL_FROM_BORN_CONF(1,1)
3 DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,1) /1/
34
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc 2016-02-27 14:33:01 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc 2017-11-30 23:06:43 +0000
@@ -1,12 +1,12 @@
1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED1 INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
2 PARAMETER (LMAXCONFIGS_USED= 0)2 PARAMETER (LMAXCONFIGS_USED= 1)
3 PARAMETER (MAX_BRANCH_USED = 0)3 PARAMETER (MAX_BRANCH_USED = 2)
4 INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED)4 INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED)
5 INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)5 INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
6 INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)6 INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
7 INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)7 INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
8 DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-18 DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1
9 $ ,LMAXCONFIGS_USED)9 $ ,LMAXCONFIGS_USED)
10 DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-110 DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1
11 $ ,LMAXCONFIGS_USED)11 $ ,LMAXCONFIGS_USED)
12 INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)12 INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
1313
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_info.dat 2017-11-30 23:06:43 +0000
@@ -3,4 +3,23 @@
3# S -> SPROP_D3# S -> SPROP_D
4# T -> TPRID_D4# T -> TPRID_D
5# M -> PMASS_D/PWIDTH_D5# M -> PMASS_D/PWIDTH_D
6# P -> POW_D
7\ No newline at end of file6\ No newline at end of file
7# P -> POW_D
8#
9# nFKSprocess 1
10# Diagram 1 for nFKSprocess 1
11C 1 1 1
12F 1 -1 1 2
13D 5
14D 4
15S 1 -1 1 -6
16F 1 -2 1 2
17D -1
18D 3
19S 1 -2 1 21
20# Number of configs for nFKSprocess 1
21C 1 0 1
22#
23M 1 -1 1 -6
24P 1 -1 1 1
25M 1 -2 1 21
26P 1 -2 1 2
8\ No newline at end of file27\ No newline at end of file
928
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000
@@ -1,3 +1,19 @@
1# I -> IDUP_D1# I -> IDUP_D
2# M -> MOTHUP_D2# M -> MOTHUP_D
3# C -> ICOLUP_D
4\ No newline at end of file3\ No newline at end of file
4# C -> ICOLUP_D
5I 1 1 -2 2 6 -6 -21
6M 1 1 1 0 0 1 1 1
7M 1 2 1 0 0 2 2 2
8C 1 1 1 0 501 502 0 503
9C 1 2 1 501 0 0 503 502
10C 1 1 2 0 502 502 0 503
11C 1 2 2 501 0 0 503 501
12I 1 2 -4 4 6 -6 -21
13M 1 1 2 0 0 1 1 1
14M 1 2 2 0 0 2 2 2
15I 1 3 -1 1 6 -6 -21
16M 1 1 3 0 0 1 1 1
17M 1 2 3 0 0 2 2 2
18I 1 4 -3 3 6 -6 -21
19M 1 1 4 0 0 1 1 1
20M 1 2 4 0 0 2 2 2
5\ No newline at end of file21\ No newline at end of file
622
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,2 @@
1 INTEGER N_MAX_CG1 INTEGER N_MAX_CG
2 PARAMETER (N_MAX_CG=0)2 PARAMETER (N_MAX_CG=1)
33
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%real_from_born_configs.inc'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%real_from_born_configs.inc 2015-03-10 08:54:03 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%real_from_born_configs.inc 2017-11-30 23:06:43 +0000
@@ -1,2 +1,3 @@
1 INTEGER IRFBC1 INTEGER IRFBC
2 INTEGER REAL_FROM_BORN_CONF(0,0)2 INTEGER REAL_FROM_BORN_CONF(1,1)
3 DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,1) /1/
34
=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000
@@ -0,0 +1,4 @@
1 INCLUDE 'maxparticles.inc'
2 INCLUDE 'maxconfigs.inc'
3 INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW
4 PARAMETER (MAXPROC=4,NGRAPHS=3,NCOLOR=2,MAXFLOW=6)
05
=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000
@@ -0,0 +1,4 @@
1 INCLUDE 'maxparticles.inc'
2 INCLUDE 'maxconfigs.inc'
3 INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW
4 PARAMETER (MAXPROC=4,NGRAPHS=1,NCOLOR=2,MAXFLOW=4)
05
=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000
@@ -0,0 +1,4 @@
1 INCLUDE 'maxparticles.inc'
2 INCLUDE 'maxconfigs.inc'
3 INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW
4 PARAMETER (MAXPROC=4,NGRAPHS=1,NCOLOR=2,MAXFLOW=4)
05
=== modified file 'tests/unit_tests/iolibs/test_export_fks.py'
--- tests/unit_tests/iolibs/test_export_fks.py 2016-08-31 20:35:13 +0000
+++ tests/unit_tests/iolibs/test_export_fks.py 2017-11-30 23:06:43 +0000
@@ -92,6 +92,53 @@
92 self.assertEqual(old_l, new_l)92 self.assertEqual(old_l, new_l)
9393
9494
95 def test_wj_loonly_gen(self):
96 """check that the new (memory and cpu efficient) and old generation
97 mode at NLO give the same results for p p > w j [LOonly=QCD]
98 """
99 path = tempfile.mkdtemp('', 'TMPWTest', None)
100
101 def run_cmd(cmd):
102 interface.exec_cmd(cmd, errorhandling=False, printcmd=False,
103 precmd=True, postcmd=True)
104
105 interface = MGCmd.MasterCmd()
106
107 run_cmd('generate p p > w+ j [LOonly=QCD]')
108 run_cmd('output %s' % os.path.join(path, 'W-oldway'))
109 run_cmd('set low_mem_multicore_nlo_generation True')
110 run_cmd('generate p p > w+ j [LOonly=QCD]')
111 run_cmd('output %s' % os.path.join(path, 'W-newway'))
112 run_cmd('set low_mem_multicore_nlo_generation False')
113
114 # the P0 dirs
115 for oldf in \
116 (glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', '*.inc')) + \
117 glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', '*.f')) + \
118 [os.path.join(path, 'W-oldway', 'SubProcesses', 'proc_characteristics')]):
119
120 if os.path.islink(oldf):
121 continue
122
123 newf = oldf.replace('oldway', 'newway')
124
125 for old_l, new_l in zip(open(oldf), open(newf)):
126 self.assertEqual(old_l, new_l)
127
128 # the V0 dirs
129 for oldf in \
130 (glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', 'V0*', '*.inc')) + \
131 glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', 'V0*', '*.f'))):
132
133 if os.path.islink(oldf):
134 continue
135
136 newf = oldf.replace('oldway', 'newway')
137
138 for old_l, new_l in zip(open(oldf), open(newf)):
139 self.assertEqual(old_l, new_l)
140
141
95 def test_w_nlo_gen_gosam(self):142 def test_w_nlo_gen_gosam(self):
96 """check that the new generation mode works when gosam is set 143 """check that the new generation mode works when gosam is set
97 for p p > w [QCD] 144 for p p > w [QCD]

Subscribers

People subscribed via source and target branches

to all changes: