Merge lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging into lp:~mg5core2/mg5amcnlo/2.6.1
- 2.5.5_NLOandLOmerging
- Merge into 2.6.1
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Olivier Mattelaer | Approve | ||
Rikkert Frederix (community) | Approve | ||
Review via email: mp+331151@code.launchpad.net |
Commit message
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.
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
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
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):
----
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
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_
> 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
marco zaro (marco-zaro) wrote : | # |
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_
>> 2.130e+03 pb +6.3% -11.9%
>> -------
>>
>> Can we trus...
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_
> 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:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/2.5.5_NLOandLOmerging.
>
marco zaro (marco-zaro) wrote : | # |
Hi all,
any news on this?
thanks!
cheers,
Marco
Rikkert Frederix (frederix) : | # |
- 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
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
I'm doing the merge
Preview Diff
1 | === modified file 'Template/NLO/Source/setrun.f' |
2 | --- Template/NLO/Source/setrun.f 2017-07-25 14:13:14 +0000 |
3 | +++ Template/NLO/Source/setrun.f 2017-11-30 23:06:43 +0000 |
4 | @@ -125,7 +125,7 @@ |
5 | else |
6 | idbmup(i)=lpp(i) |
7 | endif |
8 | - ebmup(i)=ebeam(i) |
9 | + ebmup(i)=ebeam(i) |
10 | enddo |
11 | call get_pdfup(pdlabel,pdfgup,pdfsup,lhaid) |
12 | c Fill the nmemPDF(i) array with the number of PDF error set. This we |
13 | |
14 | === modified file 'Template/NLO/SubProcesses/driver_mintFO.f' |
15 | --- Template/NLO/SubProcesses/driver_mintFO.f 2017-06-19 17:15:00 +0000 |
16 | +++ Template/NLO/SubProcesses/driver_mintFO.f 2017-11-30 23:06:43 +0000 |
17 | @@ -784,11 +784,11 @@ |
18 | write (*,*) 'Process generated with [LOonly=QCD]. '/ |
19 | $ /'Setting abrv to "born".' |
20 | abrv='born' |
21 | - if (ickkw.eq.3) then |
22 | - write (*,*) 'FxFx merging not possible with'/ |
23 | - $ /' [LOonly=QCD] processes' |
24 | - stop 1 |
25 | - endif |
26 | +c$$$ if (ickkw.eq.3) then |
27 | +c$$$ write (*,*) 'FxFx merging not possible with'/ |
28 | +c$$$ $ /' [LOonly=QCD] processes' |
29 | +c$$$ stop 1 |
30 | +c$$$ endif |
31 | endif |
32 | endif |
33 | c |
34 | |
35 | === modified file 'Template/NLO/SubProcesses/driver_mintMC.f' |
36 | --- Template/NLO/SubProcesses/driver_mintMC.f 2017-07-29 08:03:34 +0000 |
37 | +++ Template/NLO/SubProcesses/driver_mintMC.f 2017-11-30 23:06:43 +0000 |
38 | @@ -711,11 +711,11 @@ |
39 | write (*,*) 'Process generated with [LOonly=QCD]. '/ |
40 | $ /'Setting abrv to "born".' |
41 | abrv='born' |
42 | - if (ickkw.eq.3) then |
43 | - write (*,*) 'FxFx merging not possible with'/ |
44 | - $ /' [LOonly=QCD] processes' |
45 | - stop 1 |
46 | - endif |
47 | +c$$$ if (ickkw.eq.3) then |
48 | +c$$$ write (*,*) 'FxFx merging not possible with'/ |
49 | +c$$$ $ /' [LOonly=QCD] processes' |
50 | +c$$$ stop 1 |
51 | +c$$$ endif |
52 | endif |
53 | endif |
54 | if(nbody.and.abrv.ne.'born'.and.abrv(1:2).ne.'vi' |
55 | |
56 | === modified file 'Template/NLO/SubProcesses/fks_singular.f' |
57 | --- Template/NLO/SubProcesses/fks_singular.f 2017-07-26 11:45:39 +0000 |
58 | +++ Template/NLO/SubProcesses/fks_singular.f 2017-11-30 23:06:43 +0000 |
59 | @@ -54,6 +54,8 @@ |
60 | common /cxiScut_used/xiScut_used,xiBSVcut_used |
61 | double precision fxfx_exp_rewgt |
62 | common /c_fxfx_exp_regt/ fxfx_exp_rewgt |
63 | + character*4 abrv |
64 | + common /to_abrv/ abrv |
65 | call cpu_time(tBefore) |
66 | if (f_nb.eq.0d0) return |
67 | if (xi_i_fks_ev .gt. xiBSVcut_used) return |
68 | @@ -62,7 +64,8 @@ |
69 | g22=g**(nint(2*wgtbpower+2)) |
70 | wgt1=wgtnstmp*f_nb/g22 |
71 | wgt4=wgtnstmp_avgvirt*f_nb/g22 |
72 | - if (ickkw.eq.3 .and. fxfx_exp_rewgt.ne.0d0) then |
73 | + if (ickkw.eq.3 .and. fxfx_exp_rewgt.ne.0d0 .and. abrv.ne.'born') |
74 | + $ then |
75 | wgt1=wgt1 - fxfx_exp_rewgt*born_wgt*f_nb/g2/(4d0*pi) |
76 | elseif (ickkw.eq.-1) then |
77 | if (wgtbpower.ne.0) then |
78 | |
79 | === modified file 'Template/NLO/SubProcesses/reweight.f' |
80 | --- Template/NLO/SubProcesses/reweight.f 2017-06-19 14:42:53 +0000 |
81 | +++ Template/NLO/SubProcesses/reweight.f 2017-11-30 23:06:43 +0000 |
82 | @@ -48,7 +48,7 @@ |
83 | stop |
84 | endif |
85 | |
86 | - if (iipdg.eq.21) then |
87 | + if (abs(iipdg).eq.21) then |
88 | c Gluon sudakov |
89 | c g->gg contribution |
90 | gamma=CA*alphasq0*log(Q1/q0)/pi ! A1 |
91 | @@ -211,7 +211,9 @@ |
92 | integer ipdg, irfl |
93 | integer get_color |
94 | |
95 | - isqcd=(iabs(get_color(ipdg)).gt.1) |
96 | + irfl=ipdg |
97 | + if (irfl.eq.-21)irfl=21 |
98 | + isqcd=(iabs(get_color(irfl)).gt.1) |
99 | |
100 | return |
101 | end |
102 | @@ -276,6 +278,9 @@ |
103 | idmo=ipdg(imo) |
104 | idda1=ipdg(ida1) |
105 | idda2=ipdg(ida2) |
106 | + if (idmo.eq.-21) idmo=21 |
107 | + if (idda1.eq.-21) idda1=21 |
108 | + if (idda2.eq.-21) idda2=21 |
109 | |
110 | if (btest(mlevel,4)) then |
111 | write(*,*) ' updating ipart for: ',ida1,ida2,' -> ',imo |
112 | @@ -429,6 +434,7 @@ |
113 | idmo=ipdg(imo) |
114 | idda1=ipdg(ida1) |
115 | idda2=ipdg(ida2) |
116 | + |
117 | c Check QCD vertex |
118 | if(islast.or..not.isqcd(idmo).or..not.isqcd(idda1).or. |
119 | & .not.isqcd(idda2)) then |
120 | @@ -795,7 +801,7 @@ |
121 | c line |
122 | if(goodjet(ida(3-i))) then |
123 | if(partonline(j).or. |
124 | - $ ipdgcl(ida(3-i),igraphs(1),nFKSprocess).eq.21)then |
125 | + $ abs(ipdgcl(ida(3-i),igraphs(1),nFKSprocess)).eq.21)then |
126 | c Need to include gluon to avoid soft singularity |
127 | iqjets(ipart(1,ida(3-i)))=1 ! 1 means for sure jet |
128 | else |
129 | |
130 | === modified file 'UpdateNotes.txt' |
131 | --- UpdateNotes.txt 2017-11-24 22:52:27 +0000 |
132 | +++ UpdateNotes.txt 2017-11-30 23:06:43 +0000 |
133 | @@ -1,4 +1,9 @@ |
134 | Update notes for MadGraph5_aMC@NLO (in reverse time order) |
135 | +2.6.1 (XX/XX/17) |
136 | + New Functionalities: |
137 | + -------------------- |
138 | + RF+MZ: It is now possible to add LO matrix elements (with [LOonly]) |
139 | + to Fx-Fx merged samples. Thanks to Josh Bendavid for testing. |
140 | |
141 | 2.6.1 |
142 | OM: Re-factoring the code asking which program to use (both at LO and NLO) |
143 | |
144 | === modified file 'madgraph/fks/fks_helas_objects.py' |
145 | --- madgraph/fks/fks_helas_objects.py 2016-02-23 09:08:23 +0000 |
146 | +++ madgraph/fks/fks_helas_objects.py 2017-11-30 23:06:43 +0000 |
147 | @@ -125,6 +125,8 @@ |
148 | gen_color=False) |
149 | |
150 | processes = helasfull.born_matrix_element.get('processes') |
151 | + |
152 | + max_configs = helasfull.born_matrix_element.get_num_configs() |
153 | |
154 | metag = helas_objects.IdentifyMETag.create_tag(helasfull.born_matrix_element.get('base_amplitude')) |
155 | |
156 | @@ -134,7 +136,7 @@ |
157 | cPickle.dump(outdata,output,protocol=2) |
158 | output.close() |
159 | |
160 | - return [output.name,metag,has_loops,processes] |
161 | + return [output.name,metag,has_loops,processes,max_configs] |
162 | |
163 | |
164 | def async_finalize_matrix_elements(args): |
165 | @@ -322,6 +324,8 @@ |
166 | self['has_loops'] = self['has_loops'] or has_loops |
167 | processes = bornout[3] |
168 | self['processes'].extend(processes) |
169 | + self['max_particles'] = max([self['max_configs']] + [len(p['legs']) + 1 for p in bornout[3]]) |
170 | + self['max_configs'] = max(self['max_configs'], bornout[4]) |
171 | unique = True |
172 | for ime2,bornout2 in enumerate(unique_me_list): |
173 | mefile2 = bornout2[0] |
174 | @@ -394,12 +398,12 @@ |
175 | break |
176 | self['has_virtuals'] = has_virtuals |
177 | |
178 | - configs_list = [] |
179 | + configs_list = [self['max_configs']] |
180 | for meout in realmapout: |
181 | configs_list.append(meout[1]) |
182 | self['max_configs'] = max(configs_list) |
183 | |
184 | - nparticles_list = [] |
185 | + nparticles_list = [self['max_particles']] |
186 | for meout in realmapout: |
187 | nparticles_list.append(meout[2]) |
188 | self['max_particles'] = max(nparticles_list) |
189 | @@ -453,14 +457,16 @@ |
190 | |
191 | def get_max_configs(self): |
192 | """Return max_configs""" |
193 | - |
194 | + |
195 | if self['max_configs'] < 0: |
196 | try: |
197 | self['max_configs'] = max([me.get_num_configs() \ |
198 | for me in self['real_matrix_elements']]) |
199 | except ValueError: |
200 | - self['max_configs'] = max([me.born_matrix_element.get_num_configs() \ |
201 | - for me in self['matrix_elements']]) |
202 | + pass |
203 | + self['max_configs'] = max(self['max_configs'],\ |
204 | + max([me.born_matrix_element.get_num_configs() \ |
205 | + for me in self['matrix_elements']])) |
206 | |
207 | return self['max_configs'] |
208 | |
209 | |
210 | === modified file 'madgraph/interface/madgraph_interface.py' |
211 | --- madgraph/interface/madgraph_interface.py 2017-11-23 12:05:44 +0000 |
212 | +++ madgraph/interface/madgraph_interface.py 2017-11-30 23:06:43 +0000 |
213 | @@ -4535,7 +4535,7 @@ |
214 | raise self.InvalidCmd, "No particle %s in model" % part_name |
215 | |
216 | # Apply the keyword 'all' for perturbed coupling orders. |
217 | - if perturbation_couplings.lower()=='all': |
218 | + if perturbation_couplings.lower() in ['all', 'loonly']: |
219 | perturbation_couplings=' '.join(self._curr_model['perturbation_couplings']) |
220 | |
221 | if filter(lambda leg: leg.get('state') == True, myleglist): |
222 | |
223 | === modified file 'madgraph/interface/master_interface.py' |
224 | --- madgraph/interface/master_interface.py 2017-03-27 08:37:47 +0000 |
225 | +++ madgraph/interface/master_interface.py 2017-11-30 23:06:43 +0000 |
226 | @@ -184,8 +184,11 @@ |
227 | else: |
228 | # If not option is set the convention is that the mode is 'all' |
229 | # unless no perturbation orders is defined. |
230 | - if len(orders)>0: |
231 | - return ('NLO','all',orders) |
232 | + # if order is set to LOonly assume LOonly=QCD |
233 | + if orders == ['LOonly']: |
234 | + return ('NLO', 'LOonly', ['QCD']) |
235 | + elif len(orders)>0: |
236 | + return ('NLO','all',orders) |
237 | else: |
238 | return ('tree',None,[]) |
239 | else: |
240 | |
241 | === modified file 'madgraph/iolibs/export_fks.py' |
242 | --- madgraph/iolibs/export_fks.py 2017-06-16 15:25:01 +0000 |
243 | +++ madgraph/iolibs/export_fks.py 2017-11-30 23:06:43 +0000 |
244 | @@ -524,7 +524,7 @@ |
245 | ncolor,maxflow,fortran_model) |
246 | |
247 | filename = 'configs_and_props_info.dat' |
248 | - nconfigs,max_leg_number,nfksconfs=self.write_configs_and_props_info_file( |
249 | + nconfigs,max_leg_number=self.write_configs_and_props_info_file( |
250 | filename, |
251 | matrix_element) |
252 | |
253 | @@ -670,12 +670,6 @@ |
254 | else: |
255 | os.system("ln -s ../BinothLHA_user.f ./BinothLHA.f") |
256 | |
257 | - |
258 | - #import nexternal/leshouches in Source |
259 | -# ln('nexternal.inc', '../../Source', log=False) |
260 | -# ln('born_leshouche.inc', '../../Source', log=False) |
261 | - |
262 | - |
263 | # Return to SubProcesses dir |
264 | os.chdir(os.path.pardir) |
265 | # Add subprocess to subproc.mg |
266 | @@ -683,7 +677,6 @@ |
267 | files.append_to_file(filename, |
268 | self.write_subproc, |
269 | borndir) |
270 | - |
271 | |
272 | os.chdir(cwd) |
273 | # Generate info page |
274 | @@ -955,9 +948,28 @@ |
275 | lines.append("data (real_from_born_conf(irfbc,%d),irfbc=1,%d) /%s/" \ |
276 | % (iFKS,len(links),real_configs)) |
277 | |
278 | + # this is for 'LOonly' processes; in this case, a fake configuration |
279 | + # with all the born diagrams is written |
280 | + if not matrix_element.get_fks_info_list(): |
281 | + # compute (again) the number of configurations at the born |
282 | + base_diagrams = born_me.get('base_amplitude').get('diagrams') |
283 | + minvert = min([max([len(vert.get('legs')) for vert in \ |
284 | + diag.get('vertices')]) for diag in base_diagrams]) |
285 | + |
286 | + for idiag, diag in enumerate(base_diagrams): |
287 | + if any([len(vert.get('legs')) > minvert for vert in |
288 | + diag.get('vertices')]): |
289 | + # Only 3-vertices allowed in configs.inc |
290 | + continue |
291 | + max_links = max_links + 1 |
292 | + |
293 | + real_configs=', '.join(['%d' % i for i in range(1, max_links+1)]) |
294 | + lines.append("data (real_from_born_conf(irfbc,%d),irfbc=1,%d) /%s/" \ |
295 | + % (1,max_links,real_configs)) |
296 | + |
297 | lines2.append("integer irfbc") |
298 | lines2.append("integer real_from_born_conf(%d,%d)" \ |
299 | - % (max_links,len(matrix_element.get_fks_info_list()))) |
300 | + % (max_links, max(len(matrix_element.get_fks_info_list()),1))) |
301 | # Write the file |
302 | writer.writelines(lines2+lines) |
303 | |
304 | @@ -1057,12 +1069,14 @@ |
305 | lines.append("# M -> PMASS_D/PWIDTH_D") |
306 | lines.append("# P -> POW_D") |
307 | lines2 = [] |
308 | - nconfs = len(matrix_element.get_fks_info_list()) |
309 | (nexternal, ninitial) = matrix_element.get_nexternal_ninitial() |
310 | |
311 | max_iconfig=0 |
312 | max_leg_number=0 |
313 | |
314 | + ######################################################## |
315 | + # this is for standard processes with [(real=)XXX] |
316 | + ######################################################## |
317 | for iFKS, conf in enumerate(matrix_element.get_fks_info_list()): |
318 | iFKS=iFKS+1 |
319 | iconfig = 0 |
320 | @@ -1147,11 +1161,141 @@ |
321 | (iFKS,leg.get('number'), iconf + 1, leg.get('id'))) |
322 | lines2.append("P %4d %4d %4d %4d " % \ |
323 | (iFKS,leg.get('number'), iconf + 1, pow_part)) |
324 | + |
325 | + ######################################################## |
326 | + # this is for [LOonly=XXX] |
327 | + ######################################################## |
328 | + if not matrix_element.get_fks_info_list(): |
329 | + born_me = matrix_element.born_matrix_element |
330 | + # as usual, in this case we assume just one FKS configuration |
331 | + # exists with diagrams corresponding to born ones X the ij -> i,j |
332 | + # splitting. Here j is chosen to be the last colored particle in |
333 | + # the particle list |
334 | + bornproc = born_me.get('processes')[0] |
335 | + colors = [l.get('color') for l in bornproc.get('legs')] |
336 | + |
337 | + fks_i = len(colors) |
338 | + # use the last colored particle if it exists, or |
339 | + # just the last |
340 | + fks_j=1 |
341 | + for cpos, col in enumerate(colors): |
342 | + if col != 1: |
343 | + fks_j = cpos+1 |
344 | + fks_j_id = [l.get('id') for l in bornproc.get('legs')][cpos] |
345 | + |
346 | + # for the moment, if j is initial-state, we do nothing |
347 | + if fks_j > ninitial: |
348 | + iFKS=1 |
349 | + iconfig = 0 |
350 | + s_and_t_channels = [] |
351 | + mapconfigs = [] |
352 | + base_diagrams = born_me.get('base_amplitude').get('diagrams') |
353 | + model = born_me.get('base_amplitude').get('process').get('model') |
354 | + minvert = min([max([len(vert.get('legs')) for vert in \ |
355 | + diag.get('vertices')]) for diag in base_diagrams]) |
356 | + |
357 | + lines.append("# ") |
358 | + lines.append("# nFKSprocess %d" % iFKS) |
359 | + for idiag, diag in enumerate(base_diagrams): |
360 | + if any([len(vert.get('legs')) > minvert for vert in |
361 | + diag.get('vertices')]): |
362 | + # Only 3-vertices allowed in configs.inc |
363 | + continue |
364 | + iconfig = iconfig + 1 |
365 | + helas_diag = born_me.get('diagrams')[idiag] |
366 | + mapconfigs.append(helas_diag.get('number')) |
367 | + lines.append("# Diagram %d for nFKSprocess %d" % \ |
368 | + (helas_diag.get('number'),iFKS)) |
369 | + # Correspondance between the config and the amplitudes |
370 | + lines.append("C %4d %4d %4d " % (iFKS,iconfig, |
371 | + helas_diag.get('number'))) |
372 | + |
373 | + # Need to reorganize the topology so that we start with all |
374 | + # final state external particles and work our way inwards |
375 | + schannels, tchannels = helas_diag.get('amplitudes')[0].\ |
376 | + get_s_and_t_channels(ninitial, model, 990) |
377 | + |
378 | + s_and_t_channels.append([schannels, tchannels]) |
379 | + |
380 | + #the first thing to write is the splitting ij -> i,j |
381 | + lines.append("F %4d %4d %4d %4d" % \ |
382 | + (iFKS,-1,iconfig,2)) |
383 | + #(iFKS,last_leg.get('number'), iconfig, len(daughters))) |
384 | + lines.append("D %4d" % nexternal) |
385 | + lines.append("D %4d" % fks_j) |
386 | + lines.append("S %4d %4d %4d %10d" % \ |
387 | + (iFKS,-1, iconfig,fks_j_id)) |
388 | + # now we continue with all the other vertices of the diagrams; |
389 | + # we need to shift the 'last_leg' by 1 and replace leg fks_j with -1 |
390 | + |
391 | + # Write out propagators for s-channel and t-channel vertices |
392 | + allchannels = schannels |
393 | + if len(tchannels) > 1: |
394 | + # Write out tchannels only if there are any non-trivial ones |
395 | + allchannels = schannels + tchannels |
396 | + |
397 | + for vert in allchannels: |
398 | + daughters = [leg.get('number') for leg in vert.get('legs')[:-1]] |
399 | + last_leg = vert.get('legs')[-1] |
400 | + lines.append("F %4d %4d %4d %4d" % \ |
401 | + (iFKS,last_leg.get('number')-1, iconfig, len(daughters))) |
402 | + |
403 | + # legs with negative number in daughters have to be shifted by -1 |
404 | + for i_dau in range(len(daughters)): |
405 | + if daughters[i_dau] < 0: |
406 | + daughters[i_dau] += -1 |
407 | + # finally relable fks with -1 if it appears in daughters |
408 | + if fks_j in daughters: |
409 | + daughters[daughters.index(fks_j)] = -1 |
410 | + for d in daughters: |
411 | + lines.append("D %4d" % d) |
412 | + if vert in schannels: |
413 | + lines.append("S %4d %4d %4d %10d" % \ |
414 | + (iFKS,last_leg.get('number')-1, iconfig, |
415 | + last_leg.get('id'))) |
416 | + elif vert in tchannels[:-1]: |
417 | + lines.append("T %4d %4d %4d %10d" % \ |
418 | + (iFKS,last_leg.get('number')-1, iconfig, |
419 | + abs(last_leg.get('id')))) |
420 | + |
421 | + # update what the array sizes (mapconfig,iforest,etc) will be |
422 | + max_leg_number = min(max_leg_number,last_leg.get('number')-1) |
423 | + max_iconfig = max(max_iconfig,iconfig) |
424 | + |
425 | + # Write out number of configs |
426 | + lines.append("# Number of configs for nFKSprocess %d" % iFKS) |
427 | + lines.append("C %4d %4d %4d" % (iFKS,0,iconfig)) |
428 | + |
429 | + # write the props.inc information |
430 | + lines2.append("# ") |
431 | + particle_dict = born_me.get('processes')[0].get('model').\ |
432 | + get('particle_dict') |
433 | + |
434 | + for iconf, configs in enumerate(s_and_t_channels): |
435 | + lines2.append("M %4d %4d %4d %10d " % \ |
436 | + (iFKS,-1, iconf + 1, fks_j_id)) |
437 | + pow_part = 1 + int(particle_dict[fks_j_id].is_boson()) |
438 | + lines2.append("P %4d %4d %4d %4d " % \ |
439 | + (iFKS,-1, iconf + 1, pow_part)) |
440 | + for vertex in configs[0] + configs[1][:-1]: |
441 | + leg = vertex.get('legs')[-1] |
442 | + if leg.get('id') not in particle_dict: |
443 | + # Fake propagator used in multiparticle vertices |
444 | + pow_part = 0 |
445 | + else: |
446 | + particle = particle_dict[leg.get('id')] |
447 | + |
448 | + pow_part = 1 + int(particle.is_boson()) |
449 | + |
450 | + lines2.append("M %4d %4d %4d %10d " % \ |
451 | + (iFKS,leg.get('number')-1, iconf + 1, leg.get('id'))) |
452 | + lines2.append("P %4d %4d %4d %4d " % \ |
453 | + (iFKS,leg.get('number')-1, iconf + 1, pow_part)) |
454 | |
455 | # Write the file |
456 | open(filename,'w').write('\n'.join(lines+lines2)) |
457 | |
458 | - return max_iconfig, max_leg_number, nconfs |
459 | + return max_iconfig, max_leg_number |
460 | |
461 | |
462 | def write_leshouche_info_declarations(self, writer, nfksconfs, |
463 | @@ -1203,6 +1347,11 @@ |
464 | maxproc = max(maxproc, nprocs) |
465 | maxflow = max(maxflow, nflows) |
466 | |
467 | + # this is for LOonly |
468 | + if not matrix_element.get_fks_info_list(): |
469 | + (newlines, nprocs, nflows) = self.get_leshouche_lines_dummy(matrix_element.born_matrix_element, 1) |
470 | + lines.extend(newlines) |
471 | + |
472 | # Write the file |
473 | open(filename,'w').write('\n'.join(lines)) |
474 | |
475 | @@ -2206,8 +2355,8 @@ |
476 | charges = [0.] * len(colors) |
477 | |
478 | fks_i = len(colors) |
479 | - # use the first colored particle if it exists, or |
480 | - # just the first |
481 | + # use the last colored particle if it exists, or |
482 | + # just the last |
483 | fks_j=1 |
484 | for cpos, col in enumerate(colors[:-1]): |
485 | if col != 1: |
486 | @@ -2709,6 +2858,109 @@ |
487 | return lines, nproc, nflow |
488 | |
489 | |
490 | + def get_leshouche_lines_dummy(self, matrix_element, ime): |
491 | + #test written |
492 | + """As get_leshouche_lines, but for 'fake' real emission processes (LOonly |
493 | + In this case, write born color structure times ij -> i,j splitting) |
494 | + """ |
495 | + |
496 | + bornproc = matrix_element.get('processes')[0] |
497 | + colors = [l.get('color') for l in bornproc.get('legs')] |
498 | + |
499 | + fks_i = len(colors) |
500 | + # use the last colored particle if it exists, or |
501 | + # just the last |
502 | + fks_j=1 |
503 | + for cpos, col in enumerate(colors): |
504 | + if col != 1: |
505 | + fks_j = cpos+1 |
506 | + |
507 | + # Extract number of external particles |
508 | + (nexternal, ninitial) = matrix_element.get_nexternal_ninitial() |
509 | + nexternal+=1 # remember, in this case matrix_element is born |
510 | + |
511 | + lines = [] |
512 | + for iproc, proc in enumerate(matrix_element.get('processes')): |
513 | + # add the fake extra leg |
514 | + legs = proc.get_legs_with_decays() + \ |
515 | + [fks_common.FKSLeg({'id': -21, |
516 | + 'number': nexternal, |
517 | + 'state': True, |
518 | + 'fks': 'i', |
519 | + 'color': 8, |
520 | + 'charge': 0., |
521 | + 'massless': True, |
522 | + 'spin': 3, |
523 | + 'is_part': True, |
524 | + 'self_antipart': True})] |
525 | + |
526 | + lines.append("I %4d %4d %s" % \ |
527 | + (ime, iproc + 1, |
528 | + " ".join([str(l.get('id')) for l in legs]))) |
529 | + for i in [1, 2]: |
530 | + lines.append("M %4d %4d %4d %s" % \ |
531 | + (ime, i, iproc + 1, |
532 | + " ".join([ "%3d" % 0 ] * ninitial + \ |
533 | + [ "%3d" % i ] * (nexternal - ninitial)))) |
534 | + |
535 | + # Here goes the color connections corresponding to the JAMPs |
536 | + # Only one output, for the first subproc! |
537 | + if iproc == 0: |
538 | + # If no color basis, just output trivial color flow |
539 | + if not matrix_element.get('color_basis'): |
540 | + for i in [1, 2]: |
541 | + lines.append("C %4d %4d 1 %s" % \ |
542 | + (ime, i, |
543 | + " ".join([ "%3d" % 0 ] * nexternal))) |
544 | + color_flow_list = [] |
545 | + nflow = 1 |
546 | + |
547 | + else: |
548 | + # in this case the last particle (-21) has two color indices |
549 | + # and it has to be emitted by j_fks |
550 | + # First build a color representation dictionnary |
551 | + repr_dict = {} |
552 | + for l in legs[:-1]: |
553 | + repr_dict[l.get('number')] = \ |
554 | + proc.get('model').get_particle(l.get('id')).get_color()\ |
555 | + * (-1)**(1+l.get('state')) |
556 | + # Get the list of color flows |
557 | + color_flow_list = \ |
558 | + matrix_element.get('color_basis').color_flow_decomposition(repr_dict, |
559 | + ninitial) |
560 | + # And output them properly |
561 | + for cf_i, color_flow_dict in enumerate(color_flow_list): |
562 | + # we have to add the extra leg (-21), linked to the j_fks leg |
563 | + # first, find the maximum color label |
564 | + maxicol = max(sum(color_flow_dict.values(), [])) |
565 | + #then, replace the color labels |
566 | + if color_flow_dict[fks_j][0] == 0: |
567 | + anti = True |
568 | + icol_j = color_flow_dict[fks_j][1] |
569 | + else: |
570 | + anti = False |
571 | + icol_j = color_flow_dict[fks_j][0] |
572 | + |
573 | + if anti: |
574 | + color_flow_dict[nexternal] = (maxicol + 1, color_flow_dict[fks_j][1]) |
575 | + color_flow_dict[fks_j][1] = maxicol + 1 |
576 | + else: |
577 | + color_flow_dict[nexternal] = (color_flow_dict[fks_j][0], maxicol + 1) |
578 | + color_flow_dict[fks_j][0] = maxicol + 1 |
579 | + |
580 | + for i in [0, 1]: |
581 | + lines.append("C %4d %4d %4d %s" % \ |
582 | + (ime, i + 1, cf_i + 1, |
583 | + " ".join(["%3d" % color_flow_dict[l.get('number')][i] \ |
584 | + for l in legs]))) |
585 | + |
586 | + nflow = len(color_flow_list) |
587 | + |
588 | + nproc = len(matrix_element.get('processes')) |
589 | + |
590 | + return lines, nproc, nflow |
591 | + |
592 | + |
593 | #=============================================================================== |
594 | # get_den_factor_lines |
595 | #=============================================================================== |
596 | |
597 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc' |
598 | --- 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 |
599 | +++ 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 |
600 | @@ -1,12 +1,12 @@ |
601 | INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED |
602 | - PARAMETER (LMAXCONFIGS_USED= 0) |
603 | - PARAMETER (MAX_BRANCH_USED = 0) |
604 | - INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED) |
605 | - INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
606 | - INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
607 | - INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
608 | - DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-1 |
609 | - $ ,LMAXCONFIGS_USED) |
610 | - DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-1 |
611 | - $ ,LMAXCONFIGS_USED) |
612 | - INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
613 | + PARAMETER (LMAXCONFIGS_USED= 3) |
614 | + PARAMETER (MAX_BRANCH_USED = 3) |
615 | + INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED) |
616 | + INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
617 | + INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
618 | + INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
619 | + DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1 |
620 | + $ ,LMAXCONFIGS_USED) |
621 | + DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1 |
622 | + $ ,LMAXCONFIGS_USED) |
623 | + INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
624 | |
625 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%configs_and_props_info.dat' |
626 | --- 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 |
627 | +++ 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 |
628 | @@ -3,4 +3,57 @@ |
629 | # S -> SPROP_D |
630 | # T -> TPRID_D |
631 | # M -> PMASS_D/PWIDTH_D |
632 | -# P -> POW_D |
633 | \ No newline at end of file |
634 | +# P -> POW_D |
635 | +# |
636 | +# nFKSprocess 1 |
637 | +# Diagram 1 for nFKSprocess 1 |
638 | +C 1 1 1 |
639 | +F 1 -1 1 2 |
640 | +D 5 |
641 | +D 4 |
642 | +S 1 -1 1 -6 |
643 | +F 1 -2 1 2 |
644 | +D -1 |
645 | +D 3 |
646 | +S 1 -2 1 21 |
647 | +# Diagram 2 for nFKSprocess 1 |
648 | +C 1 2 2 |
649 | +F 1 -1 2 2 |
650 | +D 5 |
651 | +D 4 |
652 | +S 1 -1 2 -6 |
653 | +F 1 -2 2 2 |
654 | +D 1 |
655 | +D 3 |
656 | +T 1 -2 2 6 |
657 | +F 1 -3 2 2 |
658 | +D -2 |
659 | +D -1 |
660 | +# Diagram 3 for nFKSprocess 1 |
661 | +C 1 3 3 |
662 | +F 1 -1 3 2 |
663 | +D 5 |
664 | +D 4 |
665 | +S 1 -1 3 -6 |
666 | +F 1 -2 3 2 |
667 | +D 1 |
668 | +D -1 |
669 | +T 1 -2 3 6 |
670 | +F 1 -3 3 2 |
671 | +D -2 |
672 | +D 3 |
673 | +# Number of configs for nFKSprocess 1 |
674 | +C 1 0 3 |
675 | +# |
676 | +M 1 -1 1 -6 |
677 | +P 1 -1 1 1 |
678 | +M 1 -2 1 21 |
679 | +P 1 -2 1 2 |
680 | +M 1 -1 2 -6 |
681 | +P 1 -1 2 1 |
682 | +M 1 -2 2 6 |
683 | +P 1 -2 2 1 |
684 | +M 1 -1 3 -6 |
685 | +P 1 -1 3 1 |
686 | +M 1 -2 3 -6 |
687 | +P 1 -2 3 1 |
688 | \ No newline at end of file |
689 | |
690 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat' |
691 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000 |
692 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000 |
693 | @@ -1,3 +1,10 @@ |
694 | # I -> IDUP_D |
695 | # M -> MOTHUP_D |
696 | -# C -> ICOLUP_D |
697 | \ No newline at end of file |
698 | +# C -> ICOLUP_D |
699 | +I 1 1 21 21 6 -6 -21 |
700 | +M 1 1 1 0 0 1 1 1 |
701 | +M 1 2 1 0 0 2 2 2 |
702 | +C 1 1 1 501 502 501 0 504 |
703 | +C 1 2 1 502 503 0 504 503 |
704 | +C 1 1 2 503 501 501 0 504 |
705 | +C 1 2 2 502 503 0 504 502 |
706 | \ No newline at end of file |
707 | |
708 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc' |
709 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000 |
710 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000 |
711 | @@ -1,2 +1,2 @@ |
712 | INTEGER N_MAX_CG |
713 | - PARAMETER (N_MAX_CG=0) |
714 | + PARAMETER (N_MAX_CG=3) |
715 | |
716 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%real_from_born_configs.inc' |
717 | --- 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 |
718 | +++ 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 |
719 | @@ -1,2 +1,3 @@ |
720 | INTEGER IRFBC |
721 | - INTEGER REAL_FROM_BORN_CONF(0,0) |
722 | + INTEGER REAL_FROM_BORN_CONF(3,1) |
723 | + DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,3) /1, 2, 3/ |
724 | |
725 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc' |
726 | --- 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 |
727 | +++ 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 |
728 | @@ -1,12 +1,12 @@ |
729 | INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED |
730 | - PARAMETER (LMAXCONFIGS_USED= 0) |
731 | - PARAMETER (MAX_BRANCH_USED = 0) |
732 | - INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED) |
733 | - INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
734 | - INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
735 | - INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
736 | - DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-1 |
737 | - $ ,LMAXCONFIGS_USED) |
738 | - DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-1 |
739 | - $ ,LMAXCONFIGS_USED) |
740 | - INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
741 | + PARAMETER (LMAXCONFIGS_USED= 1) |
742 | + PARAMETER (MAX_BRANCH_USED = 2) |
743 | + INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED) |
744 | + INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
745 | + INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
746 | + INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
747 | + DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1 |
748 | + $ ,LMAXCONFIGS_USED) |
749 | + DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1 |
750 | + $ ,LMAXCONFIGS_USED) |
751 | + INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
752 | |
753 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%configs_and_props_info.dat' |
754 | --- 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 |
755 | +++ 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 |
756 | @@ -3,4 +3,23 @@ |
757 | # S -> SPROP_D |
758 | # T -> TPRID_D |
759 | # M -> PMASS_D/PWIDTH_D |
760 | -# P -> POW_D |
761 | \ No newline at end of file |
762 | +# P -> POW_D |
763 | +# |
764 | +# nFKSprocess 1 |
765 | +# Diagram 1 for nFKSprocess 1 |
766 | +C 1 1 1 |
767 | +F 1 -1 1 2 |
768 | +D 5 |
769 | +D 4 |
770 | +S 1 -1 1 -6 |
771 | +F 1 -2 1 2 |
772 | +D -1 |
773 | +D 3 |
774 | +S 1 -2 1 21 |
775 | +# Number of configs for nFKSprocess 1 |
776 | +C 1 0 1 |
777 | +# |
778 | +M 1 -1 1 -6 |
779 | +P 1 -1 1 1 |
780 | +M 1 -2 1 21 |
781 | +P 1 -2 1 2 |
782 | \ No newline at end of file |
783 | |
784 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat' |
785 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000 |
786 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000 |
787 | @@ -1,3 +1,19 @@ |
788 | # I -> IDUP_D |
789 | # M -> MOTHUP_D |
790 | -# C -> ICOLUP_D |
791 | \ No newline at end of file |
792 | +# C -> ICOLUP_D |
793 | +I 1 1 2 -2 6 -6 -21 |
794 | +M 1 1 1 0 0 1 1 1 |
795 | +M 1 2 1 0 0 2 2 2 |
796 | +C 1 1 1 501 0 502 0 503 |
797 | +C 1 2 1 0 501 0 503 502 |
798 | +C 1 1 2 502 0 502 0 503 |
799 | +C 1 2 2 0 501 0 503 501 |
800 | +I 1 2 4 -4 6 -6 -21 |
801 | +M 1 1 2 0 0 1 1 1 |
802 | +M 1 2 2 0 0 2 2 2 |
803 | +I 1 3 1 -1 6 -6 -21 |
804 | +M 1 1 3 0 0 1 1 1 |
805 | +M 1 2 3 0 0 2 2 2 |
806 | +I 1 4 3 -3 6 -6 -21 |
807 | +M 1 1 4 0 0 1 1 1 |
808 | +M 1 2 4 0 0 2 2 2 |
809 | \ No newline at end of file |
810 | |
811 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc' |
812 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000 |
813 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000 |
814 | @@ -1,2 +1,2 @@ |
815 | INTEGER N_MAX_CG |
816 | - PARAMETER (N_MAX_CG=0) |
817 | + PARAMETER (N_MAX_CG=1) |
818 | |
819 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%real_from_born_configs.inc' |
820 | --- 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 |
821 | +++ 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 |
822 | @@ -1,2 +1,3 @@ |
823 | INTEGER IRFBC |
824 | - INTEGER REAL_FROM_BORN_CONF(0,0) |
825 | + INTEGER REAL_FROM_BORN_CONF(1,1) |
826 | + DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,1) /1/ |
827 | |
828 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc' |
829 | --- 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 |
830 | +++ 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 |
831 | @@ -1,12 +1,12 @@ |
832 | INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED |
833 | - PARAMETER (LMAXCONFIGS_USED= 0) |
834 | - PARAMETER (MAX_BRANCH_USED = 0) |
835 | - INTEGER MAPCONFIG_D( 0,0:LMAXCONFIGS_USED) |
836 | - INTEGER IFOREST_D( 0,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
837 | - INTEGER SPROP_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
838 | - INTEGER TPRID_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
839 | - DOUBLE PRECISION PMASS_D( 0,-MAX_BRANCH_USED:-1 |
840 | - $ ,LMAXCONFIGS_USED) |
841 | - DOUBLE PRECISION PWIDTH_D( 0,-MAX_BRANCH_USED:-1 |
842 | - $ ,LMAXCONFIGS_USED) |
843 | - INTEGER POW_D( 0,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
844 | + PARAMETER (LMAXCONFIGS_USED= 1) |
845 | + PARAMETER (MAX_BRANCH_USED = 2) |
846 | + INTEGER MAPCONFIG_D( 1,0:LMAXCONFIGS_USED) |
847 | + INTEGER IFOREST_D( 1,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
848 | + INTEGER SPROP_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
849 | + INTEGER TPRID_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
850 | + DOUBLE PRECISION PMASS_D( 1,-MAX_BRANCH_USED:-1 |
851 | + $ ,LMAXCONFIGS_USED) |
852 | + DOUBLE PRECISION PWIDTH_D( 1,-MAX_BRANCH_USED:-1 |
853 | + $ ,LMAXCONFIGS_USED) |
854 | + INTEGER POW_D( 1,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED) |
855 | |
856 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%configs_and_props_info.dat' |
857 | --- 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 |
858 | +++ 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 |
859 | @@ -3,4 +3,23 @@ |
860 | # S -> SPROP_D |
861 | # T -> TPRID_D |
862 | # M -> PMASS_D/PWIDTH_D |
863 | -# P -> POW_D |
864 | \ No newline at end of file |
865 | +# P -> POW_D |
866 | +# |
867 | +# nFKSprocess 1 |
868 | +# Diagram 1 for nFKSprocess 1 |
869 | +C 1 1 1 |
870 | +F 1 -1 1 2 |
871 | +D 5 |
872 | +D 4 |
873 | +S 1 -1 1 -6 |
874 | +F 1 -2 1 2 |
875 | +D -1 |
876 | +D 3 |
877 | +S 1 -2 1 21 |
878 | +# Number of configs for nFKSprocess 1 |
879 | +C 1 0 1 |
880 | +# |
881 | +M 1 -1 1 -6 |
882 | +P 1 -1 1 1 |
883 | +M 1 -2 1 21 |
884 | +P 1 -2 1 2 |
885 | \ No newline at end of file |
886 | |
887 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat' |
888 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat 2017-05-15 10:39:31 +0000 |
889 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%leshouche_info.dat 2017-11-30 23:06:43 +0000 |
890 | @@ -1,3 +1,19 @@ |
891 | # I -> IDUP_D |
892 | # M -> MOTHUP_D |
893 | -# C -> ICOLUP_D |
894 | \ No newline at end of file |
895 | +# C -> ICOLUP_D |
896 | +I 1 1 -2 2 6 -6 -21 |
897 | +M 1 1 1 0 0 1 1 1 |
898 | +M 1 2 1 0 0 2 2 2 |
899 | +C 1 1 1 0 501 502 0 503 |
900 | +C 1 2 1 501 0 0 503 502 |
901 | +C 1 1 2 0 502 502 0 503 |
902 | +C 1 2 2 501 0 0 503 501 |
903 | +I 1 2 -4 4 6 -6 -21 |
904 | +M 1 1 2 0 0 1 1 1 |
905 | +M 1 2 2 0 0 2 2 2 |
906 | +I 1 3 -1 1 6 -6 -21 |
907 | +M 1 1 3 0 0 1 1 1 |
908 | +M 1 2 3 0 0 2 2 2 |
909 | +I 1 4 -3 3 6 -6 -21 |
910 | +M 1 1 4 0 0 1 1 1 |
911 | +M 1 2 4 0 0 2 2 2 |
912 | \ No newline at end of file |
913 | |
914 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc' |
915 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc 2015-03-10 08:54:03 +0000 |
916 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%ngraphs.inc 2017-11-30 23:06:43 +0000 |
917 | @@ -1,2 +1,2 @@ |
918 | INTEGER N_MAX_CG |
919 | - PARAMETER (N_MAX_CG=0) |
920 | + PARAMETER (N_MAX_CG=1) |
921 | |
922 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%real_from_born_configs.inc' |
923 | --- 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 |
924 | +++ 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 |
925 | @@ -1,2 +1,3 @@ |
926 | INTEGER IRFBC |
927 | - INTEGER REAL_FROM_BORN_CONF(0,0) |
928 | + INTEGER REAL_FROM_BORN_CONF(1,1) |
929 | + DATA (REAL_FROM_BORN_CONF(IRFBC,1),IRFBC=1,1) /1/ |
930 | |
931 | === added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved' |
932 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000 |
933 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000 |
934 | @@ -0,0 +1,4 @@ |
935 | + INCLUDE 'maxparticles.inc' |
936 | + INCLUDE 'maxconfigs.inc' |
937 | + INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW |
938 | + PARAMETER (MAXPROC=4,NGRAPHS=3,NCOLOR=2,MAXFLOW=6) |
939 | |
940 | === added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved' |
941 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000 |
942 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000 |
943 | @@ -0,0 +1,4 @@ |
944 | + INCLUDE 'maxparticles.inc' |
945 | + INCLUDE 'maxconfigs.inc' |
946 | + INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW |
947 | + PARAMETER (MAXPROC=4,NGRAPHS=1,NCOLOR=2,MAXFLOW=4) |
948 | |
949 | === added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved' |
950 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved 1970-01-01 00:00:00 +0000 |
951 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%genps.inc.moved 2017-11-30 23:06:43 +0000 |
952 | @@ -0,0 +1,4 @@ |
953 | + INCLUDE 'maxparticles.inc' |
954 | + INCLUDE 'maxconfigs.inc' |
955 | + INTEGER MAXPROC,NGRAPHS,NCOLOR,MAXFLOW |
956 | + PARAMETER (MAXPROC=4,NGRAPHS=1,NCOLOR=2,MAXFLOW=4) |
957 | |
958 | === modified file 'tests/unit_tests/iolibs/test_export_fks.py' |
959 | --- tests/unit_tests/iolibs/test_export_fks.py 2016-08-31 20:35:13 +0000 |
960 | +++ tests/unit_tests/iolibs/test_export_fks.py 2017-11-30 23:06:43 +0000 |
961 | @@ -92,6 +92,53 @@ |
962 | self.assertEqual(old_l, new_l) |
963 | |
964 | |
965 | + def test_wj_loonly_gen(self): |
966 | + """check that the new (memory and cpu efficient) and old generation |
967 | + mode at NLO give the same results for p p > w j [LOonly=QCD] |
968 | + """ |
969 | + path = tempfile.mkdtemp('', 'TMPWTest', None) |
970 | + |
971 | + def run_cmd(cmd): |
972 | + interface.exec_cmd(cmd, errorhandling=False, printcmd=False, |
973 | + precmd=True, postcmd=True) |
974 | + |
975 | + interface = MGCmd.MasterCmd() |
976 | + |
977 | + run_cmd('generate p p > w+ j [LOonly=QCD]') |
978 | + run_cmd('output %s' % os.path.join(path, 'W-oldway')) |
979 | + run_cmd('set low_mem_multicore_nlo_generation True') |
980 | + run_cmd('generate p p > w+ j [LOonly=QCD]') |
981 | + run_cmd('output %s' % os.path.join(path, 'W-newway')) |
982 | + run_cmd('set low_mem_multicore_nlo_generation False') |
983 | + |
984 | + # the P0 dirs |
985 | + for oldf in \ |
986 | + (glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', '*.inc')) + \ |
987 | + glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', '*.f')) + \ |
988 | + [os.path.join(path, 'W-oldway', 'SubProcesses', 'proc_characteristics')]): |
989 | + |
990 | + if os.path.islink(oldf): |
991 | + continue |
992 | + |
993 | + newf = oldf.replace('oldway', 'newway') |
994 | + |
995 | + for old_l, new_l in zip(open(oldf), open(newf)): |
996 | + self.assertEqual(old_l, new_l) |
997 | + |
998 | + # the V0 dirs |
999 | + for oldf in \ |
1000 | + (glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', 'V0*', '*.inc')) + \ |
1001 | + glob.glob(os.path.join(path, 'W-oldway', 'SubProcesses', 'P0*', 'V0*', '*.f'))): |
1002 | + |
1003 | + if os.path.islink(oldf): |
1004 | + continue |
1005 | + |
1006 | + newf = oldf.replace('oldway', 'newway') |
1007 | + |
1008 | + for old_l, new_l in zip(open(oldf), open(newf)): |
1009 | + self.assertEqual(old_l, new_l) |
1010 | + |
1011 | + |
1012 | def test_w_nlo_gen_gosam(self): |
1013 | """check that the new generation mode works when gosam is set |
1014 | for p p > w [QCD] |
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