Merge lp:~maddevelopers/mg5amcnlo/2.2.2 into lp:mg5amcnlo/lts

Proposed by Olivier Mattelaer
Status: Merged
Merged at revision: 257
Proposed branch: lp:~maddevelopers/mg5amcnlo/2.2.2
Merge into: lp:mg5amcnlo/lts
Diff against target: 6860 lines (+1464/-3092)
95 files modified
MadSpin/decay.py (+8/-6)
Template/LO/Source/PDF/pdf.f (+1/-0)
Template/LO/Source/dsample.f (+1/-1)
Template/LO/Source/rw_events.f (+1/-1)
Template/LO/SubProcesses/setcuts.f (+83/-29)
Template/LO/SubProcesses/unwgt.f (+2/-2)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script (+1/-2)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script (+1/-2)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6PT.Script (+1/-2)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6Q.Script (+1/-2)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA8.Script (+61/-10)
Template/NLO/MCatNLO/include/LHEF.h (+3/-3)
Template/NLO/MCatNLO/shower_template.sh (+1/-1)
Template/NLO/MCatNLO/srcPythia8/Makefile (+10/-2)
Template/NLO/MCatNLO/srcPythia8/Makefile_hep (+12/-6)
Template/NLO/MCatNLO/srcPythia8/Pythia8.cc (+0/-152)
Template/NLO/MCatNLO/srcPythia8/Pythia82.cc (+153/-0)
Template/NLO/MCatNLO/srcPythia8/Pythia82_hep.cc (+112/-0)
Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc (+0/-111)
Template/NLO/Source/PDF/pdf.f (+1/-0)
Template/NLO/Source/banner_header.txt (+1/-1)
Template/NLO/Source/make_opts.inc (+1/-2)
Template/NLO/Source/setrun.f (+3/-2)
Template/NLO/SubProcesses/FKSParamReader.f (+10/-9)
Template/NLO/SubProcesses/add_write_info.f (+1/-1)
Template/NLO/SubProcesses/ajob_template (+3/-1)
Template/NLO/SubProcesses/check_poles.f (+4/-2)
Template/NLO/SubProcesses/configs_and_props_inc_chooser.f (+84/-1)
Template/NLO/SubProcesses/cuts.f (+30/-23)
Template/NLO/SubProcesses/fks_singular.f (+2/-1)
Template/NLO/SubProcesses/handling_lhe_events.f (+2/-2)
Template/NLO/SubProcesses/iproc_map.f (+1/-1)
Template/NLO/SubProcesses/leshouche_inc_chooser.f (+54/-1)
Template/NLO/SubProcesses/makefile_fks_dir (+9/-0)
Template/NLO/SubProcesses/montecarlocounter.f (+1/-0)
Template/NLO/SubProcesses/symmetry_fks_test_MC.f (+11/-0)
Template/NLO/SubProcesses/write_event.f (+1/-1)
Template/NLO/Utilities/makefile (+2/-2)
Template/loop_material/StandAlone/SubProcesses/makefile.inc (+0/-5)
UpdateNotes.txt (+19/-0)
aloha/aloha_lib.py (+4/-0)
input/.mg5_configuration_default.txt (+3/-5)
madgraph/__init__.py (+1/-6)
madgraph/interface/amcatnlo_run_interface.py (+43/-15)
madgraph/interface/common_run_interface.py (+20/-6)
madgraph/interface/madevent_interface.py (+1/-2)
madgraph/interface/madgraph_interface.py (+16/-3)
madgraph/iolibs/export_fks.py (+166/-89)
madgraph/iolibs/export_v4.py (+59/-10)
madgraph/iolibs/template_files/addmothers.f (+1/-1)
madgraph/iolibs/template_files/get_mass_width_fcts.inc (+23/-0)
madgraph/iolibs/template_files/madevent_combine_events.f (+3/-3)
madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+1/-1)
madgraph/iolibs/template_files/matrix_madevent_v4.inc (+1/-1)
madgraph/iolibs/ufo_expression_parsers.py (+68/-4)
madgraph/loop/loop_diagram_generation.py (+0/-1)
madgraph/various/banner.py (+9/-2)
madgraph/various/cluster.py (+12/-7)
madgraph/various/lhe_parser.py (+3/-0)
madgraph/various/misc.py (+26/-3)
mg5decay/decay_objects.py (+25/-2)
models/import_ufo.py (+8/-2)
models/taudecay_UFO/param_card.dat (+18/-9)
models/taudecay_UFO/parameters.py (+8/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc (+12/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_info.inc (+0/-1077)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_decl.inc (+6/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_info.inc (+0/-156)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc (+12/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_info.inc (+0/-419)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%leshouche_decl.inc (+6/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%leshouche_info.inc (+0/-134)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%configs_and_props_decl.inc (+12/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%configs_and_props_info.inc (+0/-419)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%leshouche_decl.inc (+6/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%leshouche_info.inc (+0/-134)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%MadLoopCommons.f (+1/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_coupl.inc (+0/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_coupl_same_name.inc (+0/-1)
tests/time_db (+38/-36)
tests/unit_tests/iolibs/test_export_fks_EW.py (+114/-133)
tests/unit_tests/iolibs/test_export_v4.py (+2/-2)
tests/unit_tests/iolibs/test_ufo_parsers.py (+44/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/2.2.2
Reviewer Review Type Date Requested Status
Rikkert Frederix Approve
marco zaro Needs Fixing
Review via email: mp+240012@code.launchpad.net

Description of the change

I think that this is time for this version to be released since it contains a couple of important fixes already. I'm also investigating a problem at LO which might have huge impact on the efficiency of the code. This is not yet pushed in this version but I suggest that you take a look already.

If nobody disagree, I plan to release this one on Friday.

Cheers,

Olivier

To post a comment you must log in.
lp:~maddevelopers/mg5amcnlo/2.2.2 updated
276. By Rikkert Frederix

Added the 'strip' command to the makefiles to reduce the sizes of the
executables.

277. By Rikkert Frederix

updated the UpdateNotes

278. By Rikkert Frederix

another update for the UpdateNotes

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

Please, everybody who made changes in the branch, put a comment in the UpdateNotes.txt

Cheers,
Rik

review: Needs Fixing
lp:~maddevelopers/mg5amcnlo/2.2.2 updated
279. By marco zaro

added possibility to install lhapdf sets in LHAPDF_DATA_PATH if it is set as an environmental variable.

Revision history for this message
Paolo Torrielli (paolo-torrielli) wrote :
Download full text (90.0 KiB)

Hi Olivier,
tomorrow morning I’ll merge the 2.2.2_py82 branch,
so please wait for this merging before releasing.
Cheers.
Paolo

On 29 Oct 2014, at 16:02, Olivier Mattelaer <email address hidden> wrote:

> Olivier Mattelaer has proposed merging lp:~maddevelopers/mg5amcnlo/2.2.2 into lp:mg5amcnlo.
>
> Requested reviews:
> MadTeam (madteam)
>
> For more details, see:
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
>
> I think that this is time for this version to be released since it contains a couple of important fixes already. I'm also investigating a problem at LO which might have huge impact on the efficiency of the code. This is not yet pushed in this version but I suggest that you take a look already.
>
> If nobody disagree, I plan to release this one on Friday.
>
> Cheers,
>
> Olivier
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/2.2.2.
> === modified file 'MadSpin/decay.py'
> --- MadSpin/decay.py 2014-09-17 09:53:23 +0000
> +++ MadSpin/decay.py 2014-10-29 15:01:21 +0000
> @@ -1185,7 +1185,7 @@
> decaying_base = [id for id in final if abs(id) in self.decay_ids]
> decaying_base.sort()
> topo['base_order'] = (initial , final)
> - topo['matrix_element'] = me
> +# topo['matrix_element'] = me
> tags = []
> topo['tag2order'] = {}
>
> @@ -2662,6 +2662,8 @@
> decay_text = []
> for decays in self.mscmd.list_branches.values():
> for decay in decays:
> + if '=' not in decay:
> + decay += ' QCD=99'
> if ',' in decay:
> decay_text.append('(%s)' % decay)
> else:
> @@ -2791,11 +2793,11 @@
> 'processes': matrix_element.get('processes'),
> 'tag': me.shell_string(pdg_order=True)}
> #
> - if __debug__:
> - #check that all decay matrix element correspond to a decay only
> - for prod in self.all_ME.values():
> - for decay in prod['matrix_element']['base_amplitude']['process']['decay_chains']:
> - assert decay.shell_string() in self.all_decay
> +# if __debug__:
> +# #check that all decay matrix element correspond to a decay only
> +# for prod in self.all_ME.values():
> +# for decay in prod['matrix_element']['base_amplitude']['process']['decay_chains']:
> +# assert decay.shell_string() in self.all_decay
>
>
> def get_branching_ratio(self):
>
> === modified file 'Template/LO/Source/PDF/pdf.f'
> --- Template/LO/Source/PDF/pdf.f 2014-05-16 08:15:16 +0000
> +++ Template/LO/Source/PDF/pdf.f 2014-10-29 15:01:21 +0000
> @@ -45,6 +45,7 @@
> do i=-5,5
> fx(i)=nnfx(i)/x
> enddo
> + fx(7)=nnfx(7)/x
> elseif ((pdlabel(1:3) .eq. 'mrs')
> . .or. (pdlabel(2:4) .eq. 'mrs')) then
>
>
> === modified file 'Template/LO/Source/rw_events.f'
> --- Template/LO/S...

lp:~maddevelopers/mg5amcnlo/2.2.2 updated
280. By marco zaro

the default accuracy for check_poles is taken from FKSparams.dat
Fix in ajob relative to HelConfigs.dat (see Question #256309)

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

Hi,
btw there are some unit tests failing:
======================================================================
ERROR: test_write_lh_order_EW (tests.unit_tests.iolibs.test_export_fks_EW.IOExportFKSEWTest)
tests the correct writing of the B-LH order file
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/tests/unit_tests/iolibs/test_export_fks_EW.py", line 145, in test_write_lh_order_EW
    self.myfks_me)
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/madgraph/iolibs/export_fks.py", line 1474, in write_lh_order
    replace_dict['corr'] = ' '.join(matrix_elements[0].get('processes')[0].\
TypeError: 'FKSHelasProcess' object does not support indexing

======================================================================
FAIL: test_export_matrix_element_v4_madevent_group (tests.unit_tests.iolibs.test_export_v4.IOExportV4Test)
Test the result of exporting a subprocess group matrix element
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/tests/unit_tests/iolibs/test_export_v4.py", line 2134, in test_export_matrix_element_v4_madevent_group
    self.assertFileContains('test', goal_matrix1)
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/tests/unit_tests/iolibs/test_file_writers.py", line 52, in assertFileContains
    self.assertEqual(a,b)
AssertionError: ' JAMP2(I)=JAMP2(I)+JAMP(I,M)*DCONJG(JAMP(I,N))' != ' JAMP2(I)=JAMP2(I)+DABS(DBLE(JAMP(I,M)*DCONJG(JAMP(I,N))))'

======================================================================
FAIL: test_export_matrix_element_v4_madevent_nogroup (tests.unit_tests.iolibs.test_export_v4.IOExportV4Test)
Test the result of exporting a subprocess group matrix element
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/tests/unit_tests/iolibs/test_export_v4.py", line 1139, in test_export_matrix_element_v4_madevent_nogroup
    self.assertFileContains('test', goal_matrix1)
  File "/Users/marcozaro/Physics/MadGraph/2.2.2/tests/unit_tests/iolibs/test_file_writers.py", line 52, in assertFileContains
    self.assertEqual(a,b)
AssertionError: ' JAMP2(I)=JAMP2(I)+JAMP(I,M)*DCONJG(JAMP(I,N))' != ' JAMP2(I)=JAMP2(I)+DABS(DBLE(JAMP(I,M)*DCONJG(JAMP(I,N))))'

----------------------------------------------------------------------

Marco

review: Needs Fixing
lp:~maddevelopers/mg5amcnlo/2.2.2 updated
281. By Paolo Torrielli

merged with the py82 branch

282. By marco zaro

merged with 2.2.2_read_conf_props

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

I've got the same 3 unit tests failing as Marco. I guess the DABS() problem is not serious, but the first one related to the order file might be. Although also that one is only used when not linking with MadLoop.

Valentin, do you have an idea what the problem is?

Rikkert

review: Approve
Revision history for this message
Rikkert Frederix (frederix) :
review: Needs Fixing
Revision history for this message
Valentin Hirschi (valentin-hirschi) wrote :

So, these three changes are related to two small modifications I brought
directly to 2.2.2 a week ago or so.

The new 'DABS(DBLE(' is correct as we recently realized with Olivier, that
the former expression was not correct as it could yields negative JAMP**2
in presence of interferences.

I think the first crash is due to the '[0]' I appended to
'join(matrix_elements'
because it was necessary when writing the order file for the GoSam
interface. However, apparently, in the context of this test 'IOExportFKSEWTest'
the type of the object 'matrix_elements' passed is not the same as in an
actual run. So I think the test should be updated so as to pass a list of
matrix_elements instead.
Marco, do you confirm that this would be ok?

Cheers,

On Fri, Oct 31, 2014 at 6:20 AM, Rikkert Frederix <email address hidden>
wrote:

> Review: Needs Fixing
>
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/2.2.2.
>

--
Valentin

lp:~maddevelopers/mg5amcnlo/2.2.2 updated
283. By Olivier Mattelaer

1. saver use of gzip module (not used for file > 4Gb)
2. add security in MadWidth for scale close to Lambda_QCD
3. improve the security associate to the pickle of the model
4. improve cluster support for lsf/nlo run (thanks Josh)

284. By marco zaro

fixed failing test test_write_lh_order_EW

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

ciao,
i have fixed the
test_weite_lh_order_ew passing the correct ‘matrix_elements’, and pushed to 2.2.2
Cheers,

Marco
On 31 Oct 2014, at 19:45, Valentin Hirschi <email address hidden> wrote:

> So, these three changes are related to two small modifications I brought
> directly to 2.2.2 a week ago or so.
>
> The new 'DABS(DBLE(' is correct as we recently realized with Olivier, that
> the former expression was not correct as it could yields negative JAMP**2
> in presence of interferences.
>
> I think the first crash is due to the '[0]' I appended to
> 'join(matrix_elements'
> because it was necessary when writing the order file for the GoSam
> interface. However, apparently, in the context of this test 'IOExportFKSEWTest'
> the type of the object 'matrix_elements' passed is not the same as in an
> actual run. So I think the test should be updated so as to pass a list of
> matrix_elements instead.
> Marco, do you confirm that this would be ok?
>
> Cheers,
>
> On Fri, Oct 31, 2014 at 6:20 AM, Rikkert Frederix <email address hidden>
> wrote:
>
>> Review: Needs Fixing
>>
>>
>> --
>> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
>> Your team MadDevelopers is subscribed to branch
>> lp:~maddevelopers/mg5amcnlo/2.2.2.
>>
>
>
>
> --
> Valentin
>
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
> You are reviewing the proposed merge of lp:~maddevelopers/mg5amcnlo/2.2.2 into lp:mg5amcnlo.

lp:~maddevelopers/mg5amcnlo/2.2.2 updated
285. By Marco Zaro <email address hidden>

fix in check_poles.f (case error) and FKSParamsReader (problem with declaration of filename variable)

286. By Marco Zaro <email address hidden>

added required output for fNLO runs

287. By Olivier Mattelaer

Fix a small crash in MadWidth

288. By Olivier Mattelaer

fix the remaining unittest

289. By marco zaro

randinit is also symlinked to the P* dirs

290. By Olivier Mattelaer

safer version of checking if MG5 is on a readonly disk

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

Hi Valentin,

What is the status with the IOTest which were crashing?
Please do it asap.
I found a real deep bug, (I'm evaluating how deep it is with Tim and Fabio) and need to have this version ready as soon as we have finish our investigation).

Cheers,

Olivier

lp:~maddevelopers/mg5amcnlo/2.2.2 updated
291. By Olivier Mattelaer

- correct the bug of a a > mu+ mu-
- bypass the call to do_plots for pythia8/herwig++ shower
- fix a problem with the set command (in AskforEdit)for HC model
- fix a problem with the name of the particle for the compute_width command

292. By Valentin Hirschi

1. Updated IOTests

Revision history for this message
Valentin Hirschi (valentin-hirschi) wrote :

Hi Olivier,

IOTest pass on my computer, so what do you mean by fixing it? Make them
pass as well on your computer despite the fact that you don't have PJFry or
Golem? If so, I think it can be done for the next release no? Also I have
to update the parsing for the date and version appearing in the MadLoop
banner.

Cheers

On Wed, Nov 5, 2014 at 6:00 AM, Olivier Mattelaer <
<email address hidden>> wrote:

> Hi Valentin,
>
> What is the status with the IOTest which were crashing?
> Please do it asap.
> I found a real deep bug, (I'm evaluating how deep it is with Tim and
> Fabio) and need to have this version ready as soon as we have finish our
> investigation).
>
> Cheers,
>
> Olivier
>
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.2.2/+merge/240012
> Your team MadTeam is subscribed to branch lp:mg5amcnlo.
>

--
Valentin

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

I think we can make this version public.

Rikkert

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'MadSpin/decay.py'
2--- MadSpin/decay.py 2014-09-17 09:53:23 +0000
3+++ MadSpin/decay.py 2014-11-06 06:25:51 +0000
4@@ -1185,7 +1185,7 @@
5 decaying_base = [id for id in final if abs(id) in self.decay_ids]
6 decaying_base.sort()
7 topo['base_order'] = (initial , final)
8- topo['matrix_element'] = me
9+# topo['matrix_element'] = me
10 tags = []
11 topo['tag2order'] = {}
12
13@@ -2662,6 +2662,8 @@
14 decay_text = []
15 for decays in self.mscmd.list_branches.values():
16 for decay in decays:
17+ if '=' not in decay:
18+ decay += ' QCD=99'
19 if ',' in decay:
20 decay_text.append('(%s)' % decay)
21 else:
22@@ -2791,11 +2793,11 @@
23 'processes': matrix_element.get('processes'),
24 'tag': me.shell_string(pdg_order=True)}
25 #
26- if __debug__:
27- #check that all decay matrix element correspond to a decay only
28- for prod in self.all_ME.values():
29- for decay in prod['matrix_element']['base_amplitude']['process']['decay_chains']:
30- assert decay.shell_string() in self.all_decay
31+# if __debug__:
32+# #check that all decay matrix element correspond to a decay only
33+# for prod in self.all_ME.values():
34+# for decay in prod['matrix_element']['base_amplitude']['process']['decay_chains']:
35+# assert decay.shell_string() in self.all_decay
36
37
38 def get_branching_ratio(self):
39
40=== modified file 'Template/LO/Source/PDF/pdf.f'
41--- Template/LO/Source/PDF/pdf.f 2014-05-16 08:15:16 +0000
42+++ Template/LO/Source/PDF/pdf.f 2014-11-06 06:25:51 +0000
43@@ -45,6 +45,7 @@
44 do i=-5,5
45 fx(i)=nnfx(i)/x
46 enddo
47+ fx(7)=nnfx(7)/x
48 elseif ((pdlabel(1:3) .eq. 'mrs')
49 . .or. (pdlabel(2:4) .eq. 'mrs')) then
50
51
52=== modified file 'Template/LO/Source/dsample.f'
53--- Template/LO/Source/dsample.f 2014-06-23 14:11:08 +0000
54+++ Template/LO/Source/dsample.f 2014-11-06 06:25:51 +0000
55@@ -974,7 +974,7 @@
56 im = ng -1
57 ddum(j) = ng
58 endif
59- if (im.le.0) im = 1
60+ if (im.lt.0) im = 0
61 ip = im + 1
62 ij = Minvar(j,ipole)
63 c------
64
65=== modified file 'Template/LO/Source/rw_events.f'
66--- Template/LO/Source/rw_events.f 2014-06-27 13:31:53 +0000
67+++ Template/LO/Source/rw_events.f 2014-11-06 06:25:51 +0000
68@@ -142,7 +142,7 @@
69 integer nexternal, ic(7,*)
70 double precision P(0:4,*),wgt
71 double precision aqcd, aqed, scale
72- character*300 buff
73+ character*1000 buff
74 logical u_syst
75 character*(s_bufflen) s_buff(*)
76 integer nclus
77
78=== modified file 'Template/LO/SubProcesses/setcuts.f'
79--- Template/LO/SubProcesses/setcuts.f 2014-05-05 15:00:26 +0000
80+++ Template/LO/SubProcesses/setcuts.f 2014-11-06 06:25:51 +0000
81@@ -95,13 +95,17 @@
82 $ ,IS_A_ONIUM_SAVE(NEXTERNAL),IS_A_NU_SAVE(NEXTERNAL)
83 $ ,IS_HEAVY_SAVE(NEXTERNAL),DO_CUTS_SAVE(NEXTERNAL)
84 double precision r2min_save(nexternal,nexternal)
85- $ ,s_min_save(nexternal,nexternal),s_max_save(nexternal
86- $ ,nexternal),ptll_min_save(nexternal,nexternal)
87- $ ,ptll_max_save(nexternal,nexternal)
88+ $ ,r2max_save(nexternal,nexternal),s_min_save(nexternal
89+ $ ,nexternal),s_max_save(nexternal,nexternal)
90+ $ ,ptll_min_save(nexternal,nexternal),ptll_max_save(nexternal
91+ $ ,nexternal),etmin_save(nexternal),etmax_save(nexternal)
92+ $ ,emin_save(nexternal) ,emax_save(nexternal)
93+ $ ,etamin_save(nexternal),etamax_save(nexternal)
94 save IS_A_J_SAVE,IS_A_L_SAVE,IS_A_B_SAVE,IS_A_A_SAVE
95 $ ,IS_A_ONIUM_SAVE,IS_A_NU_SAVE,IS_HEAVY_SAVE,DO_CUTS
96- $ ,r2min_save,s_min_save,s_max_save,ptll_min_save
97- $ ,ptll_max_save
98+ $ ,r2min_save,r2max_save,s_min_save,s_max_save,ptll_min_save
99+ $ ,ptll_max_save,etmin_save,etmax_save,emin_save,emax_save
100+ $ ,etamin_save,etamax_save
101 c
102 c setup masses for the final-state particles
103 c
104@@ -419,14 +423,14 @@
105 ptll_min(j,i)=0.0d0**2
106 ptll_max(j,i)=-1
107 if(((is_a_l(i).and.is_a_l(j)).and.
108- & (abs(idup(i,1,iproc)).eq.abs(idup(j,1,iproc))).and.
109- & (idup(i,1,iproc)*idup(j,1,iproc).lt.0))! Leptons from same flavor but different charge
110- & .or.(is_a_nu(i).and.is_a_l(j))
111- & .or.(is_a_l(i).and.is_a_nu(j)) !a lepton and a neutrino
112- & .or.(is_a_nu(i).and.is_a_nu(j))) then ! two neutrinos
113+ & (abs(idup(i,1,iproc)).eq.abs(idup(j,1,iproc))).and.
114+ & (idup(i,1,iproc)*idup(j,1,iproc).lt.0)) ! Leptons from same flavor but different charge
115+ & .or.(is_a_nu(i).and.is_a_l(j))
116+ & .or.(is_a_l(i).and.is_a_nu(j)) !a lepton and a neutrino
117+ & .or.(is_a_nu(i).and.is_a_nu(j))) then ! two neutrinos
118 ptll_min(j,i)=ptllmin*dabs(ptllmin)
119 ptll_max(j,i)=ptllmax*dabs(ptllmax)
120- endif
121+ endif
122 enddo
123 enddo
124
125@@ -506,16 +510,23 @@
126 if (iproc.eq.1) then
127 do i=nincoming+1,nexternal
128 do_cuts_save(i)=do_cuts(i)
129- is_a_j_save(i) = is_a_j(i)
130- is_a_l_save(i) = is_a_l(i)
131- is_a_b_save(i) = is_a_b(i)
132- is_a_a_save(i) = is_a_a(i)
133- is_a_nu_save(i) = is_a_nu(i)
134- is_heavy_save(i) = is_heavy(i)
135+ is_a_j_save(i)=is_a_j(i)
136+ is_a_b_save(i)=is_a_b(i)
137+ is_a_l_save(i)=is_a_l(i)
138+ is_a_a_save(i)=is_a_a(i)
139+ is_a_nu_save(i)=is_a_nu(i)
140 is_a_onium_save(i)=is_a_onium(i)
141+ is_heavy_save(i)=is_heavy(i)
142+ etmin_save(i)=etmin(i)
143+ etmax_save(i)=etmax(i)
144+ emin_save(i)=emin(i)
145+ emax_save(i)=emax(i)
146+ etamin_save(i)=etamin(i)
147+ etamax_save(i)=etamax(i)
148 if (i.eq.nexternal) cycle
149 do j=i+1,nexternal
150 r2min_save(j,i) = r2min(j,i)
151+ r2max_save(j,i) = r2max(j,i)
152 s_min_save(j,i) = s_min(j,i)
153 s_max_save(j,i) = s_max(j,i)
154 ptll_min_save(j,i) = ptll_min(j,i)
155@@ -526,16 +537,55 @@
156 equal=.true.
157 do i=nincoming+1,nexternal
158 if (do_cuts_save(i).neqv.do_cuts(i)) equal=.false.
159- if (is_a_j_save(i).neqv.is_a_j(i)) equal=.false.
160- if (is_a_l_save(i).neqv.is_a_l(i)) equal=.false.
161- if (is_a_b_save(i).neqv.is_a_b(i)) equal=.false.
162- if (is_a_a_save(i).neqv.is_a_a(i)) equal=.false.
163- if (is_a_nu_save(i).neqv.is_a_nu(i)) equal=.false.
164- if (is_heavy_save(i).neqv.is_heavy(i)) equal=.false.
165- if (is_a_onium_save(i).neqv.is_a_onium(i)) equal=.false.
166+ if (is_a_j_save(i).neqv.is_a_j(i)) then
167+ if (ptjmin4(1).gt.0d0 .or. ptjmax4(1).ge.0d0) equal=.false.
168+ if (ptjmin4(2).gt.0d0 .or. ptjmax4(2).ge.0d0) equal=.false.
169+ if (ptjmin4(3).gt.0d0 .or. ptjmax4(3).ge.0d0) equal=.false.
170+ if (ptjmin4(4).gt.0d0 .or. ptjmax4(4).ge.0d0) equal=.false.
171+ if (Htjmin4(2).gt.0d0 .or. Htjmax4(2).ge.0d0) equal=.false.
172+ if (Htjmin4(3).gt.0d0 .or. Htjmax4(3).ge.0d0) equal=.false.
173+ if (Htjmin4(4).gt.0d0 .or. Htjmax4(4).ge.0d0) equal=.false.
174+ if (inclHtmin.gt.0d0 .or. inclHtmax.ge.0d0) equal=.false.
175+ if (htjmin.gt.0d0 .or. htjmax.ge.0d0) equal=.false.
176+ if (xptj.gt.0d0) equal=.false.
177+ if (xetamin.gt.0d0 .or. deltaeta.gt.0d0) equal=.false.
178+ if (ptgmin.ne.0d0) equal=.false.
179+ if (kt_durham.gt.0d0) equal=.false.
180+ endif
181+ if (is_a_b_save(i).neqv.is_a_b(i)) then
182+ if (inclHtmin.gt.0d0 .or. inclHtmax.ge.0d0) equal=.false.
183+ if (xptb.gt.0d0) equal=.false.
184+ endif
185+ if (is_a_a_save(i).neqv.is_a_a(i)) then
186+ if (xpta.gt.0d0) equal=.false.
187+ if (ptgmin.ne.0d0) equal=.false.
188+ endif
189+ if (is_a_l_save(i).neqv.is_a_l(i)) then
190+ if (ptlmin4(1).gt.0d0 .or. ptlmax4(1).ge.0d0) equal=.false.
191+ if (ptlmin4(2).gt.0d0 .or. ptlmax4(2).ge.0d0) equal=.false.
192+ if (ptlmin4(3).gt.0d0 .or. ptlmax4(3).ge.0d0) equal=.false.
193+ if (ptlmin4(4).gt.0d0 .or. ptlmax4(4).ge.0d0) equal=.false.
194+ if (mmnl.gt.0d0 .or. mmnlmax.ge.0d0) equal=.false.
195+ if (xptl.gt.0d0) equal=.false.
196+ if (ptgmin.ne.0d0 .and. isoEM) equal=.false.
197+ endif
198+ if (is_a_nu_save(i).neqv.is_a_nu(i)) then
199+ if (misset.gt.0d0 .or. missetmax.ge.0d0) equal=.false.
200+ if (mmnl.gt.0d0 .or. mmnlmax.ge.0d0) equal=.false.
201+ endif
202+ if (is_heavy_save(i).neqv.is_heavy(i)) then
203+ if (ptheavy.gt.0d0) equal=.false.
204+ endif
205+ if (etmin_save(i).ne.etmin(i)) equal=.false.
206+ if (etmax_save(i).ne.etmax(i)) equal=.false.
207+ if (emin_save(i).ne.emin(i)) equal=.false.
208+ if (emax_save(i).ne.emax(i)) equal=.false.
209+ if (etamin_save(i).ne.etamin(i)) equal=.false.
210+ if (etamax_save(i).ne.etamax(i)) equal=.false.
211 if (i.eq.nexternal) cycle
212 do j=i+1,nexternal
213 if (r2min_save(j,i).ne.r2min(j,i)) equal=.false.
214+ if (r2max_save(j,i).ne.r2max(j,i)) equal=.false.
215 if (s_min_save(j,i).ne.s_min(j,i)) equal=.false.
216 if (s_max_save(j,i).ne.s_max(j,i)) equal=.false.
217 if (ptll_min_save(j,i).ne.ptll_min(j,i)) equal=.false.
218@@ -626,7 +676,7 @@
219
220 c set possible xqcut combinations (for better grid preparation)
221 if(xqcut.gt.0)
222- $ call setxqcuts()
223+ $ call setxqcuts(do_cuts)
224
225 c call write_cuts()
226 RETURN
227@@ -634,7 +684,7 @@
228 END
229
230
231- subroutine setxqcuts()
232+ subroutine setxqcuts(do_cuts)
233 c**************************************************
234 c Set xqcuti and xqcutij between all particles
235 c to allow for grid preparation based on xqcut
236@@ -645,6 +695,8 @@
237 include 'nexternal.inc'
238 include 'cuts.inc'
239
240+ logical do_cuts(nexternal)
241+
242 double precision pmass(nexternal)
243 common/to_mass/ pmass
244 integer iforest(2,-max_branch:-1,lmaxconfigs)
245@@ -682,13 +734,15 @@
246 $ idup(iforest(2,k,j),1,1).eq.21.or.
247 $ iabs(idup(iforest(2,k,j),1,1)).le.maxjetflavor.or.
248 $ idup(iforest(2,k,j),1,1).eq.21)then
249- xqcutij(iforest(2,k,j),iforest(1,k,j))=xqcut
250- xqcutij(iforest(1,k,j),iforest(2,k,j))=xqcut
251+ if (do_cuts(iforest(2,k,j)).and. do_cuts(iforest(1,k,j)))then
252+ xqcutij(iforest(2,k,j),iforest(1,k,j))=xqcut
253+ xqcutij(iforest(1,k,j),iforest(2,k,j))=xqcut
254+ endif
255 endif
256 endif
257 enddo
258 if(.not.foundpartner.and.(iabs(idup(i,1,1)).le.maxjetflavor.or.
259- $ idup(i,1,1).eq.21)) xqcuti(i)=max(0d0,sqrt(xqcut**2-pmass(i)**2))
260+ $ idup(i,1,1).eq.21).and.do_cuts(i)) xqcuti(i)=max(0d0,sqrt(xqcut**2-pmass(i)**2))
261 enddo
262 enddo
263
264
265=== modified file 'Template/LO/SubProcesses/unwgt.f'
266--- Template/LO/SubProcesses/unwgt.f 2014-02-19 01:00:53 +0000
267+++ Template/LO/SubProcesses/unwgt.f 2014-11-06 06:25:51 +0000
268@@ -241,7 +241,7 @@
269 integer iseed, nover, nstore
270 double precision scale,aqcd,aqed
271 integer ievent
272- character*300 buff
273+ character*1000 buff
274 logical u_syst
275 character*(s_bufflen) s_buff(7)
276 integer nclus
277@@ -408,7 +408,7 @@
278 real ran1
279 external ran1
280
281- character*300 buff
282+ character*1000 buff
283 character*(s_bufflen) s_buff(7)
284 integer nclus
285 character*(clus_bufflen) buffclus(nexternal)
286
287=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script'
288--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-07-10 16:03:27 +0000
289+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-11-06 06:25:51 +0000
290@@ -92,7 +92,6 @@
291 EXTRAPOLATE|extrapolate) PDFGROUP=LHAEXT ;;
292 *) echo "no such option; failure in linklhapdf" ; exit 1 ;;
293 esac
294-source ../Source/fj_lhapdf_opts
295 }
296
297 # creates the executable for NLO and MC; the entry of the function
298@@ -295,7 +294,7 @@
299 fi
300 fi
301 echo " "
302-echo "***** Now ready for showering" $NEVENTS "events with $MC_TYPE "
303+echo "***** Now ready for showering" $NEVENTS "events with $MCMODE "
304 echo " "
305 runMCMadFKS
306 teststatus runMC
307
308=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script'
309--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script 2014-05-02 11:09:41 +0000
310+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script 2014-11-06 06:25:51 +0000
311@@ -92,7 +92,6 @@
312 EXTRAPOLATE|extrapolate) PDFGROUP=LHAEXT ;;
313 *) echo "no such option; failure in linklhapdf" ; exit 1 ;;
314 esac
315-source ../Source/fj_lhapdf_opts
316 }
317
318 # converts pdg numbers to names, relevant for decays
319@@ -337,7 +336,7 @@
320 let "ERR_NUM_HWPP += 1"
321
322 echo " "
323-echo "***** Now ready for showering" $NEVENTS "events with $MC_TYPE "
324+echo "***** Now ready for showering" $NEVENTS "events with $MCMODE "
325 echo " "
326 runMCMadFKS
327 teststatus runMC
328
329=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6PT.Script'
330--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6PT.Script 2014-05-02 11:09:41 +0000
331+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6PT.Script 2014-11-06 06:25:51 +0000
332@@ -92,7 +92,6 @@
333 EXTRAPOLATE|extrapolate) PDFGROUP=LHAEXT ;;
334 *) echo "no such option; failure in linklhapdf" ; exit 1 ;;
335 esac
336-source ../Source/fj_lhapdf_opts
337 }
338
339 # creates the executable for NLO and MC; the entry of the function
340@@ -296,7 +295,7 @@
341 fi
342 fi
343 echo " "
344-echo "***** Now ready for showering" $NEVENTS "events with $MC_TYPE "
345+echo "***** Now ready for showering" $NEVENTS "events with $MCMODE "
346 echo " "
347 runMCMadFKS
348 teststatus runMC
349
350=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6Q.Script'
351--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6Q.Script 2014-05-02 11:09:41 +0000
352+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA6Q.Script 2014-11-06 06:25:51 +0000
353@@ -92,7 +92,6 @@
354 EXTRAPOLATE|extrapolate) PDFGROUP=LHAEXT ;;
355 *) echo "no such option; failure in linklhapdf" ; exit 1 ;;
356 esac
357-source ../Source/fj_lhapdf_opts
358 }
359
360 # creates the executable for NLO and MC; the entry of the function
361@@ -296,7 +295,7 @@
362 fi
363 fi
364 echo " "
365-echo "***** Now ready for showering" $NEVENTS "events with $MC_TYPE "
366+echo "***** Now ready for showering" $NEVENTS "events with $MCMODE "
367 echo " "
368 runMCMadFKS
369 teststatus runMC
370
371=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA8.Script'
372--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA8.Script 2014-07-16 16:23:08 +0000
373+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_PYTHIA8.Script 2014-11-06 06:25:51 +0000
374@@ -92,7 +92,6 @@
375 EXTRAPOLATE|extrapolate) PDFGROUP=LHAEXT ;;
376 *) echo "no such option; failure in linklhapdf" ; exit 1 ;;
377 esac
378-source ../Source/fj_lhapdf_opts
379 }
380
381 # creates the executable for NLO and MC; the entry of the function
382@@ -211,23 +210,43 @@
383 # new compilation step for PY8 mode
384 export PYTHIA8LOCATION=$PY8PATH
385
386+# check the PYTHIA8 version by the position of certain files
387+
388+if [ ! -d $PYTHIA8LOCATION/xmldoc ]
389+then
390+ PY8VER="8.2"
391+ echo ' USING PYTHIA 8, version >= 8.200'
392+ chmod +x $PYTHIA8LOCATION/bin/pythia8-config
393+ read HEPMCINCLIB <<< $($PYTHIA8LOCATION/bin/pythia8-config --hepmc2)
394+else
395+ PY8VER="8.1"
396+ echo ' USING PYTHIA 8, version < 8.200'
397+fi
398+
399 if [ "$PY8UTI" != "" ]
400 then
401- cp -rf $thisdir/srcPythia8/Pythia8.cc $thisdir/Pythia8.cc
402+ if [ $PY8VER == "8.1" ]; then cp -rf $thisdir/srcPythia8/Pythia8.cc $thisdir/Pythia8.cc; fi
403+ if [ $PY8VER == "8.2" ]; then cp -rf $thisdir/srcPythia8/Pythia82.cc $thisdir/Pythia82.cc; fi
404 cp -rf $thisdir/srcPythia8/Makefile $thisdir/Makefile
405 else
406- cp -rf $thisdir/srcPythia8/Pythia8_hep.cc $thisdir/Pythia8.cc
407+ if [ $PY8VER == "8.1" ]; then cp -rf $thisdir/srcPythia8/Pythia8_hep.cc $thisdir/Pythia8.cc; fi
408+ if [ $PY8VER == "8.2" ]; then cp -rf $thisdir/srcPythia8/Pythia82_hep.cc $thisdir/Pythia82.cc; fi
409 cp -rf $thisdir/srcPythia8/Makefile_hep $thisdir/Makefile
410 fi
411 if [ -f $thisdir/Pythia8.exe ]
412 then
413 rm -rf $thisdir/Pythia8.exe
414 fi
415-cp -rf $PYTHIA8LOCATION/xmldoc $thisdir
416+
417+if [ $PY8VER == "8.1" ]; then cp -rf $PYTHIA8LOCATION/xmldoc $thisdir; fi
418+if [ $PY8VER == "8.2" ]; then cp -rf $PYTHIA8LOCATION/share/Pythia8/xmldoc $thisdir; fi
419 PY8UTIMAKE="PY8UTI="$PY8UTI
420 FORFILEMAKE="FORFILE="$PY8UTI
421+HEPMCMAKE="HEPMCINCLIB="$HEPMCINCLIB
422 LGFORTRANMAKE="LIBGFORTRAN=-lgfortran"
423-make Pythia8 "$PY8UTIMAKE" "$FORFILEMAKE" "$LGFORTRANMAKE" "$LIBSMAKE" "$LIBSMAKEP" "$INCLMAKE"
424+
425+if [ $PY8VER == "8.1" ]; then make Pythia8 "$PY8UTIMAKE" "$FORFILEMAKE" "$LGFORTRANMAKE" "$LIBSMAKE" "$LIBSMAKEP" "$INCLMAKE"; fi
426+if [ $PY8VER == "8.2" ]; then make Pythia82 "$PY8UTIMAKE" "$FORFILEMAKE" "$LGFORTRANMAKE" "$LIBSMAKE" "$LIBSMAKEP" "$INCLMAKE" "$HEPMCMAKE"; fi
427
428 cd $thisdir
429 if [ ! -f $thisdir/Pythia8.exe ]
430@@ -296,7 +315,7 @@
431 let "ERR_NUM_PY8 += 1"
432
433 echo " "
434-echo "***** Now ready for showering" $NEVENTS "events with $MC_TYPE "
435+echo "***** Now ready for showering" $NEVENTS "events with $MCMODE "
436 echo " "
437 runMCMadFKS
438 teststatus runMC
439@@ -320,8 +339,6 @@
440 Main:spareWord1 = $EVENT_NORM ! Event weights are normalized to sum
441 ! or average to the cross section
442 Main:timesAllowErrors = $ERR_NUM_PY8 ! Number of allowed errors
443-Main:showChangedSettings = on ! Shows all non-default settings
444-Main:showChangedParticleData = off ! Shows all non-default particle settings
445
446 ! 2) Settings related to output in init(), next(), amd stat().
447 Init:showChangedSettings = on ! Shows all non-default settings
448@@ -344,7 +361,9 @@
449 EOF
450 if [ $UsedPdfLib = "LHAPDF" ]
451 then
452-cat <<EOF >> $ifile
453+ if [ $PY8VER == "8.1" ]
454+ then
455+ cat <<EOF >> $ifile
456 PDF:useLHAPDF = on ! Use of LHAPDF
457 PDF:LHAPDFSET = $PDFSETN ! PDF set
458 EOF
459@@ -362,9 +381,41 @@
460 echo "Unknown PDFGROUP " $PDFGROUP
461 exit 1
462 fi
463+ else
464+ if [ -f $PYTHIA8LOCATION/lib/libpythia8lhapdf5.so ]
465+ then
466+ cat <<EOF >> $ifile
467+PDF:pSet = LHAPDF5:$PDFSETN
468+EOF
469+ if [ $PDFGROUP = "LHAPDF" ]
470+ then
471+ cat <<EOF >> $ifile
472+PDF:extrapolate = off ! extrapolate PDF set outside the boundaries
473+EOF
474+ elif [ $PDFGROUP = "LHAEXT" ]
475+ then
476+ cat <<EOF >> $ifile
477+PDF:extrapolate = on ! extrapolate PDF set outside the boundaries
478+EOF
479+ else
480+ echo "Unknown PDFGROUP " $PDFGROUP
481+ exit 1
482+ fi
483+ elif [ -f $PYTHIA8LOCATION/lib/libpythia8lhapdf6.so ]
484+ then
485+ cat <<EOF >> $ifile
486+PDF:pSet = LHAPDF6:$PDFSETN
487+EOF
488+ fi
489+ fi
490 else
491-cat <<EOF >> $ifile
492+ if [ $PY8VER == "8.1" ]
493+ then
494+ cat <<EOF >> $ifile
495 PDF:useLHAPDF = off ! Use of LHAPDF
496+EOF
497+ fi
498+ cat <<EOF >> $ifile
499 PDF:pSet = 7 ! CTEQ6L
500 EOF
501 fi
502
503=== modified file 'Template/NLO/MCatNLO/include/LHEF.h'
504--- Template/NLO/MCatNLO/include/LHEF.h 2014-01-23 17:04:40 +0000
505+++ Template/NLO/MCatNLO/include/LHEF.h 2014-11-06 06:25:51 +0000
506@@ -1698,9 +1698,9 @@
507 version = 1;
508 if ( currentLine.find("version=\"2" ) != std::string::npos )
509 version = 2;
510- else if ( currentLine.find("version=\"1" ) == std::string::npos )
511- throw std::runtime_error
512- ("Tried to read a LesHouchesEvents file which is not version 1.0.");
513+ //else if ( currentLine.find("version=\"1" ) == std::string::npos )
514+ // throw std::runtime_error
515+ //("Tried to read a LesHouchesEvents file which is not version 1.0.");
516
517 // Loop over all lines until we hit the </init> tag.
518 while ( getline() && currentLine.find("</init>") == std::string::npos ) {
519
520=== modified file 'Template/NLO/MCatNLO/shower_template.sh'
521--- Template/NLO/MCatNLO/shower_template.sh 2014-06-24 13:08:32 +0000
522+++ Template/NLO/MCatNLO/shower_template.sh 2014-11-06 06:25:51 +0000
523@@ -35,7 +35,7 @@
524 ./MCATNLO_$SHOWER\_EXE < MCATNLO_$SHOWER\_input > mcatnlo_run.log 2>&1
525
526 elif [ $SHOWER == "PYTHIA8" ] ; then
527- source config.sh
528+ if [ -f config.sh ] ; then source config.sh ; fi
529 ./Pythia8.exe Pythia8.cmd > mcatnlo_run.log 2>&1
530 fi
531
532
533=== modified file 'Template/NLO/MCatNLO/srcPythia8/Makefile'
534--- Template/NLO/MCatNLO/srcPythia8/Makefile 2014-01-23 17:04:40 +0000
535+++ Template/NLO/MCatNLO/srcPythia8/Makefile 2014-11-06 06:25:51 +0000
536@@ -66,11 +66,19 @@
537 Pythia8: $(FORFILE) $(PYTHIA8LOCATION)/$(LIBDIRARCH)/libpythia8.a \
538 $(PYTHIA8LOCATION)/$(LIBDIRARCH)/libpythia8tohepmc.a
539 $(CXX) $(CXXFLAGS) -I$(PYTHIA8LOCATION)/$(INCDIR) \
540- -I$(HEPMCLOCATION)/$(INCDIR) -I$(TOPDIR)/$(INCDIR) \
541- $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o $@.exe $(FORFILE) \
542+ -I$(HEPMCLOCATION)/$(INCDIR) -I$(TOPDIR)/$(INCDIR) \
543+ $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o Pythia8.exe $(FORFILE) \
544 -L$(PYTHIA8LOCATION)/$(LIBDIRARCH) -lpythia8 $(LIBLHAPDF) $(LIBGZIP) \
545 -lpythia8tohepmc -L$(HEPMCLOCATION)/$(LIBDIR) -lHepMC -lHepMCfio $(LIBGFORTRAN) \
546
547+Pythia82: $(FORFILE) $(PYTHIA8LOCATION)/$(LIBDIR)/libpythia8.a
548+ $(CXX) $(CXXFLAGS) -I$(PYTHIA8LOCATION)/$(INCDIR) \
549+ $(HEPMCINCLIB) -I$(TOPDIR)/$(INCDIR) \
550+ -I$(TOPDIR)/$(INCDIR) $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o Pythia8.exe $(FORFILE) \
551+ -L$(PYTHIA8LOCATION)/$(LIBDIR) -lpythia8 $(LIBGZIP) \
552+ -lHepMCfio $(LIBGFORTRAN) \
553+
554+
555 .PHONY: clean
556 clean:
557 rm -rf *.exe
558
559=== modified file 'Template/NLO/MCatNLO/srcPythia8/Makefile_hep'
560--- Template/NLO/MCatNLO/srcPythia8/Makefile_hep 2014-01-23 17:04:40 +0000
561+++ Template/NLO/MCatNLO/srcPythia8/Makefile_hep 2014-11-06 06:25:51 +0000
562@@ -64,12 +64,18 @@
563 $(CXX) -c $< -fPIC $(INCLOPTION) -o $@
564
565 Pythia8: $(FORFILE) $(PYTHIA8LOCATION)/$(LIBDIRARCH)/libpythia8.a \
566- $(PYTHIA8LOCATION)/$(LIBDIRARCH)/libpythia8tohepmc.a
567- $(CXX) $(CXXFLAGS) -I$(PYTHIA8LOCATION)/$(INCDIR) \
568- -I$(HEPMCLOCATION)/$(INCDIR) -I$(TOPDIR)/$(INCDIR) \
569- $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o $@.exe $(FORFILE) \
570- -L$(PYTHIA8LOCATION)/$(LIBDIRARCH) -lpythia8 $(LIBLHAPDF) $(LIBGZIP) \
571- -lpythia8tohepmc -L$(HEPMCLOCATION)/$(LIBDIR) -lHepMC
572+ $(PYTHIA8LOCATION)/$(LIBDIRARCH)/libpythia8tohepmc.a
573+ $(CXX) $(CXXFLAGS) -I$(PYTHIA8LOCATION)/$(INCDIR) \
574+ -I$(HEPMCLOCATION)/$(INCDIR) -I$(TOPDIR)/$(INCDIR) \
575+ $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o Pythia8.exe $(FORFILE) \
576+ -L$(PYTHIA8LOCATION)/$(LIBDIRARCH) -lpythia8 $(LIBLHAPDF) $(LIBGZIP) \
577+ -lpythia8tohepmc -L$(HEPMCLOCATION)/$(LIBDIR) -lHepMC
578+
579+Pythia82: $(FORFILE) $(PYTHIA8LOCATION)/$(LIBDIR)/libpythia8.a
580+ $(CXX) $(CXXFLAGS) -I$(PYTHIA8LOCATION)/$(INCDIR) \
581+ $(HEPMCINCLIB) -I$(TOPDIR)/$(INCDIR) \
582+ $(EXTRAPATHS) $(EXTRALIBS) $(INCLOPTION) $@.cc -o Pythia8.exe $(FORFILE) \
583+ -L$(PYTHIA8LOCATION)/$(LIBDIR) -lpythia8 $(LIBGZIP)
584
585 .PHONY: clean
586 clean:
587
588=== added file 'Template/NLO/MCatNLO/srcPythia8/Pythia8.cc'
589--- Template/NLO/MCatNLO/srcPythia8/Pythia8.cc 1970-01-01 00:00:00 +0000
590+++ Template/NLO/MCatNLO/srcPythia8/Pythia8.cc 2014-11-06 06:25:51 +0000
591@@ -0,0 +1,152 @@
592+// Driver for Pythia 8. Reads an input file dynamically created on
593+// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
594+#include "Pythia8/Pythia.h"
595+#include "Pythia8/Pythia8ToHepMC.h"
596+#include "HepMC/GenEvent.h"
597+#include "HepMC/IO_GenEvent.h"
598+#include "HepMC/IO_BaseClass.h"
599+#include "HepMC/IO_HEPEVT.h"
600+#include "HepMC/HEPEVT_Wrapper.h"
601+#include "fstream"
602+#include "LHEFRead.h"
603+#include "../examples/CombineMatchingInput.h"
604+
605+using namespace Pythia8;
606+
607+extern "C" {
608+ extern struct {
609+ double EVWGT;
610+ } cevwgt_;
611+}
612+#define cevwgt cevwgt_
613+
614+extern "C" {
615+ void pyabeg_(int&,char(*)[15]);
616+ void pyaend_(double&);
617+ void pyanal_(int&,double(*));
618+}
619+
620+int main() {
621+ Pythia pythia;
622+
623+ int cwgtinfo_nn;
624+ char cwgtinfo_weights_info[250][15];
625+ double cwgt_ww[250];
626+
627+ string inputname="Pythia8.cmd",outputname="Pythia8.hep";
628+
629+ pythia.readFile(inputname.c_str());
630+
631+ //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
632+ CombineMatchingInput combined;
633+ UserHooks* matching = combined.getHook(pythia);
634+ if (!matching) return 1;
635+ pythia.setUserHooksPtr(matching);
636+
637+ pythia.init();
638+ string filename = pythia.word("Beams:LHEF");
639+
640+ MyReader read(filename);
641+ read.lhef_read_wgtsinfo_(cwgtinfo_nn,cwgtinfo_weights_info);
642+ pyabeg_(cwgtinfo_nn,cwgtinfo_weights_info);
643+
644+ int nAbort=10;
645+ int nPrintLHA=1;
646+ int iAbort=0;
647+ int iPrintLHA=0;
648+ int nstep=5000;
649+ int iEventtot=pythia.mode("Main:numberOfEvents");
650+ int iEventshower=pythia.mode("Main:spareMode1");
651+ string evt_norm=pythia.word("Main:spareWord1");
652+ int iEventtot_norm=iEventtot;
653+ if (evt_norm == "average"){
654+ iEventtot_norm=1;
655+ }
656+
657+ //FxFx merging
658+ bool isFxFx=pythia.flag("JetMatching:doFxFx");
659+ if (isFxFx) {
660+ int nJmax=pythia.mode("JetMatching:nJetMax");
661+ double Qcut=pythia.parm("JetMatching:qCut");
662+ double PTcut=pythia.parm("JetMatching:qCutME");
663+ if (Qcut <= PTcut || Qcut <= 0.) {
664+ std::cout << " \n";
665+ std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
666+ << Qcut << " " << PTcut << "\n";
667+ return 0;
668+ }
669+ }
670+
671+ HepMC::IO_BaseClass *_hepevtio;
672+ HepMC::Pythia8ToHepMC ToHepMC;
673+ HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
674+ double nSelected;
675+ double norm;
676+
677+ // Cross section
678+ double sigmaTotal = 0.;
679+
680+ for (int iEvent = 0; ; ++iEvent) {
681+ if (!pythia.next()) {
682+ if (++iAbort < nAbort) continue;
683+ break;
684+ }
685+ // the number of events read by Pythia so far
686+ nSelected=double(pythia.info.nSelected());
687+ // normalisation factor for the default analyses defined in pyanal_
688+ norm=iEventtot_norm*iEvent/nSelected;
689+
690+ if (nSelected >= iEventshower) break;
691+ if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
692+ pythia.LHAeventList();
693+ pythia.info.list();
694+ pythia.process.list();
695+ pythia.event.list();
696+ ++iPrintLHA;
697+ }
698+
699+ double evtweight = pythia.info.weight();
700+ double normhepmc;
701+ // Add the weight of the current event to the cross section.
702+ normhepmc = 1. / double(iEventshower);
703+ if (evt_norm == "average") {
704+ sigmaTotal += evtweight*normhepmc;
705+ } else {
706+ sigmaTotal += evtweight*normhepmc*iEventtot;
707+ }
708+
709+ HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
710+ ToHepMC.fill_next_event( pythia, hepmcevt );
711+
712+ //define the IO_HEPEVT
713+ _hepevtio = new HepMC::IO_HEPEVT;
714+ _hepevtio->write_event(hepmcevt);
715+
716+ //event weight
717+ cevwgt.EVWGT=hepmcevt->weights()[0];
718+
719+ //call the FORTRAN analysis for this event
720+ read.lhef_read_wgts_(cwgt_ww);
721+ pyanal_(cwgtinfo_nn,cwgt_ww);
722+
723+ if (iEvent % nstep == 0 && iEvent >= 100){
724+ pyaend_(norm);
725+ }
726+ delete hepmcevt;
727+ }
728+ pyaend_(norm);
729+
730+ pythia.stat();
731+ if (isFxFx){
732+ std::cout << " \n";
733+ std::cout << "*********************************************************************** \n";
734+ std::cout << "*********************************************************************** \n";
735+ std::cout << "Cross section, including FxFx merging is: "
736+ << sigmaTotal << "\n";
737+ std::cout << "*********************************************************************** \n";
738+ std::cout << "*********************************************************************** \n";
739+ }
740+ delete matching;
741+
742+ return 0;
743+}
744
745=== removed file 'Template/NLO/MCatNLO/srcPythia8/Pythia8.cc'
746--- Template/NLO/MCatNLO/srcPythia8/Pythia8.cc 2014-05-20 11:47:02 +0000
747+++ Template/NLO/MCatNLO/srcPythia8/Pythia8.cc 1970-01-01 00:00:00 +0000
748@@ -1,152 +0,0 @@
749-// Driver for Pythia 8. Reads an input file dynamically created on
750-// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
751-#include "Pythia8/Pythia.h"
752-#include "Pythia8/Pythia8ToHepMC.h"
753-#include "HepMC/GenEvent.h"
754-#include "HepMC/IO_GenEvent.h"
755-#include "HepMC/IO_BaseClass.h"
756-#include "HepMC/IO_HEPEVT.h"
757-#include "HepMC/HEPEVT_Wrapper.h"
758-#include "fstream"
759-#include "LHEFRead.h"
760-#include "../examples/CombineMatchingInput.h"
761-
762-using namespace Pythia8;
763-
764-extern "C" {
765- extern struct {
766- double EVWGT;
767- } cevwgt_;
768-}
769-#define cevwgt cevwgt_
770-
771-extern "C" {
772- void pyabeg_(int&,char(*)[15]);
773- void pyaend_(double&);
774- void pyanal_(int&,double(*));
775-}
776-
777-int main() {
778- Pythia pythia;
779-
780- int cwgtinfo_nn;
781- char cwgtinfo_weights_info[250][15];
782- double cwgt_ww[250];
783-
784- string inputname="Pythia8.cmd",outputname="Pythia8.hep";
785-
786- pythia.readFile(inputname.c_str());
787-
788- //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
789- CombineMatchingInput combined;
790- UserHooks* matching = combined.getHook(pythia);
791- if (!matching) return 1;
792- pythia.setUserHooksPtr(matching);
793-
794- pythia.init();
795- string filename = pythia.word("Beams:LHEF");
796-
797- MyReader read(filename);
798- read.lhef_read_wgtsinfo_(cwgtinfo_nn,cwgtinfo_weights_info);
799- pyabeg_(cwgtinfo_nn,cwgtinfo_weights_info);
800-
801- int nAbort=10;
802- int nPrintLHA=1;
803- int iAbort=0;
804- int iPrintLHA=0;
805- int nstep=5000;
806- int iEventtot=pythia.mode("Main:numberOfEvents");
807- int iEventshower=pythia.mode("Main:spareMode1");
808- string evt_norm=pythia.word("Main:spareWord1");
809- int iEventtot_norm=iEventtot;
810- if (evt_norm == "average"){
811- iEventtot_norm=1;
812- }
813-
814- //FxFx merging
815- bool isFxFx=pythia.flag("JetMatching:doFxFx");
816- if (isFxFx) {
817- int nJmax=pythia.mode("JetMatching:nJetMax");
818- double Qcut=pythia.parm("JetMatching:qCut");
819- double PTcut=pythia.parm("JetMatching:qCutME");
820- if (Qcut <= PTcut || Qcut <= 0.) {
821- std::cout << " \n";
822- std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
823- << Qcut << " " << PTcut << "\n";
824- return 0;
825- }
826- }
827-
828- HepMC::IO_BaseClass *_hepevtio;
829- HepMC::Pythia8ToHepMC ToHepMC;
830- HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
831- double nSelected;
832- double norm;
833-
834- // Cross section
835- double sigmaTotal = 0.;
836-
837- for (int iEvent = 0; ; ++iEvent) {
838- if (!pythia.next()) {
839- if (++iAbort < nAbort) continue;
840- break;
841- }
842- // the number of events read by Pythia so far
843- nSelected=double(pythia.info.nSelected());
844- // normalisation factor for the default analyses defined in pyanal_
845- norm=iEventtot_norm*iEvent/nSelected;
846-
847- if (nSelected >= iEventshower) break;
848- if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
849- pythia.LHAeventList();
850- pythia.info.list();
851- pythia.process.list();
852- pythia.event.list();
853- ++iPrintLHA;
854- }
855-
856- double evtweight = pythia.info.weight();
857- double normhepmc;
858- // Add the weight of the current event to the cross section.
859- normhepmc = 1. / double(iEventshower);
860- if (evt_norm == "average") {
861- sigmaTotal += evtweight*normhepmc;
862- } else {
863- sigmaTotal += evtweight*normhepmc*iEventtot;
864- }
865-
866- HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
867- ToHepMC.fill_next_event( pythia, hepmcevt );
868-
869- //define the IO_HEPEVT
870- _hepevtio = new HepMC::IO_HEPEVT;
871- _hepevtio->write_event(hepmcevt);
872-
873- //event weight
874- cevwgt.EVWGT=hepmcevt->weights()[0];
875-
876- //call the FORTRAN analysis for this event
877- read.lhef_read_wgts_(cwgt_ww);
878- pyanal_(cwgtinfo_nn,cwgt_ww);
879-
880- if (iEvent % nstep == 0 && iEvent >= 100){
881- pyaend_(norm);
882- }
883- delete hepmcevt;
884- }
885- pyaend_(norm);
886-
887- pythia.stat();
888- if (isFxFx){
889- std::cout << " \n";
890- std::cout << "*********************************************************************** \n";
891- std::cout << "*********************************************************************** \n";
892- std::cout << "Cross section, including FxFx merging is: "
893- << sigmaTotal << "\n";
894- std::cout << "*********************************************************************** \n";
895- std::cout << "*********************************************************************** \n";
896- }
897- delete matching;
898-
899- return 0;
900-}
901
902=== added file 'Template/NLO/MCatNLO/srcPythia8/Pythia82.cc'
903--- Template/NLO/MCatNLO/srcPythia8/Pythia82.cc 1970-01-01 00:00:00 +0000
904+++ Template/NLO/MCatNLO/srcPythia8/Pythia82.cc 2014-11-06 06:25:51 +0000
905@@ -0,0 +1,153 @@
906+// Driver for Pythia 8. Reads an input file dynamically created on
907+// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
908+#include "Pythia8/Pythia.h"
909+#include "Pythia8Plugins/HepMC2.h"
910+#include "Pythia8Plugins/aMCatNLOHooks.h"
911+#include "Pythia8Plugins/CombineMatchingInput.h"
912+#include "HepMC/GenEvent.h"
913+#include "HepMC/IO_GenEvent.h"
914+#include "HepMC/IO_BaseClass.h"
915+#include "HepMC/IO_HEPEVT.h"
916+#include "HepMC/HEPEVT_Wrapper.h"
917+#include "fstream"
918+#include "LHEFRead.h"
919+
920+using namespace Pythia8;
921+
922+extern "C" {
923+ extern struct {
924+ double EVWGT;
925+ } cevwgt_;
926+}
927+#define cevwgt cevwgt_
928+
929+extern "C" {
930+ void pyabeg_(int&,char(*)[15]);
931+ void pyaend_(double&);
932+ void pyanal_(int&,double(*));
933+}
934+
935+int main() {
936+ Pythia pythia;
937+
938+ int cwgtinfo_nn;
939+ char cwgtinfo_weights_info[250][15];
940+ double cwgt_ww[250];
941+
942+ string inputname="Pythia8.cmd",outputname="Pythia8.hep";
943+
944+ pythia.readFile(inputname.c_str());
945+
946+ //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
947+ CombineMatchingInput combined;
948+ UserHooks* matching = combined.getHook(pythia);
949+ if (!matching) return 1;
950+ pythia.setUserHooksPtr(matching);
951+
952+ pythia.init();
953+ string filename = pythia.word("Beams:LHEF");
954+
955+ MyReader read(filename);
956+ read.lhef_read_wgtsinfo_(cwgtinfo_nn,cwgtinfo_weights_info);
957+ pyabeg_(cwgtinfo_nn,cwgtinfo_weights_info);
958+
959+ int nAbort=10;
960+ int nPrintLHA=1;
961+ int iAbort=0;
962+ int iPrintLHA=0;
963+ int nstep=5000;
964+ int iEventtot=pythia.mode("Main:numberOfEvents");
965+ int iEventshower=pythia.mode("Main:spareMode1");
966+ string evt_norm=pythia.word("Main:spareWord1");
967+ int iEventtot_norm=iEventtot;
968+ if (evt_norm == "average"){
969+ iEventtot_norm=1;
970+ }
971+
972+ //FxFx merging
973+ bool isFxFx=pythia.flag("JetMatching:doFxFx");
974+ if (isFxFx) {
975+ int nJmax=pythia.mode("JetMatching:nJetMax");
976+ double Qcut=pythia.parm("JetMatching:qCut");
977+ double PTcut=pythia.parm("JetMatching:qCutME");
978+ if (Qcut <= PTcut || Qcut <= 0.) {
979+ std::cout << " \n";
980+ std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
981+ << Qcut << " " << PTcut << "\n";
982+ return 0;
983+ }
984+ }
985+
986+ HepMC::IO_BaseClass *_hepevtio;
987+ HepMC::Pythia8ToHepMC ToHepMC;
988+ HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
989+ double nSelected;
990+ double norm;
991+
992+ // Cross section
993+ double sigmaTotal = 0.;
994+
995+ for (int iEvent = 0; ; ++iEvent) {
996+ if (!pythia.next()) {
997+ if (++iAbort < nAbort) continue;
998+ break;
999+ }
1000+ // the number of events read by Pythia so far
1001+ nSelected=double(pythia.info.nSelected());
1002+ // normalisation factor for the default analyses defined in pyanal_
1003+ norm=iEventtot_norm*iEvent/nSelected;
1004+
1005+ if (nSelected >= iEventshower) break;
1006+ if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
1007+ pythia.LHAeventList();
1008+ pythia.info.list();
1009+ pythia.process.list();
1010+ pythia.event.list();
1011+ ++iPrintLHA;
1012+ }
1013+
1014+ double evtweight = pythia.info.weight();
1015+ double normhepmc;
1016+ // Add the weight of the current event to the cross section.
1017+ normhepmc = 1. / double(iEventshower);
1018+ if (evt_norm == "average") {
1019+ sigmaTotal += evtweight*normhepmc;
1020+ } else {
1021+ sigmaTotal += evtweight*normhepmc*iEventtot;
1022+ }
1023+
1024+ HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
1025+ ToHepMC.fill_next_event( pythia, hepmcevt );
1026+
1027+ //define the IO_HEPEVT
1028+ _hepevtio = new HepMC::IO_HEPEVT;
1029+ _hepevtio->write_event(hepmcevt);
1030+
1031+ //event weight
1032+ cevwgt.EVWGT=hepmcevt->weights()[0];
1033+
1034+ //call the FORTRAN analysis for this event
1035+ read.lhef_read_wgts_(cwgt_ww);
1036+ pyanal_(cwgtinfo_nn,cwgt_ww);
1037+
1038+ if (iEvent % nstep == 0 && iEvent >= 100){
1039+ pyaend_(norm);
1040+ }
1041+ delete hepmcevt;
1042+ }
1043+ pyaend_(norm);
1044+
1045+ pythia.stat();
1046+ if (isFxFx){
1047+ std::cout << " \n";
1048+ std::cout << "*********************************************************************** \n";
1049+ std::cout << "*********************************************************************** \n";
1050+ std::cout << "Cross section, including FxFx merging is: "
1051+ << sigmaTotal << "\n";
1052+ std::cout << "*********************************************************************** \n";
1053+ std::cout << "*********************************************************************** \n";
1054+ }
1055+ delete matching;
1056+
1057+ return 0;
1058+}
1059
1060=== added file 'Template/NLO/MCatNLO/srcPythia8/Pythia82_hep.cc'
1061--- Template/NLO/MCatNLO/srcPythia8/Pythia82_hep.cc 1970-01-01 00:00:00 +0000
1062+++ Template/NLO/MCatNLO/srcPythia8/Pythia82_hep.cc 2014-11-06 06:25:51 +0000
1063@@ -0,0 +1,112 @@
1064+// Driver for Pythia 8. Reads an input file dynamically created on
1065+// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
1066+#include "Pythia8/Pythia.h"
1067+#include "Pythia8Plugins/HepMC2.h"
1068+#include "Pythia8Plugins/aMCatNLOHooks.h"
1069+#include "Pythia8Plugins/CombineMatchingInput.h"
1070+#include "HepMC/GenEvent.h"
1071+#include "HepMC/IO_GenEvent.h"
1072+
1073+using namespace Pythia8;
1074+
1075+int main() {
1076+ Pythia pythia;
1077+
1078+ string inputname="Pythia8.cmd",outputname="Pythia8.hep";
1079+
1080+ pythia.readFile(inputname.c_str());
1081+
1082+ //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
1083+ CombineMatchingInput combined;
1084+ UserHooks* matching = combined.getHook(pythia);
1085+ if (!matching) return 1;
1086+ pythia.setUserHooksPtr(matching);
1087+
1088+ pythia.init();
1089+
1090+ int nAbort=10;
1091+ int nPrintLHA=1;
1092+ int iAbort=0;
1093+ int iPrintLHA=0;
1094+ int iEventtot=pythia.mode("Main:numberOfEvents");
1095+ int iEventshower=pythia.mode("Main:spareMode1");
1096+ string evt_norm=pythia.word("Main:spareWord1");
1097+
1098+ //FxFx merging
1099+ bool isFxFx=pythia.flag("JetMatching:doFxFx");
1100+ if (isFxFx) {
1101+ int nJmax=pythia.mode("JetMatching:nJetMax");
1102+ double Qcut=pythia.parm("JetMatching:qCut");
1103+ double PTcut=pythia.parm("JetMatching:qCutME");
1104+ if (Qcut <= PTcut || Qcut <= 0.) {
1105+ std::cout << " \n";
1106+ std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
1107+ << Qcut << " " << PTcut << "\n";
1108+ return 0;
1109+ }
1110+ }
1111+
1112+ HepMC::Pythia8ToHepMC ToHepMC;
1113+ HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
1114+ // Do not store cross section information, as this will be done manually.
1115+ ToHepMC.set_store_pdf(false);
1116+ ToHepMC.set_store_proc(false);
1117+ ToHepMC.set_store_xsec(false);
1118+
1119+ // Cross section an error.
1120+ double sigmaTotal = 0.;
1121+ double errorTotal = 0.;
1122+
1123+ for (int iEvent = 0; ; ++iEvent) {
1124+ if (!pythia.next()) {
1125+ if (++iAbort < nAbort) continue;
1126+ break;
1127+ }
1128+ // the number of events read by Pythia so far
1129+ int nSelected=pythia.info.nSelected();
1130+
1131+ if (nSelected >= iEventshower) break;
1132+ if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
1133+ pythia.LHAeventList();
1134+ pythia.info.list();
1135+ pythia.process.list();
1136+ pythia.event.list();
1137+ ++iPrintLHA;
1138+ }
1139+
1140+ HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
1141+ double evtweight = pythia.info.weight();
1142+ double normhepmc;
1143+ // ALWAYS NORMALISE HEPMC WEIGHTS TO SUM TO THE CROSS SECTION
1144+ if (evt_norm == "average") {
1145+ normhepmc = 1. / double(iEventshower);
1146+ } else {
1147+ normhepmc = double(iEventtot) / double(iEventshower);
1148+ }
1149+ hepmcevt->weights().push_back(evtweight*normhepmc);
1150+ ToHepMC.fill_next_event( pythia, hepmcevt );
1151+ // Add the weight of the current event to the cross section.
1152+ // Report cross section to hepmc
1153+ HepMC::GenCrossSection xsec;
1154+ xsec.set_cross_section( sigmaTotal, pythia.info.sigmaErr() );
1155+ hepmcevt->set_cross_section( xsec );
1156+ // Write the HepMC event to file. Done with it.
1157+ ascii_io << hepmcevt;
1158+ delete hepmcevt;
1159+ }
1160+
1161+ pythia.stat();
1162+ if (isFxFx){
1163+ std::cout << " \n";
1164+ std::cout << "*********************************************************************** \n";
1165+ std::cout << "*********************************************************************** \n";
1166+ std::cout << "Cross section, including FxFx merging is: "
1167+ << sigmaTotal << "\n";
1168+ std::cout << "*********************************************************************** \n";
1169+ std::cout << "*********************************************************************** \n";
1170+ }
1171+
1172+ delete matching;
1173+
1174+ return 0;
1175+}
1176
1177=== added file 'Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc'
1178--- Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc 1970-01-01 00:00:00 +0000
1179+++ Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc 2014-11-06 06:25:51 +0000
1180@@ -0,0 +1,111 @@
1181+// Driver for Pythia 8. Reads an input file dynamically created on
1182+// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
1183+#include "Pythia8/Pythia.h"
1184+#include "Pythia8/Pythia8ToHepMC.h"
1185+#include "HepMC/GenEvent.h"
1186+#include "HepMC/IO_GenEvent.h"
1187+#include "../examples/CombineMatchingInput.h"
1188+
1189+using namespace Pythia8;
1190+
1191+int main() {
1192+ Pythia pythia;
1193+
1194+ string inputname="Pythia8.cmd",outputname="Pythia8.hep";
1195+
1196+ pythia.readFile(inputname.c_str());
1197+
1198+ //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
1199+ CombineMatchingInput combined;
1200+ UserHooks* matching = combined.getHook(pythia);
1201+ if (!matching) return 1;
1202+ pythia.setUserHooksPtr(matching);
1203+
1204+ pythia.init();
1205+
1206+ int nAbort=10;
1207+ int nPrintLHA=1;
1208+ int iAbort=0;
1209+ int iPrintLHA=0;
1210+ int iEventtot=pythia.mode("Main:numberOfEvents");
1211+ int iEventshower=pythia.mode("Main:spareMode1");
1212+ string evt_norm=pythia.word("Main:spareWord1");
1213+
1214+ //FxFx merging
1215+ bool isFxFx=pythia.flag("JetMatching:doFxFx");
1216+ if (isFxFx) {
1217+ int nJmax=pythia.mode("JetMatching:nJetMax");
1218+ double Qcut=pythia.parm("JetMatching:qCut");
1219+ double PTcut=pythia.parm("JetMatching:qCutME");
1220+ if (Qcut <= PTcut || Qcut <= 0.) {
1221+ std::cout << " \n";
1222+ std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
1223+ << Qcut << " " << PTcut << "\n";
1224+ return 0;
1225+ }
1226+ }
1227+
1228+ HepMC::Pythia8ToHepMC ToHepMC;
1229+ HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
1230+ // Do not store cross section information, as this will be done manually.
1231+ ToHepMC.set_store_pdf(false);
1232+ ToHepMC.set_store_proc(false);
1233+ ToHepMC.set_store_xsec(false);
1234+
1235+ // Cross section an error.
1236+ double sigmaTotal = 0.;
1237+ double errorTotal = 0.;
1238+
1239+ for (int iEvent = 0; ; ++iEvent) {
1240+ if (!pythia.next()) {
1241+ if (++iAbort < nAbort) continue;
1242+ break;
1243+ }
1244+ // the number of events read by Pythia so far
1245+ int nSelected=pythia.info.nSelected();
1246+
1247+ if (nSelected >= iEventshower) break;
1248+ if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
1249+ pythia.LHAeventList();
1250+ pythia.info.list();
1251+ pythia.process.list();
1252+ pythia.event.list();
1253+ ++iPrintLHA;
1254+ }
1255+
1256+ HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
1257+ double evtweight = pythia.info.weight();
1258+ double normhepmc;
1259+ // ALWAYS NORMALISE HEPMC WEIGHTS TO SUM TO THE CROSS SECTION
1260+ if (evt_norm == "average") {
1261+ normhepmc = 1. / double(iEventshower);
1262+ } else {
1263+ normhepmc = double(iEventtot) / double(iEventshower);
1264+ }
1265+ hepmcevt->weights().push_back(evtweight*normhepmc);
1266+ ToHepMC.fill_next_event( pythia, hepmcevt );
1267+ // Add the weight of the current event to the cross section.
1268+ // Report cross section to hepmc
1269+ HepMC::GenCrossSection xsec;
1270+ xsec.set_cross_section( sigmaTotal, pythia.info.sigmaErr() );
1271+ hepmcevt->set_cross_section( xsec );
1272+ // Write the HepMC event to file. Done with it.
1273+ ascii_io << hepmcevt;
1274+ delete hepmcevt;
1275+ }
1276+
1277+ pythia.stat();
1278+ if (isFxFx){
1279+ std::cout << " \n";
1280+ std::cout << "*********************************************************************** \n";
1281+ std::cout << "*********************************************************************** \n";
1282+ std::cout << "Cross section, including FxFx merging is: "
1283+ << sigmaTotal << "\n";
1284+ std::cout << "*********************************************************************** \n";
1285+ std::cout << "*********************************************************************** \n";
1286+ }
1287+
1288+ delete matching;
1289+
1290+ return 0;
1291+}
1292
1293=== removed file 'Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc'
1294--- Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc 2014-05-20 11:47:02 +0000
1295+++ Template/NLO/MCatNLO/srcPythia8/Pythia8_hep.cc 1970-01-01 00:00:00 +0000
1296@@ -1,111 +0,0 @@
1297-// Driver for Pythia 8. Reads an input file dynamically created on
1298-// the basis of the inputs specified in MCatNLO_MadFKS_PY8.Script
1299-#include "Pythia8/Pythia.h"
1300-#include "Pythia8/Pythia8ToHepMC.h"
1301-#include "HepMC/GenEvent.h"
1302-#include "HepMC/IO_GenEvent.h"
1303-#include "../examples/CombineMatchingInput.h"
1304-
1305-using namespace Pythia8;
1306-
1307-int main() {
1308- Pythia pythia;
1309-
1310- string inputname="Pythia8.cmd",outputname="Pythia8.hep";
1311-
1312- pythia.readFile(inputname.c_str());
1313-
1314- //Create UserHooks pointer for the FxFX matching. Stop if it failed. Pass pointer to Pythia.
1315- CombineMatchingInput combined;
1316- UserHooks* matching = combined.getHook(pythia);
1317- if (!matching) return 1;
1318- pythia.setUserHooksPtr(matching);
1319-
1320- pythia.init();
1321-
1322- int nAbort=10;
1323- int nPrintLHA=1;
1324- int iAbort=0;
1325- int iPrintLHA=0;
1326- int iEventtot=pythia.mode("Main:numberOfEvents");
1327- int iEventshower=pythia.mode("Main:spareMode1");
1328- string evt_norm=pythia.word("Main:spareWord1");
1329-
1330- //FxFx merging
1331- bool isFxFx=pythia.flag("JetMatching:doFxFx");
1332- if (isFxFx) {
1333- int nJmax=pythia.mode("JetMatching:nJetMax");
1334- double Qcut=pythia.parm("JetMatching:qCut");
1335- double PTcut=pythia.parm("JetMatching:qCutME");
1336- if (Qcut <= PTcut || Qcut <= 0.) {
1337- std::cout << " \n";
1338- std::cout << "Merging scale (shower_card.dat) smaller than pTcut (run_card.dat)"
1339- << Qcut << " " << PTcut << "\n";
1340- return 0;
1341- }
1342- }
1343-
1344- HepMC::Pythia8ToHepMC ToHepMC;
1345- HepMC::IO_GenEvent ascii_io(outputname.c_str(), std::ios::out);
1346- // Do not store cross section information, as this will be done manually.
1347- ToHepMC.set_store_pdf(false);
1348- ToHepMC.set_store_proc(false);
1349- ToHepMC.set_store_xsec(false);
1350-
1351- // Cross section an error.
1352- double sigmaTotal = 0.;
1353- double errorTotal = 0.;
1354-
1355- for (int iEvent = 0; ; ++iEvent) {
1356- if (!pythia.next()) {
1357- if (++iAbort < nAbort) continue;
1358- break;
1359- }
1360- // the number of events read by Pythia so far
1361- int nSelected=pythia.info.nSelected();
1362-
1363- if (nSelected >= iEventshower) break;
1364- if (pythia.info.isLHA() && iPrintLHA < nPrintLHA) {
1365- pythia.LHAeventList();
1366- pythia.info.list();
1367- pythia.process.list();
1368- pythia.event.list();
1369- ++iPrintLHA;
1370- }
1371-
1372- HepMC::GenEvent* hepmcevt = new HepMC::GenEvent();
1373- double evtweight = pythia.info.weight();
1374- double normhepmc;
1375- // ALWAYS NORMALISE HEPMC WEIGHTS TO SUM TO THE CROSS SECTION
1376- if (evt_norm == "average") {
1377- normhepmc = 1. / double(iEventshower);
1378- } else {
1379- normhepmc = double(iEventtot) / double(iEventshower);
1380- }
1381- hepmcevt->weights().push_back(evtweight*normhepmc);
1382- ToHepMC.fill_next_event( pythia, hepmcevt );
1383- // Add the weight of the current event to the cross section.
1384- // Report cross section to hepmc
1385- HepMC::GenCrossSection xsec;
1386- xsec.set_cross_section( sigmaTotal, pythia.info.sigmaErr() );
1387- hepmcevt->set_cross_section( xsec );
1388- // Write the HepMC event to file. Done with it.
1389- ascii_io << hepmcevt;
1390- delete hepmcevt;
1391- }
1392-
1393- pythia.stat();
1394- if (isFxFx){
1395- std::cout << " \n";
1396- std::cout << "*********************************************************************** \n";
1397- std::cout << "*********************************************************************** \n";
1398- std::cout << "Cross section, including FxFx merging is: "
1399- << sigmaTotal << "\n";
1400- std::cout << "*********************************************************************** \n";
1401- std::cout << "*********************************************************************** \n";
1402- }
1403-
1404- delete matching;
1405-
1406- return 0;
1407-}
1408
1409=== modified file 'Template/NLO/Source/PDF/pdf.f'
1410--- Template/NLO/Source/PDF/pdf.f 2014-05-16 08:09:51 +0000
1411+++ Template/NLO/Source/PDF/pdf.f 2014-11-06 06:25:51 +0000
1412@@ -45,6 +45,7 @@
1413 do i=-5,5
1414 fx(i)=nnfx(i)/x
1415 enddo
1416+ fx(7)=nnfx(7)/x
1417 elseif ((pdlabel(1:3) .eq. 'mrs')
1418 . .or. (pdlabel(2:4) .eq. 'mrs')) then
1419
1420
1421=== modified file 'Template/NLO/Source/banner_header.txt'
1422--- Template/NLO/Source/banner_header.txt 2013-11-30 09:22:32 +0000
1423+++ Template/NLO/Source/banner_header.txt 2014-11-06 06:25:51 +0000
1424@@ -1,4 +1,4 @@
1425-<LesHouchesEvents version="1.0">
1426+<LesHouchesEvents version="3.0">
1427 <header>
1428 <!--
1429 #*********************************************************************
1430
1431=== modified file 'Template/NLO/Source/make_opts.inc'
1432--- Template/NLO/Source/make_opts.inc 2014-09-02 12:20:56 +0000
1433+++ Template/NLO/Source/make_opts.inc 2014-11-06 06:25:51 +0000
1434@@ -16,8 +16,7 @@
1435 CFLAGS = -O
1436 endif
1437
1438-
1439-
1440+# Increase the number of allowed charcters in a Fortran line
1441 FFLAGS+= -ffixed-line-length-132
1442
1443 # Set FC unless it's defined by an environment variable
1444
1445=== modified file 'Template/NLO/Source/setrun.f'
1446--- Template/NLO/Source/setrun.f 2014-09-11 05:33:30 +0000
1447+++ Template/NLO/Source/setrun.f 2014-11-06 06:25:51 +0000
1448@@ -56,7 +56,7 @@
1449 & xmaxup(maxpup),lprup(maxpup)
1450 c
1451 include 'nexternal.inc'
1452- include 'leshouche_info.inc'
1453+ include 'leshouche_decl.inc'
1454 logical gridrun,gridpack
1455 integer iseed
1456 common /to_seed/ iseed
1457@@ -73,7 +73,8 @@
1458
1459 c MZ add the possibility to have shower_MC input lowercase
1460 call to_upper(shower_MC)
1461-
1462+C
1463+ call read_leshouche_info(idup_d,mothup_d,icolup_d)
1464
1465 c merging cuts
1466 xqcut=0d0
1467
1468=== modified file 'Template/NLO/SubProcesses/FKSParamReader.f'
1469--- Template/NLO/SubProcesses/FKSParamReader.f 2013-11-27 09:02:57 +0000
1470+++ Template/NLO/SubProcesses/FKSParamReader.f 2014-11-06 06:25:51 +0000
1471@@ -6,7 +6,8 @@
1472 data HasReadOnce/.FALSE./
1473
1474
1475- CHARACTER*64 fileName, buff, buff2, mode
1476+ character(*) filename
1477+ CHARACTER*64 buff, buff2, mode
1478 include "FKSParams.inc"
1479
1480 logical printParam, couldRead, paramPrinted
1481@@ -18,36 +19,36 @@
1482 goto 901
1483 endif
1484
1485- open(666, file=fileName, err=676, action='READ')
1486+ open(68, file=fileName, err=676, action='READ')
1487 do
1488- read(666,*,end=999) buff
1489+ read(68,*,end=999) buff
1490 if(index(buff,'#').eq.1) then
1491
1492 if (buff .eq. '#IRPoleCheckThreshold') then
1493- read(666,*,end=999) IRPoleCheckThreshold
1494+ read(68,*,end=999) IRPoleCheckThreshold
1495 if (IRPoleCheckThreshold .lt. -1.01d0 ) then
1496 stop 'IRPoleCheckThreshold must be >= -1.0d0.'
1497 endif
1498
1499 elseif (buff .eq. '#PrecisionVirtualAtRunTime') then
1500- read(666,*,end=999) PrecisionVirtualAtRunTime
1501+ read(68,*,end=999) PrecisionVirtualAtRunTime
1502 if (IRPoleCheckThreshold .lt. -1.01d0 ) then
1503 stop 'PrecisionVirtualAtRunTime must be >= -1.0d0.'
1504 endif
1505
1506 else if (buff .eq. '#NHelForMCoverHels') then
1507- read(666,*,end=999) NHelForMCoverHels
1508+ read(68,*,end=999) NHelForMCoverHels
1509 if (NHelForMCoverHels .lt. -1) then
1510 stop 'NHelForMCoverHels must be >= -1.'
1511 endif
1512 else if (buff .eq. '#VirtualFraction') then
1513- read(666,*,end=999) Virt_fraction
1514+ read(68,*,end=999) Virt_fraction
1515 if (Virt_fraction .lt. 0 .or. virt_fraction .gt.1) then
1516 stop 'VirtualFraction should be a fraction'/
1517 $ /' between 0 and 1'
1518 endif
1519 else if (buff .eq. '#MinVirtualFraction') then
1520- read(666,*,end=999) Min_Virt_fraction
1521+ read(68,*,end=999) Min_Virt_fraction
1522 if (min_virt_fraction .lt. 0 .or. min_virt_fraction .gt.1)
1523 $ then
1524 stop 'VirtualFraction should be a fraction'/
1525@@ -100,7 +101,7 @@
1526 paramPrinted=.TRUE.
1527 endif
1528
1529- close(666)
1530+ close(68)
1531 HasReadOnce=.TRUE.
1532 901 continue
1533 end
1534
1535=== modified file 'Template/NLO/SubProcesses/add_write_info.f'
1536--- Template/NLO/SubProcesses/add_write_info.f 2014-08-05 13:04:11 +0000
1537+++ Template/NLO/SubProcesses/add_write_info.f 2014-11-06 06:25:51 +0000
1538@@ -9,7 +9,7 @@
1539 include "coloramps.inc"
1540 include "reweight0.inc"
1541 include "nFKSconfigs.inc"
1542- include "leshouche_info.inc"
1543+ include "leshouche_decl.inc"
1544 include "run.inc"
1545
1546 c Arguments
1547
1548=== modified file 'Template/NLO/SubProcesses/ajob_template'
1549--- Template/NLO/SubProcesses/ajob_template 2014-09-12 10:53:25 +0000
1550+++ Template/NLO/SubProcesses/ajob_template 2014-11-06 06:25:51 +0000
1551@@ -8,7 +8,7 @@
1552 }
1553
1554 tarCounter=0
1555-while [[ (-e MadLoop5_resources.tar.gz) && (! -e MadLoop5_resources/HelConfigs.dat) && ($tarCounter < 10) ]]; do
1556+while [[ (-f MadLoop5_resources.tar.gz) && (! -f MadLoop5_resources/HelConfigs.dat) && ($tarCounter < 10) ]]; do
1557 if [[ $tarCounter > 0 ]]; then
1558 sleep 2s
1559 fi
1560@@ -90,6 +90,8 @@
1561 fi
1562
1563 link1up FKS_params.dat
1564+ link1up configs_and_props_info.dat
1565+ link1up leshouche_info.dat
1566 # Not necessary anymore
1567 # link1up MadLoop5_resources
1568 link1up OLE_order.olc
1569
1570=== modified file 'Template/NLO/SubProcesses/check_poles.f'
1571--- Template/NLO/SubProcesses/check_poles.f 2014-09-24 01:01:34 +0000
1572+++ Template/NLO/SubProcesses/check_poles.f 2014-11-06 06:25:51 +0000
1573@@ -15,7 +15,6 @@
1574 double precision tolerance, tolerance_default
1575 double precision, allocatable :: accuracies(:)
1576 double precision accuracy
1577- parameter (tolerance_default = 1d-5)
1578 double precision ren_scale, energy
1579 include 'genps.inc'
1580 include 'nexternal.inc'
1581@@ -54,6 +53,7 @@
1582 integer nfail
1583 logical first_time
1584 data first_time/.TRUE./
1585+ include 'FKSParams.inc'
1586
1587 C-----
1588 C BEGIN CODE
1589@@ -72,13 +72,15 @@
1590 call run_printout !Prints out a summary of the run settings
1591 include 'pmass.inc'
1592
1593+ call FKSParamReader('FKS_params.dat',.TRUE.,.FALSE.)
1594+ tolerance_default = IRPoleCheckThreshold
1595
1596 c Set the energy to be characteristic of the run
1597 totmass = 0.0d0
1598 do i=1,nexternal
1599 totmass = totmass + pmass(i)
1600 enddo
1601- energy = max((ebeam(1)+ebeam(2))/2.0d0,2.0d0*totmass)
1602+ energy = max((ebeam(1)+ebeam(2))/20.0d0,2.0d0*totmass)
1603 c Set the renormalization scale to be of the order of sqrt(s) but
1604 c not equal to it so as to be sensitive to all logs in the check.
1605 ren_scale = energy/2.0d0
1606
1607=== modified file 'Template/NLO/SubProcesses/configs_and_props_inc_chooser.f'
1608--- Template/NLO/SubProcesses/configs_and_props_inc_chooser.f 2013-01-11 08:13:45 +0000
1609+++ Template/NLO/SubProcesses/configs_and_props_inc_chooser.f 2014-11-06 06:25:51 +0000
1610@@ -22,7 +22,11 @@
1611 integer prow(-max_branch:-1,n_max_cg)
1612 common/c_props_inc/prmass,prwidth,prow
1613 double precision pmass(nexternal)
1614- include 'configs_and_props_info.inc'
1615+ logical firsttime
1616+ data firsttime /.true./
1617+ include 'configs_and_props_decl.inc'
1618+ save mapconfig_d, iforest_d, sprop_d, tprid_d, pmass_d, pwidth_d
1619+ $ , pow_d
1620 include "pmass.inc"
1621 c
1622 if (max_branch_used.gt.max_branch) then
1623@@ -35,6 +39,15 @@
1624 $ /' increase n_max_cg' ,n_max_cg,lmaxconfigs_used
1625 stop
1626 endif
1627+
1628+C the configurations and propagators infos are read at the first
1629+C evaluation
1630+ if (firsttime) then
1631+ call read_configs_and_props_info(mapconfig_d,iforest_d,sprop_d,
1632+ 1 tprid_d,pmass_d,pwidth_d,pow_d)
1633+ firsttime = .false.
1634+ endif
1635+
1636 c
1637 c Fill the arrays of the c_configs_inc and c_props_inc common
1638 c blocks. Some of the information might not be available in the
1639@@ -65,3 +78,73 @@
1640 return
1641 end
1642
1643+
1644+ subroutine read_configs_and_props_info(mapconfig_d,iforest_d,sprop_d,
1645+ 1 tprid_d,pmass_d,pwidth_d,pow_d)
1646+C read the various information from the configs_and_props_info.dat file
1647+ implicit none
1648+ integer i,j,k
1649+ integer ndau, idau, dau, id
1650+ character *200 buff
1651+ double precision get_mass_from_id, get_width_from_id
1652+ include 'configs_and_props_decl.inc'
1653+
1654+ open(unit=78, file='configs_and_props_info.dat', status='old')
1655+ do while (.true.)
1656+ read(78,'(a)',end=999) buff
1657+ if (buff(:1).eq.'#') cycle
1658+ if (buff(:1).eq.'C') then
1659+ ! mapconfig
1660+ ! C i j k -> MAPCONFIG_D(i,j)=k
1661+ read(buff(2:),*) i,j,k
1662+ mapconfig_d(i,j) = k
1663+ else if (buff(:1).eq.'F') then
1664+ ! iforest
1665+ ! after the first line there are as many lines
1666+ ! as the daughters
1667+ ! F i j k ndau
1668+ ! D dau_1
1669+ ! D ...
1670+ ! D dau_ndau -> IFORREST_D(i,idau,i,k)=dau_idau
1671+ read(buff(2:),*) i,j,k,ndau
1672+ do idau=1,ndau
1673+ read(78,'(a)') buff
1674+ if (buff(:1).ne.'D') then
1675+ write(*,*) 'ERROR #1 in read_configs_and_props_info',
1676+ 1 i,j,k,ndau,buff
1677+ stop
1678+ endif
1679+ read(buff(2:),*) dau
1680+ iforest_d(i,idau,j,k) = dau
1681+ enddo
1682+ else if (buff(:1).eq.'S') then
1683+ ! sprop
1684+ ! S i j k id -> SPROP_D(i,j,k)=id
1685+ read(buff(2:),*) i,j,k,id
1686+ sprop_d(i,j,k) = id
1687+ else if (buff(:1).eq.'T') then
1688+ ! tprid
1689+ ! T i j k id -> TPRID_D(i,j,k)=id
1690+ read(buff(2:),*) i,j,k,id
1691+ tprid_d(i,j,k) = id
1692+ else if (buff(:1).eq.'M') then
1693+ ! pmass and pwidth
1694+ read(buff(2:),*) i,j,k,id
1695+ ! M i j k id -> gives id of particle of which
1696+ ! the mass/width is stored in PMASS/WIDTH_D(i,j,k)
1697+ pmass_d(i,j,k) = get_mass_from_id(id)
1698+ pwidth_d(i,j,k) = get_width_from_id(id)
1699+ else if (buff(:1).eq.'P') then
1700+ ! pow
1701+ ! P i j k id -> POW_D(i,j,k)=id
1702+ read(buff(2:),*) i,j,k,id
1703+ pow_d(i,j,k) = id
1704+ endif
1705+ enddo
1706+ 999 continue
1707+ close(78)
1708+
1709+ return
1710+ end
1711+
1712+
1713
1714=== modified file 'Template/NLO/SubProcesses/cuts.f'
1715--- Template/NLO/SubProcesses/cuts.f 2014-07-16 16:23:08 +0000
1716+++ Template/NLO/SubProcesses/cuts.f 2014-11-06 06:25:51 +0000
1717@@ -463,29 +463,6 @@
1718 END
1719
1720
1721- subroutine unweight_function(p_born,unwgtfun)
1722-c This is a user-defined function to which to unweight the events
1723-c A non-flat distribution will generate events with a certain
1724-c weight. This is particularly useful to generate more events
1725-c (with smaller weight) in tails of distributions.
1726-c It computes the unwgt factor from the momenta and multiplies
1727-c the weight that goes into MINT (or vegas) with this factor.
1728-c Before writing out the events (or making the plots), this factor
1729-c is again divided out.
1730-c This function should be called with the Born momenta to be sure
1731-c that it stays the same for the events, counter-events, etc.
1732-c A value different from 1 makes that MINT (or vegas) does not list
1733-c the correct cross section.
1734- implicit none
1735- include 'nexternal.inc'
1736- double precision unwgtfun,p_born(0:3,nexternal-1)
1737-
1738- unwgtfun=1d0
1739-
1740- return
1741- end
1742-
1743-
1744 function chi_gamma_iso(dr,R0,xn,epsgamma,pTgamma)
1745 c Eq.(3.4) of Phys.Lett. B429 (1998) 369-374 [hep-ph/9801442]
1746 implicit none
1747@@ -909,3 +886,33 @@
1748 end
1749
1750
1751+ subroutine unweight_function(p_born,unwgtfun)
1752+c This is a user-defined function to which to unweight the events
1753+c A non-flat distribution will generate events with a certain
1754+c weight. This is particularly useful to generate more events
1755+c (with smaller weight) in tails of distributions.
1756+c It computes the unwgt factor from the momenta and multiplies
1757+c the weight that goes into MINT (or vegas) with this factor.
1758+c Before writing out the events (or making the plots), this factor
1759+c is again divided out.
1760+c This function should be called with the Born momenta to be sure
1761+c that it stays the same for the events, counter-events, etc.
1762+c A value different from 1 makes that MINT (or vegas) does not list
1763+c the correct cross section.
1764+ implicit none
1765+ include 'nexternal.inc'
1766+ double precision unwgtfun,p_born(0:3,nexternal-1),shat,sumdot
1767+ external sumdot
1768+
1769+ unwgtfun=1d0
1770+
1771+c How to enhance the tails is very process dependent. But, it is
1772+c probably easiest to enhance the tails using shat, e.g.:
1773+c shat=sumdot(p_born(0,1),p_born(0,2),1d0)
1774+c unwgtfun=max(100d0**2,shat)/100d0**2
1775+c unwgtfun=unwgtfun**2
1776+
1777+ return
1778+ end
1779+
1780+
1781
1782=== modified file 'Template/NLO/SubProcesses/fks_singular.f'
1783--- Template/NLO/SubProcesses/fks_singular.f 2014-09-11 05:33:30 +0000
1784+++ Template/NLO/SubProcesses/fks_singular.f 2014-11-06 06:25:51 +0000
1785@@ -955,7 +955,8 @@
1786 & cnt_swgt*fkssymmetryfactor +
1787 & (bsv_wgt-born_wgt)*fkssymmetryfactorBorn +
1788 & deg_wgt*fkssymmetryfactorDeg +
1789- & deg_swgt*fkssymmetryfactorDeg )*vegaswgt + virt_wgt
1790+ & deg_swgt*fkssymmetryfactorDeg )*vegaswgt +
1791+ & virt_wgt/unwgtfun
1792 if(abs(plot_wgt).gt.1.d-20) then
1793 if(iplot.eq.-3)then
1794 write(*,*)'Error #1 in dsig'
1795
1796=== modified file 'Template/NLO/SubProcesses/handling_lhe_events.f'
1797--- Template/NLO/SubProcesses/handling_lhe_events.f 2014-06-17 08:36:10 +0000
1798+++ Template/NLO/SubProcesses/handling_lhe_events.f 2014-11-06 06:25:51 +0000
1799@@ -32,7 +32,7 @@
1800 # muF2_id_str,QES_id_str
1801 c
1802 write(ifile,'(a)')
1803- # '<LesHouchesEvents version="1.0">'
1804+ # '<LesHouchesEvents version="3.0">'
1805 write(ifile,'(a)')
1806 # ' <!--'
1807 write(ifile,'(a)')' <scalesfunctionalform>'
1808@@ -78,7 +78,7 @@
1809 c statement.
1810 event_id=0
1811 c
1812- write(ifile,'(a)') '<LesHouchesEvents version="1.0">'
1813+ write(ifile,'(a)') '<LesHouchesEvents version="3.0">'
1814 write(ifile,'(a)') ' <header>'
1815 write(ifile,'(a)') ' <MG5ProcCard>'
1816 open (unit=92,file=path(1:index(path," ")-1)//'proc_card_mg5.dat'
1817
1818=== modified file 'Template/NLO/SubProcesses/iproc_map.f'
1819--- Template/NLO/SubProcesses/iproc_map.f 2014-06-26 08:45:41 +0000
1820+++ Template/NLO/SubProcesses/iproc_map.f 2014-11-06 06:25:51 +0000
1821@@ -206,7 +206,7 @@
1822 include 'nFKSconfigs.inc'
1823 include 'nexternal.inc'
1824 include 'genps.inc'
1825- include "leshouche_info.inc"
1826+ include "leshouche_decl.inc"
1827 include "reweight_appl.inc"
1828 include "appl_common.inc"
1829 *
1830
1831=== modified file 'Template/NLO/SubProcesses/leshouche_inc_chooser.f'
1832--- Template/NLO/SubProcesses/leshouche_inc_chooser.f 2012-08-28 21:06:34 +0000
1833+++ Template/NLO/SubProcesses/leshouche_inc_chooser.f 2014-11-06 06:25:51 +0000
1834@@ -4,7 +4,6 @@
1835 implicit none
1836 include 'nexternal.inc'
1837 include 'genps.inc'
1838- include 'leshouche_info.inc'
1839 integer i,j,k
1840 INTEGER NFKSPROCESS
1841 COMMON/C_NFKSPROCESS/NFKSPROCESS
1842@@ -13,6 +12,11 @@
1843 integer idup(nexternal,maxproc),mothup(2,nexternal,maxproc),
1844 & icolup(2,nexternal,maxflow)
1845 common /c_leshouche_inc/idup,mothup,icolup
1846+ logical firsttime
1847+ data firsttime /.true./
1848+ include 'leshouche_decl.inc'
1849+ save idup_d, mothup_d, icolup_d
1850+
1851 c
1852 if (maxproc_used.gt.maxproc) then
1853 write (*,*) 'ERROR in leshouche_inc_chooser: increase maxproc',
1854@@ -24,6 +28,12 @@
1855 & maxflow,maxflow_used
1856 stop
1857 endif
1858+
1859+ if (firsttime) then
1860+ call read_leshouche_info(idup_d,mothup_d,icolup_d)
1861+ firsttime = .false.
1862+ endif
1863+
1864 do j=1,maxproc_used
1865 do i=1,nexternal
1866 IDUP(i,j)=IDUP_D(nFKSprocess,i,j)
1867@@ -42,3 +52,46 @@
1868 return
1869 end
1870
1871+
1872+ subroutine read_leshouche_info(idup_d,mothup_d,icolup_d)
1873+C read the various information from the configs_and_props_info.dat file
1874+ implicit none
1875+ include "nexternal.inc"
1876+ integer itmp_array(nexternal)
1877+ integer i,j,k,l
1878+ character *200 buff
1879+ include 'leshouche_decl.inc'
1880+
1881+ open(unit=78, file='leshouche_info.dat', status='old')
1882+ do while (.true.)
1883+ read(78,'(a)',end=999) buff
1884+ if (buff(:1).eq.'#') cycle
1885+ if (buff(:1).eq.'I') then
1886+ ! idup
1887+ ! I i j id1 ..idn -> IDUP_D(i,k,j)=idk
1888+ read(buff(2:),*) i,j,(itmp_array(k),k=1,nexternal)
1889+ do k=1,nexternal
1890+ idup_d(i,k,j)=itmp_array(k)
1891+ enddo
1892+ else if (buff(:1).eq.'M') then
1893+ ! idup
1894+ ! I i j l id1 ..idn -> MOTHUP_D(i,j,k,l)=idk
1895+ read(buff(2:),*) i,j,l,(itmp_array(k),k=1,nexternal)
1896+ do k=1,nexternal
1897+ mothup_d(i,j,k,l)=itmp_array(k)
1898+ enddo
1899+ else if (buff(:1).eq.'C') then
1900+ ! idup
1901+ ! I i j l id1 ..idn -> ICOLUP_D(i,j,k,l)=idk
1902+ read(buff(2:),*) i,j,l,(itmp_array(k),k=1,nexternal)
1903+ do k=1,nexternal
1904+ icolup_d(i,j,k,l)=itmp_array(k)
1905+ enddo
1906+ endif
1907+ enddo
1908+ 999 continue
1909+ close(78)
1910+
1911+ return
1912+ end
1913+
1914
1915=== modified file 'Template/NLO/SubProcesses/makefile_fks_dir'
1916--- Template/NLO/SubProcesses/makefile_fks_dir 2014-09-11 05:33:30 +0000
1917+++ Template/NLO/SubProcesses/makefile_fks_dir 2014-11-06 06:25:51 +0000
1918@@ -94,35 +94,44 @@
1919 gensym: $(SYM)
1920 $(FC) $(LDFLAGS) -o gensym $(SYM) $(APPLLIBS) $(LINKLIBS) $(FJLIBS)
1921 rm fks_singular.o
1922+ strip gensym
1923
1924 test_Sij: symmetry_fks_test_Sij.o $(TEST)
1925 $(FC) $(LDFLAGS) -o test_Sij symmetry_fks_test_Sij.o $(TEST) $(APPLLIBS) $(LINKLIBS) $(FJLIBS)
1926+ strip test_Sij
1927
1928 test_ME: symmetry_fks_test_ME.o $(TEST)
1929 $(FC) $(LDFLAGS) -o test_ME symmetry_fks_test_ME.o $(TEST) $(APPLLIBS) $(LINKLIBS) $(FJLIBS)
1930 rm symmetry_fks_test_ME.o
1931+ strip test_ME
1932
1933 test_MC: symmetry_fks_test_MC.o $(TEST)
1934 $(FC) $(LDFLAGS) -o test_MC symmetry_fks_test_MC.o $(TEST) $(APPLLIBS) $(LINKLIBS) $(FJLIBS)
1935 rm symmetry_fks_test_MC.o
1936+ strip test_MC
1937
1938 check_poles: $(POLES) $(libmadloop)
1939 $(FC) $(LDFLAGS) -o check_poles $(POLES) $(NLOLIBS) $(APPLLIBS) $(LINKLIBS) $(FJLIBS)
1940+ strip check_poles
1941
1942 madevent_vegas: $(VEGAS) $(libmadloop) makefile $(LIBS)
1943 $(FC) $(LDFLAGS) -o madevent_vegas $(VEGAS) $(NLOLIBS) $(APPLLIBS) $(LINKLIBS) $(FJLIBS) $(FO_EXTRAPATHS) $(FO_EXTRALIBS)
1944+ strip madevent_vegas
1945
1946 madevent_mintMC: $(MINTMC) $(libmadloop) makefile $(LIBS)
1947 $(FC) $(LDFLAGS) -o madevent_mintMC $(MINTMC) $(NLOLIBS) $(APPLLIBS) $(LINKLIBS) $(FJLIBS) $(FO_EXTRAPATHS) $(FO_EXTRALIBS)
1948+ strip madevent_mintMC
1949
1950 madevent_mintFO: $(MINTFO) $(libmadloop) makefile $(LIBS)
1951 $(FC) $(LDFLAGS) -o madevent_mintFO $(MINTFO) $(NLOLIBS) $(APPLLIBS) $(LINKLIBS) $(FJLIBS) $(FO_EXTRAPATHS) $(FO_EXTRALIBS)
1952+ strip madevent_mintFO
1953
1954 madevent_reweight: $(BORN_REWEIGHT) $(libmadloop) makefile $(LIBS)
1955 $(FC) $(LDFLAGS) -o madevent_reweight $(BORN_REWEIGHT) $(APPLLIBS) $(LINKLIBS) $(FJLIBS) $(FO_EXTRAPATHS) $(FO_EXTRALIBS)
1956
1957 reweight_xsec_events: $(RWGFILES) makefile $(LIBS)
1958 $(FC) $(LDFLAGS) -o reweight_xsec_events $(RWGFILES) $(LINKLIBS) $(FJLIBS)
1959+ strip reweight_xsec_events
1960
1961 libMadLoop.a:
1962 for dir in `ls -d V*`; do cd $$dir; make; cd ../; done
1963
1964=== modified file 'Template/NLO/SubProcesses/montecarlocounter.f'
1965--- Template/NLO/SubProcesses/montecarlocounter.f 2014-08-05 13:04:11 +0000
1966+++ Template/NLO/SubProcesses/montecarlocounter.f 2014-11-06 06:25:51 +0000
1967@@ -2517,6 +2517,7 @@
1968 & xm12,dum(1),dum(2),dum(3),dum(4),dum(5),qMC,.true.)
1969
1970 emsca=2d0*sqrt(ebeam(1)*ebeam(2))
1971+ scalemax=sqrt((1-xi_i_fks)*shat)
1972 if(dampMCsubt)then
1973 call assign_scaleminmax(shat,xi_i_fks,scalemin,scalemax,ileg,xm12)
1974 emscasharp=(scalemax-scalemin).lt.(1d-3*scalemax)
1975
1976=== modified file 'Template/NLO/SubProcesses/symmetry_fks_test_MC.f'
1977--- Template/NLO/SubProcesses/symmetry_fks_test_MC.f 2014-06-26 08:45:41 +0000
1978+++ Template/NLO/SubProcesses/symmetry_fks_test_MC.f 2014-11-06 06:25:51 +0000
1979@@ -144,6 +144,13 @@
1980
1981 character*10 MonteCarlo
1982 common/cMonteCarloType/MonteCarlo
1983+
1984+ double precision shower_S_scale(fks_configs*2)
1985+ & ,shower_H_scale(fks_configs*2),ref_H_scale(fks_configs*2)
1986+ & ,pt_hardness
1987+ common /cshowerscale2/shower_S_scale,shower_H_scale,ref_H_scale
1988+ & ,pt_hardness
1989+
1990 c integer icomp
1991 c
1992 c DATA
1993@@ -371,6 +378,10 @@
1994
1995 call set_cms_stuff(0)
1996 calculatedBorn=.false.
1997+
1998+c Initialise shower_S_scale to a large value, not to get spurious dead zones
1999+ shower_S_scale=1d20
2000+
2001 if(ilim.eq.0)then
2002 call xmcsubt_wrap(p1_cnt(0,1,0),zero,y_ij_fks_ev,fxl)
2003 else
2004
2005=== modified file 'Template/NLO/SubProcesses/write_event.f'
2006--- Template/NLO/SubProcesses/write_event.f 2014-06-17 08:37:03 +0000
2007+++ Template/NLO/SubProcesses/write_event.f 2014-11-06 06:25:51 +0000
2008@@ -176,7 +176,7 @@
2009 endif
2010 NPRUP=1
2011
2012- write(lunlhe,'(a)')'<LesHouchesEvents version="1.0">'
2013+ write(lunlhe,'(a)')'<LesHouchesEvents version="3.0">'
2014 write(lunlhe,'(a)')' <!--'
2015 write(lunlhe,'(a)')' <scalesfunctionalform>'
2016 write(lunlhe,'(2a)')' muR ',muR_id_str(1:len_trim(muR_id_str))
2017
2018=== added symlink 'Template/NLO/Utilities/appl_interface_dummy.f'
2019=== target is u'../SubProcesses/appl_interface_dummy.f'
2020=== modified file 'Template/NLO/Utilities/makefile'
2021--- Template/NLO/Utilities/makefile 2014-03-07 11:01:10 +0000
2022+++ Template/NLO/Utilities/makefile 2014-11-06 06:25:51 +0000
2023@@ -5,7 +5,7 @@
2024 FF=gfortran -g -fno-automatic -ffixed-line-length-132 $(INCLUDE)
2025 FILES=handling_lhe_events.o fill_MC_mshell.o
2026 FILES2=madfks_plot.o dbook.o setcuts.o analysis_td_template.o \
2027- open_output_files.o open_output_files_dummy.o
2028+ open_output_files.o open_output_files_dummy.o appl_interface_dummy.o
2029
2030 %.o : %.f
2031 $(FF) -c $<
2032@@ -13,7 +13,7 @@
2033 all: check_events combine_plots compare_events merge_events plot_events \
2034 plot_events_lhef select_events split_events sum_plots uncertainties
2035
2036-check_events : $(FILES) check_events.o dbook.o
2037+check_events : $(FILES) check_events.o dbook.o appl_interface_dummy.o
2038 $(FF) $^ -o $@
2039
2040 combine_plots : combine_plots.o
2041
2042=== modified file 'Template/loop_material/StandAlone/SubProcesses/makefile.inc'
2043--- Template/loop_material/StandAlone/SubProcesses/makefile.inc 2014-07-24 07:10:22 +0000
2044+++ Template/loop_material/StandAlone/SubProcesses/makefile.inc 2014-11-06 06:25:51 +0000
2045@@ -4,11 +4,6 @@
2046 ROOT = ../..
2047 endif
2048
2049-
2050-if [ -a ../../Source/make_opts]; then ROOT = ../..; fi;
2051-
2052-if [ -a ../Source/make_opts]; then ROOT = ../; fi;
2053-
2054 include $(ROOT)/Source/make_opts
2055 LIBDIR = $(ROOT)/lib/
2056
2057
2058=== modified file 'UpdateNotes.txt'
2059--- UpdateNotes.txt 2014-09-25 14:55:20 +0000
2060+++ UpdateNotes.txt 2014-11-06 06:25:51 +0000
2061@@ -1,5 +1,24 @@
2062 Update notes for MadGraph5_aMC@NLO (in reverse time order)
2063
2064+2.2.2(XX/XX/XX) OM: Correct a bug in the integration grid (introduces in 2.1.2). This was biasing the cross-section of
2065+ processes like a a > mu+ mu- in the Effective Photon Approximation by three order of magnitude.
2066+ For LHC processes no sizeable effect have been observe so far.
2067+ MZ: some informations for aMC@NLO runs which were before passed via include files are
2068+ now read at runtime. The size of executables as well as compilation time / memory usage
2069+ is reduced for complicated processes
2070+ RF: Fix crash #1377187 (check that cuts were consistent with the grouping was too restrictive)
2071+ RF: For NLO running: added 'strip' to the makefiles to reduce executable sizes (removes symbol info)
2072+ Stefano Carrazza (by RF): fix for the photon PDF for the internal NNPDF sets
2073+ RF: Improved the check on the consistency of the cuts and the grouping of subprocesse (LO running)
2074+ PT: enabled PYTHIA8.2
2075+ OM: restore the usage of external gzip library for file larger than 4Gb which were crashing with
2076+ the python gzip library
2077+ OM: Fixing the default card for Delphes
2078+ OM: Improve support of lsf cluster (thanks Josh)
2079+ OM: Adding support for the UFO file functions.py (which was ignored before)
2080+ OM: Reduce the amount of RAM used by MadSpin in gridpack mode.
2081+ OM: discard in MadWidth partial width lower than \Lambda_QCD for colored particle.
2082+
2083 2.2.1(25/09/14) OM: Fix a bug preventing the generation of events at LO due to a wrong treatment of
2084 the color-flow.
2085
2086
2087=== modified file 'aloha/aloha_lib.py'
2088--- aloha/aloha_lib.py 2014-03-01 05:04:13 +0000
2089+++ aloha/aloha_lib.py 2014-11-06 06:25:51 +0000
2090@@ -209,7 +209,11 @@
2091 continue
2092 tag = tuple(term.sort())
2093 if tag in items:
2094+ orig_prefac = items[tag].prefactor # to assume to zero 0.33333 -0.3333
2095 items[tag].prefactor += term.prefactor
2096+ if items[tag].prefactor and \
2097+ abs(items[tag].prefactor) / (abs(orig_prefac)+abs(term.prefactor)) < 1e-8:
2098+ items[tag].prefactor = 0
2099 del self[pos]
2100 pos -=1
2101 else:
2102
2103=== modified file 'input/.mg5_configuration_default.txt'
2104--- input/.mg5_configuration_default.txt 2014-09-10 11:15:57 +0000
2105+++ input/.mg5_configuration_default.txt 2014-11-06 06:25:51 +0000
2106@@ -54,12 +54,10 @@
2107 # timeout = 60
2108
2109 #! Pythia8 path.
2110-#! Defines the path to the pythia8 directory.
2111-#! This is the directory that contains the subdirectory examples;
2112-#! in particular, it is crucial that the file
2113-# pythia8_path/examples/config.sh be present.
2114+#! Defines the path to the main pythia8 directory (i.e. that containing
2115+#! the pythia8 configure script) .
2116 #! If using a relative path, that starts from the mg5 directory
2117-# pythia8_path = ./pythia8
2118+# pythia8_path =
2119
2120 #! Herwig++ paths
2121 #! specify here the paths also to HepMC ant ThePEG
2122
2123=== modified file 'madgraph/__init__.py'
2124--- madgraph/__init__.py 2013-11-29 07:28:53 +0000
2125+++ madgraph/__init__.py 2014-11-06 06:25:51 +0000
2126@@ -35,10 +35,5 @@
2127 Please consider changing the path location of the code\033[0m''' % MG5DIR)
2128 time.sleep(1)
2129 MG4DIR = MG5DIR
2130-ReadWrite = True
2131+ReadWrite = os.access(MG5DIR, os.W_OK) # W_OK is for writing
2132
2133-try:
2134- open(os.path.join(MG5DIR,'.test'),'w').write('test')
2135- os.remove(os.path.join(MG5DIR,'.test'))
2136-except IOError:
2137- ReadWrite = False
2138
2139=== modified file 'madgraph/interface/amcatnlo_run_interface.py'
2140--- madgraph/interface/amcatnlo_run_interface.py 2014-09-24 19:41:18 +0000
2141+++ madgraph/interface/amcatnlo_run_interface.py 2014-11-06 06:25:51 +0000
2142@@ -2322,7 +2322,7 @@
2143 def run_mcatnlo(self, evt_file):
2144 """runs mcatnlo on the generated event file, to produce showered-events
2145 """
2146- logger.info('Prepairing MCatNLO run')
2147+ logger.info('Preparing MCatNLO run')
2148 try:
2149 misc.gunzip(evt_file)
2150 except Exception:
2151@@ -2401,6 +2401,9 @@
2152 if shower == 'HERWIGPP':
2153 extrapaths.append(pjoin(self.options['hepmc_path'], 'lib'))
2154
2155+ if shower == 'PYTHIA8' and not os.path.exists(pjoin(self.options['pythia8_path'], 'xmldoc')):
2156+ extrapaths.append(pjoin(self.options['pythia8_path'], 'lib'))
2157+
2158 if 'LD_LIBRARY_PATH' in os.environ.keys():
2159 ldlibrarypath = os.environ['LD_LIBRARY_PATH']
2160 else:
2161@@ -2464,8 +2467,11 @@
2162 # special treatment for pythia8
2163 files.mv(pjoin(self.me_dir, 'MCatNLO', 'Pythia8.cmd'), rundir)
2164 files.mv(pjoin(self.me_dir, 'MCatNLO', 'Pythia8.exe'), rundir)
2165- files.ln(pjoin(self.options['pythia8_path'], 'examples', 'config.sh'), rundir)
2166- files.ln(pjoin(self.options['pythia8_path'], 'xmldoc'), rundir)
2167+ if os.path.exists(pjoin(self.options['pythia8_path'], 'xmldoc')):
2168+ files.ln(pjoin(self.options['pythia8_path'], 'examples', 'config.sh'), rundir)
2169+ files.ln(pjoin(self.options['pythia8_path'], 'xmldoc'), rundir)
2170+ else:
2171+ files.ln(pjoin(self.options['pythia8_path'], 'share/Pythia8/xmldoc'), rundir)
2172 #link the hwpp exe in the rundir
2173 if shower == 'HERWIGPP':
2174 try:
2175@@ -2550,11 +2556,12 @@
2176 ' More information in %s' % pjoin(os.getcwd(), 'amcatnlo_run.log'))
2177
2178 # run the plot creation in a secure way
2179- try:
2180- self.do_plot('%s -f' % self.run_name)
2181- except Exception, error:
2182- logger.info("Fail to make the plot. Continue...")
2183- pass
2184+ if hep_format == 'StdHEP':
2185+ try:
2186+ self.do_plot('%s -f' % self.run_name)
2187+ except Exception, error:
2188+ logger.info("Fail to make the plot. Continue...")
2189+ pass
2190
2191 elif out_id == 'TOP':
2192 #copy the topdrawer file(s) back in events
2193@@ -3244,26 +3251,30 @@
2194 if os.path.exists(pdfinput):
2195 input_files.append(pdfinput)
2196 input_files.append(pjoin(os.path.dirname(exe), os.path.pardir, 'reweight_xsec_events'))
2197+ input_files.append(pjoin(cwd, os.path.pardir, 'leshouche_info.dat'))
2198 input_files.append(args[0])
2199 output_files.append('%s.rwgt' % os.path.basename(args[0]))
2200 output_files.append('reweight_xsec_events.output')
2201 output_files.append('scale_pdf_dependence.dat')
2202
2203 return self.cluster.submit2(exe, args, cwd=cwd,
2204- input_files=input_files, output_files=output_files)
2205+ input_files=input_files, output_files=output_files,
2206+ required_output=output_files)
2207
2208 elif 'ajob' in exe:
2209 # the 'standard' amcatnlo job
2210 # check if args is a list of string
2211 if type(args[0]) == str:
2212- input_files, output_files, args = self.getIO_ajob(exe,cwd, args)
2213+ input_files, output_files, required_output, args = self.getIO_ajob(exe,cwd, args)
2214 #submitting
2215 self.cluster.submit2(exe, args, cwd=cwd,
2216- input_files=input_files, output_files=output_files)
2217+ input_files=input_files, output_files=output_files,
2218+ required_output=required_output)
2219
2220 # keep track of folders and arguments for splitted evt gen
2221- if len(args) == 4 and '_' in output_files[-1]:
2222- self.split_folders[pjoin(cwd,output_files[-1])] = [exe] + args
2223+ subfolder=output_files[-1].split('/')[0]
2224+ if len(args) == 4 and '_' in subfolder:
2225+ self.split_folders[pjoin(cwd,subfolder)] = [exe] + args
2226
2227 elif 'shower' in exe:
2228 # a shower job
2229@@ -3276,7 +3287,10 @@
2230 input_files.append(pjoin(cwd, 'Pythia8.exe'))
2231 input_files.append(pjoin(cwd, 'Pythia8.cmd'))
2232 input_files.append(pjoin(cwd, 'config.sh'))
2233- input_files.append(pjoin(self.options['pythia8_path'], 'xmldoc'))
2234+ if os.path.exists(pjoin(self.options['pythia8_path'], 'xmldoc')):
2235+ input_files.append(pjoin(self.options['pythia8_path'], 'xmldoc'))
2236+ else:
2237+ input_files.append(pjoin(self.options['pythia8_path'], 'share/Pythia8/xmldoc'))
2238 else:
2239 input_files.append(pjoin(cwd, 'MCATNLO_%s_EXE' % shower))
2240 input_files.append(pjoin(cwd, 'MCATNLO_%s_input' % shower))
2241@@ -3328,11 +3342,14 @@
2242
2243 keep_fourth_arg = False
2244 output_files = []
2245+ required_output = []
2246 input_files = [pjoin(self.me_dir, 'MGMEVersion.txt'),
2247 pjoin(self.me_dir, 'SubProcesses', 'randinit'),
2248 pjoin(cwd, 'symfact.dat'),
2249 pjoin(cwd, 'iproc.dat'),
2250 pjoin(cwd, 'initial_states_map.dat'),
2251+ pjoin(cwd, 'configs_and_props_info.dat'),
2252+ pjoin(cwd, 'leshouche_info.dat'),
2253 pjoin(cwd, 'param_card.dat'),
2254 pjoin(cwd, 'FKS_params.dat')]
2255
2256@@ -3370,7 +3387,13 @@
2257 if os.path.exists(pjoin(cwd,current)):
2258 input_files.append(pjoin(cwd, current))
2259 output_files.append(current)
2260+
2261+ required_output.append('%s/results.dat' % current)
2262+ required_output.append('%s/log.txt' % current)
2263+ required_output.append('%s/mint_grids' % current)
2264+ required_output.append('%s/grid.MC_integer' % current)
2265 if len(args) == 4:
2266+ required_output.append('%s/scale_pdf_dependence.dat' % current)
2267 args[2] = '-1'
2268 # use a grid train on another part
2269 base = '%s_G%s' % (args[3],i)
2270@@ -3414,6 +3437,11 @@
2271 keep_fourth_arg = True
2272 # this is for the split event generation
2273 output_files.append('G%s%s_%s' % (args[1], i, args[3]))
2274+ required_output.append('%s/log_MINT%s.txt' % (current,args[2]))
2275+ if args[2] in ['0','1']:
2276+ required_output.append('%s/results.dat' % current)
2277+ if args[2] == '1':
2278+ output_files.append('%s/results.dat' % current)
2279
2280 else:
2281 raise aMCatNLOError, 'not valid arguments: %s' %(', '.join(args))
2282@@ -3426,7 +3454,7 @@
2283 if len(args) == 4 and not keep_fourth_arg:
2284 args = args[:3]
2285
2286- return input_files, output_files, args
2287+ return input_files, output_files, required_output, args
2288
2289 def write_madinMMC_file(self, path, run_mode, mint_mode):
2290 """writes the madinMMC_?.2 file"""
2291
2292=== modified file 'madgraph/interface/common_run_interface.py'
2293--- madgraph/interface/common_run_interface.py 2014-09-24 19:41:18 +0000
2294+++ madgraph/interface/common_run_interface.py 2014-11-06 06:25:51 +0000
2295@@ -195,6 +195,7 @@
2296 raise self.ConfigurationError, '''Can\'t load MG5.
2297 The variable mg5_path should not be correctly configure.'''
2298
2299+
2300 ufo_path = pjoin(self.me_dir,'bin','internal', 'ufomodel')
2301 # Import model
2302 if not MADEVENT:
2303@@ -220,7 +221,7 @@
2304 # raise self.InvalidCmd, 'The UFO model does not include partial widths information. Impossible to compute widths automatically'
2305
2306 # check if the name are passed to default MG5
2307- if '-modelname' in open(pjoin(self.me_dir,'Cards','proc_card_mg5.dat')).read():
2308+ if '-modelname' not in open(pjoin(self.me_dir,'Cards','proc_card_mg5.dat')).read():
2309 model.pass_particles_name_in_mg_default()
2310 model = model_reader.ModelReader(model)
2311 particles_name = dict([(p.get('name'), p.get('pdg_code'))
2312@@ -949,7 +950,7 @@
2313 self.cluster.launch_and_wait(self.dirbin+'/run_hep2lhe',
2314 argument= [pydir],
2315 cwd=pjoin(self.me_dir,'Events'),
2316- stdout=open(os.devnull,'w'))
2317+ stdout=os.devnull)
2318
2319 logger.info('Warning! Never use this lhe file for detector studies!')
2320 # Creating ROOT file
2321@@ -2058,7 +2059,11 @@
2322 def get_lhapdf_pdfsetsdir(self):
2323 lhapdf_version = self.get_lhapdf_version()
2324
2325- if lhapdf_version.startswith('5.'):
2326+ # check if the LHAPDF_DATA_PATH variable is defined
2327+ if 'LHAPDF_DATA_PATH' in os.environ.keys() and os.environ['LHAPDF_DATA_PATH']:
2328+ datadir = os.environ['LHAPDF_DATA_PATH']
2329+
2330+ elif lhapdf_version.startswith('5.'):
2331 datadir = subprocess.Popen([self.options['lhapdf'], '--pdfsets-path'],
2332 stdout = subprocess.PIPE).stdout.read().strip()
2333
2334@@ -2141,7 +2146,12 @@
2335 elif len(split) == 2:
2336 if re.search(r'''\[[A-Z]\]eV\^''', split[1]):
2337 all_var = [comment.strip().lower()]
2338+ elif len(split) >=2 and split[1].startswith('('):
2339+ all_var = [split[0].strip().lower()]
2340 else:
2341+ if not bname.startswith('qnumbers'):
2342+ logger.debug("not recognize information for %s %s : %s",
2343+ bname, lha_id, comment)
2344 # not recognized format
2345 continue
2346
2347@@ -2363,9 +2373,13 @@
2348 if args[0] in self.special_shortcut:
2349 if len(args) == 1:
2350 values = {}
2351- elif len(args) == 2:
2352+ elif len(args) == 2:
2353+ targettype = float
2354+ if args[1].strip().isdigit():
2355+ targettype = int
2356+
2357 try:
2358- values = {'0': float(args[1])}
2359+ values = {'0': targettype(args[1])}
2360 except ValueError as e:
2361 logger.warning("Wrong argument: The last entry should be a number.")
2362 return
2363@@ -2885,4 +2899,4 @@
2364 except:
2365 import internal.madweight.Cards as mwcards
2366 self.mw_card = mwcards.Card(pjoin(self.me_dir,'Cards','MadWeight_card.dat'))
2367-
2368\ No newline at end of file
2369+
2370
2371=== modified file 'madgraph/interface/madevent_interface.py'
2372--- madgraph/interface/madevent_interface.py 2014-09-24 19:41:18 +0000
2373+++ madgraph/interface/madevent_interface.py 2014-11-06 06:25:51 +0000
2374@@ -4064,11 +4064,10 @@
2375
2376
2377 logfile = pjoin(Pdir, 'gen_ximprove.log')
2378- proc = misc.Popen([pjoin(bindir, 'gen_ximprove')],
2379+ misc.call([pjoin(bindir, 'gen_ximprove')],
2380 stdin=subprocess.PIPE,
2381 stdout=open(logfile,'w'),
2382 cwd=Pdir)
2383- proc.communicate('%s 1 F\n' % (precision))
2384
2385 if os.path.exists(pjoin(Pdir, 'ajob1')):
2386 alljobs = glob.glob(pjoin(Pdir,'ajob*'))
2387
2388=== modified file 'madgraph/interface/madgraph_interface.py'
2389--- madgraph/interface/madgraph_interface.py 2014-09-23 02:50:45 +0000
2390+++ madgraph/interface/madgraph_interface.py 2014-11-06 06:25:51 +0000
2391@@ -3541,7 +3541,7 @@
2392
2393 # Now check for perturbation orders, specified in between squared brackets
2394 perturbation_couplings_pattern = \
2395- re.compile("^(?P<proc>.+)\s*\[\s*((?P<option>\w+)\s*\=)?\s*"+\
2396+ re.compile("^(?P<proc>.+>.+)\s*\[\s*((?P<option>\w+)\s*\=)?\s*"+\
2397 "(?P<pertOrders>(\w+\s*)*)\s*\]\s*(?P<rest>.*)$")
2398 perturbation_couplings_re = perturbation_couplings_pattern.match(line)
2399 perturbation_couplings = ""
2400@@ -3595,7 +3595,7 @@
2401 # Notice that one can have a negative value of the squared order to
2402 # indicate that one should take the N^{n}LO contribution into account.
2403 order_pattern = re.compile(\
2404- "^(?P<before>.+)\s+(?P<name>(\w|(\^2))+)\s*(?P<type>"+\
2405+ "^(?P<before>.+>.+)\s+(?P<name>(\w|(\^2))+)\s*(?P<type>"+\
2406 "(=|(<=)|(==)|(===)|(!=)|(>=)|<|>))\s*(?P<value>-?\d+)\s*$")
2407 order_re = order_pattern.match(line)
2408 while order_re:
2409@@ -4595,7 +4595,7 @@
2410 out = open(pjoin(MG5DIR, 'Template','Common', 'Cards', 'delphes_card_default.dat'), 'w')
2411 out.write(data)
2412 if args[0] == 'Delphes3':
2413- files.cp(pjoin(MG5DIR, 'Delphes','examples','delphes_card_CMS_PileUp.tcl'),
2414+ files.cp(pjoin(MG5DIR, 'Delphes','examples','delphes_card_CMS.tcl'),
2415 pjoin(MG5DIR,'Template', 'Common', 'Cards', 'delphes_card_default.dat'))
2416 files.cp(pjoin(MG5DIR, 'Delphes','examples','delphes_card_CMS.tcl'),
2417 pjoin(MG5DIR,'Template', 'Common', 'Cards', 'delphes_card_CMS.dat'))
2418@@ -6288,6 +6288,13 @@
2419
2420 for pid in particles:
2421 width = param['decay'].get((pid,)).value
2422+ particle = self._curr_model.get_particle(pid)
2423+ #if particle['color'] !=1 and 0 < width.real < 0.1:
2424+ # logger.warning("width of colored particle \"%s(%s)\" lower than QCD scale: %s. Set width to zero "
2425+ # % (particle.get('name'), pid, width.real))
2426+ # width = 0
2427+
2428+
2429 if not pid in param['decay'].decay_table:
2430 continue
2431 if pid not in decay_info:
2432@@ -6295,6 +6302,12 @@
2433 for BR in param['decay'].decay_table[pid]:
2434 if len(BR.lhacode) == 3 and skip_2body:
2435 continue
2436+ if BR.value * width <0.1 and particle['color'] !=1:
2437+ logger.warning("partial width of particle %s lower than QCD scale:%s. Set it to zero. (%s)" \
2438+ % (particle.get('name'), BR.value * width, BR.lhacode[1:]))
2439+
2440+ continue
2441+
2442 decay_info[pid].append([BR.lhacode[1:], BR.value * width])
2443
2444 madevent_interface.MadEventCmd.update_width_in_param_card(decay_info,
2445
2446=== modified file 'madgraph/iolibs/export_fks.py'
2447--- madgraph/iolibs/export_fks.py 2014-09-17 07:43:49 +0000
2448+++ madgraph/iolibs/export_fks.py 2014-11-06 06:25:51 +0000
2449@@ -469,15 +469,25 @@
2450 matrix_element,
2451 fortran_model)
2452
2453- filename = 'leshouche_info.inc'
2454- self.write_leshouche_info_file(writers.FortranWriter(filename),
2455- matrix_element,
2456- fortran_model)
2457-
2458- filename = 'configs_and_props_info.inc'
2459- nconfigs=self.write_configs_and_props_info_file(
2460- writers.FortranWriter(filename),
2461- matrix_element,
2462+ filename = 'leshouche_info.dat'
2463+ nfksconfs,maxproc,maxflow,nexternal=\
2464+ self.write_leshouche_info_file(filename,matrix_element)
2465+
2466+ filename = 'leshouche_decl.inc'
2467+ self.write_leshouche_info_declarations(
2468+ writers.FortranWriter(filename),
2469+ nfksconfs,maxproc,maxflow,nexternal,
2470+ fortran_model)
2471+
2472+ filename = 'configs_and_props_info.dat'
2473+ nconfigs,max_leg_number,nfksconfs=self.write_configs_and_props_info_file(
2474+ filename,
2475+ matrix_element)
2476+
2477+ filename = 'configs_and_props_decl.inc'
2478+ self.write_configs_and_props_info_declarations(
2479+ writers.FortranWriter(filename),
2480+ nconfigs,max_leg_number,nfksconfs,
2481 fortran_model)
2482
2483 filename = 'real_from_born_configs.inc'
2484@@ -599,6 +609,7 @@
2485 'cluster.inc',
2486 'cluster.f',
2487 'reweight.f',
2488+ 'randinit',
2489 'sudakov.inc',
2490 'maxconfigs.inc',
2491 'timing_variables.inc']
2492@@ -619,7 +630,7 @@
2493
2494 #import nexternal/leshouches in Source
2495 ln('nexternal.inc', '../../Source', log=False)
2496- ln('leshouche_info.inc', '../../Source', log=False)
2497+ ln('leshouche_decl.inc', '../../Source', log=False)
2498
2499
2500 # Return to SubProcesses dir
2501@@ -653,6 +664,10 @@
2502 # check_param_card.convert_to_mg5card(param_card, mg5_param)
2503 # check_param_card.check_valid_param_card(mg5_param)
2504
2505+# # write the model functions get_mass/width_from_id
2506+ filename = os.path.join(self.dir_path,'Source','MODEL','get_mass_width_fcts.f')
2507+ makeinc = os.path.join(self.dir_path,'Source','MODEL','makeinc.inc')
2508+ self.write_get_mass_width_file(writers.FortranWriter(filename), makeinc, self.model)
2509
2510 # # Write maxconfigs.inc based on max of ME's/subprocess groups
2511 filename = os.path.join(self.dir_path,'Source','maxconfigs.inc')
2512@@ -826,25 +841,97 @@
2513 writer.writelines(lines2+lines)
2514
2515
2516-
2517- def write_configs_and_props_info_file(self, writer, matrix_element, fortran_model):
2518+ #===============================================================================
2519+ # write_get_mass_width_file
2520+ #===============================================================================
2521+ #test written
2522+ def write_get_mass_width_file(self, writer, makeinc, model):
2523+ """Write the get_mass_width_file.f file for MG4.
2524+ Also update the makeinc.inc file
2525+ """
2526+ mass_particles = [p for p in model['particles'] if p['mass'].lower() != 'zero']
2527+ width_particles = [p for p in model['particles'] if p['width'].lower() != 'zero']
2528+
2529+ iflines_mass = ''
2530+ iflines_width = ''
2531+
2532+ for i, part in enumerate(mass_particles):
2533+ if i == 0:
2534+ ifstring = 'if'
2535+ else:
2536+ ifstring = 'else if'
2537+ if part['self_antipart']:
2538+ iflines_mass += '%s (id.eq.%d) then\n' % \
2539+ (ifstring, part.get_pdg_code())
2540+ else:
2541+ iflines_mass += '%s (id.eq.%d.or.id.eq.%d) then\n' % \
2542+ (ifstring, part.get_pdg_code(), part.get_anti_pdg_code())
2543+ iflines_mass += 'get_mass_from_id=abs(%s)\n' % part.get('mass')
2544+
2545+ for i, part in enumerate(width_particles):
2546+ if i == 0:
2547+ ifstring = 'if'
2548+ else:
2549+ ifstring = 'else if'
2550+ if part['self_antipart']:
2551+ iflines_width += '%s (id.eq.%d) then\n' % \
2552+ (ifstring, part.get_pdg_code())
2553+ else:
2554+ iflines_width += '%s (id.eq.%d.or.id.eq.%d) then\n' % \
2555+ (ifstring, part.get_pdg_code(), part.get_anti_pdg_code())
2556+ iflines_width += 'get_width_from_id=abs(%s)\n' % part.get('width')
2557+
2558+ replace_dict = {'iflines_mass' : iflines_mass,
2559+ 'iflines_width' : iflines_width}
2560+
2561+ file = open(os.path.join(_file_path, \
2562+ 'iolibs/template_files/get_mass_width_fcts.inc')).read()
2563+ file = file % replace_dict
2564+
2565+ # Write the file
2566+ writer.writelines(file)
2567+
2568+ # update the makeinc
2569+ makeinc_content = open(makeinc).read()
2570+ makeinc_content = makeinc_content.replace('MODEL = ', 'MODEL = get_mass_width_fcts.o ')
2571+ open(makeinc, 'w').write(makeinc_content)
2572+
2573+ return
2574+
2575+
2576+ def write_configs_and_props_info_declarations(self, writer, max_iconfig, max_leg_number, nfksconfs, fortran_model):
2577+ """writes the declarations for the variables relevant for configs_and_props
2578+ """
2579+ lines = []
2580+ lines.append("integer ifr,lmaxconfigs_used,max_branch_used")
2581+ lines.append("parameter (lmaxconfigs_used=%4d)" % max_iconfig)
2582+ lines.append("parameter (max_branch_used =%4d)" % -max_leg_number)
2583+ lines.append("integer mapconfig_d(%3d,0:lmaxconfigs_used)" % nfksconfs)
2584+ lines.append("integer iforest_d(%3d,2,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2585+ lines.append("integer sprop_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2586+ lines.append("integer tprid_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2587+ lines.append("double precision pmass_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2588+ lines.append("double precision pwidth_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2589+ lines.append("integer pow_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nfksconfs)
2590+
2591+ writer.writelines(lines)
2592+
2593+
2594+ def write_configs_and_props_info_file(self, filename, matrix_element):
2595 """writes the configs_and_props_info.inc file that cointains
2596 all the (real-emission) configurations (IFOREST) as well as
2597 the masses and widths of intermediate particles"""
2598 lines = []
2599+ lines.append("# C -> MAPCONFIG_D")
2600+ lines.append("# F/D -> IFOREST_D")
2601+ lines.append("# S -> SPROP_D")
2602+ lines.append("# T -> TPRID_D")
2603+ lines.append("# M -> PMASS_D/PWIDTH_D")
2604+ lines.append("# P -> POW_D")
2605 lines2 = []
2606 nconfs = len(matrix_element.get_fks_info_list())
2607 (nexternal, ninitial) = matrix_element.real_processes[0].get_nexternal_ninitial()
2608
2609- lines.append("integer ifr,lmaxconfigs_used,max_branch_used")
2610- lines.append("integer mapconfig_d(%3d,0:lmaxconfigs_used)" % nconfs)
2611- lines.append("integer iforest_d(%3d,2,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2612- lines.append("integer sprop_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2613- lines.append("integer tprid_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2614- lines.append("double precision pmass_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2615- lines.append("double precision pwidth_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2616- lines.append("integer pow_d(%3d,-max_branch_used:-1,lmaxconfigs_used)" % nconfs)
2617-
2618 max_iconfig=0
2619 max_leg_number=0
2620
2621@@ -872,7 +959,7 @@
2622 lines.append("# Diagram %d for nFKSprocess %d" % \
2623 (helas_diag.get('number'),iFKS))
2624 # Correspondance between the config and the amplitudes
2625- lines.append("data mapconfig_d(%3d,%4d)/%4d/" % (iFKS,iconfig,
2626+ lines.append("C %4d %4d %4d " % (iFKS,iconfig,
2627 helas_diag.get('number')))
2628
2629 # Need to reorganize the topology so that we start with all
2630@@ -891,15 +978,16 @@
2631 for vert in allchannels:
2632 daughters = [leg.get('number') for leg in vert.get('legs')[:-1]]
2633 last_leg = vert.get('legs')[-1]
2634- lines.append("data (iforest_d(%3d, ifr,%3d,%4d),ifr=1,%d)/%s/" % \
2635- (iFKS,last_leg.get('number'), iconfig, len(daughters),
2636- ",".join(["%3d" % d for d in daughters])))
2637+ lines.append("F %4d %4d %4d %4d" % \
2638+ (iFKS,last_leg.get('number'), iconfig, len(daughters)))
2639+ for d in daughters:
2640+ lines.append("D %4d" % d)
2641 if vert in schannels:
2642- lines.append("data sprop_d(%3d,%4d,%4d)/%8d/" % \
2643+ lines.append("S %4d %4d %4d %10d" % \
2644 (iFKS,last_leg.get('number'), iconfig,
2645 last_leg.get('id')))
2646 elif vert in tchannels[:-1]:
2647- lines.append("data tprid_d(%3d,%4d,%4d)/%8d/" % \
2648+ lines.append("T %4d %4d %4d %10d" % \
2649 (iFKS,last_leg.get('number'), iconfig,
2650 abs(last_leg.get('id'))))
2651
2652@@ -909,7 +997,7 @@
2653
2654 # Write out number of configs
2655 lines.append("# Number of configs for nFKSprocess %d" % iFKS)
2656- lines.append("data mapconfig_d(%3d,0)/%4d/" % (iFKS,iconfig))
2657+ lines.append("C %4d %4d %4d" % (iFKS,0,iconfig))
2658
2659 # write the props.inc information
2660 lines2.append("# ")
2661@@ -921,59 +1009,49 @@
2662 leg = vertex.get('legs')[-1]
2663 if leg.get('id') == 21 and 21 not in particle_dict:
2664 # Fake propagator used in multiparticle vertices
2665- mass = 'zero'
2666- width = 'zero'
2667 pow_part = 0
2668 else:
2669 particle = particle_dict[leg.get('id')]
2670- # Get mass
2671- if particle.get('mass').lower() == 'zero':
2672- mass = particle.get('mass')
2673- else:
2674- mass = "abs(%s)" % particle.get('mass')
2675- # Get width
2676- if particle.get('width').lower() == 'zero':
2677- width = particle.get('width')
2678- else:
2679- width = "abs(%s)" % particle.get('width')
2680
2681 pow_part = 1 + int(particle.is_boson())
2682
2683- lines2.append("pmass_d (%3d,%3d,%4d) = %s " % \
2684- (iFKS,leg.get('number'), iconf + 1, mass))
2685- lines2.append("pwidth_d(%3d,%3d,%4d) = %s " % \
2686- (iFKS,leg.get('number'), iconf + 1, width))
2687- lines2.append("pow_d (%3d,%3d,%4d) = %d " % \
2688+ lines2.append("M %4d %4d %4d %10d " % \
2689+ (iFKS,leg.get('number'), iconf + 1, leg.get('id')))
2690+ lines2.append("P %4d %4d %4d %4d " % \
2691 (iFKS,leg.get('number'), iconf + 1, pow_part))
2692-
2693-
2694-
2695
2696- lines.append("# ")
2697- # insert the declaration of the sizes arrays at the beginning of the file
2698- lines.insert(1,"parameter (lmaxconfigs_used=%4d)" % max_iconfig)
2699- lines.insert(2,"parameter (max_branch_used =%4d)" % -max_leg_number)
2700-
2701 # Write the file
2702- writer.writelines(lines+lines2)
2703-
2704- return max_iconfig
2705-
2706-
2707-
2708- def write_leshouche_info_file(self, writer, matrix_element, fortran_model):
2709- """writes the leshouche_info.inc file which contains the LHA informations
2710- for all the real emission processes"""
2711- lines = []
2712- nconfs = len(matrix_element.get_fks_info_list())
2713+ open(filename,'w').write('\n'.join(lines+lines2))
2714+
2715+ return max_iconfig, max_leg_number, nconfs
2716+
2717+
2718+ def write_leshouche_info_declarations(self, writer, nfksconfs,
2719+ maxproc, maxflow, nexternal, fortran_model):
2720+ """writes the declarations for the variables relevant for leshouche_info
2721+ """
2722+ lines = []
2723+ lines.append('integer maxproc_used, maxflow_used')
2724+ lines.append('parameter (maxproc_used = %d)' % maxproc)
2725+ lines.append('parameter (maxflow_used = %d)' % maxflow)
2726+ lines.append('integer idup_d(%d,%d,maxproc_used)' % (nfksconfs, nexternal))
2727+ lines.append('integer mothup_d(%d,%d,%d,maxproc_used)' % (nfksconfs, 2, nexternal))
2728+ lines.append('integer icolup_d(%d,%d,%d,maxflow_used)' % (nfksconfs, 2, nexternal))
2729+
2730+ writer.writelines(lines)
2731+
2732+
2733+ def write_leshouche_info_file(self, filename, matrix_element):
2734+ """writes the leshouche_info.inc file which contains
2735+ the LHA informations for all the real emission processes
2736+ """
2737+ lines = []
2738+ lines.append("# I -> IDUP_D")
2739+ lines.append("# M -> MOTHUP_D")
2740+ lines.append("# C -> ICOLUP_D")
2741+ nfksconfs = len(matrix_element.get_fks_info_list())
2742 (nexternal, ninitial) = matrix_element.real_processes[0].get_nexternal_ninitial()
2743
2744- lines.append('integer idup_d(%d,%d,maxproc_used)' % (nconfs, nexternal))
2745- lines.append('integer mothup_d(%d,%d,%d,maxproc_used)' % (nconfs, 2, nexternal))
2746- lines.append('integer icolup_d(%d,%d,%d,maxflow_used)' % (nconfs, 2, nexternal))
2747- lines.append('integer ilh')
2748- lines.append('')
2749-
2750 maxproc = 0
2751 maxflow = 0
2752 for i, conf in enumerate(matrix_element.get_fks_info_list()):
2753@@ -984,10 +1062,10 @@
2754 maxproc = max(maxproc, nprocs)
2755 maxflow = max(maxflow, nflows)
2756
2757- firstlines = ['integer maxproc_used, maxflow_used',
2758- 'parameter (maxproc_used = %d)' % maxproc,
2759- 'parameter (maxflow_used = %d)' % maxflow ]
2760- writer.writelines(firstlines + lines)
2761+ # Write the file
2762+ open(filename,'w').write('\n'.join(lines))
2763+
2764+ return nfksconfs, maxproc, maxflow, nexternal
2765
2766
2767 def write_pdf_wrapper(self, writer, matrix_element, fortran_model):
2768@@ -1471,7 +1549,7 @@
2769
2770 replace_dict = {}
2771 replace_dict['mesq'] = 'CHaveraged'
2772- replace_dict['corr'] = ' '.join(matrix_elements.get('processes')[0].\
2773+ replace_dict['corr'] = ' '.join(matrix_elements[0].get('processes')[0].\
2774 get('perturbation_couplings'))
2775 replace_dict['irreg'] = 'CDR'
2776 replace_dict['aspow'] = QCD
2777@@ -2364,14 +2442,14 @@
2778 lines = []
2779 for iproc, proc in enumerate(matrix_element.get('processes')):
2780 legs = proc.get_legs_with_decays()
2781- lines.append("DATA (IDUP_D(%d,ilh,%d),ilh=1,%d)/%s/" % \
2782- (ime, iproc + 1, nexternal,
2783- ",".join([str(l.get('id')) for l in legs])))
2784+ lines.append("I %4d %4d %s" % \
2785+ (ime, iproc + 1,
2786+ " ".join([str(l.get('id')) for l in legs])))
2787 for i in [1, 2]:
2788- lines.append("DATA (MOTHUP_D(%d,%d,ilh,%3r),ilh=1,%2r)/%s/" % \
2789- (ime, i, iproc + 1, nexternal,
2790- ",".join([ "%3r" % 0 ] * ninitial + \
2791- [ "%3r" % i ] * (nexternal - ninitial))))
2792+ lines.append("M %4d %4d %4d %s" % \
2793+ (ime, i, iproc + 1,
2794+ " ".join([ "%3d" % 0 ] * ninitial + \
2795+ [ "%3d" % i ] * (nexternal - ninitial))))
2796
2797 # Here goes the color connections corresponding to the JAMPs
2798 # Only one output, for the first subproc!
2799@@ -2379,9 +2457,9 @@
2800 # If no color basis, just output trivial color flow
2801 if not matrix_element.get('color_basis'):
2802 for i in [1, 2]:
2803- lines.append("DATA (ICOLUP_D(%d,%d,ilh, 1),ilh=1,%2r)/%s/" % \
2804- (ime, i, nexternal,
2805- ",".join([ "%3r" % 0 ] * nexternal)))
2806+ lines.append("C %4d %4d 1 %s" % \
2807+ (ime, i,
2808+ " ".join([ "%3d" % 0 ] * nexternal)))
2809 color_flow_list = []
2810 nflow = 1
2811
2812@@ -2399,15 +2477,14 @@
2813 # And output them properly
2814 for cf_i, color_flow_dict in enumerate(color_flow_list):
2815 for i in [0, 1]:
2816- lines.append("DATA (ICOLUP_D(%d,%d,ilh,%3r),ilh=1,%2r)/%s/" % \
2817- (ime, i + 1, cf_i + 1, nexternal,
2818- ",".join(["%3r" % color_flow_dict[l.get('number')][i] \
2819+ lines.append("C %4d %4d %4d %s" % \
2820+ (ime, i + 1, cf_i + 1,
2821+ " ".join(["%3d" % color_flow_dict[l.get('number')][i] \
2822 for l in legs])))
2823
2824 nflow = len(color_flow_list)
2825
2826 nproc = len(matrix_element.get('processes'))
2827- lines.append('')
2828
2829 return lines, nproc, nflow
2830
2831
2832=== modified file 'madgraph/iolibs/export_v4.py'
2833--- madgraph/iolibs/export_v4.py 2014-09-08 11:03:40 +0000
2834+++ madgraph/iolibs/export_v4.py 2014-11-06 06:25:51 +0000
2835@@ -4698,13 +4698,12 @@
2836
2837 double complex gal(2)
2838 common/weak/ gal
2839+
2840+ double precision MU_R
2841+ common/rscale/ MU_R
2842
2843 """
2844- if self.model.get('expansion_order'):
2845- header=header+"""double precision MU_R
2846- common/rscale/ MU_R
2847
2848- """
2849 header = header+"""double precision Nf
2850 parameter(Nf=%d)
2851 """ % self.model.get_nflav()
2852@@ -4717,13 +4716,11 @@
2853
2854 %(complex_mp_format)s %(mp_prefix)sgal(2)
2855 common/MP_weak/ %(mp_prefix)sgal
2856-
2857+
2858+ %(complex_mp_format)s %(mp_prefix)sMU_R
2859+ common/MP_rscale/ %(mp_prefix)sMU_R
2860 """
2861- if self.model.get('expansion_order'):
2862- header=header+"""%(complex_mp_format)s %(mp_prefix)sMU_R
2863- common/MP_rscale/ %(mp_prefix)sMU_R
2864-
2865- """
2866+
2867 mp_fsock.writelines(header%{'real_mp_format':self.mp_real_format,
2868 'complex_mp_format':self.mp_complex_format,
2869 'mp_prefix':self.mp_prefix})
2870@@ -5240,6 +5237,58 @@
2871 input = pjoin(model_path,'Fortran','functions.f')
2872 file.writelines(fsock, open(input).read())
2873 fsock.write_comment_line(' END USER DEFINE FUNCTIONS ')
2874+
2875+ # check for functions define in the UFO model
2876+ ufo_fct = self.model.get('functions')
2877+ if ufo_fct:
2878+ fsock.write_comment_line(' START UFO DEFINE FUNCTIONS ')
2879+ for fct in ufo_fct:
2880+ # already handle by default
2881+ if fct.name not in ["complexconjugate", "re", "im", "sec", "csc", "asec", "acsc",
2882+ "theta_function", "cond", "reglog", "arg"]:
2883+ ufo_fct_template = """
2884+ double complex function %(name)s(%(args)s)
2885+ implicit none
2886+ double complex %(args)s
2887+ %(name)s = %(fct)s
2888+
2889+ return
2890+ end
2891+ """
2892+ text = ufo_fct_template % {
2893+ 'name': fct.name,
2894+ 'args': ", ".join(fct.arguments),
2895+ 'fct': self.p_to_f.parse(fct.expr)
2896+ }
2897+ fsock.writelines(text)
2898+ if self.opt['mp']:
2899+ fsock.write_comment_line(' START UFO DEFINE FUNCTIONS FOR MP')
2900+ for fct in ufo_fct:
2901+ # already handle by default
2902+ if fct.name not in ["complexconjugate", "re", "im", "sec", "csc", "asec", "acsc",
2903+ "theta_function", "cond", "reglog", "arg"]:
2904+ ufo_fct_template = """
2905+ %(complex_mp_format)s function mp__%(name)s(mp__%(args)s)
2906+ implicit none
2907+ %(complex_mp_format)s mp__%(args)s
2908+ mp__%(name)s = %(fct)s
2909+
2910+ return
2911+ end
2912+ """
2913+ text = ufo_fct_template % {
2914+ 'name': fct.name,
2915+ 'args': ", mp__".join(fct.arguments),
2916+ 'fct': self.mp_p_to_f.parse(fct.expr),
2917+ 'complex_mp_format': self.mp_complex_format
2918+ }
2919+ fsock.writelines(text)
2920+
2921+
2922+
2923+ fsock.write_comment_line(' STOP UFO DEFINE FUNCTIONS ')
2924+
2925+
2926
2927 def create_makeinc(self):
2928 """create makeinc.inc containing the file to compile """
2929
2930=== modified file 'madgraph/iolibs/template_files/addmothers.f'
2931--- madgraph/iolibs/template_files/addmothers.f 2014-09-25 14:36:15 +0000
2932+++ madgraph/iolibs/template_files/addmothers.f 2014-11-06 06:25:51 +0000
2933@@ -14,7 +14,7 @@
2934 integer jpart(7,-nexternal+3:2*nexternal-3),npart,ip,numproc
2935 double precision pb(0:4,-nexternal+3:2*nexternal-3)
2936 double precision rscale,aqcd,aqed,targetamp(maxflow)
2937- character*300 buff
2938+ character*1000 buff
2939 character*20 cform
2940 logical flip ! If .true., initial state is mirrored
2941
2942
2943=== added file 'madgraph/iolibs/template_files/get_mass_width_fcts.inc'
2944--- madgraph/iolibs/template_files/get_mass_width_fcts.inc 1970-01-01 00:00:00 +0000
2945+++ madgraph/iolibs/template_files/get_mass_width_fcts.inc 2014-11-06 06:25:51 +0000
2946@@ -0,0 +1,23 @@
2947+DOUBLE PRECISION FUNCTION GET_MASS_FROM_ID(ID)
2948+IMPLICIT NONE
2949+INTEGER ID
2950+INCLUDE 'coupl.inc'
2951+
2952+%(iflines_mass)sELSE
2953+GET_MASS_FROM_ID=0d0
2954+ENDIF
2955+RETURN
2956+END
2957+
2958+
2959+DOUBLE PRECISION FUNCTION GET_WIDTH_FROM_ID(ID)
2960+IMPLICIT NONE
2961+INTEGER ID
2962+INCLUDE 'coupl.inc'
2963+
2964+%(iflines_width)sELSE
2965+GET_WIDTH_FROM_ID=0d0
2966+ENDIF
2967+RETURN
2968+END
2969+
2970
2971=== modified file 'madgraph/iolibs/template_files/madevent_combine_events.f'
2972--- madgraph/iolibs/template_files/madevent_combine_events.f 2014-08-05 16:12:48 +0000
2973+++ madgraph/iolibs/template_files/madevent_combine_events.f 2014-11-06 06:25:51 +0000
2974@@ -57,7 +57,7 @@
2975 character*30 param_card_name
2976 common/to_param_card_name/param_card_name
2977
2978- character*300 buff
2979+ character*1000 buff
2980 logical u_syst, has_negative
2981 character*(s_bufflen) s_buff(7)
2982 integer nclus
2983@@ -119,7 +119,7 @@
2984 I4 = 4
2985 R8 = 8
2986 record_length = 4*I4+maxexternal*I4*7+maxexternal*5*R8+3*R8+
2987- & 300+7*s_bufflen+max_particles*clus_bufflen
2988+ & 1000+7*s_bufflen+max_particles*clus_bufflen
2989 C $B$ scratch_name $B$ !this is tag for automatic modification by MW
2990 filename='scratch'
2991 C $E$ scratch_name $E$ !this is tag for automatic modification by MW
2992@@ -625,7 +625,7 @@
2993 double precision sscale,aqcd,aqed,tmpsum
2994 integer ievent,jseed
2995 logical done,found
2996- character*300 buff
2997+ character*1000 buff
2998 logical u_syst
2999 character*(s_bufflen) s_buff(7)
3000 character*300 fullname
3001
3002=== modified file 'madgraph/iolibs/template_files/matrix_madevent_group_v4.inc'
3003--- madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2014-05-23 02:30:58 +0000
3004+++ madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2014-11-06 06:25:51 +0000
3005@@ -258,7 +258,7 @@
3006 DO M = 1, NAMPSO
3007 DO N = 1, NAMPSO
3008 IF (CHOSEN_SO_CONFIGS(SQSOINDEX%(proc_id)s(M,N))) THEN
3009- Jamp2(i)=Jamp2(i)+Jamp(i,m)*dconjg(Jamp(i,n))
3010+ Jamp2(i)=Jamp2(i)+DABS(DBLE(Jamp(i,m)*dconjg(Jamp(i,n))))
3011 ENDIF
3012 enddo
3013 enddo
3014
3015=== modified file 'madgraph/iolibs/template_files/matrix_madevent_v4.inc'
3016--- madgraph/iolibs/template_files/matrix_madevent_v4.inc 2014-05-23 02:30:58 +0000
3017+++ madgraph/iolibs/template_files/matrix_madevent_v4.inc 2014-11-06 06:25:51 +0000
3018@@ -249,7 +249,7 @@
3019 DO M = 1, NAMPSO
3020 DO N = 1, NAMPSO
3021 IF (CHOSEN_SO_CONFIGS(SQSOINDEX%(proc_id)s(M,N))) THEN
3022- Jamp2(i)=Jamp2(i)+Jamp(i,m)*dconjg(Jamp(i,n))
3023+ Jamp2(i)=Jamp2(i)+DABS(DBLE(Jamp(i,m)*dconjg(Jamp(i,n))))
3024 ENDIF
3025 enddo
3026 enddo
3027
3028=== modified file 'madgraph/iolibs/ufo_expression_parsers.py'
3029--- madgraph/iolibs/ufo_expression_parsers.py 2014-07-03 18:01:46 +0000
3030+++ madgraph/iolibs/ufo_expression_parsers.py 2014-11-06 06:25:51 +0000
3031@@ -61,7 +61,7 @@
3032 # List of tokens and literals
3033 tokens = (
3034 'LOGICAL','LOGICALCOMB','POWER', 'CSC', 'SEC', 'ACSC', 'ASEC',
3035- 'SQRT', 'CONJ', 'RE', 'IM', 'PI', 'COMPLEX', 'FUNCTION', 'IF','ELSE',
3036+ 'SQRT', 'CONJ', 'RE', 'RE2', 'IM', 'PI', 'COMPLEX', 'FUNCTION', 'IF','ELSE',
3037 'VARIABLE', 'NUMBER','COND','REGLOG', 'ARG'
3038 )
3039 literals = "=+-*/(),"
3040@@ -115,6 +115,10 @@
3041 def t_RE(self, t):
3042 r'(?<!\w)re(?=\()'
3043 return t
3044+ def t_RE2(self, t):
3045+ r'\.real|\.imag'
3046+ return t
3047+
3048 def t_COMPLEX(self, t):
3049 r'(?<!\w)complex(?=\()'
3050 return t
3051@@ -125,7 +129,7 @@
3052 r'[a-zA-Z_][0-9a-zA-Z_]*'
3053 return t
3054
3055- t_NUMBER = r'([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)([eE][+-]{0,1}[0-9]+){0,1}'
3056+ t_NUMBER = r'([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)([eE][+-]{0,1}[0-9]+){0,1}j{0,1}'
3057 t_POWER = r'\*\*'
3058
3059 t_ignore = " \t"
3060@@ -154,6 +158,7 @@
3061 ('left','='),
3062 ('left','+','-'),
3063 ('left','*','/'),
3064+ ('left', 'RE2'),
3065 ('right','UMINUS'),
3066 ('left','POWER'),
3067 ('right','REGLOG'),
3068@@ -255,7 +260,10 @@
3069
3070 def p_expression_number(self, p):
3071 "expression : NUMBER"
3072- p[0] = ('%e' % float(p[1])).replace('e', 'd')
3073+ if p[1].endswith('j'):
3074+ p[0] = ('DCOMPLX(0d0, %e)' % float(p[1][:-1])).replace('e', 'd')
3075+ else:
3076+ p[0] = ('%e' % float(p[1])).replace('e', 'd')
3077
3078 def p_expression_variable(self, p):
3079 "expression : VARIABLE"
3080@@ -313,6 +321,21 @@
3081 elif p[1] == 'complexconjugate': p[0] = 'conjg(DCMPLX' + p[2]+')'
3082 elif p[1] == 'reglog': p[0] = 'reglog(DCMPLX' + p[2] +')'
3083
3084+
3085+ def p_expression_real(self, p):
3086+ ''' expression : expression RE2 '''
3087+
3088+ if p[2] == '.real':
3089+ if p[1].startswith('('):
3090+ p[0] = 'dble' +p[1]
3091+ else:
3092+ p[0] = 'dble(%s)' % p[1]
3093+ elif p[2] == '.imag':
3094+ if p[1].startswith('('):
3095+ p[0] = 'dimag' +p[1]
3096+ else:
3097+ p[0] = 'dimag(%s)' % p[1]
3098+
3099 def p_expression_pi(self, p):
3100 '''expression : PI'''
3101 p[0] = 'pi'
3102@@ -328,7 +351,11 @@
3103
3104 def p_expression_number(self, p):
3105 "expression : NUMBER"
3106- p[0] = '%e_16' % float(p[1])
3107+
3108+ if p[1].endswith('j'):
3109+ p[0] = 'CMPLX(0.000000e+00_16, %e_16 ,KIND=16)' % float(p[1][:-1])
3110+ else:
3111+ p[0] = '%e_16' % float(p[1])
3112
3113 def p_expression_variable(self, p):
3114 "expression : VARIABLE"
3115@@ -384,6 +411,21 @@
3116 elif p[1] == 'complexconjugate': p[0] = 'conjg(CMPLX(' + p[2] + ',KIND=16))'
3117 elif p[1] == 'reglog': p[0] = 'mp_reglog(CMPLX(' + p[2] +',KIND=16))'
3118
3119+ def p_expression_real(self, p):
3120+ ''' expression : expression RE2 '''
3121+
3122+ if p[2] == '.real':
3123+ if p[1].startswith('('):
3124+ p[0] = 'real' +p[1]
3125+ else:
3126+ p[0] = 'real(%s)' % p[1]
3127+ elif p[2] == '.imag':
3128+ if p[1].startswith('('):
3129+ p[0] = 'imag' +p[1]
3130+ else:
3131+ p[0] = 'imag(%s)' % p[1]
3132+
3133+
3134 def p_expression_pi(self, p):
3135 '''expression : PI'''
3136 p[0] = self.mp_prefix+'pi'
3137@@ -406,6 +448,13 @@
3138
3139 def p_expression_number(self, p):
3140 'expression : NUMBER'
3141+
3142+ if p[1].endswith('j'):
3143+ p[0] = 'std::complex<double>(0., %e)' % float(p[1][:-1])
3144+ else:
3145+ p[0] = ('%e' % float(p[1])).replace('e', 'd')
3146+
3147+
3148 p[0] = p[1]
3149 # Check number is an integer, if so add "."
3150 if float(p[1]) == int(float(p[1])) and float(p[1]) < 1000:
3151@@ -462,6 +511,21 @@
3152 elif p[1] == 'cmath.sqrt' or p[1] == 'sqrt': p[0] = 'sqrt' + p[2]
3153 elif p[1] == 'complexconjugate': p[0] = 'conj' + p[2]
3154 elif p[1] == 'reglog': p[0] = 'reglog' + p[2]
3155+
3156+ def p_expression_real(self, p):
3157+ ''' expression : expression RE2 '''
3158+
3159+ if p[2] == '.real':
3160+ if p[1].startswith('('):
3161+ p[0] = 'real' +p[1]
3162+ else:
3163+ p[0] = 'real(%s)' % p[1]
3164+ elif p[2] == '.imag':
3165+ if p[1].startswith('('):
3166+ p[0] = 'imag' +p[1]
3167+ else:
3168+ p[0] = 'imag(%s)' % p[1]
3169+
3170
3171 def p_expression_pi(self, p):
3172 '''expression : PI'''
3173
3174=== modified file 'madgraph/loop/loop_diagram_generation.py'
3175--- madgraph/loop/loop_diagram_generation.py 2014-08-09 09:07:56 +0000
3176+++ madgraph/loop/loop_diagram_generation.py 2014-11-06 06:25:51 +0000
3177@@ -650,7 +650,6 @@
3178
3179 # Now we can generate the loop diagrams.
3180 totloopsuccessful=self.generate_loop_diagrams()
3181- self['process']['forbidden_particles']=[]
3182
3183 # If there is no born neither loop diagrams, return now.
3184 if not self['process']['has_born'] and not self['loop_diagrams']:
3185
3186=== modified file 'madgraph/various/banner.py'
3187--- madgraph/various/banner.py 2014-09-17 07:02:56 +0000
3188+++ madgraph/various/banner.py 2014-11-06 06:25:51 +0000
3189@@ -588,8 +588,15 @@
3190 return '.false.'
3191
3192 elif format == 'int':
3193- return str(int(value))
3194-
3195+ try:
3196+ return str(int(value))
3197+ except ValueError:
3198+ fl = float(value)
3199+ if int(fl) == fl:
3200+ return str(int(fl))
3201+ else:
3202+ raise
3203+
3204 elif format == 'float':
3205 if isinstance(value, str):
3206 value = value.replace('d','e')
3207
3208=== modified file 'madgraph/various/cluster.py'
3209--- madgraph/various/cluster.py 2014-09-14 18:16:47 +0000
3210+++ madgraph/various/cluster.py 2014-11-06 06:25:51 +0000
3211@@ -1290,7 +1290,7 @@
3212 me_dir = 'a' + me_dir[1:]
3213
3214 text = ""
3215- command = ['bsub', '-J', me_dir]
3216+ command = ['bsub', '-C0', '-J', me_dir]
3217 if cwd is None:
3218 cwd = os.getcwd()
3219 else:
3220@@ -1364,7 +1364,7 @@
3221 cmd = "bjobs " + ' '.join(self.submitted_ids)
3222 status = misc.Popen([cmd], shell=True, stdout=subprocess.PIPE)
3223
3224- idle, run, fail = 0, 0, 0
3225+ jobstatus = {}
3226 for line in status.stdout:
3227 line = line.strip()
3228 if 'JOBID' in line:
3229@@ -1373,19 +1373,24 @@
3230 id = splitline[0]
3231 if id not in self.submitted_ids:
3232 continue
3233- status = splitline[2]
3234+ jobstatus[id] = splitline[2]
3235+
3236+ idle, run, fail = 0, 0, 0
3237+ for id in self.submitted_ids[:]:
3238+ if id in jobstatus:
3239+ status = jobstatus[id]
3240+ else:
3241+ status = 'MISSING'
3242 if status == 'RUN':
3243 run += 1
3244 elif status == 'PEND':
3245 idle += 1
3246- elif status == 'DONE':
3247+ else:
3248 status = self.check_termination(id)
3249 if status == 'wait':
3250 run += 1
3251 elif status == 'resubmit':
3252- idle += 1
3253- else:
3254- fail += 1
3255+ idle += 1
3256
3257 return idle, run, self.submitted - (idle+run+fail), fail
3258
3259
3260=== modified file 'madgraph/various/lhe_parser.py'
3261--- madgraph/various/lhe_parser.py 2014-07-07 12:59:46 +0000
3262+++ madgraph/various/lhe_parser.py 2014-11-06 06:25:51 +0000
3263@@ -1,6 +1,9 @@
3264 import collections
3265 import re
3266 import misc
3267+if '__main__' == __name__:
3268+ import sys
3269+ sys.path.append('../../')
3270
3271 import logging
3272 logger = logging.getLogger("madgraph.lhe_parser")
3273
3274=== modified file 'madgraph/various/misc.py'
3275--- madgraph/various/misc.py 2014-09-17 07:02:56 +0000
3276+++ madgraph/various/misc.py 2014-11-06 06:25:51 +0000
3277@@ -710,21 +710,44 @@
3278 else:
3279 raise Exception, "%(path)s does not finish by .gz and the file %(path)s.gz does not exists" %\
3280 {"path": path}
3281+
3282+
3283+ #for large file (>1G) it is faster and safer to use a separate thread
3284+ if os.path.getsize(path) > 1e8:
3285+ if stdout:
3286+ os.system('gunzip -c %s > %s' % (path, stdout))
3287+ else:
3288+ os.system('gunzip %s')
3289+ return
3290+
3291 if not stdout:
3292- stdout = path[:-3]
3293+ stdout = path[:-3]
3294 open(stdout,'w').write(ziplib.open(path, "r").read())
3295 if not keep:
3296 os.remove(path)
3297
3298-def gzip(path, stdout=None, error=True):
3299+def gzip(path, stdout=None, error=True, forceexternal=False):
3300 """ a standard replacement for os.system('gzip %s ' % path)"""
3301+
3302+
3303+
3304+ #for large file (>1G) it is faster and safer to use a separate thread
3305+ if os.path.getsize(path) > 1e9:
3306+ call(['gzip', '-f', path])
3307+ if stdout:
3308+ shutil.move('%s.gz' % path, stdout)
3309+ return
3310+
3311 if not stdout:
3312 stdout = "%s.gz" % path
3313 elif not stdout.endswith(".gz"):
3314 stdout = "%s.gz" % stdout
3315+
3316 try:
3317 ziplib.open(stdout,"w").write(open(path).read())
3318- except:
3319+ except OverflowError:
3320+ gzip(path, stdout, error=error, forceexternal=True)
3321+ except Exception:
3322 if error:
3323 raise
3324 else:
3325
3326=== modified file 'mg5decay/decay_objects.py'
3327--- mg5decay/decay_objects.py 2014-07-10 23:42:17 +0000
3328+++ mg5decay/decay_objects.py 2014-11-06 06:25:51 +0000
3329@@ -943,13 +943,33 @@
3330 vlist_a = inter_part.get_vertexlist(vlevel, True)
3331 vlist_b = inter_part.get_vertexlist(vlevel, False)
3332
3333-
3334+ minv_max = eval(self['mass']) - \
3335+ sum([eval(model.get_particle(abs(l['id']))['mass'])
3336+ for l in sub_c.get_final_legs() if l!=leg])
3337+
3338+ allow_qcd=True # if two colored particle are lower than the pion.
3339+ # those computation are meaningless.
3340+ if 0 < minv_max.real < 0.100:
3341+ logger.warning("WARNING: Mass gap lower than pion mass for decay of %s "
3342+ % self['pdg_code'])
3343+ logger.warning("decay into colored particle will be remove.")
3344+ allow_qcd=False
3345+ if model.get_particle(abs(leg['id']))['color'] != 1:
3346+ continue
3347+
3348+
3349 # Find appropriate vertex
3350 for vert in (vlist_a + vlist_b):
3351 # Connect sub_channel to the vertex
3352 # the connect_channel_vertex will
3353 # inherit the 'has_idpart' from sub_c
3354
3355+ if not allow_qcd:
3356+ nb_colored = sum([1 for l in vert['legs'] if \
3357+ model.get_particle(abs(l['id']))['color'] != 1])
3358+ if nb_colored >=1:
3359+ continue
3360+
3361 temp_c = self.connect_channel_vertex(sub_c, index,
3362 vert, model)
3363 temp_c_o = temp_c.get_onshell(model)
3364@@ -1198,7 +1218,10 @@
3365 for amp in list(self.get_amplitudes(clevel)):
3366 approx_width = amp.get('apx_decaywidth')
3367 if min_br:
3368- br = approx_width / total_width
3369+ if approx_width or total_width:
3370+ br = approx_width / total_width
3371+ else:
3372+ br = 0
3373 if br.real < min_br:
3374 self.decay_amplitudes[clevel].remove(amp)
3375
3376
3377=== modified file 'models/import_ufo.py'
3378--- models/import_ufo.py 2014-09-17 15:44:51 +0000
3379+++ models/import_ufo.py 2014-11-06 06:25:51 +0000
3380@@ -151,12 +151,18 @@
3381
3382 # Check the validity of the model
3383 files_list_prov = ['couplings.py','lorentz.py','parameters.py',
3384- 'particles.py', 'vertices.py']
3385+ 'particles.py', 'vertices.py', 'function_library.py',
3386+ 'propagators.py' ]
3387+
3388+ if decay:
3389+ files_list_prov.append('decays.py')
3390+
3391 files_list = []
3392 for filename in files_list_prov:
3393 filepath = os.path.join(model_path, filename)
3394 if not os.path.isfile(filepath):
3395- raise UFOImportError, "%s directory is not a valid UFO model: \n %s is missing" % \
3396+ if filename not in ['propagators.py', 'decays.py']:
3397+ raise UFOImportError, "%s directory is not a valid UFO model: \n %s is missing" % \
3398 (model_path, filename)
3399 files_list.append(filepath)
3400
3401
3402=== modified file 'models/taudecay_UFO/param_card.dat'
3403--- models/taudecay_UFO/param_card.dat 2013-12-20 11:49:27 +0000
3404+++ models/taudecay_UFO/param_card.dat 2014-11-06 06:25:51 +0000
3405@@ -12,6 +12,8 @@
3406 ## INFORMATION FOR MASS
3407 ###################################
3408 Block MASS
3409+ 11 5.110000e-04 # Me
3410+ 13 1.056600e-01 # MMU
3411 15 1.776820e+00 # MTA
3412 111 1.349766e-01 # Mpi0
3413 211 1.395702e-01 # Mpic
3414@@ -19,6 +21,8 @@
3415 ## Those values should be edited following analytical the
3416 ## analytical expression. Some generator could simply ignore
3417 ## those values and use the analytical expression
3418+ 12 0.000000 # ve : 0.0
3419+ 14 0.000000 # vm : 0.0
3420 16 0.000000 # vt : 0.0
3421
3422 ###################################
3423@@ -29,7 +33,11 @@
3424 ## Those values should be edited following analytical the
3425 ## analytical expression. Some generator could simply ignore
3426 ## those values and use the analytical expression
3427+DECAY 12 0.000000 # ve : 0.0
3428+DECAY 14 0.000000 # vm : 0.0
3429 DECAY 16 0.000000 # vt : 0.0
3430+DECAY 11 0.000000 # e- : 0.0
3431+DECAY 13 0.000000 # mu- : 0.0
3432 DECAY 211 0.000000 # pi+ : 0.0
3433 DECAY 111 0.000000 # pi0 : 0.0
3434
3435@@ -40,16 +48,17 @@
3436 1 2.277360e-01 # cabi
3437
3438 ###################################
3439-## INFORMATION FOR FRBLOCK
3440+## INFORMATION FOR TAUDECAY
3441 ###################################
3442-Block FRBlock
3443- 1 1.304100e-01 # F1
3444- 2 1.000000e+00 # F2
3445- 3 1.000000e+00 # F3
3446- 4 1.000000e+00 # Fr1
3447- 5 1.000000e+00 # Fr2
3448- 6 1.000000e+00 # G1
3449- 7 1.000000e+00 # G2
3450+Block taudecay
3451+ 1 1.000000e+00 # F0
3452+ 2 1.304100e-01 # F1
3453+ 3 1.000000e+00 # F2
3454+ 4 1.000000e+00 # F3
3455+ 5 1.000000e+00 # Fr1
3456+ 6 1.000000e+00 # Fr2
3457+ 7 1.000000e+00 # Gr1
3458+ 8 1.000000e+00 # Gr2
3459 #===========================================================
3460 # QUANTUM NUMBERS OF NEW STATE(S) (NON SM PDG CODE)
3461 #===========================================================
3462
3463=== modified file 'models/taudecay_UFO/parameters.py'
3464--- models/taudecay_UFO/parameters.py 2014-05-09 08:09:59 +0000
3465+++ models/taudecay_UFO/parameters.py 2014-11-06 06:25:51 +0000
3466@@ -38,7 +38,7 @@
3467 type = 'real',
3468 value = 1.,
3469 texname = 'F_0',
3470- lhablock = 'FRBlock',
3471+ lhablock = 'taudecay',
3472 lhacode = [ 1 ])
3473
3474 F1 = Parameter(name = 'F1',
3475@@ -46,7 +46,7 @@
3476 type = 'real',
3477 value = 0.13041,
3478 texname = 'F_1',
3479- lhablock = 'FRBlock',
3480+ lhablock = 'taudecay',
3481 lhacode = [ 2 ])
3482
3483 F2 = Parameter(name = 'F2',
3484@@ -54,7 +54,7 @@
3485 type = 'real',
3486 value = 1.,
3487 texname = 'F_2',
3488- lhablock = 'FRBlock',
3489+ lhablock = 'taudecay',
3490 lhacode = [ 3 ])
3491
3492 F3 = Parameter(name = 'F3',
3493@@ -62,7 +62,7 @@
3494 type = 'real',
3495 value = 1.,
3496 texname = 'F_3',
3497- lhablock = 'FRBlock',
3498+ lhablock = 'taudecay',
3499 lhacode = [ 4 ])
3500
3501 Fr1 = Parameter(name = 'Fr1',
3502@@ -70,7 +70,7 @@
3503 type = 'real',
3504 value = 1.,
3505 texname = 'F_{23}',
3506- lhablock = 'FRBlock',
3507+ lhablock = 'taudecay',
3508 lhacode = [ 5 ])
3509
3510 Fr2 = Parameter(name = 'Fr2',
3511@@ -78,7 +78,7 @@
3512 type = 'real',
3513 value = 1.,
3514 texname = 'F_{13}',
3515- lhablock = 'FRBlock',
3516+ lhablock = 'taudecay',
3517 lhacode = [ 6 ])
3518
3519 Gr1 = Parameter(name = 'Gr1',
3520@@ -86,7 +86,7 @@
3521 type = 'real',
3522 value = 1.,
3523 texname = 'G_{23}',
3524- lhablock = 'FRBlock',
3525+ lhablock = 'taudecay',
3526 lhacode = [ 7 ])
3527
3528 Gr2 = Parameter(name = 'Gr2',
3529@@ -94,7 +94,7 @@
3530 type = 'real',
3531 value = 1.,
3532 texname = 'G_{13}',
3533- lhablock = 'FRBlock',
3534+ lhablock = 'taudecay',
3535 lhacode = [ 8 ])
3536
3537 Me = Parameter(name = 'Me',
3538
3539=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc'
3540--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc 1970-01-01 00:00:00 +0000
3541+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_decl.inc 2014-11-06 06:25:51 +0000
3542@@ -0,0 +1,12 @@
3543+ INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
3544+ PARAMETER (LMAXCONFIGS_USED= 15)
3545+ PARAMETER (MAX_BRANCH_USED = 3)
3546+ INTEGER MAPCONFIG_D( 8,0:LMAXCONFIGS_USED)
3547+ INTEGER IFOREST_D( 8,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3548+ INTEGER SPROP_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3549+ INTEGER TPRID_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3550+ DOUBLE PRECISION PMASS_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED
3551+ $ )
3552+ DOUBLE PRECISION PWIDTH_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USE
3553+ $ D)
3554+ INTEGER POW_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3555
3556=== removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_info.inc'
3557--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_info.inc 2014-03-19 08:01:45 +0000
3558+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%configs_and_props_info.inc 1970-01-01 00:00:00 +0000
3559@@ -1,1077 +0,0 @@
3560- INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
3561- PARAMETER (LMAXCONFIGS_USED= 15)
3562- PARAMETER (MAX_BRANCH_USED = 3)
3563- INTEGER MAPCONFIG_D( 8,0:LMAXCONFIGS_USED)
3564- INTEGER IFOREST_D( 8,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3565- INTEGER SPROP_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3566- INTEGER TPRID_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3567- DOUBLE PRECISION PMASS_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED
3568- $ )
3569- DOUBLE PRECISION PWIDTH_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USE
3570- $ D)
3571- INTEGER POW_D( 8,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
3572-C
3573-C nFKSprocess 1
3574-C Diagram 1 for nFKSprocess 1
3575- DATA MAPCONFIG_D( 1, 1)/ 1/
3576- DATA (IFOREST_D( 1, IFR, -1, 1),IFR=1,2)/ 4, 3/
3577- DATA SPROP_D( 1, -1, 1)/ 21/
3578- DATA (IFOREST_D( 1, IFR, -2, 1),IFR=1,2)/ 5, -1/
3579- DATA SPROP_D( 1, -2, 1)/ 21/
3580-C Diagram 2 for nFKSprocess 1
3581- DATA MAPCONFIG_D( 1, 2)/ 2/
3582- DATA (IFOREST_D( 1, IFR, -1, 2),IFR=1,2)/ 5, 3/
3583- DATA SPROP_D( 1, -1, 2)/ 6/
3584- DATA (IFOREST_D( 1, IFR, -2, 2),IFR=1,2)/ 4, -1/
3585- DATA SPROP_D( 1, -2, 2)/ 21/
3586-C Diagram 3 for nFKSprocess 1
3587- DATA MAPCONFIG_D( 1, 3)/ 3/
3588- DATA (IFOREST_D( 1, IFR, -1, 3),IFR=1,2)/ 5, 4/
3589- DATA SPROP_D( 1, -1, 3)/ -6/
3590- DATA (IFOREST_D( 1, IFR, -2, 3),IFR=1,2)/ -1, 3/
3591- DATA SPROP_D( 1, -2, 3)/ 21/
3592-C Diagram 4 for nFKSprocess 1
3593- DATA MAPCONFIG_D( 1, 4)/ 4/
3594- DATA (IFOREST_D( 1, IFR, -1, 4),IFR=1,2)/ 1, 3/
3595- DATA TPRID_D( 1, -1, 4)/ 6/
3596- DATA (IFOREST_D( 1, IFR, -2, 4),IFR=1,2)/ -1, 5/
3597- DATA TPRID_D( 1, -2, 4)/ 6/
3598- DATA (IFOREST_D( 1, IFR, -3, 4),IFR=1,2)/ -2, 4/
3599-C Diagram 5 for nFKSprocess 1
3600- DATA MAPCONFIG_D( 1, 5)/ 5/
3601- DATA (IFOREST_D( 1, IFR, -1, 5),IFR=1,2)/ 1, 3/
3602- DATA TPRID_D( 1, -1, 5)/ 6/
3603- DATA (IFOREST_D( 1, IFR, -2, 5),IFR=1,2)/ -1, 4/
3604- DATA TPRID_D( 1, -2, 5)/ 21/
3605- DATA (IFOREST_D( 1, IFR, -3, 5),IFR=1,2)/ -2, 5/
3606-C Diagram 6 for nFKSprocess 1
3607- DATA MAPCONFIG_D( 1, 6)/ 6/
3608- DATA (IFOREST_D( 1, IFR, -1, 6),IFR=1,2)/ 5, 4/
3609- DATA SPROP_D( 1, -1, 6)/ -6/
3610- DATA (IFOREST_D( 1, IFR, -2, 6),IFR=1,2)/ 1, 3/
3611- DATA TPRID_D( 1, -2, 6)/ 6/
3612- DATA (IFOREST_D( 1, IFR, -3, 6),IFR=1,2)/ -2, -1/
3613-C Diagram 7 for nFKSprocess 1
3614- DATA MAPCONFIG_D( 1, 7)/ 7/
3615- DATA (IFOREST_D( 1, IFR, -1, 7),IFR=1,2)/ 1, 4/
3616- DATA TPRID_D( 1, -1, 7)/ 6/
3617- DATA (IFOREST_D( 1, IFR, -2, 7),IFR=1,2)/ -1, 5/
3618- DATA TPRID_D( 1, -2, 7)/ 6/
3619- DATA (IFOREST_D( 1, IFR, -3, 7),IFR=1,2)/ -2, 3/
3620-C Diagram 8 for nFKSprocess 1
3621- DATA MAPCONFIG_D( 1, 8)/ 8/
3622- DATA (IFOREST_D( 1, IFR, -1, 8),IFR=1,2)/ 1, 4/
3623- DATA TPRID_D( 1, -1, 8)/ 6/
3624- DATA (IFOREST_D( 1, IFR, -2, 8),IFR=1,2)/ -1, 3/
3625- DATA TPRID_D( 1, -2, 8)/ 21/
3626- DATA (IFOREST_D( 1, IFR, -3, 8),IFR=1,2)/ -2, 5/
3627-C Diagram 9 for nFKSprocess 1
3628- DATA MAPCONFIG_D( 1, 9)/ 9/
3629- DATA (IFOREST_D( 1, IFR, -1, 9),IFR=1,2)/ 5, 3/
3630- DATA SPROP_D( 1, -1, 9)/ 6/
3631- DATA (IFOREST_D( 1, IFR, -2, 9),IFR=1,2)/ 1, 4/
3632- DATA TPRID_D( 1, -2, 9)/ 6/
3633- DATA (IFOREST_D( 1, IFR, -3, 9),IFR=1,2)/ -2, -1/
3634-C Diagram 10 for nFKSprocess 1
3635- DATA MAPCONFIG_D( 1, 10)/ 10/
3636- DATA (IFOREST_D( 1, IFR, -1, 10),IFR=1,2)/ 1, 5/
3637- DATA TPRID_D( 1, -1, 10)/ 21/
3638- DATA (IFOREST_D( 1, IFR, -2, 10),IFR=1,2)/ -1, 4/
3639- DATA TPRID_D( 1, -2, 10)/ 6/
3640- DATA (IFOREST_D( 1, IFR, -3, 10),IFR=1,2)/ -2, 3/
3641-C Diagram 11 for nFKSprocess 1
3642- DATA MAPCONFIG_D( 1, 11)/ 11/
3643- DATA (IFOREST_D( 1, IFR, -1, 11),IFR=1,2)/ 1, 5/
3644- DATA TPRID_D( 1, -1, 11)/ 21/
3645- DATA (IFOREST_D( 1, IFR, -2, 11),IFR=1,2)/ -1, 3/
3646- DATA TPRID_D( 1, -2, 11)/ 6/
3647- DATA (IFOREST_D( 1, IFR, -3, 11),IFR=1,2)/ -2, 4/
3648-C Diagram 12 for nFKSprocess 1
3649- DATA MAPCONFIG_D( 1, 12)/ 12/
3650- DATA (IFOREST_D( 1, IFR, -1, 12),IFR=1,2)/ 4, 3/
3651- DATA SPROP_D( 1, -1, 12)/ 21/
3652- DATA (IFOREST_D( 1, IFR, -2, 12),IFR=1,2)/ 1, 5/
3653- DATA TPRID_D( 1, -2, 12)/ 21/
3654- DATA (IFOREST_D( 1, IFR, -3, 12),IFR=1,2)/ -2, -1/
3655-C Diagram 13 for nFKSprocess 1
3656- DATA MAPCONFIG_D( 1, 13)/ 13/
3657- DATA (IFOREST_D( 1, IFR, -1, 13),IFR=1,2)/ 5, 4/
3658- DATA SPROP_D( 1, -1, 13)/ -6/
3659- DATA (IFOREST_D( 1, IFR, -2, 13),IFR=1,2)/ 1, -1/
3660- DATA TPRID_D( 1, -2, 13)/ 6/
3661- DATA (IFOREST_D( 1, IFR, -3, 13),IFR=1,2)/ -2, 3/
3662-C Diagram 14 for nFKSprocess 1
3663- DATA MAPCONFIG_D( 1, 14)/ 14/
3664- DATA (IFOREST_D( 1, IFR, -1, 14),IFR=1,2)/ 5, 3/
3665- DATA SPROP_D( 1, -1, 14)/ 6/
3666- DATA (IFOREST_D( 1, IFR, -2, 14),IFR=1,2)/ 1, -1/
3667- DATA TPRID_D( 1, -2, 14)/ 6/
3668- DATA (IFOREST_D( 1, IFR, -3, 14),IFR=1,2)/ -2, 4/
3669-C Diagram 15 for nFKSprocess 1
3670- DATA MAPCONFIG_D( 1, 15)/ 15/
3671- DATA (IFOREST_D( 1, IFR, -1, 15),IFR=1,2)/ 4, 3/
3672- DATA SPROP_D( 1, -1, 15)/ 21/
3673- DATA (IFOREST_D( 1, IFR, -2, 15),IFR=1,2)/ 1, -1/
3674- DATA TPRID_D( 1, -2, 15)/ 21/
3675- DATA (IFOREST_D( 1, IFR, -3, 15),IFR=1,2)/ -2, 5/
3676-C Number of configs for nFKSprocess 1
3677- DATA MAPCONFIG_D( 1,0)/ 15/
3678-C
3679-C nFKSprocess 2
3680-C Diagram 1 for nFKSprocess 2
3681- DATA MAPCONFIG_D( 2, 1)/ 1/
3682- DATA (IFOREST_D( 2, IFR, -1, 1),IFR=1,2)/ 4, 3/
3683- DATA SPROP_D( 2, -1, 1)/ 21/
3684- DATA (IFOREST_D( 2, IFR, -2, 1),IFR=1,2)/ 5, -1/
3685- DATA SPROP_D( 2, -2, 1)/ 21/
3686-C Diagram 2 for nFKSprocess 2
3687- DATA MAPCONFIG_D( 2, 2)/ 2/
3688- DATA (IFOREST_D( 2, IFR, -1, 2),IFR=1,2)/ 5, 3/
3689- DATA SPROP_D( 2, -1, 2)/ 6/
3690- DATA (IFOREST_D( 2, IFR, -2, 2),IFR=1,2)/ 4, -1/
3691- DATA SPROP_D( 2, -2, 2)/ 21/
3692-C Diagram 3 for nFKSprocess 2
3693- DATA MAPCONFIG_D( 2, 3)/ 3/
3694- DATA (IFOREST_D( 2, IFR, -1, 3),IFR=1,2)/ 5, 4/
3695- DATA SPROP_D( 2, -1, 3)/ -6/
3696- DATA (IFOREST_D( 2, IFR, -2, 3),IFR=1,2)/ -1, 3/
3697- DATA SPROP_D( 2, -2, 3)/ 21/
3698-C Diagram 4 for nFKSprocess 2
3699- DATA MAPCONFIG_D( 2, 4)/ 4/
3700- DATA (IFOREST_D( 2, IFR, -1, 4),IFR=1,2)/ 1, 3/
3701- DATA TPRID_D( 2, -1, 4)/ 6/
3702- DATA (IFOREST_D( 2, IFR, -2, 4),IFR=1,2)/ -1, 5/
3703- DATA TPRID_D( 2, -2, 4)/ 6/
3704- DATA (IFOREST_D( 2, IFR, -3, 4),IFR=1,2)/ -2, 4/
3705-C Diagram 5 for nFKSprocess 2
3706- DATA MAPCONFIG_D( 2, 5)/ 5/
3707- DATA (IFOREST_D( 2, IFR, -1, 5),IFR=1,2)/ 1, 3/
3708- DATA TPRID_D( 2, -1, 5)/ 6/
3709- DATA (IFOREST_D( 2, IFR, -2, 5),IFR=1,2)/ -1, 4/
3710- DATA TPRID_D( 2, -2, 5)/ 21/
3711- DATA (IFOREST_D( 2, IFR, -3, 5),IFR=1,2)/ -2, 5/
3712-C Diagram 6 for nFKSprocess 2
3713- DATA MAPCONFIG_D( 2, 6)/ 6/
3714- DATA (IFOREST_D( 2, IFR, -1, 6),IFR=1,2)/ 5, 4/
3715- DATA SPROP_D( 2, -1, 6)/ -6/
3716- DATA (IFOREST_D( 2, IFR, -2, 6),IFR=1,2)/ 1, 3/
3717- DATA TPRID_D( 2, -2, 6)/ 6/
3718- DATA (IFOREST_D( 2, IFR, -3, 6),IFR=1,2)/ -2, -1/
3719-C Diagram 7 for nFKSprocess 2
3720- DATA MAPCONFIG_D( 2, 7)/ 7/
3721- DATA (IFOREST_D( 2, IFR, -1, 7),IFR=1,2)/ 1, 4/
3722- DATA TPRID_D( 2, -1, 7)/ 6/
3723- DATA (IFOREST_D( 2, IFR, -2, 7),IFR=1,2)/ -1, 5/
3724- DATA TPRID_D( 2, -2, 7)/ 6/
3725- DATA (IFOREST_D( 2, IFR, -3, 7),IFR=1,2)/ -2, 3/
3726-C Diagram 8 for nFKSprocess 2
3727- DATA MAPCONFIG_D( 2, 8)/ 8/
3728- DATA (IFOREST_D( 2, IFR, -1, 8),IFR=1,2)/ 1, 4/
3729- DATA TPRID_D( 2, -1, 8)/ 6/
3730- DATA (IFOREST_D( 2, IFR, -2, 8),IFR=1,2)/ -1, 3/
3731- DATA TPRID_D( 2, -2, 8)/ 21/
3732- DATA (IFOREST_D( 2, IFR, -3, 8),IFR=1,2)/ -2, 5/
3733-C Diagram 9 for nFKSprocess 2
3734- DATA MAPCONFIG_D( 2, 9)/ 9/
3735- DATA (IFOREST_D( 2, IFR, -1, 9),IFR=1,2)/ 5, 3/
3736- DATA SPROP_D( 2, -1, 9)/ 6/
3737- DATA (IFOREST_D( 2, IFR, -2, 9),IFR=1,2)/ 1, 4/
3738- DATA TPRID_D( 2, -2, 9)/ 6/
3739- DATA (IFOREST_D( 2, IFR, -3, 9),IFR=1,2)/ -2, -1/
3740-C Diagram 10 for nFKSprocess 2
3741- DATA MAPCONFIG_D( 2, 10)/ 10/
3742- DATA (IFOREST_D( 2, IFR, -1, 10),IFR=1,2)/ 1, 5/
3743- DATA TPRID_D( 2, -1, 10)/ 21/
3744- DATA (IFOREST_D( 2, IFR, -2, 10),IFR=1,2)/ -1, 4/
3745- DATA TPRID_D( 2, -2, 10)/ 6/
3746- DATA (IFOREST_D( 2, IFR, -3, 10),IFR=1,2)/ -2, 3/
3747-C Diagram 11 for nFKSprocess 2
3748- DATA MAPCONFIG_D( 2, 11)/ 11/
3749- DATA (IFOREST_D( 2, IFR, -1, 11),IFR=1,2)/ 1, 5/
3750- DATA TPRID_D( 2, -1, 11)/ 21/
3751- DATA (IFOREST_D( 2, IFR, -2, 11),IFR=1,2)/ -1, 3/
3752- DATA TPRID_D( 2, -2, 11)/ 6/
3753- DATA (IFOREST_D( 2, IFR, -3, 11),IFR=1,2)/ -2, 4/
3754-C Diagram 12 for nFKSprocess 2
3755- DATA MAPCONFIG_D( 2, 12)/ 12/
3756- DATA (IFOREST_D( 2, IFR, -1, 12),IFR=1,2)/ 4, 3/
3757- DATA SPROP_D( 2, -1, 12)/ 21/
3758- DATA (IFOREST_D( 2, IFR, -2, 12),IFR=1,2)/ 1, 5/
3759- DATA TPRID_D( 2, -2, 12)/ 21/
3760- DATA (IFOREST_D( 2, IFR, -3, 12),IFR=1,2)/ -2, -1/
3761-C Diagram 13 for nFKSprocess 2
3762- DATA MAPCONFIG_D( 2, 13)/ 13/
3763- DATA (IFOREST_D( 2, IFR, -1, 13),IFR=1,2)/ 5, 4/
3764- DATA SPROP_D( 2, -1, 13)/ -6/
3765- DATA (IFOREST_D( 2, IFR, -2, 13),IFR=1,2)/ 1, -1/
3766- DATA TPRID_D( 2, -2, 13)/ 6/
3767- DATA (IFOREST_D( 2, IFR, -3, 13),IFR=1,2)/ -2, 3/
3768-C Diagram 14 for nFKSprocess 2
3769- DATA MAPCONFIG_D( 2, 14)/ 14/
3770- DATA (IFOREST_D( 2, IFR, -1, 14),IFR=1,2)/ 5, 3/
3771- DATA SPROP_D( 2, -1, 14)/ 6/
3772- DATA (IFOREST_D( 2, IFR, -2, 14),IFR=1,2)/ 1, -1/
3773- DATA TPRID_D( 2, -2, 14)/ 6/
3774- DATA (IFOREST_D( 2, IFR, -3, 14),IFR=1,2)/ -2, 4/
3775-C Diagram 15 for nFKSprocess 2
3776- DATA MAPCONFIG_D( 2, 15)/ 15/
3777- DATA (IFOREST_D( 2, IFR, -1, 15),IFR=1,2)/ 4, 3/
3778- DATA SPROP_D( 2, -1, 15)/ 21/
3779- DATA (IFOREST_D( 2, IFR, -2, 15),IFR=1,2)/ 1, -1/
3780- DATA TPRID_D( 2, -2, 15)/ 21/
3781- DATA (IFOREST_D( 2, IFR, -3, 15),IFR=1,2)/ -2, 5/
3782-C Number of configs for nFKSprocess 2
3783- DATA MAPCONFIG_D( 2,0)/ 15/
3784-C
3785-C nFKSprocess 3
3786-C Diagram 1 for nFKSprocess 3
3787- DATA MAPCONFIG_D( 3, 1)/ 1/
3788- DATA (IFOREST_D( 3, IFR, -1, 1),IFR=1,2)/ 4, 3/
3789- DATA SPROP_D( 3, -1, 1)/ 21/
3790- DATA (IFOREST_D( 3, IFR, -2, 1),IFR=1,2)/ 5, -1/
3791- DATA SPROP_D( 3, -2, 1)/ 21/
3792-C Diagram 2 for nFKSprocess 3
3793- DATA MAPCONFIG_D( 3, 2)/ 2/
3794- DATA (IFOREST_D( 3, IFR, -1, 2),IFR=1,2)/ 5, 3/
3795- DATA SPROP_D( 3, -1, 2)/ 6/
3796- DATA (IFOREST_D( 3, IFR, -2, 2),IFR=1,2)/ 4, -1/
3797- DATA SPROP_D( 3, -2, 2)/ 21/
3798-C Diagram 3 for nFKSprocess 3
3799- DATA MAPCONFIG_D( 3, 3)/ 3/
3800- DATA (IFOREST_D( 3, IFR, -1, 3),IFR=1,2)/ 5, 4/
3801- DATA SPROP_D( 3, -1, 3)/ -6/
3802- DATA (IFOREST_D( 3, IFR, -2, 3),IFR=1,2)/ -1, 3/
3803- DATA SPROP_D( 3, -2, 3)/ 21/
3804-C Diagram 4 for nFKSprocess 3
3805- DATA MAPCONFIG_D( 3, 4)/ 4/
3806- DATA (IFOREST_D( 3, IFR, -1, 4),IFR=1,2)/ 1, 3/
3807- DATA TPRID_D( 3, -1, 4)/ 6/
3808- DATA (IFOREST_D( 3, IFR, -2, 4),IFR=1,2)/ -1, 5/
3809- DATA TPRID_D( 3, -2, 4)/ 6/
3810- DATA (IFOREST_D( 3, IFR, -3, 4),IFR=1,2)/ -2, 4/
3811-C Diagram 5 for nFKSprocess 3
3812- DATA MAPCONFIG_D( 3, 5)/ 5/
3813- DATA (IFOREST_D( 3, IFR, -1, 5),IFR=1,2)/ 1, 3/
3814- DATA TPRID_D( 3, -1, 5)/ 6/
3815- DATA (IFOREST_D( 3, IFR, -2, 5),IFR=1,2)/ -1, 4/
3816- DATA TPRID_D( 3, -2, 5)/ 21/
3817- DATA (IFOREST_D( 3, IFR, -3, 5),IFR=1,2)/ -2, 5/
3818-C Diagram 6 for nFKSprocess 3
3819- DATA MAPCONFIG_D( 3, 6)/ 6/
3820- DATA (IFOREST_D( 3, IFR, -1, 6),IFR=1,2)/ 5, 4/
3821- DATA SPROP_D( 3, -1, 6)/ -6/
3822- DATA (IFOREST_D( 3, IFR, -2, 6),IFR=1,2)/ 1, 3/
3823- DATA TPRID_D( 3, -2, 6)/ 6/
3824- DATA (IFOREST_D( 3, IFR, -3, 6),IFR=1,2)/ -2, -1/
3825-C Diagram 7 for nFKSprocess 3
3826- DATA MAPCONFIG_D( 3, 7)/ 7/
3827- DATA (IFOREST_D( 3, IFR, -1, 7),IFR=1,2)/ 1, 4/
3828- DATA TPRID_D( 3, -1, 7)/ 6/
3829- DATA (IFOREST_D( 3, IFR, -2, 7),IFR=1,2)/ -1, 5/
3830- DATA TPRID_D( 3, -2, 7)/ 6/
3831- DATA (IFOREST_D( 3, IFR, -3, 7),IFR=1,2)/ -2, 3/
3832-C Diagram 8 for nFKSprocess 3
3833- DATA MAPCONFIG_D( 3, 8)/ 8/
3834- DATA (IFOREST_D( 3, IFR, -1, 8),IFR=1,2)/ 1, 4/
3835- DATA TPRID_D( 3, -1, 8)/ 6/
3836- DATA (IFOREST_D( 3, IFR, -2, 8),IFR=1,2)/ -1, 3/
3837- DATA TPRID_D( 3, -2, 8)/ 21/
3838- DATA (IFOREST_D( 3, IFR, -3, 8),IFR=1,2)/ -2, 5/
3839-C Diagram 9 for nFKSprocess 3
3840- DATA MAPCONFIG_D( 3, 9)/ 9/
3841- DATA (IFOREST_D( 3, IFR, -1, 9),IFR=1,2)/ 5, 3/
3842- DATA SPROP_D( 3, -1, 9)/ 6/
3843- DATA (IFOREST_D( 3, IFR, -2, 9),IFR=1,2)/ 1, 4/
3844- DATA TPRID_D( 3, -2, 9)/ 6/
3845- DATA (IFOREST_D( 3, IFR, -3, 9),IFR=1,2)/ -2, -1/
3846-C Diagram 10 for nFKSprocess 3
3847- DATA MAPCONFIG_D( 3, 10)/ 10/
3848- DATA (IFOREST_D( 3, IFR, -1, 10),IFR=1,2)/ 1, 5/
3849- DATA TPRID_D( 3, -1, 10)/ 21/
3850- DATA (IFOREST_D( 3, IFR, -2, 10),IFR=1,2)/ -1, 4/
3851- DATA TPRID_D( 3, -2, 10)/ 6/
3852- DATA (IFOREST_D( 3, IFR, -3, 10),IFR=1,2)/ -2, 3/
3853-C Diagram 11 for nFKSprocess 3
3854- DATA MAPCONFIG_D( 3, 11)/ 11/
3855- DATA (IFOREST_D( 3, IFR, -1, 11),IFR=1,2)/ 1, 5/
3856- DATA TPRID_D( 3, -1, 11)/ 21/
3857- DATA (IFOREST_D( 3, IFR, -2, 11),IFR=1,2)/ -1, 3/
3858- DATA TPRID_D( 3, -2, 11)/ 6/
3859- DATA (IFOREST_D( 3, IFR, -3, 11),IFR=1,2)/ -2, 4/
3860-C Diagram 12 for nFKSprocess 3
3861- DATA MAPCONFIG_D( 3, 12)/ 12/
3862- DATA (IFOREST_D( 3, IFR, -1, 12),IFR=1,2)/ 4, 3/
3863- DATA SPROP_D( 3, -1, 12)/ 21/
3864- DATA (IFOREST_D( 3, IFR, -2, 12),IFR=1,2)/ 1, 5/
3865- DATA TPRID_D( 3, -2, 12)/ 21/
3866- DATA (IFOREST_D( 3, IFR, -3, 12),IFR=1,2)/ -2, -1/
3867-C Diagram 13 for nFKSprocess 3
3868- DATA MAPCONFIG_D( 3, 13)/ 13/
3869- DATA (IFOREST_D( 3, IFR, -1, 13),IFR=1,2)/ 5, 4/
3870- DATA SPROP_D( 3, -1, 13)/ -6/
3871- DATA (IFOREST_D( 3, IFR, -2, 13),IFR=1,2)/ 1, -1/
3872- DATA TPRID_D( 3, -2, 13)/ 6/
3873- DATA (IFOREST_D( 3, IFR, -3, 13),IFR=1,2)/ -2, 3/
3874-C Diagram 14 for nFKSprocess 3
3875- DATA MAPCONFIG_D( 3, 14)/ 14/
3876- DATA (IFOREST_D( 3, IFR, -1, 14),IFR=1,2)/ 5, 3/
3877- DATA SPROP_D( 3, -1, 14)/ 6/
3878- DATA (IFOREST_D( 3, IFR, -2, 14),IFR=1,2)/ 1, -1/
3879- DATA TPRID_D( 3, -2, 14)/ 6/
3880- DATA (IFOREST_D( 3, IFR, -3, 14),IFR=1,2)/ -2, 4/
3881-C Diagram 15 for nFKSprocess 3
3882- DATA MAPCONFIG_D( 3, 15)/ 15/
3883- DATA (IFOREST_D( 3, IFR, -1, 15),IFR=1,2)/ 4, 3/
3884- DATA SPROP_D( 3, -1, 15)/ 21/
3885- DATA (IFOREST_D( 3, IFR, -2, 15),IFR=1,2)/ 1, -1/
3886- DATA TPRID_D( 3, -2, 15)/ 21/
3887- DATA (IFOREST_D( 3, IFR, -3, 15),IFR=1,2)/ -2, 5/
3888-C Number of configs for nFKSprocess 3
3889- DATA MAPCONFIG_D( 3,0)/ 15/
3890-C
3891-C nFKSprocess 4
3892-C Diagram 1 for nFKSprocess 4
3893- DATA MAPCONFIG_D( 4, 1)/ 1/
3894- DATA (IFOREST_D( 4, IFR, -1, 1),IFR=1,2)/ 4, 3/
3895- DATA SPROP_D( 4, -1, 1)/ 21/
3896- DATA (IFOREST_D( 4, IFR, -2, 1),IFR=1,2)/ 5, -1/
3897- DATA SPROP_D( 4, -2, 1)/ 21/
3898-C Diagram 2 for nFKSprocess 4
3899- DATA MAPCONFIG_D( 4, 2)/ 2/
3900- DATA (IFOREST_D( 4, IFR, -1, 2),IFR=1,2)/ 5, 3/
3901- DATA SPROP_D( 4, -1, 2)/ 6/
3902- DATA (IFOREST_D( 4, IFR, -2, 2),IFR=1,2)/ 4, -1/
3903- DATA SPROP_D( 4, -2, 2)/ 21/
3904-C Diagram 3 for nFKSprocess 4
3905- DATA MAPCONFIG_D( 4, 3)/ 3/
3906- DATA (IFOREST_D( 4, IFR, -1, 3),IFR=1,2)/ 5, 4/
3907- DATA SPROP_D( 4, -1, 3)/ -6/
3908- DATA (IFOREST_D( 4, IFR, -2, 3),IFR=1,2)/ -1, 3/
3909- DATA SPROP_D( 4, -2, 3)/ 21/
3910-C Diagram 4 for nFKSprocess 4
3911- DATA MAPCONFIG_D( 4, 4)/ 4/
3912- DATA (IFOREST_D( 4, IFR, -1, 4),IFR=1,2)/ 1, 3/
3913- DATA TPRID_D( 4, -1, 4)/ 6/
3914- DATA (IFOREST_D( 4, IFR, -2, 4),IFR=1,2)/ -1, 5/
3915- DATA TPRID_D( 4, -2, 4)/ 6/
3916- DATA (IFOREST_D( 4, IFR, -3, 4),IFR=1,2)/ -2, 4/
3917-C Diagram 5 for nFKSprocess 4
3918- DATA MAPCONFIG_D( 4, 5)/ 5/
3919- DATA (IFOREST_D( 4, IFR, -1, 5),IFR=1,2)/ 1, 3/
3920- DATA TPRID_D( 4, -1, 5)/ 6/
3921- DATA (IFOREST_D( 4, IFR, -2, 5),IFR=1,2)/ -1, 4/
3922- DATA TPRID_D( 4, -2, 5)/ 21/
3923- DATA (IFOREST_D( 4, IFR, -3, 5),IFR=1,2)/ -2, 5/
3924-C Diagram 6 for nFKSprocess 4
3925- DATA MAPCONFIG_D( 4, 6)/ 6/
3926- DATA (IFOREST_D( 4, IFR, -1, 6),IFR=1,2)/ 5, 4/
3927- DATA SPROP_D( 4, -1, 6)/ -6/
3928- DATA (IFOREST_D( 4, IFR, -2, 6),IFR=1,2)/ 1, 3/
3929- DATA TPRID_D( 4, -2, 6)/ 6/
3930- DATA (IFOREST_D( 4, IFR, -3, 6),IFR=1,2)/ -2, -1/
3931-C Diagram 7 for nFKSprocess 4
3932- DATA MAPCONFIG_D( 4, 7)/ 7/
3933- DATA (IFOREST_D( 4, IFR, -1, 7),IFR=1,2)/ 1, 4/
3934- DATA TPRID_D( 4, -1, 7)/ 6/
3935- DATA (IFOREST_D( 4, IFR, -2, 7),IFR=1,2)/ -1, 5/
3936- DATA TPRID_D( 4, -2, 7)/ 6/
3937- DATA (IFOREST_D( 4, IFR, -3, 7),IFR=1,2)/ -2, 3/
3938-C Diagram 8 for nFKSprocess 4
3939- DATA MAPCONFIG_D( 4, 8)/ 8/
3940- DATA (IFOREST_D( 4, IFR, -1, 8),IFR=1,2)/ 1, 4/
3941- DATA TPRID_D( 4, -1, 8)/ 6/
3942- DATA (IFOREST_D( 4, IFR, -2, 8),IFR=1,2)/ -1, 3/
3943- DATA TPRID_D( 4, -2, 8)/ 21/
3944- DATA (IFOREST_D( 4, IFR, -3, 8),IFR=1,2)/ -2, 5/
3945-C Diagram 9 for nFKSprocess 4
3946- DATA MAPCONFIG_D( 4, 9)/ 9/
3947- DATA (IFOREST_D( 4, IFR, -1, 9),IFR=1,2)/ 5, 3/
3948- DATA SPROP_D( 4, -1, 9)/ 6/
3949- DATA (IFOREST_D( 4, IFR, -2, 9),IFR=1,2)/ 1, 4/
3950- DATA TPRID_D( 4, -2, 9)/ 6/
3951- DATA (IFOREST_D( 4, IFR, -3, 9),IFR=1,2)/ -2, -1/
3952-C Diagram 10 for nFKSprocess 4
3953- DATA MAPCONFIG_D( 4, 10)/ 10/
3954- DATA (IFOREST_D( 4, IFR, -1, 10),IFR=1,2)/ 1, 5/
3955- DATA TPRID_D( 4, -1, 10)/ 21/
3956- DATA (IFOREST_D( 4, IFR, -2, 10),IFR=1,2)/ -1, 4/
3957- DATA TPRID_D( 4, -2, 10)/ 6/
3958- DATA (IFOREST_D( 4, IFR, -3, 10),IFR=1,2)/ -2, 3/
3959-C Diagram 11 for nFKSprocess 4
3960- DATA MAPCONFIG_D( 4, 11)/ 11/
3961- DATA (IFOREST_D( 4, IFR, -1, 11),IFR=1,2)/ 1, 5/
3962- DATA TPRID_D( 4, -1, 11)/ 21/
3963- DATA (IFOREST_D( 4, IFR, -2, 11),IFR=1,2)/ -1, 3/
3964- DATA TPRID_D( 4, -2, 11)/ 6/
3965- DATA (IFOREST_D( 4, IFR, -3, 11),IFR=1,2)/ -2, 4/
3966-C Diagram 12 for nFKSprocess 4
3967- DATA MAPCONFIG_D( 4, 12)/ 12/
3968- DATA (IFOREST_D( 4, IFR, -1, 12),IFR=1,2)/ 4, 3/
3969- DATA SPROP_D( 4, -1, 12)/ 21/
3970- DATA (IFOREST_D( 4, IFR, -2, 12),IFR=1,2)/ 1, 5/
3971- DATA TPRID_D( 4, -2, 12)/ 21/
3972- DATA (IFOREST_D( 4, IFR, -3, 12),IFR=1,2)/ -2, -1/
3973-C Diagram 13 for nFKSprocess 4
3974- DATA MAPCONFIG_D( 4, 13)/ 13/
3975- DATA (IFOREST_D( 4, IFR, -1, 13),IFR=1,2)/ 5, 4/
3976- DATA SPROP_D( 4, -1, 13)/ -6/
3977- DATA (IFOREST_D( 4, IFR, -2, 13),IFR=1,2)/ 1, -1/
3978- DATA TPRID_D( 4, -2, 13)/ 6/
3979- DATA (IFOREST_D( 4, IFR, -3, 13),IFR=1,2)/ -2, 3/
3980-C Diagram 14 for nFKSprocess 4
3981- DATA MAPCONFIG_D( 4, 14)/ 14/
3982- DATA (IFOREST_D( 4, IFR, -1, 14),IFR=1,2)/ 5, 3/
3983- DATA SPROP_D( 4, -1, 14)/ 6/
3984- DATA (IFOREST_D( 4, IFR, -2, 14),IFR=1,2)/ 1, -1/
3985- DATA TPRID_D( 4, -2, 14)/ 6/
3986- DATA (IFOREST_D( 4, IFR, -3, 14),IFR=1,2)/ -2, 4/
3987-C Diagram 15 for nFKSprocess 4
3988- DATA MAPCONFIG_D( 4, 15)/ 15/
3989- DATA (IFOREST_D( 4, IFR, -1, 15),IFR=1,2)/ 4, 3/
3990- DATA SPROP_D( 4, -1, 15)/ 21/
3991- DATA (IFOREST_D( 4, IFR, -2, 15),IFR=1,2)/ 1, -1/
3992- DATA TPRID_D( 4, -2, 15)/ 21/
3993- DATA (IFOREST_D( 4, IFR, -3, 15),IFR=1,2)/ -2, 5/
3994-C Number of configs for nFKSprocess 4
3995- DATA MAPCONFIG_D( 4,0)/ 15/
3996-C
3997-C nFKSprocess 5
3998-C Diagram 1 for nFKSprocess 5
3999- DATA MAPCONFIG_D( 5, 1)/ 1/
4000- DATA (IFOREST_D( 5, IFR, -1, 1),IFR=1,2)/ 4, 3/
4001- DATA SPROP_D( 5, -1, 1)/ 21/
4002- DATA (IFOREST_D( 5, IFR, -2, 1),IFR=1,2)/ 5, -1/
4003- DATA SPROP_D( 5, -2, 1)/ -1/
4004-C Diagram 2 for nFKSprocess 5
4005- DATA MAPCONFIG_D( 5, 2)/ 2/
4006- DATA (IFOREST_D( 5, IFR, -1, 2),IFR=1,2)/ 1, 5/
4007- DATA TPRID_D( 5, -1, 2)/ 21/
4008- DATA (IFOREST_D( 5, IFR, -2, 2),IFR=1,2)/ -1, 4/
4009- DATA TPRID_D( 5, -2, 2)/ 6/
4010- DATA (IFOREST_D( 5, IFR, -3, 2),IFR=1,2)/ -2, 3/
4011-C Diagram 3 for nFKSprocess 5
4012- DATA MAPCONFIG_D( 5, 3)/ 3/
4013- DATA (IFOREST_D( 5, IFR, -1, 3),IFR=1,2)/ 1, 5/
4014- DATA TPRID_D( 5, -1, 3)/ 21/
4015- DATA (IFOREST_D( 5, IFR, -2, 3),IFR=1,2)/ -1, 3/
4016- DATA TPRID_D( 5, -2, 3)/ 6/
4017- DATA (IFOREST_D( 5, IFR, -3, 3),IFR=1,2)/ -2, 4/
4018-C Diagram 4 for nFKSprocess 5
4019- DATA MAPCONFIG_D( 5, 4)/ 4/
4020- DATA (IFOREST_D( 5, IFR, -1, 4),IFR=1,2)/ 4, 3/
4021- DATA SPROP_D( 5, -1, 4)/ 21/
4022- DATA (IFOREST_D( 5, IFR, -2, 4),IFR=1,2)/ 1, 5/
4023- DATA TPRID_D( 5, -2, 4)/ 21/
4024- DATA (IFOREST_D( 5, IFR, -3, 4),IFR=1,2)/ -2, -1/
4025-C Diagram 5 for nFKSprocess 5
4026- DATA MAPCONFIG_D( 5, 5)/ 5/
4027- DATA (IFOREST_D( 5, IFR, -1, 5),IFR=1,2)/ 4, 3/
4028- DATA SPROP_D( 5, -1, 5)/ 21/
4029- DATA (IFOREST_D( 5, IFR, -2, 5),IFR=1,2)/ 1, -1/
4030- DATA TPRID_D( 5, -2, 5)/ 1/
4031- DATA (IFOREST_D( 5, IFR, -3, 5),IFR=1,2)/ -2, 5/
4032-C Number of configs for nFKSprocess 5
4033- DATA MAPCONFIG_D( 5,0)/ 5/
4034-C
4035-C nFKSprocess 6
4036-C Diagram 1 for nFKSprocess 6
4037- DATA MAPCONFIG_D( 6, 1)/ 1/
4038- DATA (IFOREST_D( 6, IFR, -1, 1),IFR=1,2)/ 4, 3/
4039- DATA SPROP_D( 6, -1, 1)/ 21/
4040- DATA (IFOREST_D( 6, IFR, -2, 1),IFR=1,2)/ 5, -1/
4041- DATA SPROP_D( 6, -2, 1)/ 1/
4042-C Diagram 2 for nFKSprocess 6
4043- DATA MAPCONFIG_D( 6, 2)/ 2/
4044- DATA (IFOREST_D( 6, IFR, -1, 2),IFR=1,2)/ 1, 5/
4045- DATA TPRID_D( 6, -1, 2)/ 21/
4046- DATA (IFOREST_D( 6, IFR, -2, 2),IFR=1,2)/ -1, 4/
4047- DATA TPRID_D( 6, -2, 2)/ 6/
4048- DATA (IFOREST_D( 6, IFR, -3, 2),IFR=1,2)/ -2, 3/
4049-C Diagram 3 for nFKSprocess 6
4050- DATA MAPCONFIG_D( 6, 3)/ 3/
4051- DATA (IFOREST_D( 6, IFR, -1, 3),IFR=1,2)/ 1, 5/
4052- DATA TPRID_D( 6, -1, 3)/ 21/
4053- DATA (IFOREST_D( 6, IFR, -2, 3),IFR=1,2)/ -1, 3/
4054- DATA TPRID_D( 6, -2, 3)/ 6/
4055- DATA (IFOREST_D( 6, IFR, -3, 3),IFR=1,2)/ -2, 4/
4056-C Diagram 4 for nFKSprocess 6
4057- DATA MAPCONFIG_D( 6, 4)/ 4/
4058- DATA (IFOREST_D( 6, IFR, -1, 4),IFR=1,2)/ 4, 3/
4059- DATA SPROP_D( 6, -1, 4)/ 21/
4060- DATA (IFOREST_D( 6, IFR, -2, 4),IFR=1,2)/ 1, 5/
4061- DATA TPRID_D( 6, -2, 4)/ 21/
4062- DATA (IFOREST_D( 6, IFR, -3, 4),IFR=1,2)/ -2, -1/
4063-C Diagram 5 for nFKSprocess 6
4064- DATA MAPCONFIG_D( 6, 5)/ 5/
4065- DATA (IFOREST_D( 6, IFR, -1, 5),IFR=1,2)/ 4, 3/
4066- DATA SPROP_D( 6, -1, 5)/ 21/
4067- DATA (IFOREST_D( 6, IFR, -2, 5),IFR=1,2)/ 1, -1/
4068- DATA TPRID_D( 6, -2, 5)/ 1/
4069- DATA (IFOREST_D( 6, IFR, -3, 5),IFR=1,2)/ -2, 5/
4070-C Number of configs for nFKSprocess 6
4071- DATA MAPCONFIG_D( 6,0)/ 5/
4072-C
4073-C nFKSprocess 7
4074-C Diagram 1 for nFKSprocess 7
4075- DATA MAPCONFIG_D( 7, 1)/ 1/
4076- DATA (IFOREST_D( 7, IFR, -1, 1),IFR=1,2)/ 4, 3/
4077- DATA SPROP_D( 7, -1, 1)/ 21/
4078- DATA (IFOREST_D( 7, IFR, -2, 1),IFR=1,2)/ 5, -1/
4079- DATA SPROP_D( 7, -2, 1)/ -1/
4080-C Diagram 2 for nFKSprocess 7
4081- DATA MAPCONFIG_D( 7, 2)/ 2/
4082- DATA (IFOREST_D( 7, IFR, -1, 2),IFR=1,2)/ 1, 3/
4083- DATA TPRID_D( 7, -1, 2)/ 6/
4084- DATA (IFOREST_D( 7, IFR, -2, 2),IFR=1,2)/ -1, 4/
4085- DATA TPRID_D( 7, -2, 2)/ 21/
4086- DATA (IFOREST_D( 7, IFR, -3, 2),IFR=1,2)/ -2, 5/
4087-C Diagram 3 for nFKSprocess 7
4088- DATA MAPCONFIG_D( 7, 3)/ 3/
4089- DATA (IFOREST_D( 7, IFR, -1, 3),IFR=1,2)/ 1, 4/
4090- DATA TPRID_D( 7, -1, 3)/ 6/
4091- DATA (IFOREST_D( 7, IFR, -2, 3),IFR=1,2)/ -1, 3/
4092- DATA TPRID_D( 7, -2, 3)/ 21/
4093- DATA (IFOREST_D( 7, IFR, -3, 3),IFR=1,2)/ -2, 5/
4094-C Diagram 4 for nFKSprocess 7
4095- DATA MAPCONFIG_D( 7, 4)/ 4/
4096- DATA (IFOREST_D( 7, IFR, -1, 4),IFR=1,2)/ 4, 3/
4097- DATA SPROP_D( 7, -1, 4)/ 21/
4098- DATA (IFOREST_D( 7, IFR, -2, 4),IFR=1,2)/ 1, 5/
4099- DATA TPRID_D( 7, -2, 4)/ 1/
4100- DATA (IFOREST_D( 7, IFR, -3, 4),IFR=1,2)/ -2, -1/
4101-C Diagram 5 for nFKSprocess 7
4102- DATA MAPCONFIG_D( 7, 5)/ 5/
4103- DATA (IFOREST_D( 7, IFR, -1, 5),IFR=1,2)/ 4, 3/
4104- DATA SPROP_D( 7, -1, 5)/ 21/
4105- DATA (IFOREST_D( 7, IFR, -2, 5),IFR=1,2)/ 1, -1/
4106- DATA TPRID_D( 7, -2, 5)/ 21/
4107- DATA (IFOREST_D( 7, IFR, -3, 5),IFR=1,2)/ -2, 5/
4108-C Number of configs for nFKSprocess 7
4109- DATA MAPCONFIG_D( 7,0)/ 5/
4110-C
4111-C nFKSprocess 8
4112-C Diagram 1 for nFKSprocess 8
4113- DATA MAPCONFIG_D( 8, 1)/ 1/
4114- DATA (IFOREST_D( 8, IFR, -1, 1),IFR=1,2)/ 4, 3/
4115- DATA SPROP_D( 8, -1, 1)/ 21/
4116- DATA (IFOREST_D( 8, IFR, -2, 1),IFR=1,2)/ 5, -1/
4117- DATA SPROP_D( 8, -2, 1)/ 1/
4118-C Diagram 2 for nFKSprocess 8
4119- DATA MAPCONFIG_D( 8, 2)/ 2/
4120- DATA (IFOREST_D( 8, IFR, -1, 2),IFR=1,2)/ 1, 3/
4121- DATA TPRID_D( 8, -1, 2)/ 6/
4122- DATA (IFOREST_D( 8, IFR, -2, 2),IFR=1,2)/ -1, 4/
4123- DATA TPRID_D( 8, -2, 2)/ 21/
4124- DATA (IFOREST_D( 8, IFR, -3, 2),IFR=1,2)/ -2, 5/
4125-C Diagram 3 for nFKSprocess 8
4126- DATA MAPCONFIG_D( 8, 3)/ 3/
4127- DATA (IFOREST_D( 8, IFR, -1, 3),IFR=1,2)/ 1, 4/
4128- DATA TPRID_D( 8, -1, 3)/ 6/
4129- DATA (IFOREST_D( 8, IFR, -2, 3),IFR=1,2)/ -1, 3/
4130- DATA TPRID_D( 8, -2, 3)/ 21/
4131- DATA (IFOREST_D( 8, IFR, -3, 3),IFR=1,2)/ -2, 5/
4132-C Diagram 4 for nFKSprocess 8
4133- DATA MAPCONFIG_D( 8, 4)/ 4/
4134- DATA (IFOREST_D( 8, IFR, -1, 4),IFR=1,2)/ 4, 3/
4135- DATA SPROP_D( 8, -1, 4)/ 21/
4136- DATA (IFOREST_D( 8, IFR, -2, 4),IFR=1,2)/ 1, 5/
4137- DATA TPRID_D( 8, -2, 4)/ 1/
4138- DATA (IFOREST_D( 8, IFR, -3, 4),IFR=1,2)/ -2, -1/
4139-C Diagram 5 for nFKSprocess 8
4140- DATA MAPCONFIG_D( 8, 5)/ 5/
4141- DATA (IFOREST_D( 8, IFR, -1, 5),IFR=1,2)/ 4, 3/
4142- DATA SPROP_D( 8, -1, 5)/ 21/
4143- DATA (IFOREST_D( 8, IFR, -2, 5),IFR=1,2)/ 1, -1/
4144- DATA TPRID_D( 8, -2, 5)/ 21/
4145- DATA (IFOREST_D( 8, IFR, -3, 5),IFR=1,2)/ -2, 5/
4146-C Number of configs for nFKSprocess 8
4147- DATA MAPCONFIG_D( 8,0)/ 5/
4148-C
4149-C
4150- PMASS_D ( 1, -1, 1) = ZERO
4151- PWIDTH_D( 1, -1, 1) = ZERO
4152- POW_D ( 1, -1, 1) = 2
4153- PMASS_D ( 1, -2, 1) = ZERO
4154- PWIDTH_D( 1, -2, 1) = ZERO
4155- POW_D ( 1, -2, 1) = 2
4156- PMASS_D ( 1, -1, 2) = ABS(MDL_MT)
4157- PWIDTH_D( 1, -1, 2) = ABS(MDL_WT)
4158- POW_D ( 1, -1, 2) = 1
4159- PMASS_D ( 1, -2, 2) = ZERO
4160- PWIDTH_D( 1, -2, 2) = ZERO
4161- POW_D ( 1, -2, 2) = 2
4162- PMASS_D ( 1, -1, 3) = ABS(MDL_MT)
4163- PWIDTH_D( 1, -1, 3) = ABS(MDL_WT)
4164- POW_D ( 1, -1, 3) = 1
4165- PMASS_D ( 1, -2, 3) = ZERO
4166- PWIDTH_D( 1, -2, 3) = ZERO
4167- POW_D ( 1, -2, 3) = 2
4168- PMASS_D ( 1, -1, 4) = ABS(MDL_MT)
4169- PWIDTH_D( 1, -1, 4) = ABS(MDL_WT)
4170- POW_D ( 1, -1, 4) = 1
4171- PMASS_D ( 1, -2, 4) = ABS(MDL_MT)
4172- PWIDTH_D( 1, -2, 4) = ABS(MDL_WT)
4173- POW_D ( 1, -2, 4) = 1
4174- PMASS_D ( 1, -1, 5) = ABS(MDL_MT)
4175- PWIDTH_D( 1, -1, 5) = ABS(MDL_WT)
4176- POW_D ( 1, -1, 5) = 1
4177- PMASS_D ( 1, -2, 5) = ZERO
4178- PWIDTH_D( 1, -2, 5) = ZERO
4179- POW_D ( 1, -2, 5) = 2
4180- PMASS_D ( 1, -1, 6) = ABS(MDL_MT)
4181- PWIDTH_D( 1, -1, 6) = ABS(MDL_WT)
4182- POW_D ( 1, -1, 6) = 1
4183- PMASS_D ( 1, -2, 6) = ABS(MDL_MT)
4184- PWIDTH_D( 1, -2, 6) = ABS(MDL_WT)
4185- POW_D ( 1, -2, 6) = 1
4186- PMASS_D ( 1, -1, 7) = ABS(MDL_MT)
4187- PWIDTH_D( 1, -1, 7) = ABS(MDL_WT)
4188- POW_D ( 1, -1, 7) = 1
4189- PMASS_D ( 1, -2, 7) = ABS(MDL_MT)
4190- PWIDTH_D( 1, -2, 7) = ABS(MDL_WT)
4191- POW_D ( 1, -2, 7) = 1
4192- PMASS_D ( 1, -1, 8) = ABS(MDL_MT)
4193- PWIDTH_D( 1, -1, 8) = ABS(MDL_WT)
4194- POW_D ( 1, -1, 8) = 1
4195- PMASS_D ( 1, -2, 8) = ZERO
4196- PWIDTH_D( 1, -2, 8) = ZERO
4197- POW_D ( 1, -2, 8) = 2
4198- PMASS_D ( 1, -1, 9) = ABS(MDL_MT)
4199- PWIDTH_D( 1, -1, 9) = ABS(MDL_WT)
4200- POW_D ( 1, -1, 9) = 1
4201- PMASS_D ( 1, -2, 9) = ABS(MDL_MT)
4202- PWIDTH_D( 1, -2, 9) = ABS(MDL_WT)
4203- POW_D ( 1, -2, 9) = 1
4204- PMASS_D ( 1, -1, 10) = ZERO
4205- PWIDTH_D( 1, -1, 10) = ZERO
4206- POW_D ( 1, -1, 10) = 2
4207- PMASS_D ( 1, -2, 10) = ABS(MDL_MT)
4208- PWIDTH_D( 1, -2, 10) = ABS(MDL_WT)
4209- POW_D ( 1, -2, 10) = 1
4210- PMASS_D ( 1, -1, 11) = ZERO
4211- PWIDTH_D( 1, -1, 11) = ZERO
4212- POW_D ( 1, -1, 11) = 2
4213- PMASS_D ( 1, -2, 11) = ABS(MDL_MT)
4214- PWIDTH_D( 1, -2, 11) = ABS(MDL_WT)
4215- POW_D ( 1, -2, 11) = 1
4216- PMASS_D ( 1, -1, 12) = ZERO
4217- PWIDTH_D( 1, -1, 12) = ZERO
4218- POW_D ( 1, -1, 12) = 2
4219- PMASS_D ( 1, -2, 12) = ZERO
4220- PWIDTH_D( 1, -2, 12) = ZERO
4221- POW_D ( 1, -2, 12) = 2
4222- PMASS_D ( 1, -1, 13) = ABS(MDL_MT)
4223- PWIDTH_D( 1, -1, 13) = ABS(MDL_WT)
4224- POW_D ( 1, -1, 13) = 1
4225- PMASS_D ( 1, -2, 13) = ABS(MDL_MT)
4226- PWIDTH_D( 1, -2, 13) = ABS(MDL_WT)
4227- POW_D ( 1, -2, 13) = 1
4228- PMASS_D ( 1, -1, 14) = ABS(MDL_MT)
4229- PWIDTH_D( 1, -1, 14) = ABS(MDL_WT)
4230- POW_D ( 1, -1, 14) = 1
4231- PMASS_D ( 1, -2, 14) = ABS(MDL_MT)
4232- PWIDTH_D( 1, -2, 14) = ABS(MDL_WT)
4233- POW_D ( 1, -2, 14) = 1
4234- PMASS_D ( 1, -1, 15) = ZERO
4235- PWIDTH_D( 1, -1, 15) = ZERO
4236- POW_D ( 1, -1, 15) = 2
4237- PMASS_D ( 1, -2, 15) = ZERO
4238- PWIDTH_D( 1, -2, 15) = ZERO
4239- POW_D ( 1, -2, 15) = 2
4240-C
4241- PMASS_D ( 2, -1, 1) = ZERO
4242- PWIDTH_D( 2, -1, 1) = ZERO
4243- POW_D ( 2, -1, 1) = 2
4244- PMASS_D ( 2, -2, 1) = ZERO
4245- PWIDTH_D( 2, -2, 1) = ZERO
4246- POW_D ( 2, -2, 1) = 2
4247- PMASS_D ( 2, -1, 2) = ABS(MDL_MT)
4248- PWIDTH_D( 2, -1, 2) = ABS(MDL_WT)
4249- POW_D ( 2, -1, 2) = 1
4250- PMASS_D ( 2, -2, 2) = ZERO
4251- PWIDTH_D( 2, -2, 2) = ZERO
4252- POW_D ( 2, -2, 2) = 2
4253- PMASS_D ( 2, -1, 3) = ABS(MDL_MT)
4254- PWIDTH_D( 2, -1, 3) = ABS(MDL_WT)
4255- POW_D ( 2, -1, 3) = 1
4256- PMASS_D ( 2, -2, 3) = ZERO
4257- PWIDTH_D( 2, -2, 3) = ZERO
4258- POW_D ( 2, -2, 3) = 2
4259- PMASS_D ( 2, -1, 4) = ABS(MDL_MT)
4260- PWIDTH_D( 2, -1, 4) = ABS(MDL_WT)
4261- POW_D ( 2, -1, 4) = 1
4262- PMASS_D ( 2, -2, 4) = ABS(MDL_MT)
4263- PWIDTH_D( 2, -2, 4) = ABS(MDL_WT)
4264- POW_D ( 2, -2, 4) = 1
4265- PMASS_D ( 2, -1, 5) = ABS(MDL_MT)
4266- PWIDTH_D( 2, -1, 5) = ABS(MDL_WT)
4267- POW_D ( 2, -1, 5) = 1
4268- PMASS_D ( 2, -2, 5) = ZERO
4269- PWIDTH_D( 2, -2, 5) = ZERO
4270- POW_D ( 2, -2, 5) = 2
4271- PMASS_D ( 2, -1, 6) = ABS(MDL_MT)
4272- PWIDTH_D( 2, -1, 6) = ABS(MDL_WT)
4273- POW_D ( 2, -1, 6) = 1
4274- PMASS_D ( 2, -2, 6) = ABS(MDL_MT)
4275- PWIDTH_D( 2, -2, 6) = ABS(MDL_WT)
4276- POW_D ( 2, -2, 6) = 1
4277- PMASS_D ( 2, -1, 7) = ABS(MDL_MT)
4278- PWIDTH_D( 2, -1, 7) = ABS(MDL_WT)
4279- POW_D ( 2, -1, 7) = 1
4280- PMASS_D ( 2, -2, 7) = ABS(MDL_MT)
4281- PWIDTH_D( 2, -2, 7) = ABS(MDL_WT)
4282- POW_D ( 2, -2, 7) = 1
4283- PMASS_D ( 2, -1, 8) = ABS(MDL_MT)
4284- PWIDTH_D( 2, -1, 8) = ABS(MDL_WT)
4285- POW_D ( 2, -1, 8) = 1
4286- PMASS_D ( 2, -2, 8) = ZERO
4287- PWIDTH_D( 2, -2, 8) = ZERO
4288- POW_D ( 2, -2, 8) = 2
4289- PMASS_D ( 2, -1, 9) = ABS(MDL_MT)
4290- PWIDTH_D( 2, -1, 9) = ABS(MDL_WT)
4291- POW_D ( 2, -1, 9) = 1
4292- PMASS_D ( 2, -2, 9) = ABS(MDL_MT)
4293- PWIDTH_D( 2, -2, 9) = ABS(MDL_WT)
4294- POW_D ( 2, -2, 9) = 1
4295- PMASS_D ( 2, -1, 10) = ZERO
4296- PWIDTH_D( 2, -1, 10) = ZERO
4297- POW_D ( 2, -1, 10) = 2
4298- PMASS_D ( 2, -2, 10) = ABS(MDL_MT)
4299- PWIDTH_D( 2, -2, 10) = ABS(MDL_WT)
4300- POW_D ( 2, -2, 10) = 1
4301- PMASS_D ( 2, -1, 11) = ZERO
4302- PWIDTH_D( 2, -1, 11) = ZERO
4303- POW_D ( 2, -1, 11) = 2
4304- PMASS_D ( 2, -2, 11) = ABS(MDL_MT)
4305- PWIDTH_D( 2, -2, 11) = ABS(MDL_WT)
4306- POW_D ( 2, -2, 11) = 1
4307- PMASS_D ( 2, -1, 12) = ZERO
4308- PWIDTH_D( 2, -1, 12) = ZERO
4309- POW_D ( 2, -1, 12) = 2
4310- PMASS_D ( 2, -2, 12) = ZERO
4311- PWIDTH_D( 2, -2, 12) = ZERO
4312- POW_D ( 2, -2, 12) = 2
4313- PMASS_D ( 2, -1, 13) = ABS(MDL_MT)
4314- PWIDTH_D( 2, -1, 13) = ABS(MDL_WT)
4315- POW_D ( 2, -1, 13) = 1
4316- PMASS_D ( 2, -2, 13) = ABS(MDL_MT)
4317- PWIDTH_D( 2, -2, 13) = ABS(MDL_WT)
4318- POW_D ( 2, -2, 13) = 1
4319- PMASS_D ( 2, -1, 14) = ABS(MDL_MT)
4320- PWIDTH_D( 2, -1, 14) = ABS(MDL_WT)
4321- POW_D ( 2, -1, 14) = 1
4322- PMASS_D ( 2, -2, 14) = ABS(MDL_MT)
4323- PWIDTH_D( 2, -2, 14) = ABS(MDL_WT)
4324- POW_D ( 2, -2, 14) = 1
4325- PMASS_D ( 2, -1, 15) = ZERO
4326- PWIDTH_D( 2, -1, 15) = ZERO
4327- POW_D ( 2, -1, 15) = 2
4328- PMASS_D ( 2, -2, 15) = ZERO
4329- PWIDTH_D( 2, -2, 15) = ZERO
4330- POW_D ( 2, -2, 15) = 2
4331-C
4332- PMASS_D ( 3, -1, 1) = ZERO
4333- PWIDTH_D( 3, -1, 1) = ZERO
4334- POW_D ( 3, -1, 1) = 2
4335- PMASS_D ( 3, -2, 1) = ZERO
4336- PWIDTH_D( 3, -2, 1) = ZERO
4337- POW_D ( 3, -2, 1) = 2
4338- PMASS_D ( 3, -1, 2) = ABS(MDL_MT)
4339- PWIDTH_D( 3, -1, 2) = ABS(MDL_WT)
4340- POW_D ( 3, -1, 2) = 1
4341- PMASS_D ( 3, -2, 2) = ZERO
4342- PWIDTH_D( 3, -2, 2) = ZERO
4343- POW_D ( 3, -2, 2) = 2
4344- PMASS_D ( 3, -1, 3) = ABS(MDL_MT)
4345- PWIDTH_D( 3, -1, 3) = ABS(MDL_WT)
4346- POW_D ( 3, -1, 3) = 1
4347- PMASS_D ( 3, -2, 3) = ZERO
4348- PWIDTH_D( 3, -2, 3) = ZERO
4349- POW_D ( 3, -2, 3) = 2
4350- PMASS_D ( 3, -1, 4) = ABS(MDL_MT)
4351- PWIDTH_D( 3, -1, 4) = ABS(MDL_WT)
4352- POW_D ( 3, -1, 4) = 1
4353- PMASS_D ( 3, -2, 4) = ABS(MDL_MT)
4354- PWIDTH_D( 3, -2, 4) = ABS(MDL_WT)
4355- POW_D ( 3, -2, 4) = 1
4356- PMASS_D ( 3, -1, 5) = ABS(MDL_MT)
4357- PWIDTH_D( 3, -1, 5) = ABS(MDL_WT)
4358- POW_D ( 3, -1, 5) = 1
4359- PMASS_D ( 3, -2, 5) = ZERO
4360- PWIDTH_D( 3, -2, 5) = ZERO
4361- POW_D ( 3, -2, 5) = 2
4362- PMASS_D ( 3, -1, 6) = ABS(MDL_MT)
4363- PWIDTH_D( 3, -1, 6) = ABS(MDL_WT)
4364- POW_D ( 3, -1, 6) = 1
4365- PMASS_D ( 3, -2, 6) = ABS(MDL_MT)
4366- PWIDTH_D( 3, -2, 6) = ABS(MDL_WT)
4367- POW_D ( 3, -2, 6) = 1
4368- PMASS_D ( 3, -1, 7) = ABS(MDL_MT)
4369- PWIDTH_D( 3, -1, 7) = ABS(MDL_WT)
4370- POW_D ( 3, -1, 7) = 1
4371- PMASS_D ( 3, -2, 7) = ABS(MDL_MT)
4372- PWIDTH_D( 3, -2, 7) = ABS(MDL_WT)
4373- POW_D ( 3, -2, 7) = 1
4374- PMASS_D ( 3, -1, 8) = ABS(MDL_MT)
4375- PWIDTH_D( 3, -1, 8) = ABS(MDL_WT)
4376- POW_D ( 3, -1, 8) = 1
4377- PMASS_D ( 3, -2, 8) = ZERO
4378- PWIDTH_D( 3, -2, 8) = ZERO
4379- POW_D ( 3, -2, 8) = 2
4380- PMASS_D ( 3, -1, 9) = ABS(MDL_MT)
4381- PWIDTH_D( 3, -1, 9) = ABS(MDL_WT)
4382- POW_D ( 3, -1, 9) = 1
4383- PMASS_D ( 3, -2, 9) = ABS(MDL_MT)
4384- PWIDTH_D( 3, -2, 9) = ABS(MDL_WT)
4385- POW_D ( 3, -2, 9) = 1
4386- PMASS_D ( 3, -1, 10) = ZERO
4387- PWIDTH_D( 3, -1, 10) = ZERO
4388- POW_D ( 3, -1, 10) = 2
4389- PMASS_D ( 3, -2, 10) = ABS(MDL_MT)
4390- PWIDTH_D( 3, -2, 10) = ABS(MDL_WT)
4391- POW_D ( 3, -2, 10) = 1
4392- PMASS_D ( 3, -1, 11) = ZERO
4393- PWIDTH_D( 3, -1, 11) = ZERO
4394- POW_D ( 3, -1, 11) = 2
4395- PMASS_D ( 3, -2, 11) = ABS(MDL_MT)
4396- PWIDTH_D( 3, -2, 11) = ABS(MDL_WT)
4397- POW_D ( 3, -2, 11) = 1
4398- PMASS_D ( 3, -1, 12) = ZERO
4399- PWIDTH_D( 3, -1, 12) = ZERO
4400- POW_D ( 3, -1, 12) = 2
4401- PMASS_D ( 3, -2, 12) = ZERO
4402- PWIDTH_D( 3, -2, 12) = ZERO
4403- POW_D ( 3, -2, 12) = 2
4404- PMASS_D ( 3, -1, 13) = ABS(MDL_MT)
4405- PWIDTH_D( 3, -1, 13) = ABS(MDL_WT)
4406- POW_D ( 3, -1, 13) = 1
4407- PMASS_D ( 3, -2, 13) = ABS(MDL_MT)
4408- PWIDTH_D( 3, -2, 13) = ABS(MDL_WT)
4409- POW_D ( 3, -2, 13) = 1
4410- PMASS_D ( 3, -1, 14) = ABS(MDL_MT)
4411- PWIDTH_D( 3, -1, 14) = ABS(MDL_WT)
4412- POW_D ( 3, -1, 14) = 1
4413- PMASS_D ( 3, -2, 14) = ABS(MDL_MT)
4414- PWIDTH_D( 3, -2, 14) = ABS(MDL_WT)
4415- POW_D ( 3, -2, 14) = 1
4416- PMASS_D ( 3, -1, 15) = ZERO
4417- PWIDTH_D( 3, -1, 15) = ZERO
4418- POW_D ( 3, -1, 15) = 2
4419- PMASS_D ( 3, -2, 15) = ZERO
4420- PWIDTH_D( 3, -2, 15) = ZERO
4421- POW_D ( 3, -2, 15) = 2
4422-C
4423- PMASS_D ( 4, -1, 1) = ZERO
4424- PWIDTH_D( 4, -1, 1) = ZERO
4425- POW_D ( 4, -1, 1) = 2
4426- PMASS_D ( 4, -2, 1) = ZERO
4427- PWIDTH_D( 4, -2, 1) = ZERO
4428- POW_D ( 4, -2, 1) = 2
4429- PMASS_D ( 4, -1, 2) = ABS(MDL_MT)
4430- PWIDTH_D( 4, -1, 2) = ABS(MDL_WT)
4431- POW_D ( 4, -1, 2) = 1
4432- PMASS_D ( 4, -2, 2) = ZERO
4433- PWIDTH_D( 4, -2, 2) = ZERO
4434- POW_D ( 4, -2, 2) = 2
4435- PMASS_D ( 4, -1, 3) = ABS(MDL_MT)
4436- PWIDTH_D( 4, -1, 3) = ABS(MDL_WT)
4437- POW_D ( 4, -1, 3) = 1
4438- PMASS_D ( 4, -2, 3) = ZERO
4439- PWIDTH_D( 4, -2, 3) = ZERO
4440- POW_D ( 4, -2, 3) = 2
4441- PMASS_D ( 4, -1, 4) = ABS(MDL_MT)
4442- PWIDTH_D( 4, -1, 4) = ABS(MDL_WT)
4443- POW_D ( 4, -1, 4) = 1
4444- PMASS_D ( 4, -2, 4) = ABS(MDL_MT)
4445- PWIDTH_D( 4, -2, 4) = ABS(MDL_WT)
4446- POW_D ( 4, -2, 4) = 1
4447- PMASS_D ( 4, -1, 5) = ABS(MDL_MT)
4448- PWIDTH_D( 4, -1, 5) = ABS(MDL_WT)
4449- POW_D ( 4, -1, 5) = 1
4450- PMASS_D ( 4, -2, 5) = ZERO
4451- PWIDTH_D( 4, -2, 5) = ZERO
4452- POW_D ( 4, -2, 5) = 2
4453- PMASS_D ( 4, -1, 6) = ABS(MDL_MT)
4454- PWIDTH_D( 4, -1, 6) = ABS(MDL_WT)
4455- POW_D ( 4, -1, 6) = 1
4456- PMASS_D ( 4, -2, 6) = ABS(MDL_MT)
4457- PWIDTH_D( 4, -2, 6) = ABS(MDL_WT)
4458- POW_D ( 4, -2, 6) = 1
4459- PMASS_D ( 4, -1, 7) = ABS(MDL_MT)
4460- PWIDTH_D( 4, -1, 7) = ABS(MDL_WT)
4461- POW_D ( 4, -1, 7) = 1
4462- PMASS_D ( 4, -2, 7) = ABS(MDL_MT)
4463- PWIDTH_D( 4, -2, 7) = ABS(MDL_WT)
4464- POW_D ( 4, -2, 7) = 1
4465- PMASS_D ( 4, -1, 8) = ABS(MDL_MT)
4466- PWIDTH_D( 4, -1, 8) = ABS(MDL_WT)
4467- POW_D ( 4, -1, 8) = 1
4468- PMASS_D ( 4, -2, 8) = ZERO
4469- PWIDTH_D( 4, -2, 8) = ZERO
4470- POW_D ( 4, -2, 8) = 2
4471- PMASS_D ( 4, -1, 9) = ABS(MDL_MT)
4472- PWIDTH_D( 4, -1, 9) = ABS(MDL_WT)
4473- POW_D ( 4, -1, 9) = 1
4474- PMASS_D ( 4, -2, 9) = ABS(MDL_MT)
4475- PWIDTH_D( 4, -2, 9) = ABS(MDL_WT)
4476- POW_D ( 4, -2, 9) = 1
4477- PMASS_D ( 4, -1, 10) = ZERO
4478- PWIDTH_D( 4, -1, 10) = ZERO
4479- POW_D ( 4, -1, 10) = 2
4480- PMASS_D ( 4, -2, 10) = ABS(MDL_MT)
4481- PWIDTH_D( 4, -2, 10) = ABS(MDL_WT)
4482- POW_D ( 4, -2, 10) = 1
4483- PMASS_D ( 4, -1, 11) = ZERO
4484- PWIDTH_D( 4, -1, 11) = ZERO
4485- POW_D ( 4, -1, 11) = 2
4486- PMASS_D ( 4, -2, 11) = ABS(MDL_MT)
4487- PWIDTH_D( 4, -2, 11) = ABS(MDL_WT)
4488- POW_D ( 4, -2, 11) = 1
4489- PMASS_D ( 4, -1, 12) = ZERO
4490- PWIDTH_D( 4, -1, 12) = ZERO
4491- POW_D ( 4, -1, 12) = 2
4492- PMASS_D ( 4, -2, 12) = ZERO
4493- PWIDTH_D( 4, -2, 12) = ZERO
4494- POW_D ( 4, -2, 12) = 2
4495- PMASS_D ( 4, -1, 13) = ABS(MDL_MT)
4496- PWIDTH_D( 4, -1, 13) = ABS(MDL_WT)
4497- POW_D ( 4, -1, 13) = 1
4498- PMASS_D ( 4, -2, 13) = ABS(MDL_MT)
4499- PWIDTH_D( 4, -2, 13) = ABS(MDL_WT)
4500- POW_D ( 4, -2, 13) = 1
4501- PMASS_D ( 4, -1, 14) = ABS(MDL_MT)
4502- PWIDTH_D( 4, -1, 14) = ABS(MDL_WT)
4503- POW_D ( 4, -1, 14) = 1
4504- PMASS_D ( 4, -2, 14) = ABS(MDL_MT)
4505- PWIDTH_D( 4, -2, 14) = ABS(MDL_WT)
4506- POW_D ( 4, -2, 14) = 1
4507- PMASS_D ( 4, -1, 15) = ZERO
4508- PWIDTH_D( 4, -1, 15) = ZERO
4509- POW_D ( 4, -1, 15) = 2
4510- PMASS_D ( 4, -2, 15) = ZERO
4511- PWIDTH_D( 4, -2, 15) = ZERO
4512- POW_D ( 4, -2, 15) = 2
4513-C
4514- PMASS_D ( 5, -1, 1) = ZERO
4515- PWIDTH_D( 5, -1, 1) = ZERO
4516- POW_D ( 5, -1, 1) = 2
4517- PMASS_D ( 5, -2, 1) = ZERO
4518- PWIDTH_D( 5, -2, 1) = ZERO
4519- POW_D ( 5, -2, 1) = 1
4520- PMASS_D ( 5, -1, 2) = ZERO
4521- PWIDTH_D( 5, -1, 2) = ZERO
4522- POW_D ( 5, -1, 2) = 2
4523- PMASS_D ( 5, -2, 2) = ABS(MDL_MT)
4524- PWIDTH_D( 5, -2, 2) = ABS(MDL_WT)
4525- POW_D ( 5, -2, 2) = 1
4526- PMASS_D ( 5, -1, 3) = ZERO
4527- PWIDTH_D( 5, -1, 3) = ZERO
4528- POW_D ( 5, -1, 3) = 2
4529- PMASS_D ( 5, -2, 3) = ABS(MDL_MT)
4530- PWIDTH_D( 5, -2, 3) = ABS(MDL_WT)
4531- POW_D ( 5, -2, 3) = 1
4532- PMASS_D ( 5, -1, 4) = ZERO
4533- PWIDTH_D( 5, -1, 4) = ZERO
4534- POW_D ( 5, -1, 4) = 2
4535- PMASS_D ( 5, -2, 4) = ZERO
4536- PWIDTH_D( 5, -2, 4) = ZERO
4537- POW_D ( 5, -2, 4) = 2
4538- PMASS_D ( 5, -1, 5) = ZERO
4539- PWIDTH_D( 5, -1, 5) = ZERO
4540- POW_D ( 5, -1, 5) = 2
4541- PMASS_D ( 5, -2, 5) = ZERO
4542- PWIDTH_D( 5, -2, 5) = ZERO
4543- POW_D ( 5, -2, 5) = 1
4544-C
4545- PMASS_D ( 6, -1, 1) = ZERO
4546- PWIDTH_D( 6, -1, 1) = ZERO
4547- POW_D ( 6, -1, 1) = 2
4548- PMASS_D ( 6, -2, 1) = ZERO
4549- PWIDTH_D( 6, -2, 1) = ZERO
4550- POW_D ( 6, -2, 1) = 1
4551- PMASS_D ( 6, -1, 2) = ZERO
4552- PWIDTH_D( 6, -1, 2) = ZERO
4553- POW_D ( 6, -1, 2) = 2
4554- PMASS_D ( 6, -2, 2) = ABS(MDL_MT)
4555- PWIDTH_D( 6, -2, 2) = ABS(MDL_WT)
4556- POW_D ( 6, -2, 2) = 1
4557- PMASS_D ( 6, -1, 3) = ZERO
4558- PWIDTH_D( 6, -1, 3) = ZERO
4559- POW_D ( 6, -1, 3) = 2
4560- PMASS_D ( 6, -2, 3) = ABS(MDL_MT)
4561- PWIDTH_D( 6, -2, 3) = ABS(MDL_WT)
4562- POW_D ( 6, -2, 3) = 1
4563- PMASS_D ( 6, -1, 4) = ZERO
4564- PWIDTH_D( 6, -1, 4) = ZERO
4565- POW_D ( 6, -1, 4) = 2
4566- PMASS_D ( 6, -2, 4) = ZERO
4567- PWIDTH_D( 6, -2, 4) = ZERO
4568- POW_D ( 6, -2, 4) = 2
4569- PMASS_D ( 6, -1, 5) = ZERO
4570- PWIDTH_D( 6, -1, 5) = ZERO
4571- POW_D ( 6, -1, 5) = 2
4572- PMASS_D ( 6, -2, 5) = ZERO
4573- PWIDTH_D( 6, -2, 5) = ZERO
4574- POW_D ( 6, -2, 5) = 1
4575-C
4576- PMASS_D ( 7, -1, 1) = ZERO
4577- PWIDTH_D( 7, -1, 1) = ZERO
4578- POW_D ( 7, -1, 1) = 2
4579- PMASS_D ( 7, -2, 1) = ZERO
4580- PWIDTH_D( 7, -2, 1) = ZERO
4581- POW_D ( 7, -2, 1) = 1
4582- PMASS_D ( 7, -1, 2) = ABS(MDL_MT)
4583- PWIDTH_D( 7, -1, 2) = ABS(MDL_WT)
4584- POW_D ( 7, -1, 2) = 1
4585- PMASS_D ( 7, -2, 2) = ZERO
4586- PWIDTH_D( 7, -2, 2) = ZERO
4587- POW_D ( 7, -2, 2) = 2
4588- PMASS_D ( 7, -1, 3) = ABS(MDL_MT)
4589- PWIDTH_D( 7, -1, 3) = ABS(MDL_WT)
4590- POW_D ( 7, -1, 3) = 1
4591- PMASS_D ( 7, -2, 3) = ZERO
4592- PWIDTH_D( 7, -2, 3) = ZERO
4593- POW_D ( 7, -2, 3) = 2
4594- PMASS_D ( 7, -1, 4) = ZERO
4595- PWIDTH_D( 7, -1, 4) = ZERO
4596- POW_D ( 7, -1, 4) = 2
4597- PMASS_D ( 7, -2, 4) = ZERO
4598- PWIDTH_D( 7, -2, 4) = ZERO
4599- POW_D ( 7, -2, 4) = 1
4600- PMASS_D ( 7, -1, 5) = ZERO
4601- PWIDTH_D( 7, -1, 5) = ZERO
4602- POW_D ( 7, -1, 5) = 2
4603- PMASS_D ( 7, -2, 5) = ZERO
4604- PWIDTH_D( 7, -2, 5) = ZERO
4605- POW_D ( 7, -2, 5) = 2
4606-C
4607- PMASS_D ( 8, -1, 1) = ZERO
4608- PWIDTH_D( 8, -1, 1) = ZERO
4609- POW_D ( 8, -1, 1) = 2
4610- PMASS_D ( 8, -2, 1) = ZERO
4611- PWIDTH_D( 8, -2, 1) = ZERO
4612- POW_D ( 8, -2, 1) = 1
4613- PMASS_D ( 8, -1, 2) = ABS(MDL_MT)
4614- PWIDTH_D( 8, -1, 2) = ABS(MDL_WT)
4615- POW_D ( 8, -1, 2) = 1
4616- PMASS_D ( 8, -2, 2) = ZERO
4617- PWIDTH_D( 8, -2, 2) = ZERO
4618- POW_D ( 8, -2, 2) = 2
4619- PMASS_D ( 8, -1, 3) = ABS(MDL_MT)
4620- PWIDTH_D( 8, -1, 3) = ABS(MDL_WT)
4621- POW_D ( 8, -1, 3) = 1
4622- PMASS_D ( 8, -2, 3) = ZERO
4623- PWIDTH_D( 8, -2, 3) = ZERO
4624- POW_D ( 8, -2, 3) = 2
4625- PMASS_D ( 8, -1, 4) = ZERO
4626- PWIDTH_D( 8, -1, 4) = ZERO
4627- POW_D ( 8, -1, 4) = 2
4628- PMASS_D ( 8, -2, 4) = ZERO
4629- PWIDTH_D( 8, -2, 4) = ZERO
4630- POW_D ( 8, -2, 4) = 1
4631- PMASS_D ( 8, -1, 5) = ZERO
4632- PWIDTH_D( 8, -1, 5) = ZERO
4633- POW_D ( 8, -1, 5) = 2
4634- PMASS_D ( 8, -2, 5) = ZERO
4635- PWIDTH_D( 8, -2, 5) = ZERO
4636- POW_D ( 8, -2, 5) = 2
4637
4638=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_decl.inc'
4639--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_decl.inc 1970-01-01 00:00:00 +0000
4640+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_decl.inc 2014-11-06 06:25:51 +0000
4641@@ -0,0 +1,6 @@
4642+ INTEGER MAXPROC_USED, MAXFLOW_USED
4643+ PARAMETER (MAXPROC_USED = 4)
4644+ PARAMETER (MAXFLOW_USED = 6)
4645+ INTEGER IDUP_D(8,5,MAXPROC_USED)
4646+ INTEGER MOTHUP_D(8,2,5,MAXPROC_USED)
4647+ INTEGER ICOLUP_D(8,2,5,MAXFLOW_USED)
4648
4649=== removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_info.inc'
4650--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_info.inc 2014-03-19 08:01:45 +0000
4651+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%leshouche_info.inc 1970-01-01 00:00:00 +0000
4652@@ -1,156 +0,0 @@
4653- INTEGER MAXPROC_USED, MAXFLOW_USED
4654- PARAMETER (MAXPROC_USED = 4)
4655- PARAMETER (MAXFLOW_USED = 6)
4656- INTEGER IDUP_D(8,5,MAXPROC_USED)
4657- INTEGER MOTHUP_D(8,2,5,MAXPROC_USED)
4658- INTEGER ICOLUP_D(8,2,5,MAXFLOW_USED)
4659- INTEGER ILH
4660-
4661- DATA (IDUP_D(1,ILH,1),ILH=1,5)/21,21,6,-6,21/
4662- DATA (MOTHUP_D(1,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4663- DATA (MOTHUP_D(1,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4664- DATA (ICOLUP_D(1,1,ILH, 1),ILH=1, 5)/501,502,501, 0,504/
4665- DATA (ICOLUP_D(1,2,ILH, 1),ILH=1, 5)/502,503, 0,504,503/
4666- DATA (ICOLUP_D(1,1,ILH, 2),ILH=1, 5)/501,504,501, 0,504/
4667- DATA (ICOLUP_D(1,2,ILH, 2),ILH=1, 5)/502,503, 0,503,502/
4668- DATA (ICOLUP_D(1,1,ILH, 3),ILH=1, 5)/503,501,501, 0,504/
4669- DATA (ICOLUP_D(1,2,ILH, 3),ILH=1, 5)/502,503, 0,504,502/
4670- DATA (ICOLUP_D(1,1,ILH, 4),ILH=1, 5)/504,501,501, 0,504/
4671- DATA (ICOLUP_D(1,2,ILH, 4),ILH=1, 5)/502,503, 0,502,503/
4672- DATA (ICOLUP_D(1,1,ILH, 5),ILH=1, 5)/504,502,501, 0,504/
4673- DATA (ICOLUP_D(1,2,ILH, 5),ILH=1, 5)/502,503, 0,503,501/
4674- DATA (ICOLUP_D(1,1,ILH, 6),ILH=1, 5)/503,504,501, 0,504/
4675- DATA (ICOLUP_D(1,2,ILH, 6),ILH=1, 5)/502,503, 0,502,501/
4676-
4677- DATA (IDUP_D(2,ILH,1),ILH=1,5)/21,21,6,-6,21/
4678- DATA (MOTHUP_D(2,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4679- DATA (MOTHUP_D(2,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4680- DATA (ICOLUP_D(2,1,ILH, 1),ILH=1, 5)/501,502,501, 0,504/
4681- DATA (ICOLUP_D(2,2,ILH, 1),ILH=1, 5)/502,503, 0,504,503/
4682- DATA (ICOLUP_D(2,1,ILH, 2),ILH=1, 5)/501,504,501, 0,504/
4683- DATA (ICOLUP_D(2,2,ILH, 2),ILH=1, 5)/502,503, 0,503,502/
4684- DATA (ICOLUP_D(2,1,ILH, 3),ILH=1, 5)/503,501,501, 0,504/
4685- DATA (ICOLUP_D(2,2,ILH, 3),ILH=1, 5)/502,503, 0,504,502/
4686- DATA (ICOLUP_D(2,1,ILH, 4),ILH=1, 5)/504,501,501, 0,504/
4687- DATA (ICOLUP_D(2,2,ILH, 4),ILH=1, 5)/502,503, 0,502,503/
4688- DATA (ICOLUP_D(2,1,ILH, 5),ILH=1, 5)/504,502,501, 0,504/
4689- DATA (ICOLUP_D(2,2,ILH, 5),ILH=1, 5)/502,503, 0,503,501/
4690- DATA (ICOLUP_D(2,1,ILH, 6),ILH=1, 5)/503,504,501, 0,504/
4691- DATA (ICOLUP_D(2,2,ILH, 6),ILH=1, 5)/502,503, 0,502,501/
4692-
4693- DATA (IDUP_D(3,ILH,1),ILH=1,5)/21,21,6,-6,21/
4694- DATA (MOTHUP_D(3,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4695- DATA (MOTHUP_D(3,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4696- DATA (ICOLUP_D(3,1,ILH, 1),ILH=1, 5)/501,502,501, 0,504/
4697- DATA (ICOLUP_D(3,2,ILH, 1),ILH=1, 5)/502,503, 0,504,503/
4698- DATA (ICOLUP_D(3,1,ILH, 2),ILH=1, 5)/501,504,501, 0,504/
4699- DATA (ICOLUP_D(3,2,ILH, 2),ILH=1, 5)/502,503, 0,503,502/
4700- DATA (ICOLUP_D(3,1,ILH, 3),ILH=1, 5)/503,501,501, 0,504/
4701- DATA (ICOLUP_D(3,2,ILH, 3),ILH=1, 5)/502,503, 0,504,502/
4702- DATA (ICOLUP_D(3,1,ILH, 4),ILH=1, 5)/504,501,501, 0,504/
4703- DATA (ICOLUP_D(3,2,ILH, 4),ILH=1, 5)/502,503, 0,502,503/
4704- DATA (ICOLUP_D(3,1,ILH, 5),ILH=1, 5)/504,502,501, 0,504/
4705- DATA (ICOLUP_D(3,2,ILH, 5),ILH=1, 5)/502,503, 0,503,501/
4706- DATA (ICOLUP_D(3,1,ILH, 6),ILH=1, 5)/503,504,501, 0,504/
4707- DATA (ICOLUP_D(3,2,ILH, 6),ILH=1, 5)/502,503, 0,502,501/
4708-
4709- DATA (IDUP_D(4,ILH,1),ILH=1,5)/21,21,6,-6,21/
4710- DATA (MOTHUP_D(4,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4711- DATA (MOTHUP_D(4,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4712- DATA (ICOLUP_D(4,1,ILH, 1),ILH=1, 5)/501,502,501, 0,504/
4713- DATA (ICOLUP_D(4,2,ILH, 1),ILH=1, 5)/502,503, 0,504,503/
4714- DATA (ICOLUP_D(4,1,ILH, 2),ILH=1, 5)/501,504,501, 0,504/
4715- DATA (ICOLUP_D(4,2,ILH, 2),ILH=1, 5)/502,503, 0,503,502/
4716- DATA (ICOLUP_D(4,1,ILH, 3),ILH=1, 5)/503,501,501, 0,504/
4717- DATA (ICOLUP_D(4,2,ILH, 3),ILH=1, 5)/502,503, 0,504,502/
4718- DATA (ICOLUP_D(4,1,ILH, 4),ILH=1, 5)/504,501,501, 0,504/
4719- DATA (ICOLUP_D(4,2,ILH, 4),ILH=1, 5)/502,503, 0,502,503/
4720- DATA (ICOLUP_D(4,1,ILH, 5),ILH=1, 5)/504,502,501, 0,504/
4721- DATA (ICOLUP_D(4,2,ILH, 5),ILH=1, 5)/502,503, 0,503,501/
4722- DATA (ICOLUP_D(4,1,ILH, 6),ILH=1, 5)/503,504,501, 0,504/
4723- DATA (ICOLUP_D(4,2,ILH, 6),ILH=1, 5)/502,503, 0,502,501/
4724-
4725- DATA (IDUP_D(5,ILH,1),ILH=1,5)/-1,21,6,-6,-1/
4726- DATA (MOTHUP_D(5,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4727- DATA (MOTHUP_D(5,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4728- DATA (ICOLUP_D(5,1,ILH, 1),ILH=1, 5)/ 0,502,502, 0, 0/
4729- DATA (ICOLUP_D(5,2,ILH, 1),ILH=1, 5)/501,503, 0,501,503/
4730- DATA (ICOLUP_D(5,1,ILH, 2),ILH=1, 5)/ 0,502,502, 0, 0/
4731- DATA (ICOLUP_D(5,2,ILH, 2),ILH=1, 5)/501,503, 0,503,501/
4732- DATA (ICOLUP_D(5,1,ILH, 3),ILH=1, 5)/ 0,501,502, 0, 0/
4733- DATA (ICOLUP_D(5,2,ILH, 3),ILH=1, 5)/501,503, 0,503,502/
4734- DATA (ICOLUP_D(5,1,ILH, 4),ILH=1, 5)/ 0,501,502, 0, 0/
4735- DATA (ICOLUP_D(5,2,ILH, 4),ILH=1, 5)/501,503, 0,502,503/
4736- DATA (IDUP_D(5,ILH,2),ILH=1,5)/-3,21,6,-6,-3/
4737- DATA (MOTHUP_D(5,1,ILH, 2),ILH=1, 5)/ 0, 0, 1, 1, 1/
4738- DATA (MOTHUP_D(5,2,ILH, 2),ILH=1, 5)/ 0, 0, 2, 2, 2/
4739- DATA (IDUP_D(5,ILH,3),ILH=1,5)/-2,21,6,-6,-2/
4740- DATA (MOTHUP_D(5,1,ILH, 3),ILH=1, 5)/ 0, 0, 1, 1, 1/
4741- DATA (MOTHUP_D(5,2,ILH, 3),ILH=1, 5)/ 0, 0, 2, 2, 2/
4742- DATA (IDUP_D(5,ILH,4),ILH=1,5)/-4,21,6,-6,-4/
4743- DATA (MOTHUP_D(5,1,ILH, 4),ILH=1, 5)/ 0, 0, 1, 1, 1/
4744- DATA (MOTHUP_D(5,2,ILH, 4),ILH=1, 5)/ 0, 0, 2, 2, 2/
4745-
4746- DATA (IDUP_D(6,ILH,1),ILH=1,5)/1,21,6,-6,1/
4747- DATA (MOTHUP_D(6,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4748- DATA (MOTHUP_D(6,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4749- DATA (ICOLUP_D(6,1,ILH, 1),ILH=1, 5)/503,501,501, 0,502/
4750- DATA (ICOLUP_D(6,2,ILH, 1),ILH=1, 5)/ 0,503, 0,502, 0/
4751- DATA (ICOLUP_D(6,1,ILH, 2),ILH=1, 5)/502,501,501, 0,502/
4752- DATA (ICOLUP_D(6,2,ILH, 2),ILH=1, 5)/ 0,503, 0,503, 0/
4753- DATA (ICOLUP_D(6,1,ILH, 3),ILH=1, 5)/503,502,501, 0,502/
4754- DATA (ICOLUP_D(6,2,ILH, 3),ILH=1, 5)/ 0,503, 0,501, 0/
4755- DATA (ICOLUP_D(6,1,ILH, 4),ILH=1, 5)/501,502,501, 0,502/
4756- DATA (ICOLUP_D(6,2,ILH, 4),ILH=1, 5)/ 0,503, 0,503, 0/
4757- DATA (IDUP_D(6,ILH,2),ILH=1,5)/3,21,6,-6,3/
4758- DATA (MOTHUP_D(6,1,ILH, 2),ILH=1, 5)/ 0, 0, 1, 1, 1/
4759- DATA (MOTHUP_D(6,2,ILH, 2),ILH=1, 5)/ 0, 0, 2, 2, 2/
4760- DATA (IDUP_D(6,ILH,3),ILH=1,5)/2,21,6,-6,2/
4761- DATA (MOTHUP_D(6,1,ILH, 3),ILH=1, 5)/ 0, 0, 1, 1, 1/
4762- DATA (MOTHUP_D(6,2,ILH, 3),ILH=1, 5)/ 0, 0, 2, 2, 2/
4763- DATA (IDUP_D(6,ILH,4),ILH=1,5)/4,21,6,-6,4/
4764- DATA (MOTHUP_D(6,1,ILH, 4),ILH=1, 5)/ 0, 0, 1, 1, 1/
4765- DATA (MOTHUP_D(6,2,ILH, 4),ILH=1, 5)/ 0, 0, 2, 2, 2/
4766-
4767- DATA (IDUP_D(7,ILH,1),ILH=1,5)/21,-1,6,-6,-1/
4768- DATA (MOTHUP_D(7,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4769- DATA (MOTHUP_D(7,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4770- DATA (ICOLUP_D(7,1,ILH, 1),ILH=1, 5)/501, 0,502, 0, 0/
4771- DATA (ICOLUP_D(7,2,ILH, 1),ILH=1, 5)/503,501, 0,503,502/
4772- DATA (ICOLUP_D(7,1,ILH, 2),ILH=1, 5)/501, 0,502, 0, 0/
4773- DATA (ICOLUP_D(7,2,ILH, 2),ILH=1, 5)/503,501, 0,502,503/
4774- DATA (ICOLUP_D(7,1,ILH, 3),ILH=1, 5)/502, 0,502, 0, 0/
4775- DATA (ICOLUP_D(7,2,ILH, 3),ILH=1, 5)/503,501, 0,503,501/
4776- DATA (ICOLUP_D(7,1,ILH, 4),ILH=1, 5)/502, 0,502, 0, 0/
4777- DATA (ICOLUP_D(7,2,ILH, 4),ILH=1, 5)/503,501, 0,501,503/
4778- DATA (IDUP_D(7,ILH,2),ILH=1,5)/21,-3,6,-6,-3/
4779- DATA (MOTHUP_D(7,1,ILH, 2),ILH=1, 5)/ 0, 0, 1, 1, 1/
4780- DATA (MOTHUP_D(7,2,ILH, 2),ILH=1, 5)/ 0, 0, 2, 2, 2/
4781- DATA (IDUP_D(7,ILH,3),ILH=1,5)/21,-2,6,-6,-2/
4782- DATA (MOTHUP_D(7,1,ILH, 3),ILH=1, 5)/ 0, 0, 1, 1, 1/
4783- DATA (MOTHUP_D(7,2,ILH, 3),ILH=1, 5)/ 0, 0, 2, 2, 2/
4784- DATA (IDUP_D(7,ILH,4),ILH=1,5)/21,-4,6,-6,-4/
4785- DATA (MOTHUP_D(7,1,ILH, 4),ILH=1, 5)/ 0, 0, 1, 1, 1/
4786- DATA (MOTHUP_D(7,2,ILH, 4),ILH=1, 5)/ 0, 0, 2, 2, 2/
4787-
4788- DATA (IDUP_D(8,ILH,1),ILH=1,5)/21,1,6,-6,1/
4789- DATA (MOTHUP_D(8,1,ILH, 1),ILH=1, 5)/ 0, 0, 1, 1, 1/
4790- DATA (MOTHUP_D(8,2,ILH, 1),ILH=1, 5)/ 0, 0, 2, 2, 2/
4791- DATA (ICOLUP_D(8,1,ILH, 1),ILH=1, 5)/501,503,501, 0,502/
4792- DATA (ICOLUP_D(8,2,ILH, 1),ILH=1, 5)/503, 0, 0,502, 0/
4793- DATA (ICOLUP_D(8,1,ILH, 2),ILH=1, 5)/501,502,501, 0,502/
4794- DATA (ICOLUP_D(8,2,ILH, 2),ILH=1, 5)/503, 0, 0,503, 0/
4795- DATA (ICOLUP_D(8,1,ILH, 3),ILH=1, 5)/502,503,501, 0,502/
4796- DATA (ICOLUP_D(8,2,ILH, 3),ILH=1, 5)/503, 0, 0,501, 0/
4797- DATA (ICOLUP_D(8,1,ILH, 4),ILH=1, 5)/502,501,501, 0,502/
4798- DATA (ICOLUP_D(8,2,ILH, 4),ILH=1, 5)/503, 0, 0,503, 0/
4799- DATA (IDUP_D(8,ILH,2),ILH=1,5)/21,3,6,-6,3/
4800- DATA (MOTHUP_D(8,1,ILH, 2),ILH=1, 5)/ 0, 0, 1, 1, 1/
4801- DATA (MOTHUP_D(8,2,ILH, 2),ILH=1, 5)/ 0, 0, 2, 2, 2/
4802- DATA (IDUP_D(8,ILH,3),ILH=1,5)/21,2,6,-6,2/
4803- DATA (MOTHUP_D(8,1,ILH, 3),ILH=1, 5)/ 0, 0, 1, 1, 1/
4804- DATA (MOTHUP_D(8,2,ILH, 3),ILH=1, 5)/ 0, 0, 2, 2, 2/
4805- DATA (IDUP_D(8,ILH,4),ILH=1,5)/21,4,6,-6,4/
4806- DATA (MOTHUP_D(8,1,ILH, 4),ILH=1, 5)/ 0, 0, 1, 1, 1/
4807- DATA (MOTHUP_D(8,2,ILH, 4),ILH=1, 5)/ 0, 0, 2, 2, 2/
4808-
4809
4810=== added file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc'
4811--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc 1970-01-01 00:00:00 +0000
4812+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_decl.inc 2014-11-06 06:25:51 +0000
4813@@ -0,0 +1,12 @@
4814+ INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
4815+ PARAMETER (LMAXCONFIGS_USED= 5)
4816+ PARAMETER (MAX_BRANCH_USED = 3)
4817+ INTEGER MAPCONFIG_D( 6,0:LMAXCONFIGS_USED)
4818+ INTEGER IFOREST_D( 6,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4819+ INTEGER SPROP_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4820+ INTEGER TPRID_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4821+ DOUBLE PRECISION PMASS_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED
4822+ $ )
4823+ DOUBLE PRECISION PWIDTH_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USE
4824+ $ D)
4825+ INTEGER POW_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4826
4827=== removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_info.inc'
4828--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_info.inc 2014-03-19 08:01:45 +0000
4829+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%configs_and_props_info.inc 1970-01-01 00:00:00 +0000
4830@@ -1,419 +0,0 @@
4831- INTEGER IFR,LMAXCONFIGS_USED,MAX_BRANCH_USED
4832- PARAMETER (LMAXCONFIGS_USED= 5)
4833- PARAMETER (MAX_BRANCH_USED = 3)
4834- INTEGER MAPCONFIG_D( 6,0:LMAXCONFIGS_USED)
4835- INTEGER IFOREST_D( 6,2,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4836- INTEGER SPROP_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4837- INTEGER TPRID_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4838- DOUBLE PRECISION PMASS_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED
4839- $ )
4840- DOUBLE PRECISION PWIDTH_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USE
4841- $ D)
4842- INTEGER POW_D( 6,-MAX_BRANCH_USED:-1,LMAXCONFIGS_USED)
4843-C
4844-C nFKSprocess 1
4845-C Diagram 1 for nFKSprocess 1
4846- DATA MAPCONFIG_D( 1, 1)/ 1/
4847- DATA (IFOREST_D( 1, IFR, -1, 1),IFR=1,2)/ 4, 3/
4848- DATA SPROP_D( 1, -1, 1)/ 21/
4849- DATA (IFOREST_D( 1, IFR, -2, 1),IFR=1,2)/ 5, -1/
4850- DATA SPROP_D( 1, -2, 1)/ 21/
4851-C Diagram 2 for nFKSprocess 1
4852- DATA MAPCONFIG_D( 1, 2)/ 2/
4853- DATA (IFOREST_D( 1, IFR, -1, 2),IFR=1,2)/ 5, 3/
4854- DATA SPROP_D( 1, -1, 2)/ 6/
4855- DATA (IFOREST_D( 1, IFR, -2, 2),IFR=1,2)/ 4, -1/
4856- DATA SPROP_D( 1, -2, 2)/ 21/
4857-C Diagram 3 for nFKSprocess 1
4858- DATA MAPCONFIG_D( 1, 3)/ 3/
4859- DATA (IFOREST_D( 1, IFR, -1, 3),IFR=1,2)/ 5, 4/
4860- DATA SPROP_D( 1, -1, 3)/ -6/
4861- DATA (IFOREST_D( 1, IFR, -2, 3),IFR=1,2)/ -1, 3/
4862- DATA SPROP_D( 1, -2, 3)/ 21/
4863-C Diagram 4 for nFKSprocess 1
4864- DATA MAPCONFIG_D( 1, 4)/ 4/
4865- DATA (IFOREST_D( 1, IFR, -1, 4),IFR=1,2)/ 4, 3/
4866- DATA SPROP_D( 1, -1, 4)/ 21/
4867- DATA (IFOREST_D( 1, IFR, -2, 4),IFR=1,2)/ 1, 5/
4868- DATA TPRID_D( 1, -2, 4)/ 2/
4869- DATA (IFOREST_D( 1, IFR, -3, 4),IFR=1,2)/ -2, -1/
4870-C Diagram 5 for nFKSprocess 1
4871- DATA MAPCONFIG_D( 1, 5)/ 5/
4872- DATA (IFOREST_D( 1, IFR, -1, 5),IFR=1,2)/ 4, 3/
4873- DATA SPROP_D( 1, -1, 5)/ 21/
4874- DATA (IFOREST_D( 1, IFR, -2, 5),IFR=1,2)/ 1, -1/
4875- DATA TPRID_D( 1, -2, 5)/ 2/
4876- DATA (IFOREST_D( 1, IFR, -3, 5),IFR=1,2)/ -2, 5/
4877-C Number of configs for nFKSprocess 1
4878- DATA MAPCONFIG_D( 1,0)/ 5/
4879-C
4880-C nFKSprocess 2
4881-C Diagram 1 for nFKSprocess 2
4882- DATA MAPCONFIG_D( 2, 1)/ 1/
4883- DATA (IFOREST_D( 2, IFR, -1, 1),IFR=1,2)/ 4, 3/
4884- DATA SPROP_D( 2, -1, 1)/ 21/
4885- DATA (IFOREST_D( 2, IFR, -2, 1),IFR=1,2)/ 5, -1/
4886- DATA SPROP_D( 2, -2, 1)/ 21/
4887-C Diagram 2 for nFKSprocess 2
4888- DATA MAPCONFIG_D( 2, 2)/ 2/
4889- DATA (IFOREST_D( 2, IFR, -1, 2),IFR=1,2)/ 5, 3/
4890- DATA SPROP_D( 2, -1, 2)/ 6/
4891- DATA (IFOREST_D( 2, IFR, -2, 2),IFR=1,2)/ 4, -1/
4892- DATA SPROP_D( 2, -2, 2)/ 21/
4893-C Diagram 3 for nFKSprocess 2
4894- DATA MAPCONFIG_D( 2, 3)/ 3/
4895- DATA (IFOREST_D( 2, IFR, -1, 3),IFR=1,2)/ 5, 4/
4896- DATA SPROP_D( 2, -1, 3)/ -6/
4897- DATA (IFOREST_D( 2, IFR, -2, 3),IFR=1,2)/ -1, 3/
4898- DATA SPROP_D( 2, -2, 3)/ 21/
4899-C Diagram 4 for nFKSprocess 2
4900- DATA MAPCONFIG_D( 2, 4)/ 4/
4901- DATA (IFOREST_D( 2, IFR, -1, 4),IFR=1,2)/ 4, 3/
4902- DATA SPROP_D( 2, -1, 4)/ 21/
4903- DATA (IFOREST_D( 2, IFR, -2, 4),IFR=1,2)/ 1, 5/
4904- DATA TPRID_D( 2, -2, 4)/ 2/
4905- DATA (IFOREST_D( 2, IFR, -3, 4),IFR=1,2)/ -2, -1/
4906-C Diagram 5 for nFKSprocess 2
4907- DATA MAPCONFIG_D( 2, 5)/ 5/
4908- DATA (IFOREST_D( 2, IFR, -1, 5),IFR=1,2)/ 4, 3/
4909- DATA SPROP_D( 2, -1, 5)/ 21/
4910- DATA (IFOREST_D( 2, IFR, -2, 5),IFR=1,2)/ 1, -1/
4911- DATA TPRID_D( 2, -2, 5)/ 2/
4912- DATA (IFOREST_D( 2, IFR, -3, 5),IFR=1,2)/ -2, 5/
4913-C Number of configs for nFKSprocess 2
4914- DATA MAPCONFIG_D( 2,0)/ 5/
4915-C
4916-C nFKSprocess 3
4917-C Diagram 1 for nFKSprocess 3
4918- DATA MAPCONFIG_D( 3, 1)/ 1/
4919- DATA (IFOREST_D( 3, IFR, -1, 1),IFR=1,2)/ 4, 3/
4920- DATA SPROP_D( 3, -1, 1)/ 21/
4921- DATA (IFOREST_D( 3, IFR, -2, 1),IFR=1,2)/ 5, -1/
4922- DATA SPROP_D( 3, -2, 1)/ 21/
4923-C Diagram 2 for nFKSprocess 3
4924- DATA MAPCONFIG_D( 3, 2)/ 2/
4925- DATA (IFOREST_D( 3, IFR, -1, 2),IFR=1,2)/ 5, 3/
4926- DATA SPROP_D( 3, -1, 2)/ 6/
4927- DATA (IFOREST_D( 3, IFR, -2, 2),IFR=1,2)/ 4, -1/
4928- DATA SPROP_D( 3, -2, 2)/ 21/
4929-C Diagram 3 for nFKSprocess 3
4930- DATA MAPCONFIG_D( 3, 3)/ 3/
4931- DATA (IFOREST_D( 3, IFR, -1, 3),IFR=1,2)/ 5, 4/
4932- DATA SPROP_D( 3, -1, 3)/ -6/
4933- DATA (IFOREST_D( 3, IFR, -2, 3),IFR=1,2)/ -1, 3/
4934- DATA SPROP_D( 3, -2, 3)/ 21/
4935-C Diagram 4 for nFKSprocess 3
4936- DATA MAPCONFIG_D( 3, 4)/ 4/
4937- DATA (IFOREST_D( 3, IFR, -1, 4),IFR=1,2)/ 4, 3/
4938- DATA SPROP_D( 3, -1, 4)/ 21/
4939- DATA (IFOREST_D( 3, IFR, -2, 4),IFR=1,2)/ 1, 5/
4940- DATA TPRID_D( 3, -2, 4)/ 2/
4941- DATA (IFOREST_D( 3, IFR, -3, 4),IFR=1,2)/ -2, -1/
4942-C Diagram 5 for nFKSprocess 3
4943- DATA MAPCONFIG_D( 3, 5)/ 5/
4944- DATA (IFOREST_D( 3, IFR, -1, 5),IFR=1,2)/ 4, 3/
4945- DATA SPROP_D( 3, -1, 5)/ 21/
4946- DATA (IFOREST_D( 3, IFR, -2, 5),IFR=1,2)/ 1, -1/
4947- DATA TPRID_D( 3, -2, 5)/ 2/
4948- DATA (IFOREST_D( 3, IFR, -3, 5),IFR=1,2)/ -2, 5/
4949-C Number of configs for nFKSprocess 3
4950- DATA MAPCONFIG_D( 3,0)/ 5/
4951-C
4952-C nFKSprocess 4
4953-C Diagram 1 for nFKSprocess 4
4954- DATA MAPCONFIG_D( 4, 1)/ 1/
4955- DATA (IFOREST_D( 4, IFR, -1, 1),IFR=1,2)/ 4, 3/
4956- DATA SPROP_D( 4, -1, 1)/ 21/
4957- DATA (IFOREST_D( 4, IFR, -2, 1),IFR=1,2)/ 5, -1/
4958- DATA SPROP_D( 4, -2, 1)/ 21/
4959-C Diagram 2 for nFKSprocess 4
4960- DATA MAPCONFIG_D( 4, 2)/ 2/
4961- DATA (IFOREST_D( 4, IFR, -1, 2),IFR=1,2)/ 5, 3/
4962- DATA SPROP_D( 4, -1, 2)/ 6/
4963- DATA (IFOREST_D( 4, IFR, -2, 2),IFR=1,2)/ 4, -1/
4964- DATA SPROP_D( 4, -2, 2)/ 21/
4965-C Diagram 3 for nFKSprocess 4
4966- DATA MAPCONFIG_D( 4, 3)/ 3/
4967- DATA (IFOREST_D( 4, IFR, -1, 3),IFR=1,2)/ 5, 4/
4968- DATA SPROP_D( 4, -1, 3)/ -6/
4969- DATA (IFOREST_D( 4, IFR, -2, 3),IFR=1,2)/ -1, 3/
4970- DATA SPROP_D( 4, -2, 3)/ 21/
4971-C Diagram 4 for nFKSprocess 4
4972- DATA MAPCONFIG_D( 4, 4)/ 4/
4973- DATA (IFOREST_D( 4, IFR, -1, 4),IFR=1,2)/ 4, 3/
4974- DATA SPROP_D( 4, -1, 4)/ 21/
4975- DATA (IFOREST_D( 4, IFR, -2, 4),IFR=1,2)/ 1, 5/
4976- DATA TPRID_D( 4, -2, 4)/ 2/
4977- DATA (IFOREST_D( 4, IFR, -3, 4),IFR=1,2)/ -2, -1/
4978-C Diagram 5 for nFKSprocess 4
4979- DATA MAPCONFIG_D( 4, 5)/ 5/
4980- DATA (IFOREST_D( 4, IFR, -1, 5),IFR=1,2)/ 4, 3/
4981- DATA SPROP_D( 4, -1, 5)/ 21/
4982- DATA (IFOREST_D( 4, IFR, -2, 5),IFR=1,2)/ 1, -1/
4983- DATA TPRID_D( 4, -2, 5)/ 2/
4984- DATA (IFOREST_D( 4, IFR, -3, 5),IFR=1,2)/ -2, 5/
4985-C Number of configs for nFKSprocess 4
4986- DATA MAPCONFIG_D( 4,0)/ 5/
4987-C
4988-C nFKSprocess 5
4989-C Diagram 1 for nFKSprocess 5
4990- DATA MAPCONFIG_D( 5, 1)/ 1/
4991- DATA (IFOREST_D( 5, IFR, -1, 1),IFR=1,2)/ 4, 3/
4992- DATA SPROP_D( 5, -1, 1)/ 21/
4993- DATA (IFOREST_D( 5, IFR, -2, 1),IFR=1,2)/ 5, -1/
4994- DATA SPROP_D( 5, -2, 1)/ -2/
4995-C Diagram 2 for nFKSprocess 5
4996- DATA MAPCONFIG_D( 5, 2)/ 2/
4997- DATA (IFOREST_D( 5, IFR, -1, 2),IFR=1,2)/ 1, 3/
4998- DATA TPRID_D( 5, -1, 2)/ 6/
4999- DATA (IFOREST_D( 5, IFR, -2, 2),IFR=1,2)/ -1, 4/
5000- DATA TPRID_D( 5, -2, 2)/ 21/
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: