Merge lp:~maddevelopers/mg5amcnlo/3.0.3 into lp:mg5amcnlo

Proposed by Olivier Mattelaer
Status: Merged
Merged at revision: 962
Proposed branch: lp:~maddevelopers/mg5amcnlo/3.0.3
Merge into: lp:mg5amcnlo
Diff against target: 19476 lines (+6711/-2591)
393 files modified
MadSpin/decay.py (+11/-4)
MadSpin/interface_madspin.py (+29/-21)
Template/Common/Cards/madspin_card_default.dat (+1/-1)
Template/LO/Cards/run_card.dat (+2/-1)
Template/LO/Source/PDF/PhotonFlux.f (+2/-1)
Template/LO/Source/PDF/makefile (+7/-2)
Template/LO/Source/PDF/pdf_lhapdf62.cc (+1569/-0)
Template/LO/Source/dsample.f (+2/-2)
Template/LO/SubProcesses/cuts.f (+2/-2)
Template/LO/SubProcesses/genps.f (+13/-5)
Template/LO/SubProcesses/reweight.f (+6/-0)
Template/LO/SubProcesses/unwgt.f (+23/-11)
Template/LO/bin/internal/merge.pl (+2/-2)
Template/LO/bin/internal/restore_data (+13/-3)
Template/NLO/MCatNLO/include/LHEF.h (+1/-1)
Template/NLO/SubProcesses/cuts.f (+2/-2)
Template/NLO/SubProcesses/splitorders_stuff.f (+22/-0)
Template/NLO/Utilities/collect_plots.py (+2/-1)
Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.inc (+41/-9)
UpdateNotes.txt (+22/-0)
VERSION (+2/-3)
aloha/create_aloha.py (+1/-1)
aloha/template_files/aloha_functions_loop.f (+2/-2)
bin/mg5_aMC (+9/-1)
madgraph/core/base_objects.py (+22/-9)
madgraph/core/diagram_generation.py (+3/-2)
madgraph/core/helas_objects.py (+12/-1)
madgraph/interface/amcatnlo_run_interface.py (+8/-2)
madgraph/interface/common_run_interface.py (+63/-15)
madgraph/interface/extended_cmd.py (+4/-0)
madgraph/interface/madevent_interface.py (+65/-24)
madgraph/interface/madgraph_interface.py (+36/-15)
madgraph/interface/master_interface.py (+2/-0)
madgraph/interface/reweight_interface.py (+99/-82)
madgraph/iolibs/export_v4.py (+58/-5)
madgraph/iolibs/file_writers.py (+16/-7)
madgraph/iolibs/files.py (+2/-1)
madgraph/iolibs/template_files/madevent_symmetry.f (+1/-1)
madgraph/loop/loop_exporters.py (+40/-1)
madgraph/madevent/gen_crossxhtml.py (+3/-0)
madgraph/madevent/gen_ximprove.py (+18/-6)
madgraph/various/banner.py (+3/-2)
madgraph/various/histograms.py (+5/-1)
madgraph/various/lhe_parser.py (+13/-4)
madgraph/various/misc.py (+7/-4)
madgraph/various/process_checks.py (+1/-1)
models/model_reader.py (+5/-0)
tests/acceptance_tests/test_cmd_reweight.py (+20/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%matrix_6.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%matrix_6.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_6.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_7.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_8.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%matrix_9.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%matrix_6.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_4.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_5.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%matrix_6.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%COLLIER_interface.f (+13/-12)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%CT_interface.f (+282/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%born_matrix.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f (+51/-44)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%mp_compute_loop_coefs.f (+6/-5)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%polynomial.f (+40/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%COLLIER_interface.f (+13/-12)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%CT_interface.f (+282/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%born_matrix.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f (+51/-44)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%mp_compute_loop_coefs.f (+6/-5)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%polynomial.f (+40/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_002.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_003.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_004.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_005.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_006.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_007.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_008.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%COLLIER_interface.f (+13/-12)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%CT_interface.f (+321/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%born_matrix.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%helas_calls_ampb_1.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%loop_matrix.f (+51/-44)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%mp_compute_loop_coefs.f (+6/-5)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%polynomial.f (+40/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%COLLIER_interface.f (+13/-12)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%CT_interface.f (+321/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%born_matrix.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%helas_calls_ampb_1.f (+2/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%loop_matrix.f (+51/-44)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%mp_compute_loop_coefs.f (+6/-5)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%polynomial.f (+40/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%b_sf_001.f (+3/-2)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%born.f (+10/-8)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%matrix_1.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%matrix_2.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%matrix_3.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%sborn_sf.f (+5/-4)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f (+12/-10)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f (+4/-4)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_eq_4.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_gt_0_QEDAmpAndQEDsq_gt_2.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_gt_4.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QEDsq_le_4.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_WGTsq_le_10_QEDAmpAndQEDsq_gt_2.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_default.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDpert_default.f (+56/-49)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QEDpert_default.f (+56/-49)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%MadLoopCommons.f (+42/-9)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%COLLIER_interface.f (+15/-14)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%CT_interface.f (+10/-10)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%born_matrix.f (+10/-10)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f (+56/-49)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%polynomial.f (+14/-12)
tests/input_files/IOTestsComparison/SquaredOrder_IOTest/sqso_uux_uuxuuxx/matrix_QCDsq_le_6.f (+4/-4)
tests/input_files/IOTestsComparison/SquaredOrder_IOTest/sqso_uux_uuxuuxx/matrix_ampOrderQED2_eq_2_WGTsq_le_14_QCDsq_gt_4.f (+4/-4)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%COLLIER_interface.f (+15/-14)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%CT_interface.f (+308/-6)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%born_matrix.f (+8/-8)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%check_sa_born_splitOrders.f (+2/-2)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f (+58/-50)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%polynomial.f (+61/-22)
tests/input_files/IOTestsComparison/TestMadWeight/modification_to_cuts/cuts.f (+2/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/loop_matrix.f (+15/-10)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/loop_num.f (+6/-6)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/mp_born_amps_and_wfs.f (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%intparam_definition.inc (+4/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_couplings2.f (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_input.inc (+5/-5)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_intparam_definition.inc (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/loop_matrix.f (+15/-10)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/loop_num.f (+6/-6)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/mp_born_amps_and_wfs.f (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/CT_interface.f (+6/-6)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/loop_matrix.f (+56/-49)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/polynomial.f (+14/-12)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%intparam_definition.inc (+4/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_couplings2.f (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_input.inc (+5/-5)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_intparam_definition.inc (+6/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/CT_interface.f (+14/-14)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/loop_CT_calls_1.f (+4/-4)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/loop_matrix.f (+56/-49)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/polynomial.f (+14/-12)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/loop_matrix.f (+15/-10)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/loop_num.f (+6/-6)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/mp_born_amps_and_wfs.f (+6/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/loop_matrix.f (+15/-10)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/loop_num.f (+6/-6)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/mp_born_amps_and_wfs.f (+6/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%intparam_definition.inc (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_couplings2.f (+3/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_intparam_definition.inc (+3/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/loop_matrix.f (+15/-10)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/loop_num.f (+6/-6)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/mp_born_amps_and_wfs.f (+6/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/CT_interface.f (+6/-6)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/loop_matrix.f (+56/-49)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/polynomial.f (+14/-12)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%intparam_definition.inc (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%model_functions.f (+8/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_couplings2.f (+3/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_intparam_definition.inc (+3/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/CT_interface.f (+10/-10)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/TIR_interface.f (+5/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/born_matrix.f (+2/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/loop_matrix.f (+56/-49)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/mp_compute_loop_coefs.f (+12/-9)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/polynomial.f (+14/-12)
tests/parallel_tests/compare_with_old_mg5_version.py (+1/-1)
tests/time_db (+93/-91)
vendor/IREGI/src/mis_warp.f90 (+1/-1)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/3.0.3
Reviewer Review Type Date Requested Status
MadTeam Pending
Review via email: mp+386468@code.launchpad.net

Commit message

Hi,

I think that we should release this quite fast.
One important point is that this include the compatibility with gcc10.
So I would not wait for the 4FS branch to be merged (but if it is release before the end of next week). We can still release the 4FS independently if needed (in 3.0.4)

Cheers,

Olivier

To post a comment you must log in.
lp:~maddevelopers/mg5amcnlo/3.0.3 updated
966. By marco zaro

fix for some unit tests (more needed)

967. By marco zaro

trivial updates for iotests

968. By marco zaro

fixed acceptance tests

969. By marco zaro

reverted to rev 363 (other commits were for another branch)

970. By olivier-mattelaer

fixing HWU issue

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 2020-03-11 09:28:14 +0000
3+++ MadSpin/decay.py 2020-07-04 19:03:17 +0000
4@@ -544,7 +544,7 @@
5 # record the mass for the reshuffling phase,
6 # in case the point passes the reweighting creteria
7 tree[tag]["mass"] = m
8- #update the weigth of the phase-space point
9+ #update the weight of the phase-space point
10 weight=weight*jac
11 # for checking conservation of energy
12 mass_sum -= m
13@@ -2749,7 +2749,7 @@
14 for proc in processes:
15 if not proc.strip().startswith(('add','generate')):
16 proc = 'add process %s' % proc
17- commandline += self.get_proc_with_decay(proc, decay_text, mgcmd._curr_model)
18+ commandline += self.get_proc_with_decay(proc, decay_text, mgcmd._curr_model, self.options)
19
20 commandline = commandline.replace('add process', 'generate',1)
21 logger.info(commandline)
22@@ -2835,7 +2835,7 @@
23 # assert decay.shell_string() in self.all_decay
24
25 @staticmethod
26- def get_proc_with_decay(proc, decay_text, model):
27+ def get_proc_with_decay(proc, decay_text, model, msoptions=None):
28
29 commands = []
30 if '[' in proc:
31@@ -2880,6 +2880,13 @@
32 else:
33 baseproc = new_proc
34 proc_nb = ''
35+
36+ if msoptions and msoptions['global_order_coupling']:
37+ if '@' in proc_nb:
38+ proc_nb += " %s" % msoptions['global_order_coupling']
39+ else:
40+ proc_nb += " @0 %s" % msoptions['global_order_coupling']
41+
42 nb_comma = baseproc.count(',')
43 if nb_comma == 0:
44 commands.append("%s, %s %s %s" % (baseproc, decay_text, proc_nb, options))
45@@ -3087,7 +3094,7 @@
46 for production in self.all_ME.values():
47 decay_set.add(production['decaying'])
48
49- numberev = self.options['Nevents_for_max_weigth'] # number of events
50+ numberev = self.options['Nevents_for_max_weight'] # number of events
51 numberps = self.options['max_weight_ps_point'] # number of phase pace points per event
52
53 logger.info(' ')
54
55=== modified file 'MadSpin/interface_madspin.py'
56--- MadSpin/interface_madspin.py 2020-02-25 14:05:36 +0000
57+++ MadSpin/interface_madspin.py 2020-07-04 19:03:17 +0000
58@@ -60,14 +60,14 @@
59
60 self.add_param("max_weight", -1)
61 self.add_param('curr_dir', os.path.realpath(os.getcwd()))
62- self.add_param('Nevents_for_max_weigth', 0)
63+ self.add_param('Nevents_for_max_weight', 0)
64 self.add_param("max_weight_ps_point", 400)
65 self.add_param('BW_cut', -1)
66 self.add_param('nb_sigma', 0.)
67 self.add_param('ms_dir', '')
68 self.add_param('max_running_process', 100)
69 self.add_param('onlyhelicity', False)
70- self.add_param('spinmode', "madspin", allowed=['madspin','none','onshell'])
71+ self.add_param('spinmode', "madspin", allowed=['full','madspin','none','onshell'])
72 self.add_param('use_old_dir', False, comment='should be use only for faster debugging')
73 self.add_param('run_card', '' , comment='define cut for spinmode==none. Path to run_card to use')
74 self.add_param('fixed_order', False, comment='to activate fixed order handling of counter-event')
75@@ -76,6 +76,7 @@
76 self.add_param('new_wgt', 'cross-section' ,allowed=['cross-section', 'BR'], comment="if not consistent number of particles, choose what to do for the weight. (BR: means local according to number of part, cross use the force cross-section")
77 self.add_param('input_format', 'auto', allowed=['auto','lhe', 'hepmc', 'lhe_no_banner'])
78 self.add_param('frame_id', 6)
79+ self.add_param('global_order_coupling', '')
80
81 ############################################################################
82 ## Special post-processing of the options ##
83@@ -137,8 +138,8 @@
84
85 self.decay = madspin.decay_misc()
86 self.model = None
87- self.mode = "madspin" # can be flat/bridge change the way the decay is done.
88- # note amc@nlo does not support bridge.
89+ #self.mode = "madspin" # can be flat/bridge change the way the decay is done.
90+ # # note amc@nlo does not support bridge.
91
92 self.options = MadSpinOptions()
93
94@@ -227,10 +228,10 @@
95
96 if 'mgruncard' in self.banner:
97 run_card = self.banner.charge_card('run_card')
98- if not self.options['Nevents_for_max_weigth']:
99+ if not self.options['Nevents_for_max_weight']:
100 nevents = run_card['nevents']
101 N_weight = max([75, int(3*nevents**(1/3))])
102- self.options['Nevents_for_max_weigth'] = N_weight
103+ self.options['Nevents_for_max_weight'] = N_weight
104 N_sigma = max(4.5, math.log(nevents,7.7))
105 self.options['nb_sigma'] = N_sigma
106 if self.options['BW_cut'] == -1:
107@@ -242,8 +243,8 @@
108 else:
109 self.options['frame_id'] = 6
110 else:
111- if not self.options['Nevents_for_max_weigth']:
112- self.options['Nevents_for_max_weigth'] = 75
113+ if not self.options['Nevents_for_max_weight']:
114+ self.options['Nevents_for_max_weight'] = 75
115 self.options['nb_sigma'] = 4.5
116 if self.options['BW_cut'] == -1:
117 self.options['BW_cut'] = 15.0
118@@ -314,7 +315,7 @@
119 key = line.split()[1]
120 if key in self.multiparticles_ms:
121 del self.multiparticles_ms[key]
122- elif line.startswith('set'):
123+ elif line.startswith('set') and not line.startswith('set gauge'):
124 self.mg5cmd.exec_cmd(line, printcmd=False, precmd=False, postcmd=False)
125 elif line.startswith('import model'):
126 if model_name in line:
127@@ -458,7 +459,7 @@
128 raise self.InvalidCmd('second argument should be a path to a existing directory')
129
130 elif args[0] == "spinmode":
131- if args[1].lower() not in ["full", "onshell", "none"]:
132+ if args[1].lower() not in ["full", "onshell", "none", "madspin"]:
133 raise self.InvalidCmd("spinmode can only take one of those 3 value: full/onshell/none")
134
135 elif args[0] == "run_card":
136@@ -471,6 +472,8 @@
137 arg, value = data.split("=")
138 args.append(arg)
139 args.append(value)
140+ elif args[0] == 'Nevents_for_max_weigth':
141+ args[0] = 'Nevents_for_max_weight'
142
143 def do_set(self, line):
144 """ add one of the options """
145@@ -1204,7 +1207,6 @@
146 run_card = self.run_card
147 else:
148 run_card = banner.RunCard(pjoin(decay_dir, "Cards", "run_card.dat"))
149-
150 run_card["iseed"] = self.options['seed']
151 run_card['gridpack'] = True
152 run_card['systematics_program'] = 'False'
153@@ -1213,6 +1215,7 @@
154 param_card = self.banner['slha']
155 open(pjoin(decay_dir, "Cards", "param_card.dat"),"w").write(param_card)
156 self.options['seed'] += 1
157+ self.seed = self.options['seed']
158 # actually creation
159 me5_cmd.exec_cmd("generate_events run_01 -f")
160 if output_width:
161@@ -1222,9 +1225,11 @@
162 width *= me5_cmd.results.current['cross']
163 me5_cmd.exec_cmd("exit")
164 #remove pointless informat
165- misc.call(["rm", "Cards", "bin", 'Source', 'SubProcesses'], cwd=decay_dir)
166- misc.call(['tar', '-xzpvf', 'run_01_gridpack.tar.gz'], cwd=decay_dir)
167-
168+ if not os.path.exists(pjoin(decay_dir, 'run.sh')):
169+ devnull = open('/dev/null','w')
170+ misc.call(["rm", "Cards", "bin", 'Source', 'SubProcesses'], cwd=decay_dir,stdout=devnull, stderr=-2)
171+ misc.call(['tar', '-xzpvf', 'run_01_gridpack.tar.gz'], cwd=decay_dir,stdout=devnull, stderr=-2)
172+ devnull.close()
173 # Now generate the events
174 if not self.options['ms_dir']:
175 if decay_dir in self.me_int:
176@@ -1364,7 +1369,7 @@
177
178
179 # 2. Generate the events requested
180- nevents_for_max = self.options['Nevents_for_max_weigth']
181+ nevents_for_max = self.options['Nevents_for_max_weight']
182 if nevents_for_max == 0 :
183 nevents_for_max = 75
184 nevents_for_max *= self.options['max_weight_ps_point']
185@@ -1460,8 +1465,8 @@
186 production, counterevt= production[0], production[1:]
187 if curr_event and self.efficiency and curr_event % 10 == 0 and float(str(curr_event)[1:]) ==0:
188 logger.info("decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start))
189- else:
190- logger.info("next event [%s]", time.time()-start)
191+ #else:
192+ # logger.info("next event [%s]", time.time()-start)
193 while 1:
194 nb_try +=1
195 decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event)
196@@ -1559,7 +1564,7 @@
197 if self.options['ms_dir'] and os.path.exists(pjoin(self.options['ms_dir'], 'max_wgt')):
198 return float(open(pjoin(self.options['ms_dir'], 'max_wgt'),'r').read())
199
200- nevents = self.options['Nevents_for_max_weigth']
201+ nevents = self.options['Nevents_for_max_weight']
202 if nevents == 0 :
203 nevents = 75
204
205@@ -1700,7 +1705,7 @@
206 decay_text.append('(%s)' % decay)
207 else:
208 decay_text.append(decay)
209- processes_decay.append(decay)
210+ processes_decay.append(decay)
211 decay_text = ', '.join(decay_text)
212 processes += []
213
214@@ -1715,12 +1720,15 @@
215 except ValueError:
216 raise MadSpinError, 'MadSpin didn\'t allow order restriction after the @ comment: \"%s\" not valid' % proc_nb
217 proc_nb = '@ %i' % proc_nb
218+ if self.options['global_order_coupling']:
219+ proc_nb = '%s %s' % (proc_nb, self.options['global_order_coupling'])
220 else:
221- proc_nb = ''
222+ if self.options['global_order_coupling']:
223+ proc_nb = '@0 %s ' % self.options['global_order_coupling']
224
225 rwgt_interface.ReweightInterface.get_LO_definition_from_NLO()
226
227-
228+ raise Exception
229
230 if __name__ == '__main__':
231
232
233=== modified file 'Template/Common/Cards/madspin_card_default.dat'
234--- Template/Common/Cards/madspin_card_default.dat 2017-01-13 09:56:03 +0000
235+++ Template/Common/Cards/madspin_card_default.dat 2020-07-04 19:03:17 +0000
236@@ -14,7 +14,7 @@
237 #Some options (uncomment to apply)
238 #
239 # set seed 1
240-# set Nevents_for_max_weigth 75 # number of events for the estimate of the max. weight
241+# set Nevents_for_max_weight 75 # number of events for the estimate of the max. weight
242 # set BW_cut 15 # cut on how far the particle can be off-shell
243 # set spinmode onshell # Use one of the madspin special mode
244 set max_weight_ps_point 400 # number of PS to estimate the maximum for each event
245
246=== modified file 'Template/LO/Cards/run_card.dat'
247--- Template/LO/Cards/run_card.dat 2020-01-10 20:02:44 +0000
248+++ Template/LO/Cards/run_card.dat 2020-07-04 19:03:17 +0000
249@@ -165,7 +165,8 @@
250 %(mmnl)s = mmnl ! min invariant mass for all letpons (l+- and vl)
251 %(mmnlmax)s = mmnlmax ! max invariant mass for all letpons (l+- and vl)
252 #IF(LL)# #*********************************************************************
253-#IF(LL)# # Minimum and maximum pt for 4-momenta sum of leptons *
254+#IF(LL)# # Minimum and maximum pt for 4-momenta sum of leptons / neutrino *
255+#IF(LL)# # for pair of lepton includes only same flavor, opposite charge
256 #IF(LL)# #*********************************************************************
257 %(ptllmin)s = ptllmin ! Minimum pt for 4-momenta sum of leptons(l and vl)
258 %(ptllmax)s = ptllmax ! Maximum pt for 4-momenta sum of leptons(l and vl)
259
260=== modified file 'Template/LO/Source/PDF/PhotonFlux.f'
261--- Template/LO/Source/PDF/PhotonFlux.f 2019-12-04 21:34:25 +0000
262+++ Template/LO/Source/PDF/PhotonFlux.f 2020-07-04 19:03:17 +0000
263@@ -1,7 +1,8 @@
264 c/* ********************************************************* */
265 c/* Equivalent photon approximation structure function. * */
266+c/* V.M.Budnev et al., Phys.Rep. 15C (1975) 181 * */
267 c/* Improved Weizsaecker-Williams formula * */
268-c/* V.M.Budnev et al., Phys.Rep. 15C (1975) 181 * */
269+c/* http://inspirehep.net/record/359425 * */
270 c/* ********************************************************* */
271 c provided by Tomasz Pierzchala - UCL
272
273
274=== modified file 'Template/LO/Source/PDF/makefile'
275--- Template/LO/Source/PDF/makefile 2018-01-26 23:06:46 +0000
276+++ Template/LO/Source/PDF/makefile 2020-07-04 19:03:17 +0000
277@@ -12,9 +12,14 @@
278
279 ifdef lhapdf
280 ifeq ($(lhapdfversion),5)
281- PDF = pdfwrap_lhapdf.o pdf_lhapdf.o pdg2pdf_lhapdf.o opendata.o PhotonFlux.o
282+ $(error Bad lhadpfversion version 6 is now required)
283 else
284- PDF = pdfwrap_lhapdf.o pdf_lhapdf6.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o
285+ ifeq ($(lhapdfsubversion),1) # 6.1.X
286+ PDF = pdfwrap_lhapdf.o pdf_lhapdf6.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o
287+ else # 6.2.X
288+ CXXFLAGS+=-std=c++11
289+ PDF = pdfwrap_lhapdf.o pdf_lhapdf62.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o
290+ endif
291 endif
292 else
293 PDF = Ctq6Pdf.o pdfwrap.o opendata.o pdf.o PhotonFlux.o pdg2pdf.o NNPDFDriver.o
294
295=== added file 'Template/LO/Source/PDF/pdf_lhapdf62.cc'
296--- Template/LO/Source/PDF/pdf_lhapdf62.cc 1970-01-01 00:00:00 +0000
297+++ Template/LO/Source/PDF/pdf_lhapdf62.cc 2020-07-04 19:03:17 +0000
298@@ -0,0 +1,1569 @@
299+// -*- C++ -*-
300+//
301+// This file is part of LHAPDF
302+// Copyright (C) 2012-2016 The LHAPDF collaboration (see AUTHORS for details)
303+//
304+#include "LHAPDF/PDF.h"
305+#include "LHAPDF/PDFSet.h"
306+#include "LHAPDF/PDFIndex.h"
307+#include "LHAPDF/Factories.h"
308+#include "LHAPDF/Utils.h"
309+#include "LHAPDF/Paths.h"
310+#include "LHAPDF/Version.h"
311+#include "LHAPDF/LHAGlue.h"
312+#include <cstring>
313+
314+using namespace std;
315+
316+
317+// We have to create and initialise some common blocks here for backwards compatibility
318+struct w50512 {
319+ double qcdl4, qcdl5;
320+};
321+w50512 w50512_;
322+
323+struct w50513 {
324+ double xmin, xmax, q2min, q2max;
325+};
326+w50513 w50513_;
327+
328+struct lhapdfr {
329+ double qcdlha4, qcdlha5;
330+ int nfllha;
331+};
332+lhapdfr lhapdfr_;
333+
334+
335+
336+namespace { //< Unnamed namespace to restrict visibility to this file
337+
338+
339+ /// @brief PDF object storage here is a smart pointer to ensure deletion of created PDFs
340+ typedef std::shared_ptr<LHAPDF::PDF> PDFPtr;
341+
342+
343+ /// @brief A struct for handling the active PDFs for the Fortran interface.
344+ ///
345+ /// We operate in a string-based way, since maybe there will be sets with names, but no
346+ /// index entry in pdfsets.index.
347+ ///
348+ /// @todo Can we avoid the strings and just work via the LHAPDF ID and factory construction?
349+ ///
350+ /// Smart pointers are used in the native map used for PDF member storage so
351+ /// that they auto-delete if the PDFSetHandler that holds them goes out of
352+ /// scope (i.e. is overwritten).
353+ struct PDFSetHandler {
354+
355+ /// Default constructor
356+ ///
357+ /// It'll be stored in a map so we need one of these...
358+ PDFSetHandler() : currentmem(0)
359+ { }
360+
361+ /// Constructor from a PDF set name
362+ ///
363+ /// @note If the set name contains a member specification, i.e. myname/2,
364+ /// that member rather than the central one will be initialised and made
365+ /// current.
366+ PDFSetHandler(const string& name) {
367+ pair<string, int> set_mem = LHAPDF::lookupPDF(name);
368+ // First check that the lookup was successful, i.e. it was a valid ID for the LHAPDF6 set collection
369+ if (set_mem.first.empty() || set_mem.second < 0)
370+ throw LHAPDF::UserError("Could not find a valid PDF with string = " + name);
371+ // Try to load this PDF
372+ setname = set_mem.first;
373+ loadMember(set_mem.second);
374+ }
375+
376+ /// Constructor from a PDF set's LHAPDF ID code
377+ ///
378+ /// @note The set member given by the ID (rather than the central one) will
379+ /// be initialised and made current.
380+ PDFSetHandler(int lhaid) {
381+ pair<string,int> set_mem = LHAPDF::lookupPDF(lhaid);
382+ // First check that the lookup was successful, i.e. it was a valid ID for the LHAPDF6 set collection
383+ if (set_mem.first.empty() || set_mem.second < 0)
384+ throw LHAPDF::UserError("Could not find a valid PDF with LHAPDF ID = " + LHAPDF::to_str(lhaid));
385+ // Try to load this PDF
386+ setname = set_mem.first;
387+ loadMember(set_mem.second);
388+ }
389+
390+ /// @brief Load a new PDF member, set it to be active
391+ ///
392+ /// If it's already loaded, the existing object will not be reloaded.
393+ void loadMember(int mem) {
394+ if (mem < 0)
395+ throw LHAPDF::UserError("Tried to load a negative PDF member ID: " + LHAPDF::to_str(mem) + " in set " + setname);
396+ if (members.find(mem) == members.end())
397+ members[mem] = PDFPtr(LHAPDF::mkPDF(setname, mem));
398+ currentmem = mem;
399+ //return members[mem];
400+ }
401+
402+ /// Actively delete a PDF member to save memory, set the active member to be the next available, or 0
403+ void unloadMember(int mem) {
404+ members.erase(mem);
405+ const int nextmem = (!members.empty()) ? members.begin()->first : 0;
406+ loadMember(nextmem);
407+ }
408+
409+ /// @brief Get a PDF member, making it active
410+ ///
411+ /// Non-const because it can secretly load the member. Not that constness
412+ /// matters in a Fortran interface utility function!
413+ const PDFPtr member(int mem) {
414+ loadMember(mem);
415+ return members.find(mem)->second;
416+ }
417+
418+ /// Get the currently active PDF member
419+ ///
420+ /// Non-const because it can secretly load the member. Not that constness
421+ /// matters in a Fortran interface utility function!
422+ const PDFPtr activeMember() {
423+ return member(currentmem);
424+ }
425+
426+ /// Get the currently active PDF member
427+ ///
428+ /// Non-const because it can secretly load the member. Not that constness
429+ /// matters in a Fortran interface utility function!
430+ void setActiveMember(int mem) {
431+ loadMember(mem);
432+ }
433+
434+ /// The currently active member in this set
435+ int currentmem;
436+
437+ /// Name of this set
438+ string setname;
439+
440+ /// Map of pointers to selected member PDFs
441+ ///
442+ // /// It's mutable so that a "const" member-getting operation can implicitly
443+ // /// load a new PDF object. Good idea / bad idea? Disabled for now.
444+ // mutable map<int, PDFPtr> members;
445+ map<int, PDFPtr> members;
446+ };
447+
448+
449+ /// Collection of active sets
450+ static map<int, PDFSetHandler> ACTIVESETS;
451+
452+ /// The currently active set
453+ int CURRENTSET = 0;
454+
455+}
456+
457+
458+
459+string lhaglue_get_current_pdf(int nset) {
460+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
461+ return "NONE";
462+ CURRENTSET = nset;
463+ return ACTIVESETS[nset].activeMember()->set().name() + " (" +
464+ LHAPDF::to_str(ACTIVESETS[nset].activeMember()->lhapdfID()) + ")";
465+}
466+
467+
468+
469+namespace {
470+
471+
472+ /// C-string -> Fortran-string converter
473+ ///
474+ /// Credit: https://stackoverflow.com/questions/10163485/passing-char-arrays-from-c-to-fortran
475+ void cstr_to_fstr(const char* cstring, char* fstring, std::size_t fstring_len) {
476+ std::size_t inlen = std::strlen(cstring);
477+ std::size_t cpylen = std::min(inlen, fstring_len);
478+ // TODO: truncation error or warning
479+ //if (inlen > fstring_len) FOOOOO();
480+ std::copy(cstring, cstring+cpylen, fstring);
481+ std::fill(fstring+cpylen, fstring+fstring_len, ' ');
482+ }
483+
484+
485+ /// C++-string -> Fortran-string converter
486+ void ccstr_to_fstr(const string& ccstring, char* fstring, std::size_t fstring_len) {
487+ const char* cstring = ccstring.c_str();
488+ cstr_to_fstr(cstring, fstring, fstring_len);
489+ }
490+
491+
492+ /// Fortran-string -> C++-string converter
493+ string fstr_to_ccstr(const char* fstring, const std::size_t fstring_len, bool spcpad=false) {
494+ // Allocate space for an equivalent C-string (with an extra terminating null byte)
495+ char* s = new char[fstring_len+1];
496+ // Copy all characters and add the terminating null byte
497+ strncpy(s, fstring, fstring_len);
498+ s[fstring_len] = '\0';
499+ // Replace all trailing spaces with null bytes unless explicitly stopped
500+ if (!spcpad) {
501+ for (int i = fstring_len-1; i >= 0; --i) {
502+ if (s[i] != ' ') break;
503+ s[i] = '\0';
504+ }
505+ }
506+ string rtn(s); //< copy the result to a C++ string
507+ delete[] s; //< clean up the dynamic array
508+ return rtn;
509+ }
510+
511+
512+}
513+
514+
515+extern "C" {
516+
517+
518+ // NEW FORTRAN INTERFACE FUNCTIONS
519+
520+ /// Get the LHAPDF library version as a string
521+ void lhapdf_getversion_(char* s, size_t len) {
522+ cstr_to_fstr(LHAPDF_VERSION, s, len);
523+ }
524+
525+
526+ /// List of available PDF sets, returned as a space-separated string
527+ void lhapdf_getpdfsetlist_(char* s, size_t len) {
528+ string liststr;
529+ for (const string& setname : LHAPDF::availablePDFSets()) {
530+ if (!liststr.empty()) liststr += " ";
531+ liststr += setname;
532+ }
533+ ccstr_to_fstr(liststr, s, len);
534+ }
535+
536+
537+ /// Get PDF data path (colon-separated if there is more than one element)
538+ void lhapdf_getdatapath_(char* s, size_t len) {
539+ string pathstr;
540+ for (const string& path : LHAPDF::paths()) {
541+ if (!pathstr.empty()) pathstr += ":";
542+ pathstr += path;
543+ }
544+ ccstr_to_fstr(pathstr, s, len);
545+ }
546+
547+ /// Set PDF data path(s)
548+ void lhapdf_setdatapath_(const char* s, size_t len) {
549+ LHAPDF::setPaths(fstr_to_ccstr(s, len));
550+ }
551+
552+ /// Prepend to PDF data path
553+ void lhapdf_prependdatapath_(const char* s, size_t len) {
554+ LHAPDF::pathsPrepend(fstr_to_ccstr(s, len));
555+ }
556+
557+ /// Append to PDF data path
558+ void lhapdf_appenddatapath_(const char* s, size_t len) {
559+ LHAPDF::pathsAppend(fstr_to_ccstr(s, len));
560+ }
561+
562+
563+ //------------------
564+
565+
566+ void lhapdf_initpdfset_byname_(const int& nset, const char* name, int namelength) {
567+ const string cname = fstr_to_ccstr(name, namelength);
568+ ACTIVESETS[nset] = PDFSetHandler(cname);
569+ CURRENTSET = nset;
570+ }
571+
572+ void lhapdf_initpdfset_byid_(const int& nset, const int& lhaid) {
573+ ACTIVESETS[nset] = PDFSetHandler(lhaid);
574+ CURRENTSET = nset;
575+ }
576+
577+ void lhapdf_delpdfset_(const int& nset) {
578+ ACTIVESETS.erase(nset);
579+ CURRENTSET = 0;
580+ }
581+
582+ void lhapdf_delpdf_(const int& nset, const int& nmem) {
583+ CURRENTSET = nset;
584+ ACTIVESETS[CURRENTSET].unloadMember(nmem);
585+ }
586+
587+
588+ //------------------
589+
590+
591+ void lhapdf_hasflavor(const int& nset, const int& nmem, const int& pid, int& rtn) {
592+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
593+ throw LHAPDF::UserError("Trying to use set slot " + LHAPDF::to_str(nset) + " but it is not initialised");
594+ rtn = ACTIVESETS[nset].member(nmem)->hasFlavor(pid) ? 1 : 0;
595+ // Update current set focus
596+ CURRENTSET = nset;
597+ }
598+
599+
600+ void lhapdf_xfxq2_(const int& nset, const int& nmem, const int& pid, const double& x, const double& q2, double& xf) {
601+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
602+ throw LHAPDF::UserError("Trying to use set slot " + LHAPDF::to_str(nset) + " but it is not initialised");
603+ try {
604+ xf = ACTIVESETS[nset].member(nmem)->xfxQ2(pid, x, q2);
605+ } catch (const exception& e) {
606+ xf = 0;
607+ }
608+ // Update current set focus
609+ CURRENTSET = nset;
610+ }
611+
612+ void lhapdf_xfxq_(const int& nset, const int& nmem, const int& pid, const double& x, const double& q, double& xf) {
613+ const double q2 = q*q;
614+ lhapdf_xfxq2_(nset, nmem, pid, x, q2, xf);
615+ }
616+
617+
618+ void lhapdf_xfxq2_stdpartons_(const int& nset, const int& nmem, const int& pid, const double& x, const double& q2, double* xfs) {
619+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
620+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
621+ // Evaluate for the 13 LHAPDF5 standard partons (-6..6)
622+ for (size_t i = 0; i < 13; ++i) {
623+ try {
624+ xfs[i] = ACTIVESETS[nset].member(nmem)->xfxQ2(i-6, x, q2);
625+ } catch (const exception& e) {
626+ xfs[i] = 0;
627+ }
628+ }
629+ // Update current set focus
630+ CURRENTSET = nset;
631+ }
632+
633+ void lhapdf_xfxq_stdpartons_(const int& nset, const int& nmem, const int& pid, const double& x, const double& q, double* xfs) {
634+ const double q2 = q*q;
635+ lhapdf_xfxq2_stdpartons_(nset, nmem, pid, x, q2, xfs);
636+ }
637+
638+
639+ //-----------------
640+
641+
642+ /// Get the alpha_s order for the set
643+ void lhapdf_getorderas_(const int& nset, const int& nmem, int& oas) {
644+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
645+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
646+ oas = ACTIVESETS[nset].member(nmem)->info().get_entry_as<int>("AlphaS_OrderQCD");
647+ // Update current set focus
648+ CURRENTSET = nset;
649+ }
650+
651+ /// Get the alpha_s(Q2) value for set nset
652+ void lhapdf_alphasq2_(const int& nset, const int& nmem, const double& q2, double& alphas) {
653+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
654+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
655+ alphas = ACTIVESETS[nset].member(nmem)->alphasQ2(q2);
656+ // Update current set focus
657+ CURRENTSET = nset;
658+ }
659+
660+ /// Get the alpha_s(Q) value for set nset
661+ /// @todo Return value rather than return arg? Can we do that elsewhere, too, e.g. single-value PDF xf functions?
662+ void lhapdf_alphasq_(const int& nset, const int& nmem, const double& q, double& alphas) {
663+ const double q2 = q*q;
664+ lhapdf_alphasq2_(nset, nmem, q2, alphas);
665+ }
666+
667+
668+ // Metadata functions
669+
670+ // /// Get the number of error members in the set (with special treatment for single member sets)
671+ // void numberpdfm_(const int& nset, int& numpdf) {
672+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
673+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
674+ // // Set equal to the number of members for the requested set
675+ // numpdf= ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("NumMembers");
676+ // // Update current set focus
677+ // CURRENTSET = nset;
678+ // }
679+
680+ // /// Get the max number of active flavours
681+ // void getnfm_(const int& nset, int& nf) {
682+ // //nf = ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("AlphaS_NumFlavors");
683+ // nf = ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("NumFlavors");
684+ // // Update current set focus
685+ // CURRENTSET = nset;
686+ // }
687+
688+ // /// Get nf'th quark mass
689+ // void getqmassm_(const int& nset, const int& nf, double& mass) {
690+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
691+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
692+ // if (nf*nf == 1) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MDown");
693+ // else if (nf*nf == 4) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MUp");
694+ // else if (nf*nf == 9) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MStrange");
695+ // else if (nf*nf == 16) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MCharm");
696+ // else if (nf*nf == 25) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MBottom");
697+ // else if (nf*nf == 36) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MTop");
698+ // else throw LHAPDF::UserError("Trying to get quark mass for invalid quark ID #" + LHAPDF::to_str(nf));
699+ // // Update current set focus
700+ // CURRENTSET = nset;
701+ // }
702+
703+ // /// Get the nf'th quark threshold
704+ // void getthresholdm_(const int& nset, const int& nf, double& Q) {
705+ // try {
706+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
707+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
708+ // if (nf*nf == 1) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdDown");
709+ // else if (nf*nf == 4) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdUp");
710+ // else if (nf*nf == 9) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdStrange");
711+ // else if (nf*nf == 16) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdCharm");
712+ // else if (nf*nf == 25) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdBottom");
713+ // else if (nf*nf == 36) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdTop");
714+ // //else throw LHAPDF::UserError("Trying to get quark threshold for invalid quark ID #" + LHAPDF::to_str(nf));
715+ // } catch (...) {
716+ // getqmassm_(nset, nf, Q);
717+ // }
718+ // // Update current set focus
719+ // CURRENTSET = nset;
720+ // }
721+
722+ // void getxminm_(const int& nset, const int& nmem, double& xmin) {
723+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
724+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
725+ // const int activemem = ACTIVESETS[nset].currentmem;
726+ // ACTIVESETS[nset].loadMember(nmem);
727+ // xmin = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMin");
728+ // ACTIVESETS[nset].loadMember(activemem);
729+ // // Update current set focus
730+ // CURRENTSET = nset;
731+ // }
732+
733+ // void getxmaxm_(const int& nset, const int& nmem, double& xmax) {
734+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
735+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
736+ // const int activemem = ACTIVESETS[nset].currentmem;
737+ // ACTIVESETS[nset].loadMember(nmem);
738+ // xmax = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMax");
739+ // ACTIVESETS[nset].loadMember(activemem);
740+ // // Update current set focus
741+ // CURRENTSET = nset;
742+ // }
743+
744+ // void getq2minm_(const int& nset, const int& nmem, double& q2min) {
745+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
746+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
747+ // const int activemem = ACTIVESETS[nset].currentmem;
748+ // ACTIVESETS[nset].loadMember(nmem);
749+ // q2min = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMin"));
750+ // ACTIVESETS[nset].loadMember(activemem);
751+ // // Update current set focus
752+ // CURRENTSET = nset;
753+ // }
754+
755+ // void getq2maxm_(const int& nset, const int& nmem, double& q2max) {
756+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
757+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
758+ // const int activemem = ACTIVESETS[nset].currentmem;
759+ // ACTIVESETS[nset].loadMember(nmem);
760+ // q2max = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMax"));
761+ // ACTIVESETS[nset].loadMember(activemem);
762+ // // Update current set focus
763+ // CURRENTSET = nset;
764+ // }
765+
766+ // void getminmaxm_(const int& nset, const int& nmem, double& xmin, double& xmax, double& q2min, double& q2max) {
767+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
768+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
769+ // const int activemem = ACTIVESETS[nset].currentmem;
770+ // ACTIVESETS[nset].loadMember(nmem);
771+ // xmin = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMin");
772+ // xmax = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMax");
773+ // q2min = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMin"));
774+ // q2max = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMax"));
775+ // ACTIVESETS[nset].loadMember(activemem);
776+ // // Update current set focus
777+ // CURRENTSET = nset;
778+ // }
779+
780+
781+ // /// Backwards compatibility functions for LHAPDF5 calculations of
782+ // /// PDF uncertainties and PDF correlations (G. Watt, March 2014).
783+
784+ // // subroutine GetPDFUncTypeM(nset,lMonteCarlo,lSymmetric)
785+ // void getpdfunctypem_(const int& nset, int& lmontecarlo, int& lsymmetric) {
786+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
787+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
788+ // const string errorType = ACTIVESETS[nset].activeMember()->set().errorType();
789+ // if (errorType == "replicas") { // Monte Carlo PDF sets
790+ // lmontecarlo = 1;
791+ // lsymmetric = 1;
792+ // } else if (errorType == "symmhessian") { // symmetric eigenvector PDF sets
793+ // lmontecarlo = 0;
794+ // lsymmetric = 1;
795+ // } else { // default: assume asymmetric Hessian eigenvector PDF sets
796+ // lmontecarlo = 0;
797+ // lsymmetric = 0;
798+ // }
799+ // // Update current set focus
800+ // CURRENTSET = nset;
801+ // }
802+ // // subroutine GetPDFUncType(lMonteCarlo,lSymmetric)
803+ // void getpdfunctype_(int& lmontecarlo, int& lsymmetric) {
804+ // int nset1 = 1;
805+ // getpdfunctypem_(nset1, lmontecarlo, lsymmetric);
806+ // }
807+
808+
809+ // // subroutine GetPDFuncertaintyM(nset,values,central,errplus,errminus,errsym)
810+ // void getpdfuncertaintym_(const int& nset, const double* values, double& central, double& errplus, double& errminus, double& errsymm) {
811+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
812+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
813+ // const size_t nmem = ACTIVESETS[nset].activeMember()->set().size()-1;
814+ // const vector<double> vecvalues(values, values + nmem + 1);
815+ // LHAPDF::PDFUncertainty err = ACTIVESETS[nset].activeMember()->set().uncertainty(vecvalues, -1);
816+ // central = err.central;
817+ // errplus = err.errplus;
818+ // errminus = err.errminus;
819+ // errsymm = err.errsymm;
820+ // // Update current set focus
821+ // CURRENTSET = nset;
822+ // }
823+ // // subroutine GetPDFuncertainty(values,central,errplus,errminus,errsym)
824+ // void getpdfuncertainty_(const double* values, double& central, double& errplus, double& errminus, double& errsymm) {
825+ // int nset1 = 1;
826+ // getpdfuncertaintym_(nset1, values, central, errplus, errminus, errsymm);
827+ // }
828+
829+
830+ // // subroutine GetPDFcorrelationM(nset,valuesA,valuesB,correlation)
831+ // void getpdfcorrelationm_(const int& nset, const double* valuesA, const double* valuesB, double& correlation) {
832+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
833+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
834+ // const size_t nmem = ACTIVESETS[nset].activeMember()->set().size()-1;
835+ // const vector<double> vecvaluesA(valuesA, valuesA + nmem + 1);
836+ // const vector<double> vecvaluesB(valuesB, valuesB + nmem + 1);
837+ // correlation = ACTIVESETS[nset].activeMember()->set().correlation(vecvaluesA,vecvaluesB);
838+ // // Update current set focus
839+ // CURRENTSET = nset;
840+ // }
841+ // // subroutine GetPDFcorrelation(valuesA,valuesB,correlation)
842+ // void getpdfcorrelation_(const double* valuesA, const double* valuesB, double& correlation) {
843+ // int nset1 = 1;
844+ // getpdfcorrelationm_(nset1, valuesA, valuesB, correlation);
845+ // }
846+
847+
848+
849+
850+
851+ //////////////////
852+
853+ // LHAPDF5 / PDFLIB COMPATIBILITY INTERFACE FUNCTIONS
854+
855+
856+ // System-level info
857+
858+ /// LHAPDF library version
859+ void getlhapdfversion_(char* s, size_t len) {
860+ // strncpy(s, LHAPDF_VERSION, len);
861+ cstr_to_fstr(LHAPDF_VERSION, s, len);
862+ }
863+
864+
865+ /// Does nothing, only provided for backward compatibility
866+ void lhaprint_(int& a) { }
867+
868+
869+ /// Set LHAPDF parameters
870+ ///
871+ /// @note Only the verbosity parameters have any effect: PDF behaviour is not
872+ /// controlled globally in LHAPDF6.
873+ void setlhaparm_(const char* par, int parlength) {
874+ const string cpar = LHAPDF::to_upper(fstr_to_ccstr(par, parlength));
875+ if (cpar == "NOSTAT" || cpar == "16") {
876+ cerr << "WARNING: Fortran call to control LHAPDF statistics collection has no effect" << endl;
877+ } else if (cpar == "LHAPDF" || cpar == "17") {
878+ cerr << "WARNING: Fortran call to globally control alpha_s calculation has no effect" << endl;
879+ } else if (cpar == "EXTRAPOLATE" || cpar == "18") {
880+ cerr << "WARNING: Fortran call to globally control PDF extrapolation has no effect" << endl;
881+ } else if (cpar == "SILENT" || cpar == "LOWKEY") {
882+ LHAPDF::setVerbosity(0);
883+ } else if (cpar == "19") {
884+ LHAPDF::setVerbosity(1);
885+ }
886+ }
887+ /// Get LHAPDF parameters -- does nothing in LHAPDF6!
888+ void getlhaparm_(int dummy, char* par, int parlength) {
889+ cstr_to_fstr("", par, parlength);
890+ }
891+
892+
893+ /// Return a dummy max number of sets (there is no limitation now)
894+ void getmaxnumsets_(int& nmax) {
895+ nmax = 1000;
896+ }
897+
898+
899+ /// Set PDF data path
900+ void setpdfpath_(const char* s, size_t len) {
901+ /// @todo Works? Need to check C-string copying, null termination
902+ char s2[1024];
903+ s2[len] = '\0';
904+ strncpy(s2, s, len);
905+ LHAPDF::pathsPrepend(s2);
906+ }
907+
908+ /// Get PDF data path (colon-separated if there is more than one element)
909+ void getdatapath_(char* s, size_t len) {
910+ /// @todo Works? Need to check Fortran string return, string macro treatment, etc.
911+ string pathstr;
912+ for (const string& path : LHAPDF::paths()) {
913+ if (!pathstr.empty()) pathstr += ":";
914+ pathstr += path;
915+ }
916+ // strncpy(s, pathstr.c_str(), len);
917+ cstr_to_fstr(pathstr.c_str(), s, len);
918+ }
919+
920+
921+ // PDF initialisation and focus-switching
922+
923+ /// Load a PDF set
924+ ///
925+ /// @todo Does this version actually take a *path*? What to do?
926+ void initpdfsetm_(const int& nset, const char* setpath, int setpathlength) {
927+ // Strip file extension for backward compatibility
928+ string fullp = string(setpath, setpathlength);
929+ // Remove trailing whitespace
930+ fullp.erase( std::remove_if( fullp.begin(), fullp.end(), ::isspace ), fullp.end() );
931+ // Use only items after the last /
932+ const string pap = LHAPDF::dirname(fullp);
933+ const string p = LHAPDF::basename(fullp);
934+ // Prepend path to search area
935+ LHAPDF::pathsPrepend(pap);
936+ // Handle extensions
937+ string path = LHAPDF::file_extn(p).empty() ? p : LHAPDF::file_stem(p);
938+ /// @note We correct the misnamed CTEQ6L1/CTEQ6ll set name as a backward compatibility special case.
939+ if (LHAPDF::to_lower(path) == "cteq6ll") path = "cteq6l1";
940+ // Create the PDF set with index nset
941+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
942+ if (path != ACTIVESETS[nset].setname)
943+ ACTIVESETS[nset] = PDFSetHandler(path); ///< @todo Will be wrong if a structured path is given
944+ CURRENTSET = nset;
945+ }
946+ /// Load a PDF set (non-multiset version)
947+ void initpdfset_(const char* setpath, int setpathlength) {
948+ int nset1 = 1;
949+ initpdfsetm_(nset1, setpath, setpathlength);
950+ }
951+
952+
953+ /// Load a PDF set by name
954+ void initpdfsetbynamem_(const int& nset, const char* setname, int setnamelength) {
955+ // Truncate input to size setnamelength
956+ string p = setname;
957+ p.erase(setnamelength, std::string::npos);
958+ // Strip file extension for backward compatibility
959+ string name = LHAPDF::file_extn(p).empty() ? p : LHAPDF::file_stem(p);
960+ // Remove trailing whitespace
961+ name.erase( std::remove_if( name.begin(), name.end(), ::isspace ), name.end() );
962+ /// @note We correct the misnamed CTEQ6L1/CTEQ6ll set name as a backward compatibility special case.
963+ if (LHAPDF::to_lower(name) == "cteq6ll") name = "cteq6l1";
964+ // Create the PDF set with index nset
965+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
966+ if (name != ACTIVESETS[nset].setname)
967+ ACTIVESETS[nset] = PDFSetHandler(name);
968+ // Update current set focus
969+ CURRENTSET = nset;
970+ }
971+ /// Load a PDF set by name (non-multiset version)
972+ void initpdfsetbyname_(const char* setname, int setnamelength) {
973+ int nset1 = 1;
974+ initpdfsetbynamem_(nset1, setname, setnamelength);
975+ }
976+
977+
978+ /// Load a PDF in current set
979+ void initpdfm_(const int& nset, const int& nmember) {
980+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
981+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
982+ ACTIVESETS[nset].loadMember(nmember);
983+ // Update current set focus
984+ CURRENTSET = nset;
985+ }
986+ /// Load a PDF in current set (non-multiset version)
987+ void initpdf_(const int& nmember) {
988+ int nset1 = 1;
989+ initpdfm_(nset1, nmember);
990+ }
991+
992+
993+ /// Get the current set number (i.e. allocation slot index)
994+ void getnset_(int& nset) {
995+ nset = CURRENTSET;
996+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
997+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
998+ }
999+
1000+ /// Explicitly set the current set number (i.e. allocation slot index)
1001+ void setnset_(const int& nset) {
1002+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1003+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1004+ CURRENTSET = nset;
1005+ }
1006+
1007+
1008+ /// Get the current member number in slot nset
1009+ void getnmem_(int& nset, int& nmem) {
1010+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1011+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1012+ nmem = ACTIVESETS[nset].currentmem;
1013+ // Update current set focus
1014+ CURRENTSET = nset;
1015+ }
1016+
1017+ /// Set the current member number in slot nset
1018+ void setnmem_(const int& nset, const int& nmem) {
1019+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1020+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" +
1021+ LHAPDF::to_str(nset) + " but it is not initialised");
1022+ ACTIVESETS[nset].loadMember(nmem);
1023+ // Update current set focus
1024+ CURRENTSET = nset;
1025+ }
1026+
1027+
1028+
1029+ // PDF evolution functions
1030+
1031+ // NEW BY MZ to evolve one single parton
1032+
1033+ /// Get xf(x) values for common partons from current PDF
1034+ void evolvepartm_(const int& nset, const int& ipart, const double& x, const double& q, double& fxq) {
1035+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1036+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1037+ int ipart_copy; // this is to deal with photons, which are labeled 7 in MG5aMC
1038+ ipart_copy = ipart;
1039+ if (ipart==7) ipart_copy = 22;
1040+ try {
1041+ fxq = ACTIVESETS[nset].activeMember()->xfxQ(ipart_copy, x, q);
1042+ } catch (const exception& e) {
1043+ fxq = 0;
1044+ }
1045+ // Update current set focus
1046+ CURRENTSET = nset;
1047+ }
1048+ /// Get xf(x) values for common partons from current PDF (non-multiset version)
1049+ void evolvepart_( const int& ipart, const double& x, const double& q, double& fxq) {
1050+ int nset1 = 1;
1051+ evolvepartm_(nset1, ipart, x, q, fxq);
1052+ }
1053+
1054+ /// Get xf(x) values for common partons from current PDF
1055+ void evolvepdfm_(const int& nset, const double& x, const double& q, double* fxq) {
1056+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1057+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1058+ // Evaluate for the 13 LHAPDF5 standard partons (-6..6)
1059+ for (size_t i = 0; i < 13; ++i) {
1060+ try {
1061+ fxq[i] = ACTIVESETS[nset].activeMember()->xfxQ(i-6, x, q);
1062+ } catch (const exception& e) {
1063+ fxq[i] = 0;
1064+ }
1065+ }
1066+ // Update current set focus
1067+ CURRENTSET = nset;
1068+ }
1069+ /// Get xf(x) values for common partons from current PDF (non-multiset version)
1070+ void evolvepdf_(const double& x, const double& q, double* fxq) {
1071+ int nset1 = 1;
1072+ evolvepdfm_(nset1, x, q, fxq);
1073+ }
1074+
1075+
1076+ /// Determine if the current PDF has a photon flavour (historically only MRST2004QED)
1077+ /// @todo Function rather than subroutine?
1078+ /// @note There is no multiset version. has_photon will respect the current set slot.
1079+ bool has_photon_() {
1080+ return ACTIVESETS[CURRENTSET].activeMember()->hasFlavor(22);
1081+ }
1082+
1083+
1084+ /// Get xfx values from current PDF, including an extra photon flavour
1085+ void evolvepdfphotonm_(const int& nset, const double& x, const double& q, double* fxq, double& photonfxq) {
1086+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1087+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1088+ // First evaluate the "normal" partons
1089+ evolvepdfm_(nset, x, q, fxq);
1090+ // Then evaluate the photon flavor (historically only for MRST2004QED)
1091+ try {
1092+ photonfxq = ACTIVESETS[nset].activeMember()->xfxQ(22, x, q);
1093+ } catch (const exception& e) {
1094+ photonfxq = 0;
1095+ }
1096+ // Update current set focus
1097+ CURRENTSET = nset;
1098+ }
1099+ /// Get xfx values from current PDF, including an extra photon flavour (non-multiset version)
1100+ void evolvepdfphoton_(const double& x, const double& q, double* fxq, double& photonfxq) {
1101+ int nset1 = 1;
1102+ evolvepdfphotonm_(nset1, x, q, fxq, photonfxq);
1103+ }
1104+
1105+
1106+ /// Get xf(x) values for common partons from a photon PDF
1107+ void evolvepdfpm_(const int& nset, const double& x, const double& q, const double& p2, const int& ip2, double& fxq) {
1108+ // Update current set focus
1109+ CURRENTSET = nset;
1110+ throw LHAPDF::NotImplementedError("Photon structure functions are not yet supported in LHAPDF6");
1111+ }
1112+ /// Get xf(x) values for common partons from a photon PDF (non-multiset version)
1113+ void evolvepdfp_(const double& x, const double& q, const double& p2, const int& ip2, double& fxq) {
1114+ int nset1 = 1;
1115+ evolvepdfpm_(nset1, x, q, p2, ip2, fxq);
1116+ }
1117+
1118+
1119+ // alpha_s evolution
1120+
1121+ /// Get the alpha_s order for the set
1122+ void getorderasm_(const int& nset, int& oas) {
1123+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1124+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1125+ // Set equal to the number of members for the requested set
1126+ oas = ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("AlphaS_OrderQCD");
1127+ // Update current set focus
1128+ CURRENTSET = nset;
1129+ }
1130+ /// Get the alpha_s order for the set (non-multiset version)
1131+ void getorderas_(int& oas) {
1132+ int nset1 = 1;
1133+ getorderasm_(nset1, oas);
1134+ }
1135+
1136+
1137+ /// Get the alpha_s(Q) value for set nset
1138+ double alphaspdfm_(const int& nset, const double& Q){
1139+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1140+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1141+ return ACTIVESETS[nset].activeMember()->alphasQ(Q);
1142+ // Update current set focus
1143+ CURRENTSET = nset;
1144+ }
1145+ /// Get the alpha_s(Q) value for the set (non-multiset version)
1146+ double alphaspdf_(const double& Q){
1147+ int nset1 = 1;
1148+ return alphaspdfm_(nset1, Q);
1149+ }
1150+
1151+
1152+ // Metadata functions
1153+
1154+ /// Get the number of error members in the set
1155+ void numberpdfm_(const int& nset, int& numpdf) {
1156+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1157+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1158+ // Set equal to the number of members for the requested set
1159+ numpdf= ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("NumMembers");
1160+ // Reproduce old LHAPDF v5 behaviour, i.e. subtract 1
1161+ numpdf -= 1;
1162+ // Update current set focus
1163+ CURRENTSET = nset;
1164+ }
1165+ /// Get the number of error members in the set (non-multiset version)
1166+ void numberpdf_(int& numpdf) {
1167+ int nset1 = 1;
1168+ numberpdfm_(nset1, numpdf);
1169+ }
1170+
1171+
1172+ /// Get the max number of active flavours
1173+ void getnfm_(const int& nset, int& nf) {
1174+ //nf = ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("AlphaS_NumFlavors");
1175+ nf = ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("NumFlavors");
1176+ // Update current set focus
1177+ CURRENTSET = nset;
1178+ }
1179+ /// Get the max number of active flavours (non-multiset version)
1180+ void getnf_(int& nf) {
1181+ int nset1 = 1;
1182+ getnfm_(nset1, nf);
1183+ }
1184+
1185+
1186+ /// Get nf'th quark mass
1187+ void getqmassm_(const int& nset, const int& nf, double& mass) {
1188+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1189+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1190+ if (nf*nf == 1) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MDown");
1191+ else if (nf*nf == 4) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MUp");
1192+ else if (nf*nf == 9) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MStrange");
1193+ else if (nf*nf == 16) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MCharm");
1194+ else if (nf*nf == 25) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MBottom");
1195+ else if (nf*nf == 36) mass = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("MTop");
1196+ else throw LHAPDF::UserError("Trying to get quark mass for invalid quark ID #" + LHAPDF::to_str(nf));
1197+ // Update current set focus
1198+ CURRENTSET = nset;
1199+ }
1200+ /// Get nf'th quark mass (non-multiset version)
1201+ void getqmass_(const int& nf, double& mass) {
1202+ int nset1 = 1;
1203+ getqmassm_(nset1, nf, mass);
1204+ }
1205+
1206+
1207+ /// Get the nf'th quark threshold
1208+ void getthresholdm_(const int& nset, const int& nf, double& Q) {
1209+ try {
1210+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1211+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1212+ if (nf*nf == 1) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdDown");
1213+ else if (nf*nf == 4) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdUp");
1214+ else if (nf*nf == 9) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdStrange");
1215+ else if (nf*nf == 16) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdCharm");
1216+ else if (nf*nf == 25) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdBottom");
1217+ else if (nf*nf == 36) Q = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("ThresholdTop");
1218+ //else throw LHAPDF::UserError("Trying to get quark threshold for invalid quark ID #" + LHAPDF::to_str(nf));
1219+ } catch (...) {
1220+ getqmassm_(nset, nf, Q);
1221+ }
1222+ // Update current set focus
1223+ CURRENTSET = nset;
1224+ }
1225+ /// Get the nf'th quark threshold
1226+ void getthreshold_(const int& nf, double& Q) {
1227+ int nset1 = 1;
1228+ getthresholdm_(nset1, nf, Q);
1229+ }
1230+
1231+
1232+ /// Print PDF set's description to stdout
1233+ void getdescm_(const int& nset) {
1234+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1235+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1236+ cout << ACTIVESETS[nset].activeMember()->description() << endl;
1237+ // Update current set focus
1238+ CURRENTSET = nset;
1239+ }
1240+ void getdesc_() {
1241+ int nset1 = 1;
1242+ getdescm_(nset1);
1243+ }
1244+
1245+
1246+ void getxminm_(const int& nset, const int& nmem, double& xmin) {
1247+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1248+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1249+ const int activemem = ACTIVESETS[nset].currentmem;
1250+ ACTIVESETS[nset].loadMember(nmem);
1251+ xmin = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMin");
1252+ ACTIVESETS[nset].loadMember(activemem);
1253+ // Update current set focus
1254+ CURRENTSET = nset;
1255+ }
1256+ void getxmin_(const int& nmem, double& xmin) {
1257+ int nset1 = 1;
1258+ getxminm_(nset1, nmem, xmin);
1259+ }
1260+
1261+
1262+ void getxmaxm_(const int& nset, const int& nmem, double& xmax) {
1263+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1264+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1265+ const int activemem = ACTIVESETS[nset].currentmem;
1266+ ACTIVESETS[nset].loadMember(nmem);
1267+ xmax = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMax");
1268+ ACTIVESETS[nset].loadMember(activemem);
1269+ // Update current set focus
1270+ CURRENTSET = nset;
1271+ }
1272+ void getxmax_(const int& nmem, double& xmax) {
1273+ int nset1 = 1;
1274+ getxmaxm_(nset1, nmem, xmax);
1275+ }
1276+
1277+
1278+ void getq2minm_(const int& nset, const int& nmem, double& q2min) {
1279+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1280+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1281+ const int activemem = ACTIVESETS[nset].currentmem;
1282+ ACTIVESETS[nset].loadMember(nmem);
1283+ q2min = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMin"));
1284+ ACTIVESETS[nset].loadMember(activemem);
1285+ // Update current set focus
1286+ CURRENTSET = nset;
1287+ }
1288+ void getq2min_(const int& nmem, double& q2min) {
1289+ int nset1 = 1;
1290+ getq2minm_(nset1, nmem, q2min);
1291+ }
1292+
1293+
1294+ void getq2maxm_(const int& nset, const int& nmem, double& q2max) {
1295+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1296+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1297+ const int activemem = ACTIVESETS[nset].currentmem;
1298+ ACTIVESETS[nset].loadMember(nmem);
1299+ q2max = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMax"));
1300+ ACTIVESETS[nset].loadMember(activemem);
1301+ // Update current set focus
1302+ CURRENTSET = nset;
1303+ }
1304+ void getq2max_(const int& nmem, double& q2max) {
1305+ int nset1 = 1;
1306+ getq2maxm_(nset1, nmem, q2max);
1307+ }
1308+
1309+
1310+ void getminmaxm_(const int& nset, const int& nmem, double& xmin, double& xmax, double& q2min, double& q2max) {
1311+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1312+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1313+ const int activemem = ACTIVESETS[nset].currentmem;
1314+ ACTIVESETS[nset].loadMember(nmem);
1315+ xmin = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMin");
1316+ xmax = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMax");
1317+ q2min = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMin"));
1318+ q2max = LHAPDF::sqr(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMax"));
1319+ ACTIVESETS[nset].loadMember(activemem);
1320+ // Update current set focus
1321+ CURRENTSET = nset;
1322+ }
1323+ void getminmax_(const int& nmem, double& xmin, double& xmax, double& q2min, double& q2max) {
1324+ int nset1 = 1;
1325+ getminmaxm_(nset1, nmem, xmin, xmax, q2min, q2max);
1326+ }
1327+
1328+
1329+
1330+ void getlam4m_(const int& nset, const int& nmem, double& qcdl4) {
1331+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1332+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1333+ CURRENTSET = nset;
1334+ ACTIVESETS[nset].loadMember(nmem);
1335+ qcdl4 = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("AlphaS_Lambda4", -1.0);
1336+ }
1337+ void getlam4_(const int& nmem, double& qcdl4) {
1338+ int nset1 = 1;
1339+ getlam4m_(nset1, nmem, qcdl4);
1340+ }
1341+
1342+
1343+ void getlam5m_(const int& nset, const int& nmem, double& qcdl5) {
1344+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1345+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1346+ CURRENTSET = nset;
1347+ ACTIVESETS[nset].loadMember(nmem);
1348+ qcdl5 = ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("AlphaS_Lambda5", -1.0);
1349+ }
1350+ void getlam5_(const int& nmem, double& qcdl5) {
1351+ int nset1 = 1;
1352+ getlam5m_(nset1, nmem, qcdl5);
1353+ }
1354+
1355+
1356+
1357+
1358+
1359+ /// Backwards compatibility functions for LHAPDF5 calculations of
1360+ /// PDF uncertainties and PDF correlations (G. Watt, March 2014).
1361+
1362+ // subroutine GetPDFUncTypeM(nset,lMonteCarlo,lSymmetric)
1363+ void getpdfunctypem_(const int& nset, int& lmontecarlo, int& lsymmetric) {
1364+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1365+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1366+ const string errorType = ACTIVESETS[nset].activeMember()->set().errorType();
1367+ if (LHAPDF::startswith(errorType, "replicas")) { // Monte Carlo PDF sets
1368+ lmontecarlo = 1;
1369+ lsymmetric = 1;
1370+ } else if (LHAPDF::startswith(errorType, "symmhessian")) { // symmetric eigenvector PDF sets
1371+ lmontecarlo = 0;
1372+ lsymmetric = 1;
1373+ } else { // default: assume asymmetric Hessian eigenvector PDF sets
1374+ lmontecarlo = 0;
1375+ lsymmetric = 0;
1376+ }
1377+ // Update current set focus
1378+ CURRENTSET = nset;
1379+ }
1380+ // subroutine GetPDFUncType(lMonteCarlo,lSymmetric)
1381+ void getpdfunctype_(int& lmontecarlo, int& lsymmetric) {
1382+ int nset1 = 1;
1383+ getpdfunctypem_(nset1, lmontecarlo, lsymmetric);
1384+ }
1385+
1386+
1387+ // subroutine GetPDFuncertaintyM(nset,values,central,errplus,errminus,errsym)
1388+ void getpdfuncertaintym_(const int& nset, const double* values, double& central, double& errplus, double& errminus, double& errsymm) {
1389+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1390+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1391+ const size_t nmem = ACTIVESETS[nset].activeMember()->set().size()-1;
1392+ const vector<double> vecvalues(values, values + nmem + 1);
1393+ LHAPDF::PDFUncertainty err = ACTIVESETS[nset].activeMember()->set().uncertainty(vecvalues, -1);
1394+ central = err.central;
1395+ // For a combined set, the PDF and parameter variation uncertainties will be added in quadrature.
1396+ errplus = err.errplus;
1397+ errminus = err.errminus;
1398+ errsymm = err.errsymm;
1399+ // Update current set focus
1400+ CURRENTSET = nset;
1401+ }
1402+ // subroutine GetPDFuncertainty(values,central,errplus,errminus,errsym)
1403+ void getpdfuncertainty_(const double* values, double& central, double& errplus, double& errminus, double& errsymm) {
1404+ int nset1 = 1;
1405+ getpdfuncertaintym_(nset1, values, central, errplus, errminus, errsymm);
1406+ }
1407+
1408+
1409+ // subroutine GetPDFcorrelationM(nset,valuesA,valuesB,correlation)
1410+ void getpdfcorrelationm_(const int& nset, const double* valuesA, const double* valuesB, double& correlation) {
1411+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1412+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1413+ const size_t nmem = ACTIVESETS[nset].activeMember()->set().size()-1;
1414+ const vector<double> vecvaluesA(valuesA, valuesA + nmem + 1);
1415+ const vector<double> vecvaluesB(valuesB, valuesB + nmem + 1);
1416+ correlation = ACTIVESETS[nset].activeMember()->set().correlation(vecvaluesA,vecvaluesB);
1417+ // Update current set focus
1418+ CURRENTSET = nset;
1419+ }
1420+ // subroutine GetPDFcorrelation(valuesA,valuesB,correlation)
1421+ void getpdfcorrelation_(const double* valuesA, const double* valuesB, double& correlation) {
1422+ int nset1 = 1;
1423+ getpdfcorrelationm_(nset1, valuesA, valuesB, correlation);
1424+ }
1425+
1426+
1427+ ///////////////////////////////////////
1428+
1429+
1430+ /// REALLY OLD PDFLIB COMPATIBILITY FUNCTIONS
1431+
1432+ /// PDFLIB initialisation function
1433+ void pdfset_(const char* par, const double* value, int parlength) {
1434+
1435+ string my_par(par), message;
1436+ int id;
1437+ // Identify the calling program (yuck!)
1438+ if (my_par.find("NPTYPE") != string::npos) {
1439+ message = "==== LHAPDF6 USING PYTHIA-TYPE LHAGLUE INTERFACE ====";
1440+ // Take PDF ID from value[2]
1441+ id = value[2]+1000*value[1];
1442+ } else if (my_par.find("HWLHAPDF") != string::npos) {
1443+ message = "==== LHAPDF6 USING HERWIG-TYPE LHAGLUE INTERFACE ====";
1444+ // Take PDF ID from value[0]
1445+ id = value[0];
1446+ } else if (my_par.find("DEFAULT") != string::npos) {
1447+ message = "==== LHAPDF6 USING DEFAULT-TYPE LHAGLUE INTERFACE ====";
1448+ // Take PDF ID from value[0]
1449+ id = value[0];
1450+ } else {
1451+ message = "==== LHAPDF6 USING PDFLIB-TYPE LHAGLUE INTERFACE ====";
1452+ // Take PDF ID from value[2]
1453+ id = value[2]+1000*value[1];
1454+ }
1455+ pair<string, int> set_id = LHAPDF::lookupPDF(id);
1456+ if (set_id.first != ACTIVESETS[1].setname || set_id.second != ACTIVESETS[1].currentmem) {
1457+ if (LHAPDF::verbosity() > 0) cout << message << endl;
1458+ ACTIVESETS[1] = PDFSetHandler(id);
1459+ }
1460+
1461+ CURRENTSET = 1;
1462+
1463+ // Extract parameters for common blocks (with sensible fallback values)
1464+ PDFPtr pdf = ACTIVESETS[1].activeMember();
1465+ w50513_.xmin = pdf->info().get_entry_as<double>("XMin", 0.0);
1466+ w50513_.xmax = pdf->info().get_entry_as<double>("XMax", 1.0);
1467+ w50513_.q2min = LHAPDF::sqr(pdf->info().get_entry_as<double>("QMin", 1.0));
1468+ w50513_.q2max = LHAPDF::sqr(pdf->info().get_entry_as<double>("QMax", 1.0e5));
1469+ w50512_.qcdl4 = pdf->info().get_entry_as<double>("AlphaS_Lambda4", 0.0);
1470+ w50512_.qcdl5 = pdf->info().get_entry_as<double>("AlphaS_Lambda5", 0.0);
1471+ lhapdfr_.qcdlha4 = pdf->info().get_entry_as<double>("AlphaS_Lambda4", 0.0);
1472+ lhapdfr_.qcdlha5 = pdf->info().get_entry_as<double>("AlphaS_Lambda5", 0.0);
1473+ lhapdfr_.nfllha = 4;
1474+ // Activate legacy/compatibility LHAPDF5-type behaviour re. broken Lambda values
1475+ if (pdf->info().get_entry_as<bool>("Pythia6LambdaV5Compat", true)) {
1476+ w50512_.qcdl4 = 0.192;
1477+ w50512_.qcdl5 = 0.192;
1478+ lhapdfr_.qcdlha4 = 0.192;
1479+ lhapdfr_.qcdlha5 = 0.192;
1480+ }
1481+ }
1482+
1483+ /// PDFLIB nucleon structure function querying
1484+ void structm_(const double& x, const double& q,
1485+ double& upv, double& dnv, double& usea, double& dsea,
1486+ double& str, double& chm, double& bot, double& top, double& glu) {
1487+ CURRENTSET = 1;
1488+ /// Fill (partial) parton return variables
1489+ PDFPtr pdf = ACTIVESETS[1].activeMember();
1490+ dsea = pdf->xfxQ(-1, x, q);
1491+ usea = pdf->xfxQ(-2, x, q);
1492+ dnv = pdf->xfxQ(1, x, q) - dsea;
1493+ upv = pdf->xfxQ(2, x, q) - usea;
1494+ str = pdf->xfxQ(3, x, q);
1495+ chm = (pdf->hasFlavor(4)) ? pdf->xfxQ(4, x, q) : 0;
1496+ bot = (pdf->hasFlavor(5)) ? pdf->xfxQ(5, x, q) : 0;
1497+ top = (pdf->hasFlavor(6)) ? pdf->xfxQ(6, x, q) : 0;
1498+ glu = pdf->xfxQ(21, x, q);
1499+ }
1500+
1501+ /// PDFLIB photon structure function querying
1502+ void structp_(const double& x, const double& q2, const double& p2, const double& ip2,
1503+ double& upv, double& dnv, double& usea, double& dsea,
1504+ double& str, double& chm, double& bot, double& top, double& glu) {
1505+ throw LHAPDF::NotImplementedError("Photon structure functions are not yet supported");
1506+ }
1507+
1508+ /// PDFLIB statistics on PDF under/overflows
1509+ void pdfsta_() {
1510+ /// @note Can't do anything...
1511+ }
1512+
1513+
1514+}
1515+
1516+
1517+// LHAPDF namespace C++ compatibility code
1518+#ifdef ENABLE_LHAGLUE_CXX
1519+
1520+
1521+void LHAPDF::setVerbosity(LHAPDF::Verbosity noiselevel) {
1522+ LHAPDF::setVerbosity((int) noiselevel);
1523+}
1524+
1525+void LHAPDF::setPDFPath(const string& path) {
1526+ pathsPrepend(path);
1527+}
1528+
1529+string LHAPDF::pdfsetsPath() {
1530+ return paths()[0];
1531+}
1532+
1533+int LHAPDF::numberPDF() {
1534+ int nmem;
1535+ numberpdf_(nmem);
1536+ return nmem;
1537+}
1538+int LHAPDF::numberPDF(int nset) {
1539+ int nmem;
1540+ numberpdfm_(nset,nmem);
1541+ return nmem;
1542+}
1543+
1544+void LHAPDF::initPDF( int memset) {
1545+ int nset1 = 1;
1546+ initpdfm_(nset1, memset);
1547+}
1548+void LHAPDF::initPDF(int nset, int memset) {
1549+ initpdfm_(nset, memset);
1550+}
1551+
1552+
1553+double LHAPDF::xfx(double x, double Q, int fl) {
1554+ vector<double> r(13);
1555+ evolvepdf_(x, Q, &r[0]);
1556+ return r[fl+6];
1557+}
1558+double LHAPDF::xfx(int nset, double x, double Q, int fl) {
1559+ vector<double> r(13);
1560+ evolvepdfm_(nset, x, Q, &r[0]);
1561+ return r[fl+6];
1562+}
1563+
1564+vector<double> LHAPDF::xfx(double x, double Q) {
1565+ vector<double> r(13);
1566+ evolvepdf_(x, Q, &r[0]);
1567+ return r;
1568+}
1569+vector<double> LHAPDF::xfx(int nset, double x, double Q) {
1570+ vector<double> r(13);
1571+ evolvepdfm_(nset, x, Q, &r[0]);
1572+ return r;
1573+}
1574+
1575+void LHAPDF::xfx(double x, double Q, double* results) {
1576+ evolvepdf_(x, Q, results);
1577+}
1578+void LHAPDF::xfx(int nset, double x, double Q, double* results) {
1579+ evolvepdfm_(nset, x, Q, results);
1580+}
1581+
1582+
1583+vector<double> LHAPDF::xfxphoton(double x, double Q) {
1584+ vector<double> r(13);
1585+ double mphoton;
1586+ evolvepdfphoton_(x, Q, &r[0], mphoton);
1587+ r.push_back(mphoton);
1588+ return r;
1589+}
1590+vector<double> LHAPDF::xfxphoton(int nset, double x, double Q) {
1591+ vector<double> r(13);
1592+ double mphoton;
1593+ evolvepdfphotonm_(nset, x, Q, &r[0], mphoton);
1594+ r.push_back(mphoton);
1595+ return r;
1596+}
1597+
1598+void LHAPDF::xfxphoton(double x, double Q, double* results) {
1599+ evolvepdfphoton_(x, Q, results, results[13]);
1600+}
1601+void LHAPDF::xfxphoton(int nset, double x, double Q, double* results) {
1602+ evolvepdfphotonm_(nset, x, Q, results, results[13]);
1603+}
1604+
1605+double LHAPDF::xfxphoton(double x, double Q, int fl) {
1606+ vector<double> r(13);
1607+ double mphoton;
1608+ evolvepdfphoton_(x, Q, &r[0], mphoton);
1609+ if (fl == 7) return mphoton;
1610+ return r[fl+6];
1611+}
1612+double LHAPDF::xfxphoton(int nset, double x, double Q, int fl) {
1613+ vector<double> r(13);
1614+ double mphoton;
1615+ evolvepdfphotonm_(nset, x, Q, &r[0], mphoton);
1616+ if ( fl == 7 ) return mphoton;
1617+ return r[fl+6];
1618+}
1619+
1620+
1621+void LHAPDF::initPDFSet(const string& filename, int nmem) {
1622+ initPDFSet(1,filename, nmem);
1623+}
1624+
1625+void LHAPDF::initPDFSet(int nset, const string& filename, int nmem) {
1626+ initPDFSetByName(nset,filename);
1627+ ACTIVESETS[nset].loadMember(nmem);
1628+ CURRENTSET = nset;
1629+}
1630+
1631+
1632+void LHAPDF::initPDFSet(const string& filename, SetType type, int nmem) {
1633+ // silently ignore type
1634+ initPDFSet(1,filename, nmem);
1635+}
1636+
1637+void LHAPDF::initPDFSet(int nset, const string& filename, SetType type, int nmem) {
1638+ // silently ignore type
1639+ initPDFSetByName(nset,filename);
1640+ ACTIVESETS[nset].loadMember(nmem);
1641+ CURRENTSET = nset;
1642+}
1643+
1644+void LHAPDF::initPDFSet(int nset, int setid, int nmem) {
1645+ pair<string, int> set_id = LHAPDF::lookupPDF(setid+nmem);
1646+ if (set_id.second != nmem)
1647+ throw LHAPDF::UserError("Inconsistent member numbers: " + LHAPDF::to_str(set_id.second) + " != " + LHAPDF::to_str(nmem));
1648+ if (set_id.first != ACTIVESETS[nset].setname || nmem != ACTIVESETS[nset].currentmem)
1649+ ACTIVESETS[nset] = PDFSetHandler(setid+nmem);
1650+ CURRENTSET = nset;
1651+}
1652+
1653+void LHAPDF::initPDFSet(int setid, int nmem) {
1654+ initPDFSet(1,setid,nmem);
1655+}
1656+
1657+#define SIZE 999
1658+void LHAPDF::initPDFSetByName(const string& filename) {
1659+ std::cout << "initPDFSetByName: " << filename << std::endl;
1660+ char cfilename[SIZE+1];
1661+ strncpy(cfilename, filename.c_str(), SIZE);
1662+ initpdfsetbyname_(cfilename, filename.length());
1663+}
1664+
1665+void LHAPDF::initPDFSetByName(int nset, const string& filename) {
1666+ char cfilename[SIZE+1];
1667+ strncpy(cfilename, filename.c_str(), SIZE);
1668+ initpdfsetbynamem_(nset, cfilename, filename.length());
1669+}
1670+
1671+void LHAPDF::initPDFSetByName(const string& filename, SetType type) {
1672+ //silently ignore type
1673+ std::cout << "initPDFSetByName: " << filename << std::endl;
1674+ char cfilename[SIZE+1];
1675+ strncpy(cfilename, filename.c_str(), SIZE);
1676+ initpdfsetbyname_(cfilename, filename.length());
1677+}
1678+
1679+void LHAPDF::initPDFSetByName(int nset, const string& filename, SetType type) {
1680+ //silently ignore type
1681+ char cfilename[SIZE+1];
1682+ strncpy(cfilename, filename.c_str(), SIZE);
1683+ initpdfsetbynamem_(nset, cfilename, filename.length());
1684+}
1685+
1686+
1687+void LHAPDF::getDescription() {
1688+ getDescription(1);
1689+}
1690+
1691+void LHAPDF::getDescription(int nset) {
1692+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1693+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1694+ cout << ACTIVESETS[nset].activeMember()->set().description() << endl;
1695+}
1696+
1697+
1698+double LHAPDF::alphasPDF(double Q) {
1699+ return LHAPDF::alphasPDF(1, Q) ;
1700+}
1701+
1702+double LHAPDF::alphasPDF(int nset, double Q) {
1703+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1704+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1705+ CURRENTSET = nset;
1706+ // return alphaS for the requested set
1707+ return ACTIVESETS[nset].activeMember()->alphasQ(Q);
1708+}
1709+
1710+
1711+bool LHAPDF::hasPhoton(){
1712+ return has_photon_();
1713+}
1714+
1715+
1716+int LHAPDF::getOrderAlphaS() {
1717+ return LHAPDF::getOrderAlphaS(1) ;
1718+}
1719+
1720+int LHAPDF::getOrderAlphaS(int nset) {
1721+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1722+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1723+ CURRENTSET = nset;
1724+ // return alphaS Order for the requested set
1725+ return ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("AlphaS_OrderQCD", -1);
1726+}
1727+
1728+
1729+int LHAPDF::getOrderPDF() {
1730+ return LHAPDF::getOrderPDF(1) ;
1731+}
1732+
1733+int LHAPDF::getOrderPDF(int nset) {
1734+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1735+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1736+ CURRENTSET = nset;
1737+ // return PDF order for the requested set
1738+ return ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("OrderQCD", -1);
1739+}
1740+
1741+
1742+double LHAPDF::getLam4(int nmem) {
1743+ return LHAPDF::getLam4(1, nmem) ;
1744+}
1745+
1746+double LHAPDF::getLam4(int nset, int nmem) {
1747+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1748+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1749+ // CURRENTSET = nset;
1750+ // ACTIVESETS[nset].loadMember(nmem);
1751+ // return ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("AlphaS_Lambda4", -1.0);
1752+ double qcdl4;
1753+ getlam4m_(nset, nmem, qcdl4);
1754+ return qcdl4;
1755+}
1756+
1757+
1758+double LHAPDF::getLam5(int nmem) {
1759+ return LHAPDF::getLam5(1, nmem) ;
1760+}
1761+
1762+double LHAPDF::getLam5(int nset, int nmem) {
1763+ // if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1764+ // throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1765+ // CURRENTSET = nset;
1766+ // ACTIVESETS[nset].loadMember(nmem);
1767+ // return ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("AlphaS_Lambda5", -1.0);
1768+ double qcdl5;
1769+ getlam5m_(nset, nmem, qcdl5);
1770+ return qcdl5;
1771+}
1772+
1773+
1774+int LHAPDF::getNf() {
1775+ return LHAPDF::getNf(1) ;
1776+}
1777+
1778+int LHAPDF::getNf(int nset) {
1779+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1780+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1781+ CURRENTSET = nset;
1782+ // return alphaS Order for the requested set
1783+ return ACTIVESETS[nset].activeMember()->info().get_entry_as<int>("NumFlavors");
1784+}
1785+
1786+
1787+double LHAPDF::getXmin(int nmem) {
1788+ return LHAPDF::getXmin(1, nmem) ;
1789+}
1790+
1791+double LHAPDF::getXmin(int nset, int nmem) {
1792+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1793+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1794+ CURRENTSET = nset;
1795+ // return alphaS Order for the requested set
1796+ ACTIVESETS[nset].loadMember(nmem);
1797+ return ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMin");
1798+}
1799+
1800+double LHAPDF::getXmax(int nmem) {
1801+ return LHAPDF::getXmax(1, nmem) ;
1802+}
1803+
1804+double LHAPDF::getXmax(int nset, int nmem) {
1805+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1806+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1807+ CURRENTSET = nset;
1808+ // return alphaS Order for the requested set
1809+ ACTIVESETS[nset].loadMember(nmem);
1810+ return ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("XMax");
1811+}
1812+
1813+double LHAPDF::getQ2min(int nmem) {
1814+ return LHAPDF::getQ2min(1, nmem) ;
1815+}
1816+
1817+double LHAPDF::getQ2min(int nset, int nmem) {
1818+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1819+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1820+ CURRENTSET = nset;
1821+ // return alphaS Order for the requested set
1822+ ACTIVESETS[nset].loadMember(nmem);
1823+ return pow(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMin"),2);
1824+}
1825+
1826+double LHAPDF::getQ2max(int nmem) {
1827+ return LHAPDF::getQ2max(1,nmem) ;
1828+}
1829+
1830+double LHAPDF::getQ2max(int nset, int nmem) {
1831+ if (ACTIVESETS.find(nset) == ACTIVESETS.end())
1832+ throw LHAPDF::UserError("Trying to use LHAGLUE set #" + LHAPDF::to_str(nset) + " but it is not initialised");
1833+ CURRENTSET = nset;
1834+ // return alphaS Order for the requested set
1835+ ACTIVESETS[nset].loadMember(nmem);
1836+ return pow(ACTIVESETS[nset].activeMember()->info().get_entry_as<double>("QMax"),2);
1837+}
1838+
1839+double LHAPDF::getQMass(int nf) {
1840+ return LHAPDF::getQMass(1, nf) ;
1841+}
1842+
1843+double LHAPDF::getQMass(int nset, int nf) {
1844+ double mass;
1845+ getqmassm_(nset, nf, mass);
1846+ return mass;
1847+}
1848+
1849+double LHAPDF::getThreshold(int nf) {
1850+ return LHAPDF::getThreshold(1, nf) ;
1851+}
1852+
1853+double LHAPDF::getThreshold(int nset, int nf) {
1854+ double thres;
1855+ getthresholdm_(nset, nf, thres);
1856+ return thres;
1857+}
1858+
1859+void LHAPDF::usePDFMember(int member) {
1860+ initpdf_(member);
1861+}
1862+
1863+void LHAPDF::usePDFMember(int nset, int member) {
1864+ initpdfm_(nset, member);
1865+}
1866+
1867+#endif // ENABLE_LHAGLUE_CXX
1868
1869=== modified file 'Template/LO/Source/dsample.f'
1870--- Template/LO/Source/dsample.f 2020-01-20 14:53:46 +0000
1871+++ Template/LO/Source/dsample.f 2020-07-04 19:03:17 +0000
1872@@ -141,7 +141,7 @@
1873 fx =0d0
1874 wgt=0d0
1875 endif
1876- call sample_put_point(wgt,x(1),iter,ipole,itmin) !Store result
1877+ call sample_put_point(wgt,x(1),iter,ipole) !Store result
1878 endif
1879 if (wgt .ne. 0d0) kevent=kevent+1
1880 c
1881@@ -318,7 +318,7 @@
1882 endif
1883
1884 if (nzoom .le. 0) then
1885- call sample_put_point(wgt,x(1),iter,ipole,itmin) !Store result
1886+ call sample_put_point(wgt,x(1),iter,ipole) !Store result
1887 else
1888 nzoom = nzoom -1
1889 ievent=ievent-1
1890
1891=== modified file 'Template/LO/SubProcesses/cuts.f'
1892--- Template/LO/SubProcesses/cuts.f 2019-07-30 13:51:02 +0000
1893+++ Template/LO/SubProcesses/cuts.f 2020-07-04 19:03:17 +0000
1894@@ -1394,10 +1394,10 @@
1895 C
1896 2 IF (N.EQ.1) RETURN
1897 IF (MODE) 10,20,30
1898- 10 CALL SORTTI (A,INDEX,N)
1899+ 10 STOP 5 ! CALL SORTTI (A,INDEX,N)
1900 GO TO 40
1901 C
1902- 20 CALL SORTTC(A,INDEX,N)
1903+ 20 STOP 5 ! CALL SSORTTC(A,INDEX,N)
1904 GO TO 40
1905 C
1906 30 CALL SORTTF (A,INDEX,N)
1907
1908=== modified file 'Template/LO/SubProcesses/genps.f'
1909--- Template/LO/SubProcesses/genps.f 2019-09-26 11:09:58 +0000
1910+++ Template/LO/SubProcesses/genps.f 2020-07-04 19:03:17 +0000
1911@@ -666,7 +666,8 @@
1912 c data nerr/0/
1913 double precision smin,smax,totmass,totmassin,xa2,xb2,wgt
1914 double precision costh,phi,tmin,tmax,t
1915- double precision ma2,mb2,m12,mn2,s1
1916+ double precision ma2,mb2,m12,mn2,s1, mi2
1917+ double precision tmass(-max_branch:-1)
1918 c
1919 c External
1920 c
1921@@ -864,7 +865,7 @@
1922 c and not to be block by numerical inacuracy
1923 c tmax = max(tmax,0d0) !This line if want really t freedom
1924 call sample_get_x(wgt,x(-ibranch),-ibranch,iconfig,
1925- $ 0, -tmin/stot)
1926+ $ 0d0, -tmin/stot)
1927 t = stot*(-x(-ibranch))
1928
1929 else
1930@@ -893,7 +894,14 @@
1931 c pa+pb -> p1+ p2; t=(pa-p1)**2; pr = pa-p1
1932 c gentcms(pa,pb,t,phi,m1,m2,p1,pr)
1933 c
1934- call gentcms(p(0,itree(1,ibranch)),p(0,2),t,phi,
1935+
1936+ if (itree(1,ibranch).gt.-ns_channel-1)then
1937+ mi2 = m(itree(1,ibranch))**2
1938+ else
1939+ mi2 = tmass(itree(1,ibranch))
1940+ endif
1941+ tmass(ibranch) = t
1942+ call gentcms(p(0,itree(1,ibranch)),p(0,2),t,phi, mi2,
1943 & m(itree(2,ibranch)),m(ibranch-1),p(0,itree(2,ibranch)),
1944 & p(0,ibranch),jac)
1945
1946@@ -1002,7 +1010,7 @@
1947 endif
1948 end
1949
1950- subroutine gentcms(pa,pb,t,phi,m1,m2,p1,pr,jac)
1951+ subroutine gentcms(pa,pb,t,phi,ma2,m1,m2,p1,pr,jac)
1952 c*************************************************************************
1953 c Generates 4 momentum for particle 1, and remainder pr
1954 c given the values t, and phi
1955@@ -1038,7 +1046,7 @@
1956 ptotm(i) = ptot(i)
1957 endif
1958 enddo
1959- ma2 = dot(pa,pa)
1960+c ma2 = dot(pa,pa)
1961 c
1962 c determine magnitude of p1 in cms frame (from dhelas routine mom2cx)
1963 c
1964
1965=== modified file 'Template/LO/SubProcesses/reweight.f'
1966--- Template/LO/SubProcesses/reweight.f 2020-03-08 20:49:57 +0000
1967+++ Template/LO/SubProcesses/reweight.f 2020-07-04 19:03:17 +0000
1968@@ -417,6 +417,12 @@
1969 ipart(1,imo)=ipart(1,ida2)
1970 ipart(2,imo)=ipart(1,ida1)
1971 endif
1972+ else if (abs(get_color(idmo)).eq.8.and.abs(get_color(idda1)).eq.1.and.abs(get_color(idda2)).eq.8)then
1973+ ipart(1,imo)=ipart(1,ida2)
1974+ ipart(2,imo)=ipart(2,ida2)
1975+ else if (abs(get_color(idmo)).eq.8.and.abs(get_color(idda1)).eq.8.and.abs(get_color(idda2)).eq.1)then
1976+ ipart(1,imo)=ipart(1,ida1)
1977+ ipart(2,imo)=ipart(2,ida1)
1978 else
1979 write(*,*) idmo,'>', idda1, idda2, 'color', get_color(idmo),'>', get_color(idda1), get_color(idda2)
1980 write(*,*) "failed for ipartupdate. Please retry without MLM/default dynamical scale"
1981
1982=== modified file 'Template/LO/SubProcesses/unwgt.f'
1983--- Template/LO/SubProcesses/unwgt.f 2018-06-20 11:54:42 +0000
1984+++ Template/LO/SubProcesses/unwgt.f 2020-07-04 19:03:17 +0000
1985@@ -478,7 +478,8 @@
1986 double precision beta, get_betaz
1987 double precision ebi(0:3), ebo(0:3)
1988 double precision ptcltmp(nexternal), pdum(0:3)
1989-
1990+ integer beam_number
1991+
1992 integer idup(nexternal,maxproc,maxsproc)
1993 integer mothup(2,nexternal)
1994 integer icolup(2,nexternal,maxflow,maxsproc)
1995@@ -705,31 +706,42 @@
1996 else
1997 write(s_buff(3), '(a)') '<asrwt>0</asrwt>'
1998 endif
1999- if(n_pdfrw(1).gt.0)then
2000+ beam_number = 1
2001+ if (flip) then
2002+ beam_number =2
2003+ endif
2004+
2005+ if(n_pdfrw(1).gt.0.and.abs(lpp(1)).eq.1)then
2006 if(2*n_pdfrw(1).lt.10) then
2007- write(cfmt,'(a,I1,a,I1,a)') '(a,I3,',
2008+ write(cfmt,'(a,I1,a,I1,a)') '(a,I1,a,I3,',
2009 $ n_pdfrw(1),'I9,',2*n_pdfrw(1),'E15.8,a)'
2010 else
2011- write(cfmt,'(a,I1,a,I2,a)') '(a,I3,',
2012+ write(cfmt,'(a,I1,a,I2,a)') '(a,I1,a,I3,',
2013 $ n_pdfrw(1),'I9,',2*n_pdfrw(1),'E15.8,a)'
2014 endif
2015- write(s_buff(4), cfmt) '<pdfrwt beam="1">',
2016+
2017+ write(s_buff(4), cfmt) '<pdfrwt beam="', beam_number, '">',
2018 $ n_pdfrw(1),(i_pdgpdf(i,1),i=1,n_pdfrw(1)),
2019 $ (s_xpdf(i,1),i=1,n_pdfrw(1)),
2020 $ (s_qpdf(i,1),i=1,n_pdfrw(1)),
2021 $ '</pdfrwt>'
2022 else
2023- write(s_buff(4), '(a)') '<pdfrwt beam="1">0</pdfrwt>'
2024- endif
2025- if(n_pdfrw(2).gt.0)then
2026+ write(s_buff(4), '(a,I1,a)') '<pdfrwt beam="',
2027+ $ beam_number,'">0</pdfrwt>'
2028+ endif
2029+ beam_number = 2
2030+ if (flip) then
2031+ beam_number = 1
2032+ endif
2033+ if(n_pdfrw(2).gt.0.and.abs(lpp(2)).eq.1)then
2034 if(2*n_pdfrw(2).lt.10) then
2035- write(cfmt,'(a,I1,a,I1,a)') '(a,I3,',
2036+ write(cfmt,'(a,I1,a,I1,a)') '(a,I1,a,I3,',
2037 $ n_pdfrw(2),'I9,',2*n_pdfrw(2),'E15.8,a)'
2038 else
2039- write(cfmt,'(a,I1,a,I2,a)') '(a,I3,',
2040+ write(cfmt,'(a,I1,a,I2,a)') '(a,I1,a,I3,',
2041 $ n_pdfrw(2),'I9,',2*n_pdfrw(2),'E15.8,a)'
2042 endif
2043- write(s_buff(5), cfmt) '<pdfrwt beam="2">',
2044+ write(s_buff(5), cfmt) '<pdfrwt beam="',beam_number,'">',
2045 $ n_pdfrw(2),(i_pdgpdf(i,2),i=1,n_pdfrw(2)),
2046 $ (s_xpdf(i,2),i=1,n_pdfrw(2)),
2047 $ (s_qpdf(i,2),i=1,n_pdfrw(2)),
2048
2049=== modified file 'Template/LO/bin/internal/merge.pl'
2050--- Template/LO/bin/internal/merge.pl 2014-08-07 12:08:24 +0000
2051+++ Template/LO/bin/internal/merge.pl 2020-07-04 19:03:17 +0000
2052@@ -52,8 +52,8 @@
2053 # Keep track if we are in the init block or not
2054 $initblock = 0;
2055
2056- # LHE version extracted from current file ; 1 by default
2057- $lhe_version = 1.0;
2058+ # LHE version extracted from current file ; 3 by default
2059+ $lhe_version = 3.0;
2060
2061 while (1) {
2062 $gzbytes = $gzin->gzreadline($gzline);
2063
2064=== modified file 'Template/LO/bin/internal/restore_data'
2065--- Template/LO/bin/internal/restore_data 2011-06-29 14:15:21 +0000
2066+++ Template/LO/bin/internal/restore_data 2020-07-04 19:03:17 +0000
2067@@ -30,13 +30,21 @@
2068 exit
2069 fi
2070
2071-
2072-cp $1_results.dat results.dat >& /dev/null
2073+if [[ -e $1_results.dat ]]; then
2074+ cp $1_results.dat results.dat >& /dev/null
2075+else
2076+ cp results.dat $1_results.dat >& /dev/null
2077+fi
2078+
2079 for i in `cat subproc.mg` ; do
2080 cd $i
2081 echo $i
2082 rm -f ftn25 ftn26 >& /dev/null
2083- cp $1_results.dat results.dat >& /dev/null
2084+ if [[ -e $1_results.dat ]]; then
2085+ cp $1_results.dat results.dat >& /dev/null
2086+ else
2087+ cp results.dat $1_results.dat >& /dev/null
2088+ fi
2089 for k in G* ; do
2090 if [[ ! -d $k ]]; then
2091 continue
2092@@ -45,6 +53,8 @@
2093 for j in $1_results.dat ; do
2094 if [[ -e $j ]] ; then
2095 cp $j results.dat
2096+ else
2097+ cp results.dat $j
2098 fi
2099 done
2100 for j in $1_ftn26.gz ; do
2101
2102=== modified file 'Template/NLO/MCatNLO/include/LHEF.h'
2103--- Template/NLO/MCatNLO/include/LHEF.h 2014-10-31 07:52:06 +0000
2104+++ Template/NLO/MCatNLO/include/LHEF.h 2020-07-04 19:03:17 +0000
2105@@ -1971,7 +1971,7 @@
2106 * Used internally to read a single line from the stream.
2107 */
2108 bool getline() {
2109- return ( std::getline(file, currentLine) );
2110+ return ( (bool) std::getline(file, currentLine) );
2111 }
2112
2113 protected:
2114
2115=== modified file 'Template/NLO/SubProcesses/cuts.f'
2116--- Template/NLO/SubProcesses/cuts.f 2020-05-23 19:29:30 +0000
2117+++ Template/NLO/SubProcesses/cuts.f 2020-07-04 19:03:17 +0000
2118@@ -705,10 +705,10 @@
2119 C
2120 2 IF (N.EQ.1) RETURN
2121 IF (MODE) 10,20,30
2122- 10 CALL SORTTI (A,INDEX,N)
2123+ 10 STOP 5 ! CALL SORTTI (A,INDEX,N)
2124 GO TO 40
2125 C
2126- 20 CALL SORTTC(A,INDEX,N)
2127+ 20 STOP 5 ! CALL SORTTC(A,INDEX,N)
2128 GO TO 40
2129 C
2130 30 CALL SORTTF (A,INDEX,N)
2131
2132=== modified file 'Template/NLO/SubProcesses/splitorders_stuff.f'
2133--- Template/NLO/SubProcesses/splitorders_stuff.f 2016-02-10 13:36:19 +0000
2134+++ Template/NLO/SubProcesses/splitorders_stuff.f 2020-07-04 19:03:17 +0000
2135@@ -33,13 +33,35 @@
2136 integer i,j
2137 integer base, step
2138 parameter(base=100)
2139+ ! this is for the printout of the informations
2140+ logical firsttime, firsttime_contr(amp_split_size)
2141+ data firsttime/.true./
2142+ data firsttime_contr/amp_split_size * .true./
2143+ integer orders_to_amp_split_pos
2144+
2145+ ! print out some extra informations
2146+ if (firsttime) write(*,fmt='(a)',advance="NO")
2147+ $ "INFO: orders_tag_plot is computed as:"
2148
2149 get_orders_tag=0
2150 step=1
2151 do i =1, nsplitorders
2152+ if (firsttime) write(*,fmt='(3a,i8)',advance="NO")
2153+ $ " + ", ordernames(i), " * ", step
2154 get_orders_tag=get_orders_tag+step*ord(i)
2155 step=step*100
2156 enddo
2157+ if (firsttime) then
2158+ write(*,*)
2159+ firsttime=.false.
2160+ endif
2161+
2162+ if (firsttime_contr(orders_to_amp_split_pos(ord))) then
2163+ write(*,*) 'orders_tag_plot= ', get_orders_tag, ' for ',
2164+ # (ordernames(i),",",i=1,nsplitorders), ' = ',
2165+ # (ord(i),",",i=1,nsplitorders)
2166+ firsttime_contr(orders_to_amp_split_pos(ord)) = .false.
2167+ endif
2168
2169 return
2170 end
2171
2172=== modified file 'Template/NLO/Utilities/collect_plots.py'
2173--- Template/NLO/Utilities/collect_plots.py 2017-02-23 15:15:43 +0000
2174+++ Template/NLO/Utilities/collect_plots.py 2020-07-04 19:03:17 +0000
2175@@ -1,9 +1,10 @@
2176 import pickle
2177 import subprocess
2178+import sys
2179
2180 def combine_plots_HwU(jobs,out,normalisation=None):
2181 """Sums all the plots in the HwU format."""
2182- command = []
2183+ command = [sys.executable]
2184 command.append('bin/internal/histograms.py')
2185 for job in jobs:
2186 if job['dirname'].endswith('.HwU'):
2187
2188=== removed directory 'Template/RWGTNLO'
2189=== removed file 'Template/RWGTNLO/__init__.py'
2190=== removed file 'Template/RWGTNLO/alfas.inc'
2191=== removed file 'Template/RWGTNLO/alfas_functions_lhapdf.f'
2192=== removed file 'Template/RWGTNLO/makefile'
2193=== removed file 'Template/RWGTNLO/rwgt.f'
2194=== removed file 'Template/RWGTNLO/setrun.f'
2195=== removed file 'Template/RWGTNLO/timing_variables.inc'
2196=== modified file 'Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.inc'
2197--- Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.inc 2016-11-21 21:05:57 +0000
2198+++ Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.inc 2020-07-04 19:03:17 +0000
2199@@ -141,7 +141,8 @@
2200
2201 character(512) path
2202 character(512) dummy
2203-
2204+ character(512) epath ! path of the executable
2205+ integer pos
2206 character(512) prefix,fpath
2207 character(17) nameToCheck
2208 parameter (nameToCheck='MadLoopParams.dat')
2209@@ -185,11 +186,42 @@
2210 close(1)
2211 prefix='../MadLoop5_resources/'
2212 call joinPath(prefix,nameToCheck,fpath)
2213- OPEN(1, FILE=fpath, ERR=66, STATUS='OLD',ACTION='READ')
2214- MLPath=prefix
2215- goto 10
2216-66 continue
2217- close(1)
2218+ OPEN(1, FILE=fpath, ERR=3, STATUS='OLD',ACTION='READ')
2219+ MLPath=prefix
2220+ goto 10
2221+ 3 continue
2222+ close(1)
2223+c
2224+c Try to automatically find the path from the executable location
2225+c particularly usefull in gridpack readonly mode
2226+c
2227+ call getarg(0,path) !path is the PATH to the madevent executable (either global or from launching directory)
2228+ pos = index(path,'/',.true.)
2229+ prefix = path(:pos)
2230+ call joinPath(prefix,nameToCheck,fpath)
2231+ write(*,*) 'test', fpath
2232+ OPEN(1, FILE=fpath, ERR=4, STATUS='OLD',ACTION='READ')
2233+ MLPath=prefix
2234+ goto 10
2235+4 continue
2236+ close(1)
2237+ prefix= prefix // '/MadLoop5_resources/'
2238+ call joinPath(prefix,nameToCheck,fpath)
2239+ write(*,*) 'test', fpath
2240+ OPEN(1, FILE=fpath, ERR=5, STATUS='OLD',ACTION='READ')
2241+ MLPath=prefix
2242+ goto 10
2243+5 continue
2244+ close(1)
2245+ prefix= path(:pos) // '/../MadLoop5_resources/'
2246+ call joinPath(prefix,nameToCheck,fpath)
2247+ write(*,*) 'test', fpath
2248+ OPEN(1, FILE=fpath, ERR=6, STATUS='OLD',ACTION='READ')
2249+ MLPath=prefix
2250+ goto 10
2251+ 6 continue
2252+ close(1)
2253+
2254 c We could not automatically find the auxiliary files
2255 write(*,*) '==='
2256 write(*,*) 'ERROR: MadLoop5 could not automatically find the file MadLoopParams.dat.'
2257@@ -215,9 +247,9 @@
2258
2259 C Check that the FilePath set is correct
2260 call joinPath(MLPath,nameToCheck,fpath)
2261- OPEN(1, FILE=fpath, ERR=3, STATUS='OLD',ACTION='READ')
2262+ OPEN(1, FILE=fpath, ERR=33, STATUS='OLD',ACTION='READ')
2263 goto 11
2264-3 continue
2265+33 continue
2266 close(1)
2267 write(*,*) '==='
2268 write(*,*) 'ERROR: The MadLoop5 auxiliary files could not be found in ',MLPath
2269@@ -606,7 +638,7 @@
2270 IMPLICIT NONE
2271 INTEGER MAXNREF_EVALS
2272 PARAMETER (MAXNREF_EVALS=100)
2273- INTEGER, DIMENSION(MAXNREF_EVALS), INTENT(IN) :: x
2274+ Double Precision, DIMENSION(MAXNREF_EVALS), INTENT(IN) :: x
2275 INTEGER, INTENT(IN) :: mStart, mEnd
2276 INTEGER :: Minimum
2277 INTEGER :: Location
2278
2279=== modified file 'UpdateNotes.txt'
2280--- UpdateNotes.txt 2020-05-25 18:16:07 +0000
2281+++ UpdateNotes.txt 2020-07-04 19:03:17 +0000
2282@@ -1,5 +1,7 @@
2283 Update notes for MadGraph5_aMC@NLO (in reverse time order)
2284
2285+3.0.3 (21/06/20)
2286+ include up to 2.7.3
2287
2288 3.0.2 (25/05/20)
2289 include up to 2.7.2
2290@@ -34,6 +36,26 @@
2291 RF: Reduction of the number of jobs -- results in earlier detection of small integration channels for fNLO
2292 OM: remove ./bin/mg5 executable
2293
2294+2.7.3(21/06/20)
2295+ OM: Fixing some bug for read-only LO gridpacks (wrong cross-section and shape when generating events).
2296+ Thanks to Congqiao Li for this
2297+ OM: Allowing loop-induced process to run on LO gridpack with read-only mode.
2298+ Thanks to Congqiao Li for this
2299+ OM: Fix a bug in the longitudinal polarization for off-shell effect, leading to deviation at large invariant mass.
2300+ OM: Adding more option to the run_card for fine tuning phase-space integration steps
2301+ All are hidden by default:
2302+ - hard_survey [default=1]: request for more points in survey (and subsequent refine)
2303+ - second_refine_treshold [default=1.5]: forbid second refine if cross section after first refine is
2304+ is smaller than cross-section of the survey times such treshold
2305+ OM: new command for the editions of the cards:
2306+ - set nodecay: remove all decay line from the madspin_card
2307+ - set BLOCKNAME all VALUE: set all entry of the param_card "BLOCKNAME" to VALUE
2308+ - edit CARDNAME --comment_line='<regular_expression>' : new syntax to comment all lines of a card
2309+ that are matching a given regular expression
2310+ OM: For Mac only, when running in script mode, MG5aMC will now prevent the computer to go to idle sleep.
2311+ You can prevent this by running with the '-s' option. like ./bin/mg5_aMC -s PATH_TO_CMD
2312+>>>>>>> MERGE-SOURCE
2313+
2314 2.7.2(17/03/20)
2315 OM: Fix a Bug in pythia8 running on Ubuntu 18.04.4 machine
2316 OM: Speed up standalone_cpp code by changing compilation flag
2317
2318=== modified file 'VERSION'
2319--- VERSION 2020-05-25 18:16:07 +0000
2320+++ VERSION 2020-07-04 19:03:17 +0000
2321@@ -1,6 +1,5 @@
2322-version = 3.0.2
2323-date = 2020-05-25
2324-
2325+version = 3.0.3
2326+date = 2020-06-21
2327
2328
2329
2330
2331=== modified file 'aloha/create_aloha.py'
2332--- aloha/create_aloha.py 2020-03-11 09:28:14 +0000
2333+++ aloha/create_aloha.py 2020-07-04 19:03:17 +0000
2334@@ -442,7 +442,7 @@
2335 denominator = propagator.denominator
2336 elif propa == "1L":
2337 numerator = "EPSL(1,id) * EPSL(2,id)"
2338- denominator = "-1*PVec(-2,id)*PVec(-2,id)*Mass(id)**2 * (P(-1,id)**2 - Mass(id) * Mass(id) + complex(0,1) * Mass(id) * Width(id))"
2339+ denominator = "-1*PVec(-2,id)*PVec(-2,id)*P(-3,id)*P(-3,id) * (P(-1,id)**2 - Mass(id) * Mass(id) + complex(0,1) * Mass(id) * Width(id))"
2340 elif propa == "1T":
2341 numerator = "-1*PVec(-2,id)*PVec(-2,id) * EPST2(1,id)*EPST2(2,id) + EPST1(1,id)*EPST1(2,id)"
2342 denominator = "PVec(-2,id)*PVec(-2,id) * PT(-3,id)*PT(-3,id) * (P(-1,id)**2 - Mass(id) * Mass(id) + complex(0,1) * Mass(id) * Width(id))"
2343
2344=== modified file 'aloha/template_files/aloha_functions_loop.f'
2345--- aloha/template_files/aloha_functions_loop.f 2016-01-27 01:59:42 +0000
2346+++ aloha/template_files/aloha_functions_loop.f 2020-07-04 19:03:17 +0000
2347@@ -2298,7 +2298,7 @@
2348 COMPLEX*16 Q(0:3)
2349 INTEGER CFIG,J
2350 LOGICAL SCD
2351- COMPLEX*16 M
2352+ double precision M
2353 COMPLEX*16 W(20)
2354
2355 IF (CFIG.EQ.1) THEN
2356@@ -2558,7 +2558,7 @@
2357 COMPLEX*16 Q(0:3)
2358 INTEGER CFIG
2359 LOGICAL SCD
2360- COMPLEX*16 M
2361+ double precision M
2362 COMPLEX*16 W(20)
2363
2364 IF (CFIG.EQ.1) THEN
2365
2366=== modified file 'bin/mg5_aMC'
2367--- bin/mg5_aMC 2019-05-05 18:53:50 +0000
2368+++ bin/mg5_aMC 2020-07-04 19:03:17 +0000
2369@@ -49,7 +49,8 @@
2370 help='force to launch debug mode')
2371 parser.add_option("-m", "--mode", dest="plugin",
2372 help="Define some additional command provide by a PLUGIN")
2373-
2374+parser.add_option("-s", "--nocaffeinate", action="store_false", default=True, dest='nosleep',
2375+ help='For mac user, forbids to use caffeinate when running with a script')
2376 (options, args) = parser.parse_args()
2377 if len(args) == 0:
2378 args = ''
2379@@ -66,6 +67,9 @@
2380 import logging.config
2381 import madgraph.interface.coloring_logging
2382
2383+if ' ' in os.getcwd():
2384+ logging.warning("Path does contains spaces. We advise that you change your current path to avoid to have space in the path.")
2385+
2386 try:
2387 import readline
2388 except ImportError:
2389@@ -157,6 +161,10 @@
2390 # Call the cmd interface main loop
2391 try:
2392 if options.file or args:
2393+ if sys.platform == "darwin" and options.nosleep:
2394+ logging.getLogger('madgraph').warning("launching caffeinate to prevent idle sleep when MG5aMC is running. Run './bin/mg5_aMC -s' to prevent this.")
2395+ pid = os.getpid()
2396+ subprocess.Popen(['caffeinate', '-i', '-w', str(pid)])
2397 # They are an input file
2398 if args:
2399 input_file = os.path.realpath(args[0])
2400
2401=== modified file 'madgraph/core/base_objects.py'
2402--- madgraph/core/base_objects.py 2020-03-11 09:28:14 +0000
2403+++ madgraph/core/base_objects.py 2020-07-04 19:03:17 +0000
2404@@ -3546,18 +3546,31 @@
2405 final.sort()
2406 return (tuple(initial), tuple(final))
2407
2408- def get_final_ids_after_decay(self):
2409+ def get_initial_final_ids_after_decay(self, max_depth=-1):
2410+ """return a tuple of two tuple containing the id of the initial/final
2411+ state particles. Each list is ordered"""
2412+
2413+ initial = [l.get('id') for l in self.get('legs')\
2414+ if not l.get('state')]
2415+ final = self.get_final_ids_after_decay(max_depth=max_depth)
2416+ initial.sort()
2417+ final.sort()
2418+ return (tuple(initial), tuple(final))
2419+
2420+
2421+ def get_final_ids_after_decay(self, max_depth=-1):
2422 """Give the pdg code of the process including decay"""
2423
2424 finals = self.get_final_ids()
2425- for proc in self.get('decay_chains'):
2426- init = proc.get_initial_ids()[0]
2427- #while 1:
2428- try:
2429- pos = finals.index(init)
2430- except:
2431- break
2432- finals[pos] = proc.get_final_ids_after_decay()
2433+ if max_depth !=0 :
2434+ for proc in self.get('decay_chains'):
2435+ init = proc.get_initial_ids()[0]
2436+ #while 1:
2437+ try:
2438+ pos = finals.index(init)
2439+ except:
2440+ break
2441+ finals[pos] = proc.get_final_ids_after_decay(max_depth-1)
2442 output = []
2443 for d in finals:
2444 if isinstance(d, list):
2445
2446=== modified file 'madgraph/core/diagram_generation.py'
2447--- madgraph/core/diagram_generation.py 2020-03-11 09:28:14 +0000
2448+++ madgraph/core/diagram_generation.py 2020-07-04 19:03:17 +0000
2449@@ -896,7 +896,7 @@
2450 fcts=['remove_diag'])
2451 else:
2452 #example and simple tests
2453- def remove_diag(diag):
2454+ def remove_diag(diag, model=None):
2455 for vertex in diag['vertices']: #last
2456 if vertex['id'] == 0: #special final vertex
2457 continue
2458@@ -907,8 +907,9 @@
2459
2460 res = diag_list.__class__()
2461 nb_removed = 0
2462+ model = self['process']['model']
2463 for diag in diag_list:
2464- if remove_diag(diag):
2465+ if remove_diag(diag, model):
2466 nb_removed +=1
2467 else:
2468 res.append(diag)
2469
2470=== modified file 'madgraph/core/helas_objects.py'
2471--- madgraph/core/helas_objects.py 2020-03-09 09:27:32 +0000
2472+++ madgraph/core/helas_objects.py 2020-07-04 19:03:17 +0000
2473@@ -5871,6 +5871,7 @@
2474 # Identical matrix element found
2475 other_processes = identified_matrix_elements[me_index].\
2476 get('processes')
2477+
2478 other_processes.append(cls.reorder_process(\
2479 amplitude.get('process'),
2480 permutations[me_index],
2481@@ -5911,14 +5912,24 @@
2482 """Reorder the legs in the process according to the difference
2483 between org_perm and proc_perm"""
2484
2485+
2486+
2487 leglist = base_objects.LegList(\
2488 [copy.copy(process.get('legs_with_decays')[i]) for i in \
2489 diagram_generation.DiagramTag.reorder_permutation(\
2490 proc_perm, org_perm)])
2491 new_proc = copy.copy(process)
2492+ if org_perm == proc_perm:
2493+ return new_proc
2494+
2495+ if len(org_perm) != len(process.get('legs_with_decays')):
2496+ raise Exception, "issue on symmetry between process"
2497+
2498 new_proc.set('legs_with_decays', leglist)
2499-
2500+
2501 if not new_proc.get('decay_chains'):
2502 new_proc.set('legs', leglist)
2503+ assert len(process.get('legs')) == len(leglist)
2504
2505+
2506 return new_proc
2507
2508=== modified file 'madgraph/interface/amcatnlo_run_interface.py'
2509--- madgraph/interface/amcatnlo_run_interface.py 2020-03-11 09:28:14 +0000
2510+++ madgraph/interface/amcatnlo_run_interface.py 2020-07-04 19:03:17 +0000
2511@@ -174,7 +174,13 @@
2512 logger.warning(msg % compiler)
2513 else:
2514 curr_version = misc.get_gfortran_version(compiler)
2515- if not ''.join(curr_version.split('.')) >= '46':
2516+ curr_version = curr_version.split('.')
2517+ if len(curr_version) == 1:
2518+ curr_version.append(0)
2519+
2520+ if int(curr_version[0]) < 5:
2521+ if int(curr_version[0]) == 4 and int(curr_version[1]) > 5:
2522+ return
2523 if block:
2524 raise aMCatNLOError(msg % (compiler + ' ' + curr_version))
2525 else:
2526@@ -2933,7 +2939,7 @@
2527 """Sums all the plots in the HwU format."""
2528 logger.debug('Combining HwU plots.')
2529
2530- command = []
2531+ command = [sys.executable]
2532 command.append(pjoin(self.me_dir, 'bin', 'internal','histograms.py'))
2533 for job in jobs:
2534 if job['dirname'].endswith('.HwU'):
2535
2536=== modified file 'madgraph/interface/common_run_interface.py'
2537--- madgraph/interface/common_run_interface.py 2020-03-11 09:28:14 +0000
2538+++ madgraph/interface/common_run_interface.py 2020-07-04 19:03:17 +0000
2539@@ -1039,7 +1039,11 @@
2540 out = ask(question, '0', possible_answer, timeout=int(1.5*timeout),
2541 path_msg='enter path', ask_class = AskforEditCard,
2542 cards=cards, mode=mode, **opt)
2543-
2544+ if 'return_instance' in opt and opt['return_instance']:
2545+ out, cmd = out
2546+ if 'return_instance' in opt and opt['return_instance']:
2547+ return (out, cmd)
2548+ return out
2549
2550 @staticmethod
2551 def detect_card_type(path):
2552@@ -2839,8 +2843,8 @@
2553 reco_output = pjoin(self.me_dir,
2554 'MA5_%s_ANALYSIS%s_%d'%(mode.upper(),MA5_runtag,i+1))
2555 # Look for either a root or .lhe.gz output
2556- reco_event_file = misc.glob('*.lhe.gz',pjoin(reco_output,'Output','_reco_events','lheEvents0_%d'%MA5_run_number))+\
2557- misc.glob('*.root',pjoin(reco_output,'Output','_reco_events', 'RecoEvents0_%d'%MA5_run_number))
2558+ reco_event_file = misc.glob('*.lhe.gz',pjoin(reco_output,'Output','SAF','_reco_events','lheEvents0_%d'%MA5_run_number))+\
2559+ misc.glob('*.root',pjoin(reco_output,'Output','SAF','_reco_events', 'RecoEvents0_%d'%MA5_run_number))
2560 if len(reco_event_file)==0:
2561 raise MadGraph5Error, "MadAnalysis5 failed to produce the "+\
2562 "reconstructed event file for reconstruction '%s'."%MA5_runtag[6:]
2563@@ -2855,7 +2859,7 @@
2564 parent_dir_name = os.path.basename(os.path.dirname(reco_event_file))
2565 files.ln(pjoin(self.me_dir,'HTML',self.run_name,
2566 '%s_MA5_%s_ANALYSIS%s_%d'%(self.run_tag,mode.upper(),
2567- MA5_runtag,i+1),'Output','_reco_events',parent_dir_name,links_created[-1]),
2568+ MA5_runtag,i+1),'Output','SAF','_reco_events',parent_dir_name,links_created[-1]),
2569 pjoin(self.me_dir,'Events',self.run_name))
2570
2571 logger.info("MadAnalysis5 successfully completed the reconstruction "+
2572@@ -3331,7 +3335,7 @@
2573 if mass and abs(width/mass) < 1e-12:
2574 if hasattr(interface, 'run_card') and isinstance(interface.run_card, banner_mod.RunCardLO):
2575 if interface.run_card['small_width_treatment'] < 1e-12:
2576- logger.error('The width of particle %s is too small for an s-channel resonance (%s) and the small_width_paramer is too small to prevent numerical issues. If you have this particle in an s-channel, this is likely to create numerical instabilities .', param.lhacode[0], width)
2577+ logger.error('The width of particle %s is too small for an s-channel resonance (%s) and the small_width_treatment parameter is too small to prevent numerical issues. If you have this particle in an s-channel, this is likely to create numerical instabilities .', param.lhacode[0], width)
2578 else:
2579 logger.error('The width of particle %s is too small for an s-channel resonance (%s). If you have this particle in an s-channel, this is likely to create numerical instabilities .', param.lhacode[0], width)
2580 if CommonRunCmd.sleep_for_error:
2581@@ -4102,6 +4106,18 @@
2582 if not require_local and (os.path.exists(pjoin(pdfsets_dir, pdfset)) or \
2583 os.path.isdir(pjoin(pdfsets_dir, pdfset))):
2584 continue
2585+ if not require_local:
2586+ if 'LHAPDF_DATA_PATH' in os.environ:
2587+ found = False
2588+ for path in os.environ['LHAPDF_DATA_PATH'].split(":"):
2589+ if (os.path.exists(pjoin(path, pdfset)) or \
2590+ os.path.isdir(pjoin(path, pdfset))):
2591+ found =True
2592+ break
2593+ if found:
2594+ continue
2595+
2596+
2597 #check that the pdfset is not already there
2598 elif not os.path.exists(pjoin(self.me_dir, 'lib', 'PDFsets', pdfset)) and \
2599 not os.path.isdir(pjoin(self.me_dir, 'lib', 'PDFsets', pdfset)):
2600@@ -4313,7 +4329,7 @@
2601 stdout = subprocess.PIPE).stdout.read().strip()
2602 except OSError, error:
2603 if error.errno == 2:
2604- raise Exception, 'lhapdf executable (%s) is not found on your system. Please install it and/or indicate the path to the correct executable in input/mg5_configuration.txt' % self.options['lhapdf']
2605+ raise Exception, 'lhapdf executable (%s) is not found on your system. Please install it and/or indicate the path to the correct executable in input/mg5_configuration.txt' % lhapdf_config
2606 else:
2607 raise
2608
2609@@ -4499,7 +4515,12 @@
2610 self.modified_card = set() #set of cards not in sync with filesystem
2611 # need to sync them before editing/leaving
2612 self.init_from_banner(from_banner, banner)
2613-
2614+ self.writting_card = True
2615+ if 'write_file' in opt:
2616+ if not opt['write_file']:
2617+ self.writting_card = False
2618+ self.param_consistency = False
2619+
2620 #update default path by custom one if specify in cards
2621 for card in cards:
2622 if os.path.exists(card) and os.path.sep in cards:
2623@@ -4777,10 +4798,12 @@
2624 return []
2625
2626 self.special_shortcut.update({
2627- 'spinmode':([str], ['add madspin_card --before_line="launch" set spinmode %(0)s'])
2628+ 'spinmode':([str], ['add madspin_card --before_line="launch" set spinmode %(0)s']),
2629+ 'nodecay':([], ['edit madspin_card --comment_line="decay"'])
2630 })
2631 self.special_shortcut_help.update({
2632- 'spinmode' : 'full|none|onshell. Choose the mode of madspin.\n - full: spin-correlation and off-shell effect\n - onshell: only spin-correlation,]\n - none: no spin-correlation and not offshell effects.'
2633+ 'spinmode' : 'full|none|onshell. Choose the mode of madspin.\n - full: spin-correlation and off-shell effect\n - onshell: only spin-correlation,]\n - none: no spin-correlation and not offshell effects.',
2634+ 'nodecay': 'remove all decay previously defined in madspin',
2635 })
2636 return []
2637
2638@@ -5245,7 +5268,7 @@
2639 def do_set(self, line):
2640 """ edit the value of one parameter in the card"""
2641
2642-
2643+
2644 args = self.split_arg(line)
2645
2646
2647@@ -5508,7 +5531,7 @@
2648 try:
2649 key = tuple([int(i) for i in args[start+1:-1]])
2650 except ValueError:
2651- if args[start] == 'decay' and args[start+1:-1] == ['all']:
2652+ if args[start+1:-1] == ['all']:
2653 for key in self.param_card[args[start]].param_dict:
2654 if (args[start], key) in self.restricted_value:
2655 continue
2656@@ -5969,8 +5992,9 @@
2657 self.do_set('shower_card extrapaths None ')
2658
2659 # ensure that all cards are in sync
2660- for key in list(self.modified_card):
2661- self.write_card(key)
2662+ if self.writting_card:
2663+ for key in list(self.modified_card):
2664+ self.write_card(key)
2665
2666
2667 def reask(self, *args, **opt):
2668@@ -6096,7 +6120,8 @@
2669 self.run_card.write(self.paths['run'], self.paths['run_default'])
2670
2671 def write_card_param(self):
2672- """ write the param_card """
2673+ """ write the param_card """
2674+
2675 self.param_card.write(self.paths['param'])
2676
2677 @staticmethod
2678@@ -6481,6 +6506,7 @@
2679 logger.info( ' --before_line="<regular-expression>" write the line before the first line matching the regular expression')
2680 logger.info( ' --replace_line="<regular-expression>" replace the line matching the regular expression')
2681 logger.info( ' --clean remove all previously existing line in the file')
2682+ logger.info( ' --comment_line="<regular-expression>" comment all lines matching the regular expression')
2683 logger.info('')
2684 logger.info(' Note: all regular-expression will be prefixed by ^\s*')
2685 logger.info('')
2686@@ -6626,7 +6652,29 @@
2687 logger.info("Replacing the line \"%s\" [line %d of %s] by \"%s\"" %
2688 (old_line, posline, card, new_line ),'$MG:BOLD')
2689 self.last_editline_pos = posline
2690-
2691+
2692+ elif args[1].startswith('--comment_line='):
2693+ # catch the line/regular expression and replace the associate line
2694+ # if no line match go to check if args[2] has other instruction starting with --
2695+ text = open(path).read()
2696+ split = text.split('\n')
2697+ search_pattern=r'''comment_line=(?P<quote>["'])(?:(?=(\\?))\2.)*?\1'''
2698+ pattern = '^\s*' + re.search(search_pattern, line).group()[14:-1]
2699+ nb_mod = 0
2700+ for posline,l in enumerate(split):
2701+ if re.search(pattern, l):
2702+ split[posline] = '#%s' % l
2703+ nb_mod +=1
2704+ logger.info("Commenting line \"%s\" [line %d of %s]" %
2705+ (l, posline, card ),'$MG:BOLD')
2706+ # overwrite the previous line
2707+ if not nb_mod:
2708+ logger.warning('no line commented (no line matching)')
2709+ ff = open(path,'w')
2710+ ff.write('\n'.join(split))
2711+
2712+ self.last_editline_pos = posline
2713+
2714
2715 elif args[1].startswith('--before_line='):
2716 # catch the line/regular expression and write before that line
2717
2718=== modified file 'madgraph/interface/extended_cmd.py'
2719--- madgraph/interface/extended_cmd.py 2020-03-11 09:28:14 +0000
2720+++ madgraph/interface/extended_cmd.py 2020-07-04 19:03:17 +0000
2721@@ -2594,6 +2594,8 @@
2722 elif line in 'auto':
2723 self.switch['dynamical'] = True
2724 return super(ControlSwitch, self).default(line)
2725+ elif line.startswith('set ') and not hasattr(self.__class__, 'do_set'):
2726+ raise NotValidInput('unknow command: %s. Did you mean \"%s\"' % (line, line[4:]))
2727 elif raise_error:
2728 raise NotValidInput('unknow command: %s' % line)
2729 else:
2730@@ -2609,6 +2611,8 @@
2731 getattr(self, 'ans_%s' % base)(value)
2732 elif base in self.switch:
2733 self.set_switch(base, value)
2734+ elif line.startswith('set ') and not hasattr(self.__class__, 'do_set'):
2735+ raise NotValidInput('Not valid command: %s. Did you mean \"%s\"' % (line, line[4:]))
2736 elif raise_error:
2737 raise NotValidInput('Not valid command: %s' % line)
2738 else:
2739
2740=== modified file 'madgraph/interface/madevent_interface.py'
2741--- madgraph/interface/madevent_interface.py 2020-03-16 08:37:10 +0000
2742+++ madgraph/interface/madevent_interface.py 2020-07-04 19:03:17 +0000
2743@@ -797,7 +797,7 @@
2744
2745 self.allowed_madspin = []
2746 if 'MadSpin' in self.available_module:
2747- self.allowed_madspin = ['OFF',"ON",'onshell']
2748+ self.allowed_madspin = ['OFF',"ON",'onshell',"full"]
2749 return self.allowed_madspin
2750
2751 def check_value_madspin(self, value):
2752@@ -834,7 +834,7 @@
2753 if value == 'onshell':
2754 return ["edit madspin_card --replace_line='set spinmode' --before_line='decay' set spinmode onshell"]
2755 elif value in ['full', 'madspin']:
2756- return ["edit madspin_card --replace_line='set spinmode' --before_line='decay' set spinmode madspin"]
2757+ return ["edit madspin_card --replace_line='set spinmode' --before_line='decay' set spinmode full"]
2758 elif value == 'none':
2759 return ["edit madspin_card --replace_line='set spinmode' --before_line='decay' set spinmode none"]
2760 else:
2761@@ -1291,7 +1291,6 @@
2762 raise self.InvalidCmd('No run_name currently define. Unable to run refine')
2763
2764 if len(args) > 2:
2765- self.help_refine()
2766 raise self.InvalidCmd('Too many argument for refine command')
2767 else:
2768 try:
2769@@ -2497,7 +2496,8 @@
2770 postcmd=False)
2771 self.exec_cmd('combine_events', postcmd=False)
2772 self.exec_cmd('store_events', postcmd=False)
2773- self.exec_cmd('decay_events -from_cards', postcmd=False)
2774+ with misc.TMP_variable(self, 'run_name', self.run_name):
2775+ self.exec_cmd('decay_events -from_cards', postcmd=False)
2776 self.exec_cmd('create_gridpack', postcmd=False)
2777 else:
2778 # Regular run mode
2779@@ -2526,7 +2526,8 @@
2780
2781 #we can bypass the following if scan and first result is zero
2782 if not bypass_run:
2783- self.exec_cmd('refine %s' % nb_event, postcmd=False)
2784+ self.exec_cmd('refine %s --treshold=%s' % (nb_event,self.run_card['second_refine_treshold'])
2785+ , postcmd=False)
2786
2787 self.exec_cmd('combine_events', postcmd=False,printcmd=False)
2788 self.print_results_in_shell(self.results.current)
2789@@ -2882,7 +2883,7 @@
2790 particle = 0
2791 # Read BRs for this decay
2792 line = param_card[line_number]
2793- while line.startswith('#') or line.startswith(' '):
2794+ while re.search('^(#|\s|\d)', line):
2795 line = param_card.pop(line_number)
2796 if not particle or line.startswith('#'):
2797 line=param_card[line_number]
2798@@ -3354,7 +3355,7 @@
2799 if float(self.run_card['mmjj']) > 0.01 * (float(self.run_card['ebeam1'])+float(self.run_card['ebeam2'])):
2800 self.pass_in_difficult_integration_mode()
2801 elif self.run_card['hard_survey']:
2802- self.pass_in_difficult_integration_mode()
2803+ self.pass_in_difficult_integration_mode(self.run_card['hard_survey'])
2804
2805 jobs, P_zero_result = ajobcreator.launch()
2806 # Check if all or only some fails
2807@@ -3382,24 +3383,26 @@
2808 self.update_status('End survey', 'parton', makehtml=False)
2809
2810 ############################################################################
2811- def pass_in_difficult_integration_mode(self):
2812+ def pass_in_difficult_integration_mode(self, rate=1):
2813 """be more secure for the integration to not miss it due to strong cut"""
2814
2815 # improve survey options if default
2816 if self.opts['points'] == self._survey_options['points'][1]:
2817- self.opts['points'] = 3 * self._survey_options['points'][1]
2818+ self.opts['points'] = (rate+2) * self._survey_options['points'][1]
2819 if self.opts['iterations'] == self._survey_options['iterations'][1]:
2820- self.opts['iterations'] = 2 + self._survey_options['iterations'][1]
2821+ self.opts['iterations'] = 1 + rate + self._survey_options['iterations'][1]
2822 if self.opts['accuracy'] == self._survey_options['accuracy'][1]:
2823- self.opts['accuracy'] = self._survey_options['accuracy'][1]/3
2824+ self.opts['accuracy'] = self._survey_options['accuracy'][1]/(rate+2)
2825
2826 # Modify run_config.inc in order to improve the refine
2827 conf_path = pjoin(self.me_dir, 'Source','run_config.inc')
2828 files.cp(conf_path, conf_path + '.bk')
2829 #
2830 text = open(conf_path).read()
2831- text = re.sub('''\(min_events = \d+\)''', '''(min_events = 7500 )''', text)
2832- text = re.sub('''\(max_events = \d+\)''', '''(max_events = 40000 )''', text)
2833+ min_evt, max_evt = 2500 *(2+rate), 10000*(rate+1)
2834+
2835+ text = re.sub('''\(min_events = \d+\)''', '(min_events = %i )' % min_evt, text)
2836+ text = re.sub('''\(max_events = \d+\)''', '(max_events = %i )' % max_evt, text)
2837 fsock = open(conf_path, 'w')
2838 fsock.write(text)
2839 fsock.close()
2840@@ -3415,6 +3418,18 @@
2841 devnull = open(os.devnull, 'w')
2842 self.nb_refine += 1
2843 args = self.split_arg(line)
2844+ treshold=None
2845+ for a in args:
2846+ if a.startswith('--treshold='):
2847+ treshold = float(a.split('=',1)[1])
2848+ old_xsec = self.results.current['prev_cross']
2849+ new_xsec = self.results.current['cross']
2850+ if old_xsec > new_xsec * treshold:
2851+ logger.info('No need for second refine due to stability of cross-section')
2852+ return
2853+ else:
2854+ args.remove(a)
2855+ break
2856 # Check argument's validity
2857 self.check_refine(args)
2858
2859@@ -3471,8 +3486,7 @@
2860 cross, error = x_improve.update_html() #update html results for survey
2861 if cross == 0:
2862 return
2863- logger.info("Current estimate of cross-section: %s +- %s" % (cross, error))
2864-
2865+ logger.info("- Current estimate of cross-section: %s +- %s" % (cross, error))
2866 if isinstance(x_improve, gen_ximprove.gen_ximprove_v4):
2867 # Non splitted mode is based on writting ajob so need to track them
2868 # Splitted mode handle the cluster submition internally.
2869@@ -3811,6 +3825,17 @@
2870 self.update_status('Creating gridpack', level='parton')
2871 # compile gen_ximprove
2872 misc.compile(['../bin/internal/gen_ximprove'], cwd=pjoin(self.me_dir, "Source"))
2873+
2874+ Gdir = self.get_Gdir()
2875+ Pdir = set([os.path.dirname(G) for G in Gdir])
2876+ for P in Pdir:
2877+ allG = misc.glob('G*', path=P)
2878+ for G in allG:
2879+ if pjoin(P, G) not in Gdir:
2880+ logger.debug('removing %s', pjoin(P,G))
2881+ shutil.rmtree(pjoin(P,G))
2882+
2883+
2884 args = self.split_arg(line)
2885 self.check_combine_events(args)
2886 if not self.run_tag: self.run_tag = 'tag_1'
2887@@ -4668,7 +4693,7 @@
2888 devnull.close()
2889 if pid == 0:
2890 misc.call('head -n -1 %s | tail -n +%d > %s/tmpfile' %
2891- (hepmc_file, n_head, os.path.dirname(hepmc_file)), shell=True)
2892+ (hepmc_file, n_head+1, os.path.dirname(hepmc_file)), shell=True)
2893 misc.call(['mv', 'tmpfile', os.path.basename(hepmc_file)], cwd=os.path.dirname(hepmc_file))
2894 elif sys.platform == 'darwin':
2895 # sed on MAC has slightly different synthax than on
2896@@ -5967,10 +5992,16 @@
2897
2898 eradir = self.options['exrootanalysis_path']
2899 totar = False
2900+ torm = False
2901 if input.endswith('.gz'):
2902- misc.gunzip(input, keep=True)
2903- totar = True
2904- input = input[:-3]
2905+ if not os.path.exists(input) and os.path.exists(input[:-3]):
2906+ totar = True
2907+ input = input[:-3]
2908+ else:
2909+ misc.gunzip(input, keep=True)
2910+ totar = False
2911+ torm = True
2912+ input = input[:-3]
2913
2914 try:
2915 misc.call(['%s/ExRootLHEFConverter' % eradir,
2916@@ -5982,12 +6013,13 @@
2917 if totar:
2918 if os.path.exists('%s.gz' % input):
2919 try:
2920- os.remove(input)
2921+ os.remove('%s.gz' % input)
2922 except:
2923 pass
2924 else:
2925 misc.gzip(input)
2926-
2927+ if torm:
2928+ os.remove(input)
2929
2930 def run_syscalc(self, mode='parton', event_path=None, output=None):
2931 """create the syscalc output"""
2932@@ -6458,7 +6490,10 @@
2933 os.chdir(self.me_dir)
2934 else:
2935 for line in open(pjoin(self.me_dir,'SubProcesses','subproc.mg')):
2936- os.mkdir(line.strip())
2937+ p = line.strip()
2938+ os.mkdir(p)
2939+ files.cp(pjoin(self.me_dir,'SubProcesses',p,'symfact.dat'),
2940+ pjoin(p, 'symfact.dat'))
2941
2942
2943 def launch(self, nb_event, seed):
2944@@ -6472,6 +6507,12 @@
2945 misc.call([pjoin(self.me_dir,'bin','internal','restore_data'),
2946 'default'], cwd=self.me_dir)
2947
2948+ if self.run_card['python_seed'] == -2:
2949+ import random
2950+ random.seed(seed)
2951+ elif self.run_card['python_seed'] > 0:
2952+ import random
2953+ random.seed(self.run_card['python_seed'])
2954 # 2) Run the refine for the grid
2955 self.update_status('Generating Events', level=None)
2956 #misc.call([pjoin(self.me_dir,'bin','refine4grid'),
2957@@ -6649,11 +6690,11 @@
2958 sum_axsec += result.get('axsec')*gscalefact[Gdir]
2959
2960 if len(AllEvent) >= 80: #perform a partial unweighting
2961- AllEvent.unweight(pjoin(self.me_dir, "Events", self.run_name, "partials%s.lhe.gz" % partials),
2962+ AllEvent.unweight(pjoin(outdir, self.run_name, "partials%s.lhe.gz" % partials),
2963 get_wgt, log_level=5, trunc_error=1e-2, event_target=self.nb_event)
2964 AllEvent = lhe_parser.MultiEventFile()
2965 AllEvent.banner = self.banner
2966- AllEvent.add(pjoin(self.me_dir, "Events", self.run_name, "partials%s.lhe.gz" % partials),
2967+ AllEvent.add(pjoin(outdir, self.run_name, "partials%s.lhe.gz" % partials),
2968 sum_xsec,
2969 math.sqrt(sum(x**2 for x in sum_xerru)),
2970 sum_axsec)
2971
2972=== modified file 'madgraph/interface/madgraph_interface.py'
2973--- madgraph/interface/madgraph_interface.py 2020-03-11 09:28:14 +0000
2974+++ madgraph/interface/madgraph_interface.py 2020-07-04 19:03:17 +0000
2975@@ -459,7 +459,7 @@
2976 logger.info(" -d: specify other MG/ME directory")
2977 logger.info(" -noclean: no cleaning performed in \"path\".")
2978 logger.info(" -nojpeg: no jpeg diagrams will be generated.")
2979- logger.info(" -noeps: no jpeg and eps diagrams will be generated.")
2980+ logger.info(" --noeps=True: no jpeg and eps diagrams will be generated.")
2981 logger.info(" -name: the postfix of the main file in pythia8 mode.")
2982 logger.info(" Examples:",'$MG:color:GREEN')
2983 logger.info(" output",'$MG:color:GREEN')
2984@@ -530,6 +530,11 @@
2985 logger.info(" > Except for the 'gauge' test, all checks above are also")
2986 logger.info(" available for loop processes with ML5 ('virt=' mode)")
2987 logger.info("Example: check full p p > j j",'$MG:color:GREEN')
2988+ logger.info("Using leshouches file as input",'$MG:color:GREEN')
2989+ logger.info(" use the option --events=PATH")
2990+ logger.info(" zipped file are not supported")
2991+ logger.info(" to loop over the file use the option --skip_evt=X")
2992+ logger.info("")
2993 logger.info("Options for loop processes only:",'$MG:BOLD')
2994 logger.info("o timing:",'$MG:color:GREEN')
2995 logger.info(" Generate and output a process and returns detailed")
2996@@ -928,7 +933,9 @@
2997 '--helicity':'-1','--seed':'-1','--collier_cache':'-1',
2998 '--collier_req_acc':'auto',
2999 '--collier_internal_stability_test':'False',
3000- '--collier_mode':'1'}
3001+ '--collier_mode':'1',
3002+ '--events': None,
3003+ '--skip_evt':0}
3004
3005 if args[0] in ['cms'] or args[0].lower()=='cmsoptions':
3006 # increase the default energy to 5000
3007@@ -1077,7 +1084,7 @@
3008
3009 if '[' in process and '{' in process:
3010 valid = False
3011- if 'noborn' in process:
3012+ if 'noborn' in process or 'sqrvirt' in process:
3013 valid = True
3014 else:
3015 raise self.InvalidCmd('Polarization restriction can not be used for NLO processes')
3016@@ -1673,7 +1680,7 @@
3017 continue
3018 elif not '=' in arg:
3019 raise self.InvalidCmd('Options required an equal (and then the value)')
3020- arg, value = arg.split('=')
3021+ arg, value = arg.split('=',1)
3022 if arg[2:] not in options:
3023 raise self.InvalidCmd('%s not valid options' % arg)
3024 options[arg[2:]] = value
3025@@ -2836,7 +2843,7 @@
3026 _import_formats = ['model_v4', 'model', 'proc_v4', 'command', 'banner']
3027 _install_opts = ['Delphes', 'MadAnalysis4', 'ExRootAnalysis',
3028 'update', 'Golem95', 'QCDLoop', 'maddm', 'maddump',
3029- 'looptools']
3030+ 'looptools', 'MadSTR']
3031
3032 # The targets below are installed using the HEPToolsInstaller.py script
3033 _advanced_install_opts = ['pythia8','zlib','boost','lhapdf6','lhapdf5','collier',
3034@@ -3876,6 +3883,15 @@
3035 option = args[i].split('=')
3036 if option[0] =='--energy':
3037 options['energy']=float(option[1])
3038+ elif option[0] == '--events' and option[1]:
3039+ if option[1] == 'None':
3040+ options['events'] = None
3041+ elif not os.path.exists(option[1]):
3042+ raise Exception, 'path %s does not exists' % option[1]
3043+ else:
3044+ options['events'] = option[1]
3045+ elif option[0] == '--skip_evt':
3046+ options['skip_evt']=int(option[1])
3047 elif option[0]=='--split_orders':
3048 options['split_orders']=int(option[1])
3049 elif option[0]=='--helicity':
3050@@ -5622,7 +5638,7 @@
3051 #self.do_define(line)
3052 self.exec_cmd('define %s' % line, printcmd=False, precmd=True)
3053 except self.InvalidCmd, why:
3054- logger_stderr.warning('impossible to set default multiparticles %s because %s' %
3055+ logger.warning('impossible to set default multiparticles %s because %s' %
3056 (line.split()[0],why))
3057 if self.history[-1] == 'define %s' % line.strip():
3058 self.history.pop(-1)
3059@@ -6013,7 +6029,7 @@
3060 # Return true for successful installation
3061 return True
3062
3063- install_plugin = ['maddm', 'maddump']
3064+ install_plugin = ['maddm', 'maddump', 'MadSTR']
3065 install_ad = {'pythia-pgs':['arXiv:0603175'],
3066 'Delphes':['arXiv:1307.6346'],
3067 'Delphes2':['arXiv:0903.2225'],
3068@@ -6031,7 +6047,8 @@
3069 'collier':['arXiv:1604.06792'],
3070 'oneloop':['arXiv:1007.4716'],
3071 'maddm':['arXiv:1804.00444'],
3072- 'maddump':['arXiv:1812.06771']}
3073+ 'maddump':['arXiv:1812.06771'],
3074+ 'MadSTR':['arXiv:1612.00440']}
3075
3076 install_server = ['http://madgraph.phys.ucl.ac.be/package_info.dat',
3077 'http://madgraph.physics.illinois.edu/package_info.dat']
3078@@ -6157,7 +6174,10 @@
3079 name = args[0]
3080 if args[0] == 'MadAnalysis4':
3081 args[0] = 'MadAnalysis'
3082-
3083+ elif args[0] in ['madstr', 'madSTR']:
3084+ args[0] = 'MadSTR'
3085+ name = 'MadSTR'
3086+
3087 if args[0] in self._advanced_install_opts:
3088 # Now launch the advanced installation of the tool args[0]
3089 # path['HEPToolsInstaller'] is the online adress where to downlaod
3090@@ -6380,6 +6400,7 @@
3091 cwd = os.path.join(MG5DIR, name))
3092 else:
3093 status = misc.call(['make']+make_flags, cwd = os.path.join(MG5DIR, name))
3094+ devnull.close()
3095 else:
3096 try:
3097 misc.compile(['clean'], mode='', cwd = os.path.join(MG5DIR, name))
3098@@ -6428,18 +6449,18 @@
3099
3100 if sys.platform == "darwin":
3101 logger.info('Downloading TD for Mac')
3102- target = 'http://madgraph.phys.ucl.ac.be/Downloads/td_mac_intel.tar.gz'
3103+ target = 'https://home.fnal.gov/~parke/TD/td_mac_intel64.tar.gz'
3104 misc.wget(target, 'td.tgz', cwd=pjoin(MG5DIR,'td'))
3105 misc.call(['tar', '-xzpvf', 'td.tgz'],
3106 cwd=pjoin(MG5DIR,'td'))
3107- files.mv(MG5DIR + '/td/td_mac_intel',MG5DIR+'/td/td')
3108+ files.mv(MG5DIR + '/td/td_intel_mac64',MG5DIR+'/td/td')
3109 else:
3110 if sys.maxsize > 2**32:
3111 logger.info('Downloading TD for Linux 64 bit')
3112- target = 'http://madgraph.phys.ucl.ac.be/Downloads/td64/td'
3113- logger.warning('''td program (needed by MadAnalysis) is not compile for 64 bit computer.
3114- In 99% of the case, this is perfectly fine. If you do not have plot, please follow
3115- instruction in https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/TopDrawer .''')
3116+ target = 'https://home.fnal.gov/~parke/TD/td_linux_64bit.tar.gz'
3117+ #logger.warning('''td program (needed by MadAnalysis) is not compile for 64 bit computer.
3118+ #In 99% of the case, this is perfectly fine. If you do not have plot, please follow
3119+ #instruction in https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/TopDrawer .''')
3120 else:
3121 logger.info('Downloading TD for Linux 32 bit')
3122 target = 'http://madgraph.phys.ucl.ac.be/Downloads/td'
3123
3124=== modified file 'madgraph/interface/master_interface.py'
3125--- madgraph/interface/master_interface.py 2019-09-26 14:06:19 +0000
3126+++ madgraph/interface/master_interface.py 2020-07-04 19:03:17 +0000
3127@@ -215,6 +215,8 @@
3128 elif nlo_mode in ['virt', 'sqrvirt']:
3129 self.change_principal_cmd('MadLoop', allow_switch)
3130 elif nlo_mode == 'noborn':
3131+ if self.current_interface == "MadGraph":
3132+ allow_switch = True
3133 self.change_principal_cmd('MadLoop', allow_switch)
3134 self.cmd.validate_model(self, loop_type=nlo_mode,
3135 coupling_type=orders)
3136
3137=== modified file 'madgraph/interface/reweight_interface.py'
3138--- madgraph/interface/reweight_interface.py 2020-03-11 09:28:14 +0000
3139+++ madgraph/interface/reweight_interface.py 2020-07-04 19:03:17 +0000
3140@@ -58,7 +58,7 @@
3141 nb_f2py_module = 0 # each time the process/model is changed this number is modified to
3142 # forced the python module to re-create an executable
3143
3144-lhapdf = None
3145+#lhapdf = None
3146
3147
3148 class ReweightInterface(extended_cmd.Cmd):
3149@@ -688,7 +688,8 @@
3150 for i,card in enumerate(param_card_iterator):
3151 if self.options['rwgt_name']:
3152 self.options['rwgt_name'] = '%s_%s' % (self.options['rwgt_name'].rsplit('_',1)[0], i+1)
3153- card.write(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3154+ self.new_param_card = card
3155+ #card.write(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3156 self.exec_cmd("launch --keep_card", printcmd=False, precmd=True)
3157
3158 self.options['rwgt_name'] = None
3159@@ -708,24 +709,23 @@
3160
3161
3162 if not '--keep_card' in args:
3163- ff = open(pjoin(rw_dir,'Cards', 'param_card.dat'), 'w')
3164- ff.write(self.banner['slha'])
3165- ff.close()
3166 if self.has_nlo and self.rwgt_mode != "LO":
3167 rwdir_virt = rw_dir.replace('rw_me', 'rw_mevirt')
3168- files.ln(ff.name, starting_dir=pjoin(rwdir_virt, 'Cards'))
3169- ff = open(pjoin(path_me, 'rw_me','Cards', 'param_card_orig.dat'), 'w')
3170- ff.write(self.banner['slha'])
3171- ff.close()
3172- if self.has_nlo and self.rwgt_mode != "LO":
3173- files.ln(ff.name, starting_dir=pjoin(path_me, 'rw_mevirt', 'Cards'))
3174- cmd = common_run_interface.CommonRunCmd.ask_edit_card_static(cards=['param_card.dat'],
3175- ask=self.ask, pwd=rw_dir, first_cmd=self.stored_line)
3176+
3177+ out, cmd = common_run_interface.CommonRunCmd.ask_edit_card_static(cards=['param_card.dat'],
3178+ ask=self.ask, pwd=rw_dir, first_cmd=self.stored_line,
3179+ write_file=False, return_instance=True
3180+ )
3181 self.stored_line = None
3182-
3183+ card = cmd.param_card
3184+ new_card = card.write()
3185+ elif self.new_param_card:
3186+ new_card = self.new_param_card.write()
3187+ else:
3188+ new_card = open(pjoin(rw_dir, 'Cards', 'param_card.dat')).read()
3189+
3190 # check for potential scan in the new card
3191- new_card = open(pjoin(rw_dir, 'Cards', 'param_card.dat')).read()
3192- pattern_scan = re.compile(r'''^[\s\d]*scan''', re.I+re.M)
3193+ pattern_scan = re.compile(r'''^(decay)?[\s\d]*scan''', re.I+re.M)
3194 param_card_iterator = []
3195 if pattern_scan.search(new_card):
3196 import madgraph.interface.extended_cmd as extended_cmd
3197@@ -744,11 +744,19 @@
3198 param_card_iterator = main_card
3199 first_card = param_card_iterator.next(autostart=True)
3200 new_card = first_card.write()
3201- first_card.write(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3202-
3203- # check if "Auto" is present for a width parameter
3204+ self.new_param_card = first_card
3205+ #first_card.write(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3206+
3207+ # check if "Auto" is present for a width parameter)
3208 tmp_card = new_card.lower().split('block',1)[1]
3209 if "auto" in tmp_card:
3210+ if param_card_iterator:
3211+ first_card.write(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3212+ else:
3213+ ff = open(pjoin(rw_dir, 'Cards', 'param_card.dat'),'w')
3214+ ff.write(new_card)
3215+ ff.close()
3216+
3217 self.mother.check_param_card(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3218 new_card = open(pjoin(rw_dir, 'Cards', 'param_card.dat')).read()
3219
3220@@ -795,6 +803,7 @@
3221 # add the reweighting in the banner information:
3222 #starts by computing the difference in the cards.
3223 s_orig = self.banner['slha']
3224+ self.orig_param_card_text = s_orig
3225 s_new = new_card
3226 self.new_param_card = check_param_card.ParamCard(s_new.splitlines())
3227
3228@@ -866,15 +875,25 @@
3229 else:
3230 tag_name = 'rwgt_%s' % rewgtid
3231
3232+
3233 #initialise module.
3234 for (path,tag), module in self.f2pylib.items():
3235 with misc.chdir(pjoin(os.path.dirname(rw_dir), path)):
3236 with misc.stdchannel_redirected(sys.stdout, os.devnull):
3237 if 'second' in path or tag == 3:
3238- module.initialise(pjoin(rw_dir, 'Cards', 'param_card.dat'))
3239+ param_card = self.new_param_card
3240 else:
3241- module.initialise(pjoin(path_me, 'rw_me', 'Cards', 'param_card_orig.dat'))
3242+ param_card = check_param_card.ParamCard(self.orig_param_card_text)
3243+
3244+ for block in param_card:
3245
3246+ for param in param_card[block]:
3247+ lhacode = param.lhacode
3248+ value = param.value
3249+ name = '%s_%s' % (block.upper(), '_'.join([str(i) for i in lhacode]))
3250+ module.change_para(name, value)
3251+ module.update_all_coup()
3252+
3253 return param_card_iterator, tag_name
3254
3255
3256@@ -961,8 +980,10 @@
3257 def calculate_weight(self, event):
3258 """space defines where to find the calculator (in multicore)"""
3259
3260- global lhapdf
3261-
3262+ if not hasattr(self,'pdf'):
3263+ lhapdf = misc.import_python_lhapdf(self.mg5cmd.options['lhapdf'])
3264+ self.pdf = lhapdf.mkPDF(self.banner.run_card.get_lhapdf_id())
3265+
3266 if self.has_nlo and self.rwgt_mode != "LO":
3267 return self.calculate_nlo_weight(event)
3268
3269@@ -1075,19 +1096,20 @@
3270
3271 base_wgt.append(c_wgt.pwgt[:3])
3272
3273- #change the ordering to the fortran one:
3274- scales2 = self.invert_momenta(scales2)
3275- pdg = self.invert_momenta(pdg)
3276- bjx = self.invert_momenta(bjx)
3277+
3278+ orig_wgt_check, partial_check = self.combine_wgt_local(scales2, pdg, bjx, base_wgt, gs, qcdpower, self.pdf)
3279+ #change the ordering to the fortran one:
3280+ #scales2_i = self.invert_momenta(scales2)
3281+ #pdg_i = self.invert_momenta(pdg)
3282+ #bjx_i = self.invert_momenta(bjx)
3283 # re-compute original weight to reduce numerical inacurracy
3284- base_wgt = self.invert_momenta(base_wgt)
3285-
3286- orig_wgt_check, partial_check = self.combine_wgt(scales2, pdg, bjx, base_wgt, gs, qcdpower, 1., 1.)
3287+ #base_wgt_i = self.invert_momenta(base_wgt)
3288+ #orig_wgt_check, partial_check = self.combine_wgt(scales2_i, pdg_i, bjx_i, base_wgt_i, gs, qcdpower, 1., 1.)
3289
3290 if '_nlo' in type_nlo:
3291- wgt = self.invert_momenta(wgt_virt)
3292+ #wgt = self.invert_momenta(wgt_virt)
3293 with misc.stdchannel_redirected(sys.stdout, os.devnull):
3294- new_out, partial = self.combine_wgt(scales2, pdg, bjx, wgt, gs, qcdpower, 1., 1.)
3295+ new_out, partial = self.combine_wgt_local(scales2, pdg, bjx, wgt_virt, gs, qcdpower, self.pdf)
3296 # try to correct for precision issue
3297 avg = [partial_check[i]/ref_wgts[i] for i in range(len(ref_wgts))]
3298 out = sum(partial[i]/avg[i] if 0.85<avg[i]<1.15 else 0 \
3299@@ -1096,9 +1118,9 @@
3300
3301
3302 if '_tree' in type_nlo:
3303- wgt = self.invert_momenta(wgt_tree)
3304+ #wgt = self.invert_momenta(wgt_tree)
3305 with misc.stdchannel_redirected(sys.stdout, os.devnull):
3306- out, partial = self.combine_wgt(scales2, pdg, bjx, wgt, gs, qcdpower, 1., 1.)
3307+ out, partial = self.combine_wgt_local(scales2, pdg, bjx, wgt_tree, gs, qcdpower, self.pdf)
3308 # try to correct for precision issue
3309 avg = [partial_check[i]/ref_wgts[i] for i in range(len(ref_wgts))]
3310 new_out = sum(partial[i]/avg[i] if 0.85<avg[i]<1.15 else partial[i] \
3311@@ -1126,7 +1148,25 @@
3312 assert not to_write
3313 assert not wgt_tree
3314 return final_weight
3315+
3316+
3317+ def combine_wgt_local(self, scale2s, pdgs, bjxs, base_wgts, gss, qcdpowers, pdf):
3318+
3319+ wgt = 0.
3320+ wgts = []
3321+ for (scale2, pdg, bjx, base_wgt, gs, qcdpower) in zip(scale2s, pdgs, bjxs, base_wgts, gss, qcdpowers):
3322+ Q2, mur2, muf2 = scale2 #Q2 is Ellis-Sexton scale
3323+ #misc.sprint(Q2, mur2, muf2, base_wgt, gs, qcdpower)
3324+ pdf1 = pdf.xfxQ2(pdg[0], bjx[0], muf2)/bjx[0]
3325+ pdf2 = pdf.xfxQ2(pdg[1], bjx[1], muf2)/bjx[1]
3326+ alphas = pdf.alphasQ2(mur2)
3327+ tmp = base_wgt[0] + base_wgt[1] * math.log(mur2/Q2) + base_wgt[2] * math.log(muf2/Q2)
3328+ tmp *= gs**qcdpower*pdf1*pdf2
3329+ wgt += tmp
3330+ wgts.append(tmp)
3331+ return wgt, wgts
3332
3333+
3334
3335 @staticmethod
3336 def invert_momenta(p):
3337@@ -1450,10 +1490,9 @@
3338 commandline = re.sub('@\s*\d+', '', commandline)
3339 # deactivate golem since it creates troubles
3340 old_options = dict(mgcmd.options)
3341- if mgcmd.options['golem'] or mgcmd.options['pjfry']:
3342- logger.info(" When doing NLO reweighting, MG5aMC cannot use the loop reduction algorithms Golem and/or PJFry++")
3343+ if mgcmd.options['golem']:
3344+ logger.info(" When doing NLO reweighting, MG5aMC cannot use the loop reduction algorithms Golem")
3345 mgcmd.options['golem'] = None
3346- mgcmd.options['pjfry'] = None
3347 commandline = commandline.replace('add process', 'generate',1)
3348 logger.info(commandline)
3349 mgcmd.exec_cmd(commandline, precmd=True)
3350@@ -1462,22 +1501,10 @@
3351
3352 #put back golem to original value
3353 mgcmd.options['golem'] = old_options['golem']
3354- mgcmd.options['pjfry'] = old_options['pjfry']
3355 # update make_opts
3356- m_opts = {}
3357- if mgcmd.options['lhapdf']:
3358- #lhapdfversion = subprocess.Popen([mgcmd.options['lhapdf'], '--version'],
3359- # stdout = subprocess.PIPE).stdout.read().strip()[0]
3360- m_opts['lhapdf'] = True
3361- m_opts['f2pymode'] = True
3362- m_opts['lhapdfversion'] = 5 # 6 always fail on my computer since 5 is compatible but slower always use 5
3363- m_opts['llhapdf'] = self.mother.get_lhapdf_libdir()
3364- else:
3365+ if not mgcmd.options['lhapdf']:
3366 raise Exception, "NLO reweighting requires LHAPDF to work correctly"
3367
3368- path = pjoin(path_me,data['paths'][1], 'Source', 'make_opts')
3369- common_run_interface.CommonRunCmd.update_make_opts_full(path, m_opts)
3370- logger.info('Done %.4g' % (time.time()-start))
3371
3372
3373 # Download LHAPDF SET
3374@@ -1635,7 +1662,7 @@
3375 elif has_nlo and 'NLO' in self.rwgt_mode:
3376 self.create_standalone_virt_directory(data, second)
3377
3378- if not second:
3379+ if False:#not second:
3380 #compile the module to combine the weight
3381 misc.compile(cwd=pjoin(path_me, data['paths'][1], 'Source'))
3382 #link it
3383@@ -1666,8 +1693,7 @@
3384 commandline='import model loop_sm;generate g g > e+ ve [virt=QCD]'
3385 # deactivate golem since it creates troubles
3386 old_options = dict(mgcmd.options)
3387- mgcmd.options['golem'] = None
3388- mgcmd.options['pjfry'] = None
3389+ mgcmd.options['golem'] = None
3390 commandline = commandline.replace('add process', 'generate',1)
3391 logger.info(commandline)
3392 mgcmd.exec_cmd(commandline, precmd=True)
3393@@ -1675,41 +1701,30 @@
3394 mgcmd.exec_cmd(commandline, precmd=True)
3395 #put back golem to original value
3396 mgcmd.options['golem'] = old_options['golem']
3397- mgcmd.options['pjfry'] = old_options['pjfry']
3398 # update make_opts
3399- m_opts = {}
3400- if mgcmd.options['lhapdf']:
3401- #lhapdfversion = subprocess.Popen([mgcmd.options['lhapdf'], '--version'],
3402- # stdout = subprocess.PIPE).stdout.read().strip()[0]
3403- m_opts['lhapdf'] = True
3404- m_opts['f2pymode'] = True
3405- m_opts['lhapdfversion'] = 5 # 6 always fail on my computer since 5 is compatible but slower always use 5
3406- m_opts['llhapdf'] = self.mother.get_lhapdf_libdir()
3407- else:
3408+ if not mgcmd.options['lhapdf']:
3409 raise Exception, "NLO_tree reweighting requires LHAPDF to work correctly"
3410
3411- path = pjoin(path_me,data['paths'][1], 'Source', 'make_opts')
3412- common_run_interface.CommonRunCmd.update_make_opts_full(path, m_opts)
3413- logger.info('Done %.4g' % (time.time()-start))
3414-
3415 # Download LHAPDF SET
3416 common_run_interface.CommonRunCmd.install_lhapdf_pdfset_static(\
3417 mgcmd.options['lhapdf'], None, self.banner.run_card.get_lhapdf_id())
3418
3419 #compile the module to combine the weight
3420- misc.compile(cwd=pjoin(path_me, data['paths'][1], 'Source'))
3421- #link it
3422- with misc.chdir(pjoin(path_me)):
3423- if path_me not in sys.path:
3424- sys.path.insert(0, path_me)
3425- mymod = __import__('%s.Source.rwgt2py' % data['paths'][1], globals(), locals(), [],-1)
3426- mymod = mymod.Source.rwgt2py
3427- with misc.stdchannel_redirected(sys.stdout, os.devnull):
3428- mymod.initialise([self.banner.run_card['lpp1'],
3429- self.banner.run_card['lpp2']],
3430- self.banner.run_card.get_lhapdf_id())
3431- self.combine_wgt = mymod.get_wgt
3432-
3433+ if False:
3434+ #use python module instead
3435+ misc.compile(cwd=pjoin(path_me, data['paths'][1], 'Source'))
3436+ #link it
3437+ with misc.chdir(pjoin(path_me)):
3438+ if path_me not in sys.path:
3439+ sys.path.insert(0, path_me)
3440+ mymod = __import__('%s.Source.rwgt2py' % data['paths'][1], globals(), locals(), [],-1)
3441+ mymod = mymod.Source.rwgt2py
3442+ with misc.stdchannel_redirected(sys.stdout, os.devnull):
3443+ mymod.initialise([self.banner.run_card['lpp1'],
3444+ self.banner.run_card['lpp2']],
3445+ self.banner.run_card.get_lhapdf_id())
3446+ self.combine_wgt = mymod.get_wgt
3447+
3448
3449 # 6. If we need a new model/process-------------------------------------
3450 if (self.second_model or self.second_process or self.dedicated_path) and not second :
3451@@ -1895,6 +1910,7 @@
3452 to_save['has_nlo'] = self.has_nlo
3453 to_save['rwgt_mode'] = self.rwgt_mode
3454 to_save['rwgt_name'] = self.options['rwgt_name']
3455+ to_save['allow_missing_finalstate'] = self.options['allow_missing_finalstate']
3456
3457 name = pjoin(self.rwgt_dir, 'rw_me', 'rwgt.pkl')
3458 save_load_object.save_to_file(name, to_save)
3459@@ -1910,7 +1926,7 @@
3460 'rwgt_name': None}
3461 if keep_name:
3462 self.options['rwgt_name'] = obj['rwgt_name']
3463-
3464+ self.options['allow_missing_finalstate'] = obj['allow_missing_finalstate']
3465 old_rwgt = obj['rwgt_dir']
3466
3467 # path to fortran executable
3468@@ -1933,7 +1949,8 @@
3469 if not self.rwgt_mode:
3470 self.rwgt_mode = obj['rwgt_mode']
3471 logger.info("mode set to %s" % self.rwgt_mode)
3472- if self.has_nlo and 'NLO' in self.rwgt_mode:
3473+ if False:#self.has_nlo and 'NLO' in self.rwgt_mode:
3474+ #use python version
3475 path = pjoin(obj['rwgt_dir'], 'rw_mevirt','Source')
3476 sys.path.insert(0, path)
3477 try:
3478
3479=== modified file 'madgraph/iolibs/export_v4.py'
3480--- madgraph/iolibs/export_v4.py 2020-05-11 16:36:37 +0000
3481+++ madgraph/iolibs/export_v4.py 2020-07-04 19:03:17 +0000
3482@@ -12,7 +12,6 @@
3483 # For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch
3484 #
3485 ################################################################################
3486-from madgraph.iolibs.helas_call_writers import HelasCallWriter
3487 """Methods and classes to export matrix elements to v4 format."""
3488
3489 import copy
3490@@ -881,7 +880,7 @@
3491 # Make sure aloha is in quadruple precision if needed
3492 old_aloha_mp=aloha.mp_precision
3493 aloha.mp_precision=self.opt['mp']
3494-
3495+ self.model = model
3496 # create the MODEL
3497 write_dir=pjoin(self.dir_path, 'Source', 'MODEL')
3498 model_builder = UFO_model_to_mg4(model, write_dir, self.opt + self.proc_characteristic)
3499@@ -2040,7 +2039,7 @@
3500 open(pjoin(self.dir_path,'__init__.py'),'w')
3501 open(pjoin(self.dir_path,'SubProcesses','__init__.py'),'w')
3502
3503- if 'mode' in self.opt and self.opt['mode'] == "reweight":
3504+ if False:#'mode' in self.opt and self.opt['mode'] == "reweight":
3505 #add the module to hande the NLO weight
3506 files.copytree(pjoin(MG5DIR, 'Template', 'RWGTNLO'),
3507 pjoin(self.dir_path, 'Source'))
3508@@ -2048,7 +2047,7 @@
3509 pjoin(self.dir_path, 'Source', 'PDF'))
3510 self.write_pdf_opendata()
3511
3512- if self.prefix_info:
3513+ if self.prefix_info:
3514 self.write_f2py_splitter()
3515 self.write_f2py_makefile()
3516 self.write_f2py_check_sa(matrix_elements,
3517@@ -2105,6 +2104,34 @@
3518 CALL SETPARA(PATH) !first call to setup the paramaters
3519 RETURN
3520 END
3521+
3522+
3523+ subroutine CHANGE_PARA(name, value)
3524+ implicit none
3525+CF2PY intent(in) :: name
3526+CF2PY intent(in) :: value
3527+
3528+ character*512 name
3529+ double precision value
3530+
3531+ include '../Source/MODEL/input.inc'
3532+ include '../Source/MODEL/coupl.inc'
3533+
3534+ SELECT CASE (name)
3535+ %(parameter_setup)s
3536+ CASE DEFAULT
3537+ write(*,*) 'no parameter matching', name, value
3538+ END SELECT
3539+
3540+ return
3541+ end
3542+
3543+ subroutine update_all_coup()
3544+ implicit none
3545+ call coup()
3546+ return
3547+ end
3548+
3549
3550 subroutine get_pdg_order(PDG)
3551 IMPLICIT NONE
3552@@ -2159,20 +2186,46 @@
3553 if min_nexternal != max_nexternal:
3554 text.append('endif')
3555
3556+ params = self.get_model_parameter(self.model)
3557+ parameter_setup =[]
3558+ for key, var in params.items():
3559+ parameter_setup.append(' CASE ("%s")\n %s = value'
3560+ % (key, var))
3561+
3562 formatting = {'python_information':'\n'.join(info),
3563 'smatrixhel': '\n'.join(text),
3564 'maxpart': max_nexternal,
3565 'nb_me': len(allids),
3566 'pdgs': ','.join(str(pdg[i]) if i<len(pdg) else '0'
3567 for i in range(max_nexternal) for pdg in allids),
3568- 'prefix':'\',\''.join(allprefix)
3569+ 'prefix':'\',\''.join(allprefix),
3570+ 'parameter_setup': '\n'.join(parameter_setup),
3571 }
3572 formatting['lenprefix'] = len(formatting['prefix'])
3573 text = template % formatting
3574 fsock = writers.FortranWriter(pjoin(self.dir_path, 'SubProcesses', 'all_matrix.f'),'w')
3575 fsock.writelines(text)
3576 fsock.close()
3577+
3578+ def get_model_parameter(self, model):
3579+ """ returns all the model parameter
3580+ """
3581+ params = {}
3582+ for p in model.get('parameters')[('external',)]:
3583+ name = p.name
3584+ nopref = name[4:] if name.startswith('mdl_') else name
3585+ params[nopref] = name
3586
3587+ block = p.lhablock
3588+ lha = '_'.join([str(i) for i in p.lhacode])
3589+ params['%s_%s' % (block.upper(), lha)] = name
3590+
3591+ return params
3592+
3593+
3594+
3595+
3596+
3597 def write_f2py_check_sa(self, matrix_element, writer):
3598 """ Write the general check_sa.py in SubProcesses that calls all processes successively."""
3599 # To be implemented. It is just an example file, i.e. not crucial.
3600
3601=== modified file 'madgraph/iolibs/file_writers.py'
3602--- madgraph/iolibs/file_writers.py 2018-05-03 09:00:52 +0000
3603+++ madgraph/iolibs/file_writers.py 2020-07-04 19:03:17 +0000
3604@@ -342,19 +342,28 @@
3605 columns. Split in preferential order according to
3606 split_characters, and start each new line with line_start."""
3607
3608- res_lines = [line]
3609-
3610- while len(res_lines[-1]) > self.line_length:
3611+ def get_split_index(line, max_length, max_split, split_characters):
3612 split_at = 0
3613 for character in split_characters:
3614- index = res_lines[-1][(self.line_length - self.max_split): \
3615- self.line_length].rfind(character)
3616+ index = line[(max_length - max_split): \
3617+ max_length].rfind(character)
3618 if index >= 0:
3619- split_at_tmp = self.line_length - self.max_split + index
3620+ split_at_tmp = max_length - max_split + index
3621 if split_at_tmp > split_at:
3622 split_at = split_at_tmp
3623+ return split_at
3624+
3625+
3626+ res_lines = [line]
3627+
3628+ while len(res_lines[-1]) > self.line_length:
3629+ split_at = get_split_index(res_lines[-1], self.line_length,
3630+ self.max_split, split_characters)
3631 if split_at == 0:
3632- split_at = self.line_length
3633+ split_at = get_split_index(res_lines[-1], self.line_length,
3634+ self.max_split + 30, split_characters)
3635+ if split_at == 0:
3636+ split_at = self.line_length
3637
3638 newline = res_lines[-1][split_at:]
3639 nquotes = self.count_number_of_quotes(newline)
3640
3641=== modified file 'madgraph/iolibs/files.py'
3642--- madgraph/iolibs/files.py 2018-05-18 11:55:37 +0000
3643+++ madgraph/iolibs/files.py 2020-07-04 19:03:17 +0000
3644@@ -36,7 +36,8 @@
3645 ret_value = myfunct(sock, *args)
3646 finally:
3647 sock.close()
3648- except IOError, (errno, strerror):
3649+ except IOError as error:
3650+ errno, strerror = error.errno, str(error)
3651 if opt.has_key('print_error'):
3652 if not opt['print_error']:
3653 return None
3654
3655=== modified file 'madgraph/iolibs/template_files/madevent_symmetry.f'
3656--- madgraph/iolibs/template_files/madevent_symmetry.f 2018-03-16 12:13:34 +0000
3657+++ madgraph/iolibs/template_files/madevent_symmetry.f 2020-07-04 19:03:17 +0000
3658@@ -103,7 +103,7 @@
3659 if (abs(lpp(1)) .eq. 3) m1 = 0.000511d0
3660 if (abs(lpp(2)) .eq. 3) m2 = 0.000511d0
3661 if (mass_ion(1).ge.0d0) m1 = mass_ion(1)
3662- if (mass_ion(2).ge.0d0) m1 = mass_ion(2)
3663+ if (mass_ion(2).ge.0d0) m2 = mass_ion(2)
3664 if(ebeam(1).lt.m1.and.lpp(1).ne.9) ebeam(1)=m1
3665 if(ebeam(2).lt.m2.and.lpp(2).ne.9) ebeam(2)=m2
3666 pi1(0)=ebeam(1)
3667
3668=== modified file 'madgraph/loop/loop_exporters.py'
3669--- madgraph/loop/loop_exporters.py 2019-08-28 08:02:11 +0000
3670+++ madgraph/loop/loop_exporters.py 2020-07-04 19:03:17 +0000
3671@@ -297,6 +297,36 @@
3672 RETURN
3673 END
3674
3675+ subroutine CHANGE_PARA(name, value)
3676+ implicit none
3677+CF2PY intent(in) :: name
3678+CF2PY intent(in) :: value
3679+
3680+ character*512 name
3681+ double precision value
3682+
3683+ include '../Source/MODEL/input.inc'
3684+ include '../Source/MODEL/coupl.inc'
3685+ include '../Source/MODEL/mp_coupl.inc'
3686+ include '../Source/MODEL/mp_input.inc'
3687+
3688+ SELECT CASE (name)
3689+ %(parameter_setup)s
3690+ CASE DEFAULT
3691+ write(*,*) 'no parameter matching', name
3692+ END SELECT
3693+
3694+ return
3695+ end
3696+
3697+ subroutine update_all_coup()
3698+ implicit none
3699+ call coup()
3700+ call printout()
3701+ return
3702+ end
3703+
3704+
3705 SUBROUTINE SET_MADLOOP_PATH(PATH)
3706 C Routine to set the path of the folder 'MadLoop5_resources' to MadLoop
3707 CHARACTER(512) PATH
3708@@ -377,6 +407,14 @@
3709 #close the function
3710 if min_nexternal != max_nexternal:
3711 text.append('endif')
3712+
3713+ params = self.get_model_parameter(self.model)
3714+ parameter_setup =[]
3715+ for key, var in params.items():
3716+ parameter_setup.append(' CASE ("%s")\n %s = value\n MP__%s = value'
3717+ % (key, var, var))
3718+
3719+
3720
3721 formatting = {'python_information':'\n'.join(info),
3722 'smatrixhel': '\n'.join(text),
3723@@ -385,7 +423,8 @@
3724 'pdgs': ','.join([str(pdg[i]) if i<len(pdg) else '0'
3725 for i in range(max_nexternal) \
3726 for pdg in allids]),
3727- 'prefix':'\',\''.join(allprefix)
3728+ 'prefix':'\',\''.join(allprefix),
3729+ 'parameter_setup': '\n'.join(parameter_setup),
3730 }
3731
3732
3733
3734=== modified file 'madgraph/madevent/gen_crossxhtml.py'
3735--- madgraph/madevent/gen_crossxhtml.py 2018-05-25 09:13:24 +0000
3736+++ madgraph/madevent/gen_crossxhtml.py 2020-07-04 19:03:17 +0000
3737@@ -375,6 +375,9 @@
3738 run[name] = int(value)
3739 elif name in ['run_mode','run_statistics']:
3740 run[name] = value
3741+ elif name == 'cross' and run[name] != 0:
3742+ run['prev_' + name] = run[name]
3743+ run[name] = float(value)
3744 else:
3745 run[name] = float(value)
3746
3747
3748=== modified file 'madgraph/madevent/gen_ximprove.py'
3749--- madgraph/madevent/gen_ximprove.py 2020-02-25 14:05:36 +0000
3750+++ madgraph/madevent/gen_ximprove.py 2020-07-04 19:03:17 +0000
3751@@ -108,6 +108,10 @@
3752 self.splitted_grid = self.run_card['survey_splitting']
3753 if self.run_card['survey_nchannel_per_job'] != -1:
3754 self.combining_job = self.run_card['survey_nchannel_per_job']
3755+ elif self.run_card['hard_survey'] > 1:
3756+ self.combining_job = 1
3757+
3758+
3759
3760 self.splitted_Pdir = {}
3761 self.splitted_for_dir = lambda x,y: self.splitted_grid
3762@@ -971,7 +975,7 @@
3763 super(gen_ximprove_v4, self).__init__(cmd, opt)
3764
3765 if cmd.opts['accuracy'] < cmd._survey_options['accuracy'][1]:
3766- self.increase_precision()
3767+ self.increase_precision(cmd._survey_options['accuracy'][1]/cmd.opts['accuracy'])
3768
3769 def reset_multijob(self):
3770
3771@@ -986,15 +990,23 @@
3772 f.write('%i\n' % nb_split)
3773 f.close()
3774
3775- def increase_precision(self):
3776-
3777- self.max_event_in_iter = 20000
3778- self.min_events = 7500
3779+ def increase_precision(self, rate=3):
3780+ misc.sprint(rate)
3781+ if rate < 3:
3782+ self.max_event_in_iter = 20000
3783+ self.min_events = 7500
3784+ self.gen_events_security = 1.3
3785+ else:
3786+ rate = rate -2
3787+ self.max_event_in_iter = int((rate+1) * 10000)
3788+ self.min_events = int(rate+2) * 2500
3789+ self.gen_events_security = 1 + 0.1 * (rate+2)
3790+
3791 if int(self.nhel) == 1:
3792 self.min_event_in_iter *= 2**(self.cmd.proc_characteristics['nexternal']//3)
3793 self.max_event_in_iter *= 2**(self.cmd.proc_characteristics['nexternal']//2)
3794
3795- self.gen_events_security = 1.3
3796+
3797
3798 alphabet = "abcdefghijklmnopqrstuvwxyz"
3799 def get_job_for_event(self):
3800
3801=== modified file 'madgraph/various/banner.py'
3802--- madgraph/various/banner.py 2020-05-23 19:22:37 +0000
3803+++ madgraph/various/banner.py 2020-07-04 19:03:17 +0000
3804@@ -3093,7 +3093,8 @@
3805 self.add_param('issgridfile', '', hidden=True)
3806 #job handling of the survey/ refine
3807 self.add_param('job_strategy', 0, hidden=True, include=False, allowed=[0,1,2], comment='see appendix of 1507.00020 (page 26)')
3808- self.add_param('hard_survey', False, hidden=True, include=False, comment='force to have better estimate of the integral at survey for difficult mode like VBF')
3809+ self.add_param('hard_survey', 0, hidden=True, include=False, comment='force to have better estimate of the integral at survey for difficult mode like VBF')
3810+ self.add_param("second_refine_treshold", 0.9, hidden=True, include=False, comment="set a treshold to bypass the use of a second refine. if the ratio of cross-section after survey by the one of the first refine is above the treshold, the second refine will not be done.")
3811 self.add_param('survey_splitting', -1, hidden=True, include=False, comment="for loop-induced control how many core are used at survey for the computation of a single iteration.")
3812 self.add_param('survey_nchannel_per_job', 2, hidden=True, include=False, comment="control how many Channel are integrated inside a single job on cluster/multicore")
3813 self.add_param('refine_evt_by_job', -1, hidden=True, include=False, comment="control the maximal number of events for the first iteration of the refine (larger means less jobs)")
3814@@ -4072,7 +4073,7 @@
3815 super(RunCardNLO, self).check_validity()
3816
3817 # for lepton-lepton collisions, ignore 'pdlabel' and 'lhaid'
3818- if self['lpp1']!=1 or self['lpp2']!=1:
3819+ if abs(self['lpp1'])!=1 or abs(self['lpp2'])!=1:
3820 if self['lpp1'] == 1 or self['lpp2']==1:
3821 raise InvalidRunCard('Process like Deep Inelastic scattering not supported at NLO accuracy.')
3822
3823
3824=== modified file 'madgraph/various/histograms.py'
3825--- madgraph/various/histograms.py 2019-08-28 08:02:11 +0000
3826+++ madgraph/various/histograms.py 2020-07-04 19:03:17 +0000
3827@@ -2397,7 +2397,11 @@
3828 gnuplot_output_list=gnuplot_output_list_v5
3829 else:
3830 output, _ = p.communicate()
3831- if float(output.split()[1]) < 5. :
3832+ try:
3833+ version = float(output.split()[1])
3834+ except:
3835+ version = 5
3836+ if version < 5. :
3837 gnuplot_output_list=gnuplot_output_list_v4
3838 else:
3839 gnuplot_output_list=gnuplot_output_list_v5
3840
3841=== modified file 'madgraph/various/lhe_parser.py'
3842--- madgraph/various/lhe_parser.py 2020-01-09 23:14:56 +0000
3843+++ madgraph/various/lhe_parser.py 2020-07-04 19:03:17 +0000
3844@@ -1449,8 +1449,8 @@
3845 if not hasattr(Event, 'loweight_pattern'):
3846 Event.loweight_pattern = re.compile('''<rscale>\s*(?P<nqcd>\d+)\s+(?P<ren_scale>[\d.e+-]+)\s*</rscale>\s*\n\s*
3847 <asrwt>\s*(?P<asrwt>[\s\d.+-e]+)\s*</asrwt>\s*\n\s*
3848- <pdfrwt\s+beam=["']?1["']?\>\s*(?P<beam1>[\s\d.e+-]*)\s*</pdfrwt>\s*\n\s*
3849- <pdfrwt\s+beam=["']?2["']?\>\s*(?P<beam2>[\s\d.e+-]*)\s*</pdfrwt>\s*\n\s*
3850+ <pdfrwt\s+beam=["']?(?P<idb1>1|2)["']?\>\s*(?P<beam1>[\s\d.e+-]*)\s*</pdfrwt>\s*\n\s*
3851+ <pdfrwt\s+beam=["']?(?P<idb2>1|2)["']?\>\s*(?P<beam2>[\s\d.e+-]*)\s*</pdfrwt>\s*\n\s*
3852 <totfact>\s*(?P<totfact>[\d.e+-]*)\s*</totfact>
3853 ''',re.X+re.I+re.M)
3854
3855@@ -1468,13 +1468,22 @@
3856 self.loweight['asrwt'] =[float(x) for x in info.group('asrwt').split()[1:]]
3857 self.loweight['tot_fact'] = float(info.group('totfact'))
3858
3859- args = info.group('beam1').split()
3860+ if info.group('idb1') == info.group('idb2'):
3861+ raise Exception, '%s not parsed'% text
3862+
3863+ if info.group('idb1') =="1":
3864+ args = info.group('beam1').split()
3865+ else:
3866+ args = info.group('beam2').split()
3867 npdf = int(args[0])
3868 self.loweight['n_pdfrw1'] = npdf
3869 self.loweight['pdf_pdg_code1'] = [int(i) for i in args[1:1+npdf]]
3870 self.loweight['pdf_x1'] = [float(i) for i in args[1+npdf:1+2*npdf]]
3871 self.loweight['pdf_q1'] = [float(i) for i in args[1+2*npdf:1+3*npdf]]
3872- args = info.group('beam2').split()
3873+ if info.group('idb2') =="2":
3874+ args = info.group('beam2').split()
3875+ else:
3876+ args = info.group('beam1').split()
3877 npdf = int(args[0])
3878 self.loweight['n_pdfrw2'] = npdf
3879 self.loweight['pdf_pdg_code2'] = [int(i) for i in args[1:1+npdf]]
3880
3881=== modified file 'madgraph/various/misc.py'
3882--- madgraph/various/misc.py 2020-01-08 14:13:32 +0000
3883+++ madgraph/various/misc.py 2020-07-04 19:03:17 +0000
3884@@ -488,7 +488,7 @@
3885 error_text += "In general this means that your computer is not able to compile."
3886 if sys.platform == "darwin":
3887 error_text += "Note that MacOSX doesn\'t have gmake/gfortan install by default.\n"
3888- error_text += "Xcode3 contains those required programs"
3889+ error_text += "Xcode contains gmake. For gfortran we advise: http://hpc.sourceforge.net/"
3890 raise MadGraph5Error, error_text
3891
3892 if p.returncode:
3893@@ -539,7 +539,7 @@
3894 p = Popen([compiler, '-dumpversion'], stdout=subprocess.PIPE,
3895 stderr=subprocess.PIPE)
3896 output, error = p.communicate()
3897- version_finder=re.compile(r"(?P<version>(\d.)*\d)")
3898+ version_finder=re.compile(r"(?P<version>\d[\d.]*)")
3899 version = version_finder.search(output).group('version')
3900 return version
3901 except Exception:
3902@@ -1772,7 +1772,8 @@
3903 import random
3904 msg = choices[random.randint(0,len(choices)-2)]
3905 EasterEgg.message_aprilfirst[msgtype].remove(msg)
3906-
3907+ else:
3908+ return
3909 elif msgtype=='loading' and date in self.special_banner:
3910 self.change_banner(date)
3911 return
3912@@ -2065,7 +2066,9 @@
3913 logger.warning("Failed to access python version of LHAPDF: "\
3914 "If the python interface to LHAPDF is available on your system, try "\
3915 "adding its location to the PYTHONPATH environment variable and the"\
3916- "LHAPDF library location to LD_LIBRARY_PATH (linux) or DYLD_LIBRARY_PATH (mac os x).")
3917+ "LHAPDF library location to LD_LIBRARY_PATH (linux) or DYLD_LIBRARY_PATH (mac os x)."\
3918+ "The required LD_LIBRARY_PATH is "+ lhapdf_libdir
3919+ )
3920
3921 if use_lhapdf:
3922 python_lhapdf = lhapdf
3923
3924=== modified file 'madgraph/various/process_checks.py'
3925--- madgraph/various/process_checks.py 2019-03-01 08:53:21 +0000
3926+++ madgraph/various/process_checks.py 2020-07-04 19:03:17 +0000
3927@@ -375,7 +375,7 @@
3928 else:
3929 energy = options['energy']
3930 events = options['events']
3931- to_skip = 0
3932+ to_skip = options['skip_evt']
3933
3934 if not (isinstance(process, base_objects.Process) and \
3935 isinstance(energy, (float,int))):
3936
3937=== modified file 'models/model_reader.py'
3938--- models/model_reader.py 2018-09-21 13:46:51 +0000
3939+++ models/model_reader.py 2020-07-04 19:03:17 +0000
3940@@ -180,6 +180,11 @@
3941 value = 0.0
3942 else:
3943 raise
3944+ except OverflowError, err:
3945+ if scale < 1:
3946+ value = 0.0
3947+ else:
3948+ raise
3949 exec("locals()[\'%s\'] = %s" % (parameter_dict[block][pid].name,
3950 value))
3951 parameter_dict[block][pid].value = float(value)
3952
3953=== modified file 'tests/acceptance_tests/test_cmd_reweight.py'
3954--- tests/acceptance_tests/test_cmd_reweight.py 2018-06-01 12:14:52 +0000
3955+++ tests/acceptance_tests/test_cmd_reweight.py 2020-07-04 19:03:17 +0000
3956@@ -136,16 +136,22 @@
3957 ff.close()
3958
3959
3960- with misc.stdchannel_redirected(sys.stdout, os.devnull):
3961- me_cmd.run_cmd('reweight run_01 --from_cards')
3962+ if logger.level <= 10:
3963+ me_cmd.run_cmd('reweight run_01 --from_cards')
3964+ else:
3965+ with misc.stdchannel_redirected(sys.stdout, os.devnull):
3966+ me_cmd.run_cmd('reweight run_01 --from_cards')
3967
3968 lhe = lhe_parser.EventFile(pjoin(self.run_dir,'Events','run_01', 'unweighted_events.lhe.gz'))
3969
3970- solutions = [12.905371, 12.271068, 12.271753, 12.436969, 12.330121, 12.441459, 12.290359, 12.406486, 12.352107, 11.862291, 12.346005, 12.603302, 12.483697, 12.597262, 12.352434, 11.841136, 12.559252, 12.693822, 12.073114, 12.080773, 12.088188, 12.169921, 12.36124, 12.620677, 12.641769]
3971+ #solutions = [12.905371, 12.271068, 12.271753, 12.436969, 12.330121, 12.441459, 12.290359, 12.406486, 12.352107, 11.862291, 12.346005, 12.603302, 12.483697, 12.597262, 12.352434, 11.841136, 12.559252, 12.693822, 12.073114, 12.080773, 12.088188, 12.169921, 12.36124, 12.620677, 12.641769]
3972+ solutions = [14.288834, 13.551237, 13.564131, 13.745311, 13.620339, 13.750088, 13.611093, 13.709763, 13.670902, 13.071603, 13.658932, 13.939627, 13.827959, 13.932638, 13.669482, 13.045913, 13.888161, 14.045136, 13.319103, 13.327884, 13.336799, 13.430042, 13.658435, 13.959817, 13.984111]
3973+ #solutions = []
3974 for i,event in enumerate(lhe):
3975
3976 rwgt_data = event.parse_reweight()
3977 #solutions.append(rwgt_data['rwgt_1'])
3978+ #continue
3979 self.assertTrue('rwgt_1' in rwgt_data)
3980 self.assertTrue(misc.equal(rwgt_data['rwgt_1'], solutions[i]))
3981 #misc.sprint(solutions)
3982@@ -239,7 +245,8 @@
3983 if 1: #with misc.stdchannel_redirected(sys.stdout, os.devnull):
3984 me_cmd.run_cmd('reweight run_01 --from_cards')
3985
3986- solutions = [41.511565, 41.930505, 41.511565, 41.511565, 41.586169, 41.511565, 41.511565, 41.511565, 41.511565, 42.046806, 41.511565, 44.164503, 41.511565, -41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.778368, 41.511565, 42.05448, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 42.115494, 41.511854, 41.511567, 41.511565, 42.00028, 42.120605, 41.514867, -41.511565, 41.511565, 45.125706, 41.511565, 42.180208, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.997509, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.513926, 41.511565, 41.882499, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 47.532736, 41.511565, 41.809063, 41.511565, 41.511565, 41.511565, 41.927695, 41.511565, 41.511565, 41.555692, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, -41.511565, 41.511565, 42.029675, 41.725129, 41.511565, 41.511565, 41.511778, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 42.050439, 41.511565, 41.511565, 41.511565, -41.511565, 42.071105, 41.511565, 41.511565]
3987+ #solutions = [41.511565, 41.930505, 41.511565, 41.511565, 41.586169, 41.511565, 41.511565, 41.511565, 41.511565, 42.046806, 41.511565, 44.164503, 41.511565, -41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.778368, 41.511565, 42.05448, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 42.115494, 41.511854, 41.511567, 41.511565, 42.00028, 42.120605, 41.514867, -41.511565, 41.511565, 45.125706, 41.511565, 42.180208, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.997509, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.513926, 41.511565, 41.882499, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 47.532736, 41.511565, 41.809063, 41.511565, 41.511565, 41.511565, 41.927695, 41.511565, 41.511565, 41.555692, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, -41.511565, 41.511565, 42.029675, 41.725129, 41.511565, 41.511565, 41.511778, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 42.050439, 41.511565, 41.511565, 41.511565, -41.511565, 42.071105, 41.511565, 41.511565]
3988+ solutions = [41.511565, 41.75164, 41.511565, 41.511565, 41.557009, 41.511565, 41.511565, 41.511565, 41.511565, 41.759881, 41.511565, 44.717244, 41.511565, -41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 42.041827, 41.511565, 41.663092, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.920917, 41.511736, 41.511566, 41.511565, 205.29791, 42.538389, 41.513573, -41.511565, 41.511565, 44.650974, 41.511565, 42.549187, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.431553, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.513265, 41.511565, 43.902643, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 8853.0397, 41.511565, 333.38491, 41.511565, 41.511565, 41.511565, 75.701362, 41.511565, 41.511565, 41.54695, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, -41.511565, 41.511565, 41.454923, 41.53984, 41.511565, 41.511565, 41.511743, 41.511565, 41.511565, 41.511565, 41.511565, 41.511565, 41.732627, 41.511565, 41.511565, 41.511565, -41.511565, 41.395865, 41.511565, 41.511565]
3989 lhe = lhe_parser.EventFile(pjoin(self.run_dir,'Events','run_01', 'rwgt_events_tree_rwgt_1.lhe.gz'))
3990 lhe_orig = lhe_parser.EventFile(pjoin(self.run_dir,'Events','run_01', 'events.lhe.gz'))
3991 from itertools import izip
3992@@ -249,9 +256,9 @@
3993 i+=1
3994 rwgt_data = event_orig.parse_reweight()
3995 #solutions.append(rwgt_data['rwgt_1_tree'])
3996+ #continue
3997 self.assertTrue('rwgt_1_tree' in rwgt_data)
3998 self.assertEqual(event.wgt, rwgt_data['rwgt_1_tree'])
3999- #misc.sprint(abs(event.wgt))
4000 self.assertTrue(misc.equal(event.wgt, solutions[i]))
4001 nlo1 = event.parse_nlo_weight()
4002 nlo2 = event_orig.parse_nlo_weight()
4003@@ -259,6 +266,7 @@
4004 self.assertNotEqual(nlo1.total_wgt, nlo2.total_wgt)
4005
4006 #misc.sprint(solutions)
4007+ #raise Exception
4008
4009 def test_loop_improved_reweighting(self):
4010 """ check identical re-weighting in ttbar
4011@@ -281,8 +289,11 @@
4012 ff.write(cmd_lines)
4013 ff.close()
4014
4015- with misc.stdchannel_redirected(sys.stdout, os.devnull):
4016+ if logger.level <=10:
4017 me_cmd.run_cmd('reweight run_01 --from_cards')
4018+ else:
4019+ with misc.stdchannel_redirected(sys.stdout, os.devnull):
4020+ me_cmd.run_cmd('reweight run_01 --from_cards')
4021
4022 lhe = lhe_parser.EventFile(pjoin(self.run_dir,'Events','run_01', 'events.lhe.gz'))
4023 lhe2= lhe_parser.EventFile(pjoin(self.run_dir,'Events','run_01', 'rwgt_events_tree_rwgt_1.lhe.gz'))
4024@@ -335,11 +346,12 @@
4025 self.assertTrue(misc.equal(rwgt_data['NAME_1'], solutions2[i]))
4026
4027
4028- def test_nlo_reweighting_comb(self):
4029+ def old_test_nlo_reweighting_comb(self):
4030 """check that nlo reweighting is working.
4031 The main point is to check the recombination of the weights
4032 Since the rest should be either checked by the lhe_parser class
4033- or by the various check of the standalone checks
4034+ or by the various check of the standalone checks.
4035+ This way of combining weights is now outdated
4036 """
4037
4038 # create a reweight directory
4039
4040=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_001.f'
4041--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_001.f 2020-03-11 09:28:14 +0000
4042+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_001.f 2020-07-04 19:03:17 +0000
4043@@ -69,8 +69,9 @@
4044 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4045 ENDDO
4046 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4047- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4048- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4049+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4050+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4051+ $ ,QCD_POS) = ANS(I)
4052 ENDIF
4053 ENDDO
4054
4055
4056=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_002.f'
4057--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_002.f 2020-03-11 09:28:14 +0000
4058+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_002.f 2020-07-04 19:03:17 +0000
4059@@ -69,8 +69,9 @@
4060 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4061 ENDDO
4062 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4063- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4064- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4065+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4066+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4067+ $ ,QCD_POS) = ANS(I)
4068 ENDIF
4069 ENDDO
4070
4071
4072=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_003.f'
4073--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_003.f 2020-03-11 09:28:14 +0000
4074+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_003.f 2020-07-04 19:03:17 +0000
4075@@ -69,8 +69,9 @@
4076 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4077 ENDDO
4078 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4079- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4080- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4081+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4082+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4083+ $ ,QCD_POS) = ANS(I)
4084 ENDIF
4085 ENDDO
4086
4087
4088=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_004.f'
4089--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_004.f 2020-03-11 09:28:14 +0000
4090+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_004.f 2020-07-04 19:03:17 +0000
4091@@ -69,8 +69,9 @@
4092 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4093 ENDDO
4094 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4095- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4096- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4097+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4098+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4099+ $ ,QCD_POS) = ANS(I)
4100 ENDIF
4101 ENDDO
4102
4103
4104=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_005.f'
4105--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_005.f 2020-03-11 09:28:14 +0000
4106+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_005.f 2020-07-04 19:03:17 +0000
4107@@ -69,8 +69,9 @@
4108 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4109 ENDDO
4110 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4111- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4112- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4113+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4114+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4115+ $ ,QCD_POS) = ANS(I)
4116 ENDIF
4117 ENDDO
4118
4119
4120=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_006.f'
4121--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_006.f 2020-03-11 09:28:14 +0000
4122+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_006.f 2020-07-04 19:03:17 +0000
4123@@ -69,8 +69,9 @@
4124 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4125 ENDDO
4126 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4127- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4128- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4129+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4130+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4131+ $ ,QCD_POS) = ANS(I)
4132 ENDIF
4133 ENDDO
4134
4135
4136=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_007.f'
4137--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_007.f 2020-03-11 09:28:14 +0000
4138+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_007.f 2020-07-04 19:03:17 +0000
4139@@ -69,8 +69,9 @@
4140 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4141 ENDDO
4142 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4143- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4144- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4145+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4146+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4147+ $ ,QCD_POS) = ANS(I)
4148 ENDIF
4149 ENDDO
4150
4151
4152=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_008.f'
4153--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_008.f 2020-03-11 09:28:14 +0000
4154+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_008.f 2020-07-04 19:03:17 +0000
4155@@ -69,8 +69,9 @@
4156 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4157 ENDDO
4158 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4159- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4160- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4161+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4162+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4163+ $ ,QCD_POS) = ANS(I)
4164 ENDIF
4165 ENDDO
4166
4167
4168=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%born.f'
4169--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%born.f 2020-03-11 09:28:14 +0000
4170+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%born.f 2020-07-04 19:03:17 +0000
4171@@ -131,8 +131,8 @@
4172 DO J = 1, NSPLITORDERS
4173 AMP_ORDERS(J) = GETORDPOWFROMINDEX_B(J, I)
4174 ENDDO
4175- IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPL
4176- $IT_POS(AMP_ORDERS)) = ANS(1,I)
4177+ IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4178+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(1,I)
4179 ENDIF
4180 ENDDO
4181 C this is to avoid fake non-zero contributions
4182@@ -169,10 +169,12 @@
4183 IF (K.EQ.J) AMP_ORDERS(K) = AMP_ORDERS(K) + 2
4184 ENDDO
4185 C this is to avoid fake non-zero contributions
4186- IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4187- $AMP_SPLIT_POS(AMP_ORDERS),1,J) = ANS(1,I)
4188- IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4189- $AMP_SPLIT_POS(AMP_ORDERS),2,J) = ANS(2,I)
4190+ IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4191+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1,J) =
4192+ $ ANS(1,I)
4193+ IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY)
4194+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),2,J) =
4195+ $ ANS(2,I)
4196 ENDIF
4197 ENDDO
4198 C this is to avoid fake non-zero contributions
4199@@ -599,8 +601,8 @@
4200 C BEGIN CODE
4201 C
4202 DO I=1,NSPLITORDERS
4203- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4204- $B,I)
4205+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4206+ $ +AMPSPLITORDERS(AMPORDERB,I)
4207 ENDDO
4208 SQSOINDEXB=SQSOINDEXB_FROM_ORDERS(SQORDERS)
4209 END
4210
4211=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%sborn_sf.f'
4212--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%sborn_sf.f 2017-07-31 08:48:20 +0000
4213+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%sborn_sf.f 2020-07-04 19:03:17 +0000
4214@@ -64,8 +64,8 @@
4215
4216 WGT = WGT_COL * G**2
4217 C update the amp_split_soft, which is summed in sbornsoft
4218- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4219- $IT_SIZE,1,QCD_POS)) * G**2
4220+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4221+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QCD_POS)) * G**2
4222
4223 ELSE IF (NEED_CHARGE_LINKS) THEN
4224 CHARGEPROD = CHARGES_BORN(M) * CHARGES_BORN(N)
4225@@ -76,8 +76,9 @@
4226 IF (M.EQ.N) CHARGEPROD = CHARGEPROD / 2D0
4227 WGT = DBLE(ANS_CNT(1, QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4228 C update the amp_split_soft, which is summed in sbornsoft
4229- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4230- $IT_SIZE,1,QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4231+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4232+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QED_POS)) * CHARGEPROD
4233+ $ * DBLE(GAL(1))**2
4234 ENDIF
4235
4236 RETURN
4237
4238=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_001.f'
4239--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_001.f 2020-03-11 09:28:14 +0000
4240+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_001.f 2020-07-04 19:03:17 +0000
4241@@ -72,8 +72,9 @@
4242 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4243 ENDDO
4244 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4245- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4246- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4247+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4248+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4249+ $ ,QCD_POS) = ANS(I)
4250 ENDIF
4251 ENDDO
4252
4253
4254=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_002.f'
4255--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_002.f 2020-03-11 09:28:14 +0000
4256+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_002.f 2020-07-04 19:03:17 +0000
4257@@ -72,8 +72,9 @@
4258 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4259 ENDDO
4260 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4261- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4262- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4263+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4264+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4265+ $ ,QCD_POS) = ANS(I)
4266 ENDIF
4267 ENDDO
4268
4269
4270=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_003.f'
4271--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_003.f 2020-03-11 09:28:14 +0000
4272+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_003.f 2020-07-04 19:03:17 +0000
4273@@ -72,8 +72,9 @@
4274 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4275 ENDDO
4276 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4277- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4278- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4279+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4280+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4281+ $ ,QCD_POS) = ANS(I)
4282 ENDIF
4283 ENDDO
4284
4285
4286=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_004.f'
4287--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_004.f 2020-03-11 09:28:14 +0000
4288+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_004.f 2020-07-04 19:03:17 +0000
4289@@ -72,8 +72,9 @@
4290 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4291 ENDDO
4292 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4293- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4294- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4295+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4296+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4297+ $ ,QCD_POS) = ANS(I)
4298 ENDIF
4299 ENDDO
4300
4301
4302=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_005.f'
4303--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_005.f 2020-03-11 09:28:14 +0000
4304+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_005.f 2020-07-04 19:03:17 +0000
4305@@ -72,8 +72,9 @@
4306 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4307 ENDDO
4308 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4309- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4310- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4311+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4312+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4313+ $ ,QCD_POS) = ANS(I)
4314 ENDIF
4315 ENDDO
4316
4317
4318=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_006.f'
4319--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_006.f 2020-03-11 09:28:14 +0000
4320+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_006.f 2020-07-04 19:03:17 +0000
4321@@ -72,8 +72,9 @@
4322 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4323 ENDDO
4324 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4325- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4326- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4327+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4328+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4329+ $ ,QCD_POS) = ANS(I)
4330 ENDIF
4331 ENDDO
4332
4333
4334=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_007.f'
4335--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_007.f 2020-03-11 09:28:14 +0000
4336+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_007.f 2020-07-04 19:03:17 +0000
4337@@ -72,8 +72,9 @@
4338 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4339 ENDDO
4340 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4341- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4342- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4343+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4344+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4345+ $ ,QCD_POS) = ANS(I)
4346 ENDIF
4347 ENDDO
4348
4349
4350=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_008.f'
4351--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_008.f 2020-03-11 09:28:14 +0000
4352+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_008.f 2020-07-04 19:03:17 +0000
4353@@ -72,8 +72,9 @@
4354 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4355 ENDDO
4356 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4357- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4358- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4359+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4360+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4361+ $ ,QCD_POS) = ANS(I)
4362 ENDIF
4363 ENDDO
4364
4365
4366=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%born.f'
4367--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%born.f 2020-03-11 09:28:14 +0000
4368+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%born.f 2020-07-04 19:03:17 +0000
4369@@ -134,8 +134,8 @@
4370 DO J = 1, NSPLITORDERS
4371 AMP_ORDERS(J) = GETORDPOWFROMINDEX_B(J, I)
4372 ENDDO
4373- IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPL
4374- $IT_POS(AMP_ORDERS)) = ANS(1,I)
4375+ IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4376+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(1,I)
4377 ENDIF
4378 ENDDO
4379 C this is to avoid fake non-zero contributions
4380@@ -172,10 +172,12 @@
4381 IF (K.EQ.J) AMP_ORDERS(K) = AMP_ORDERS(K) + 2
4382 ENDDO
4383 C this is to avoid fake non-zero contributions
4384- IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4385- $AMP_SPLIT_POS(AMP_ORDERS),1,J) = ANS(1,I)
4386- IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4387- $AMP_SPLIT_POS(AMP_ORDERS),2,J) = ANS(2,I)
4388+ IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4389+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1,J) =
4390+ $ ANS(1,I)
4391+ IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY)
4392+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),2,J) =
4393+ $ ANS(2,I)
4394 ENDIF
4395 ENDDO
4396 C this is to avoid fake non-zero contributions
4397@@ -602,8 +604,8 @@
4398 C BEGIN CODE
4399 C
4400 DO I=1,NSPLITORDERS
4401- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4402- $B,I)
4403+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4404+ $ +AMPSPLITORDERS(AMPORDERB,I)
4405 ENDDO
4406 SQSOINDEXB=SQSOINDEXB_FROM_ORDERS(SQORDERS)
4407 END
4408
4409=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%sborn_sf.f'
4410--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%sborn_sf.f 2017-07-31 08:48:20 +0000
4411+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%sborn_sf.f 2020-07-04 19:03:17 +0000
4412@@ -64,8 +64,8 @@
4413
4414 WGT = WGT_COL * G**2
4415 C update the amp_split_soft, which is summed in sbornsoft
4416- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4417- $IT_SIZE,1,QCD_POS)) * G**2
4418+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4419+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QCD_POS)) * G**2
4420
4421 ELSE IF (NEED_CHARGE_LINKS) THEN
4422 CHARGEPROD = CHARGES_BORN(M) * CHARGES_BORN(N)
4423@@ -76,8 +76,9 @@
4424 IF (M.EQ.N) CHARGEPROD = CHARGEPROD / 2D0
4425 WGT = DBLE(ANS_CNT(1, QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4426 C update the amp_split_soft, which is summed in sbornsoft
4427- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4428- $IT_SIZE,1,QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4429+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4430+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QED_POS)) * CHARGEPROD
4431+ $ * DBLE(GAL(1))**2
4432 ENDIF
4433
4434 RETURN
4435
4436=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_001.f'
4437--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_001.f 2020-03-11 09:28:14 +0000
4438+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_001.f 2020-07-04 19:03:17 +0000
4439@@ -72,8 +72,9 @@
4440 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4441 ENDDO
4442 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4443- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4444- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4445+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4446+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4447+ $ ,QCD_POS) = ANS(I)
4448 ENDIF
4449 ENDDO
4450
4451
4452=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_002.f'
4453--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_002.f 2020-03-11 09:28:14 +0000
4454+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_002.f 2020-07-04 19:03:17 +0000
4455@@ -72,8 +72,9 @@
4456 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4457 ENDDO
4458 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4459- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4460- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4461+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4462+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4463+ $ ,QCD_POS) = ANS(I)
4464 ENDIF
4465 ENDDO
4466
4467
4468=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_003.f'
4469--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_003.f 2020-03-11 09:28:14 +0000
4470+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_003.f 2020-07-04 19:03:17 +0000
4471@@ -72,8 +72,9 @@
4472 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4473 ENDDO
4474 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4475- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4476- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4477+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4478+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4479+ $ ,QCD_POS) = ANS(I)
4480 ENDIF
4481 ENDDO
4482
4483
4484=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_004.f'
4485--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_004.f 2020-03-11 09:28:14 +0000
4486+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_004.f 2020-07-04 19:03:17 +0000
4487@@ -72,8 +72,9 @@
4488 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4489 ENDDO
4490 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4491- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4492- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4493+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4494+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4495+ $ ,QCD_POS) = ANS(I)
4496 ENDIF
4497 ENDDO
4498
4499
4500=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_005.f'
4501--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_005.f 2020-03-11 09:28:14 +0000
4502+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_005.f 2020-07-04 19:03:17 +0000
4503@@ -72,8 +72,9 @@
4504 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4505 ENDDO
4506 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4507- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4508- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4509+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4510+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4511+ $ ,QCD_POS) = ANS(I)
4512 ENDIF
4513 ENDDO
4514
4515
4516=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_006.f'
4517--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_006.f 2020-03-11 09:28:14 +0000
4518+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_006.f 2020-07-04 19:03:17 +0000
4519@@ -72,8 +72,9 @@
4520 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4521 ENDDO
4522 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4523- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4524- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4525+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4526+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4527+ $ ,QCD_POS) = ANS(I)
4528 ENDIF
4529 ENDDO
4530
4531
4532=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_007.f'
4533--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_007.f 2020-03-11 09:28:14 +0000
4534+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_007.f 2020-07-04 19:03:17 +0000
4535@@ -72,8 +72,9 @@
4536 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4537 ENDDO
4538 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4539- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4540- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4541+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4542+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4543+ $ ,QCD_POS) = ANS(I)
4544 ENDIF
4545 ENDDO
4546
4547
4548=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_008.f'
4549--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_008.f 2020-03-11 09:28:14 +0000
4550+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_008.f 2020-07-04 19:03:17 +0000
4551@@ -72,8 +72,9 @@
4552 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4553 ENDDO
4554 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4555- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4556- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4557+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4558+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4559+ $ ,QCD_POS) = ANS(I)
4560 ENDIF
4561 ENDDO
4562
4563
4564=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%born.f'
4565--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%born.f 2020-03-11 09:28:14 +0000
4566+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%born.f 2020-07-04 19:03:17 +0000
4567@@ -134,8 +134,8 @@
4568 DO J = 1, NSPLITORDERS
4569 AMP_ORDERS(J) = GETORDPOWFROMINDEX_B(J, I)
4570 ENDDO
4571- IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPL
4572- $IT_POS(AMP_ORDERS)) = ANS(1,I)
4573+ IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4574+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(1,I)
4575 ENDIF
4576 ENDDO
4577 C this is to avoid fake non-zero contributions
4578@@ -172,10 +172,12 @@
4579 IF (K.EQ.J) AMP_ORDERS(K) = AMP_ORDERS(K) + 2
4580 ENDDO
4581 C this is to avoid fake non-zero contributions
4582- IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4583- $AMP_SPLIT_POS(AMP_ORDERS),1,J) = ANS(1,I)
4584- IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4585- $AMP_SPLIT_POS(AMP_ORDERS),2,J) = ANS(2,I)
4586+ IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4587+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1,J) =
4588+ $ ANS(1,I)
4589+ IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY)
4590+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),2,J) =
4591+ $ ANS(2,I)
4592 ENDIF
4593 ENDDO
4594 C this is to avoid fake non-zero contributions
4595@@ -602,8 +604,8 @@
4596 C BEGIN CODE
4597 C
4598 DO I=1,NSPLITORDERS
4599- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4600- $B,I)
4601+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4602+ $ +AMPSPLITORDERS(AMPORDERB,I)
4603 ENDDO
4604 SQSOINDEXB=SQSOINDEXB_FROM_ORDERS(SQORDERS)
4605 END
4606
4607=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%sborn_sf.f'
4608--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%sborn_sf.f 2017-07-31 08:48:20 +0000
4609+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%sborn_sf.f 2020-07-04 19:03:17 +0000
4610@@ -64,8 +64,8 @@
4611
4612 WGT = WGT_COL * G**2
4613 C update the amp_split_soft, which is summed in sbornsoft
4614- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4615- $IT_SIZE,1,QCD_POS)) * G**2
4616+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4617+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QCD_POS)) * G**2
4618
4619 ELSE IF (NEED_CHARGE_LINKS) THEN
4620 CHARGEPROD = CHARGES_BORN(M) * CHARGES_BORN(N)
4621@@ -76,8 +76,9 @@
4622 IF (M.EQ.N) CHARGEPROD = CHARGEPROD / 2D0
4623 WGT = DBLE(ANS_CNT(1, QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4624 C update the amp_split_soft, which is summed in sbornsoft
4625- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4626- $IT_SIZE,1,QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4627+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4628+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QED_POS)) * CHARGEPROD
4629+ $ * DBLE(GAL(1))**2
4630 ENDIF
4631
4632 RETURN
4633
4634=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f'
4635--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f 2020-03-11 09:28:14 +0000
4636+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f 2020-07-04 19:03:17 +0000
4637@@ -69,8 +69,9 @@
4638 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4639 ENDDO
4640 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4641- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4642- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4643+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4644+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4645+ $ ,QCD_POS) = ANS(I)
4646 ENDIF
4647 ENDDO
4648
4649
4650=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f'
4651--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f 2020-03-11 09:28:14 +0000
4652+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f 2020-07-04 19:03:17 +0000
4653@@ -69,8 +69,9 @@
4654 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4655 ENDDO
4656 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4657- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4658- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4659+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4660+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4661+ $ ,QCD_POS) = ANS(I)
4662 ENDIF
4663 ENDDO
4664
4665
4666=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f'
4667--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f 2020-03-11 09:28:14 +0000
4668+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f 2020-07-04 19:03:17 +0000
4669@@ -69,8 +69,9 @@
4670 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4671 ENDDO
4672 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4673- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4674- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4675+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4676+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4677+ $ ,QCD_POS) = ANS(I)
4678 ENDIF
4679 ENDDO
4680
4681
4682=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f'
4683--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f 2020-03-11 09:28:14 +0000
4684+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f 2020-07-04 19:03:17 +0000
4685@@ -69,8 +69,9 @@
4686 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4687 ENDDO
4688 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4689- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4690- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4691+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4692+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4693+ $ ,QCD_POS) = ANS(I)
4694 ENDIF
4695 ENDDO
4696
4697
4698=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f'
4699--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f 2020-03-11 09:28:14 +0000
4700+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f 2020-07-04 19:03:17 +0000
4701@@ -69,8 +69,9 @@
4702 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4703 ENDDO
4704 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4705- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4706- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4707+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4708+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4709+ $ ,QCD_POS) = ANS(I)
4710 ENDIF
4711 ENDDO
4712
4713
4714=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f'
4715--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f 2020-03-11 09:28:14 +0000
4716+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f 2020-07-04 19:03:17 +0000
4717@@ -69,8 +69,9 @@
4718 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4719 ENDDO
4720 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4721- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4722- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4723+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4724+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4725+ $ ,QCD_POS) = ANS(I)
4726 ENDIF
4727 ENDDO
4728
4729
4730=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f'
4731--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f 2020-03-11 09:28:14 +0000
4732+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f 2020-07-04 19:03:17 +0000
4733@@ -69,8 +69,9 @@
4734 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4735 ENDDO
4736 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4737- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4738- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4739+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4740+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4741+ $ ,QCD_POS) = ANS(I)
4742 ENDIF
4743 ENDDO
4744
4745
4746=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f'
4747--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f 2020-03-11 09:28:14 +0000
4748+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f 2020-07-04 19:03:17 +0000
4749@@ -69,8 +69,9 @@
4750 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4751 ENDDO
4752 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4753- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4754- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4755+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4756+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4757+ $ ,QCD_POS) = ANS(I)
4758 ENDIF
4759 ENDDO
4760
4761
4762=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%born.f'
4763--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%born.f 2020-03-11 09:28:14 +0000
4764+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%born.f 2020-07-04 19:03:17 +0000
4765@@ -131,8 +131,8 @@
4766 DO J = 1, NSPLITORDERS
4767 AMP_ORDERS(J) = GETORDPOWFROMINDEX_B(J, I)
4768 ENDDO
4769- IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPL
4770- $IT_POS(AMP_ORDERS)) = ANS(1,I)
4771+ IF(ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4772+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(1,I)
4773 ENDIF
4774 ENDDO
4775 C this is to avoid fake non-zero contributions
4776@@ -169,10 +169,12 @@
4777 IF (K.EQ.J) AMP_ORDERS(K) = AMP_ORDERS(K) + 2
4778 ENDDO
4779 C this is to avoid fake non-zero contributions
4780- IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4781- $AMP_SPLIT_POS(AMP_ORDERS),1,J) = ANS(1,I)
4782- IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_
4783- $AMP_SPLIT_POS(AMP_ORDERS),2,J) = ANS(2,I)
4784+ IF (ABS(ANS(1,I)).GT.MAX_VAL*TINY)
4785+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1,J) =
4786+ $ ANS(1,I)
4787+ IF (ABS(ANS(2,I)).GT.MAX_VAL*TINY)
4788+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),2,J) =
4789+ $ ANS(2,I)
4790 ENDIF
4791 ENDDO
4792 C this is to avoid fake non-zero contributions
4793@@ -599,8 +601,8 @@
4794 C BEGIN CODE
4795 C
4796 DO I=1,NSPLITORDERS
4797- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4798- $B,I)
4799+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4800+ $ +AMPSPLITORDERS(AMPORDERB,I)
4801 ENDDO
4802 SQSOINDEXB=SQSOINDEXB_FROM_ORDERS(SQORDERS)
4803 END
4804
4805=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_1.f'
4806--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_1.f 2020-03-11 09:28:14 +0000
4807+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_1.f 2020-07-04 19:03:17 +0000
4808@@ -84,8 +84,8 @@
4809 DO J = 1, NSPLITORDERS
4810 AMP_ORDERS(J) = GETORDPOWFROMINDEX1(J, I)
4811 ENDDO
4812- IF (ABS(ANS(I)).GT.ANS_MAX*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPLI
4813- $T_POS(AMP_ORDERS)) = ANS(I)
4814+ IF (ABS(ANS(I)).GT.ANS_MAX*TINY)
4815+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(I)
4816 ENDIF
4817 ENDDO
4818
4819@@ -420,8 +420,8 @@
4820 C BEGIN CODE
4821 C
4822 DO I=1,NSPLITORDERS
4823- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4824- $B,I)
4825+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4826+ $ +AMPSPLITORDERS(AMPORDERB,I)
4827 ENDDO
4828 SQSOINDEX1=SQSOINDEX_FROM_ORDERS1(SQORDERS)
4829 END
4830
4831=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_2.f'
4832--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_2.f 2020-03-11 09:28:14 +0000
4833+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_2.f 2020-07-04 19:03:17 +0000
4834@@ -87,8 +87,8 @@
4835 DO J = 1, NSPLITORDERS
4836 AMP_ORDERS(J) = GETORDPOWFROMINDEX2(J, I)
4837 ENDDO
4838- IF (ABS(ANS(I)).GT.ANS_MAX*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPLI
4839- $T_POS(AMP_ORDERS)) = ANS(I)
4840+ IF (ABS(ANS(I)).GT.ANS_MAX*TINY)
4841+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(I)
4842 ENDIF
4843 ENDDO
4844
4845@@ -384,8 +384,8 @@
4846 C BEGIN CODE
4847 C
4848 DO I=1,NSPLITORDERS
4849- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4850- $B,I)
4851+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4852+ $ +AMPSPLITORDERS(AMPORDERB,I)
4853 ENDDO
4854 SQSOINDEX2=SQSOINDEX_FROM_ORDERS2(SQORDERS)
4855 END
4856
4857=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_3.f'
4858--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_3.f 2020-03-11 09:28:14 +0000
4859+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_3.f 2020-07-04 19:03:17 +0000
4860@@ -87,8 +87,8 @@
4861 DO J = 1, NSPLITORDERS
4862 AMP_ORDERS(J) = GETORDPOWFROMINDEX3(J, I)
4863 ENDDO
4864- IF (ABS(ANS(I)).GT.ANS_MAX*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPLI
4865- $T_POS(AMP_ORDERS)) = ANS(I)
4866+ IF (ABS(ANS(I)).GT.ANS_MAX*TINY)
4867+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(I)
4868 ENDIF
4869 ENDDO
4870
4871@@ -384,8 +384,8 @@
4872 C BEGIN CODE
4873 C
4874 DO I=1,NSPLITORDERS
4875- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4876- $B,I)
4877+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4878+ $ +AMPSPLITORDERS(AMPORDERB,I)
4879 ENDDO
4880 SQSOINDEX3=SQSOINDEX_FROM_ORDERS3(SQORDERS)
4881 END
4882
4883=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_4.f'
4884--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_4.f 2020-03-11 09:28:14 +0000
4885+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_4.f 2020-07-04 19:03:17 +0000
4886@@ -87,8 +87,8 @@
4887 DO J = 1, NSPLITORDERS
4888 AMP_ORDERS(J) = GETORDPOWFROMINDEX4(J, I)
4889 ENDDO
4890- IF (ABS(ANS(I)).GT.ANS_MAX*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPLI
4891- $T_POS(AMP_ORDERS)) = ANS(I)
4892+ IF (ABS(ANS(I)).GT.ANS_MAX*TINY)
4893+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(I)
4894 ENDIF
4895 ENDDO
4896
4897@@ -384,8 +384,8 @@
4898 C BEGIN CODE
4899 C
4900 DO I=1,NSPLITORDERS
4901- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4902- $B,I)
4903+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4904+ $ +AMPSPLITORDERS(AMPORDERB,I)
4905 ENDDO
4906 SQSOINDEX4=SQSOINDEX_FROM_ORDERS4(SQORDERS)
4907 END
4908
4909=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_5.f'
4910--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_5.f 2020-03-11 09:28:14 +0000
4911+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%matrix_5.f 2020-07-04 19:03:17 +0000
4912@@ -87,8 +87,8 @@
4913 DO J = 1, NSPLITORDERS
4914 AMP_ORDERS(J) = GETORDPOWFROMINDEX5(J, I)
4915 ENDDO
4916- IF (ABS(ANS(I)).GT.ANS_MAX*TINY) AMP_SPLIT(ORDERS_TO_AMP_SPLI
4917- $T_POS(AMP_ORDERS)) = ANS(I)
4918+ IF (ABS(ANS(I)).GT.ANS_MAX*TINY)
4919+ $ AMP_SPLIT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS)) = ANS(I)
4920 ENDIF
4921 ENDDO
4922
4923@@ -384,8 +384,8 @@
4924 C BEGIN CODE
4925 C
4926 DO I=1,NSPLITORDERS
4927- SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)+AMPSPLITORDERS(AMPORDER
4928- $B,I)
4929+ SQORDERS(I)=AMPSPLITORDERS(AMPORDERA,I)
4930+ $ +AMPSPLITORDERS(AMPORDERB,I)
4931 ENDDO
4932 SQSOINDEX5=SQSOINDEX_FROM_ORDERS5(SQORDERS)
4933 END
4934
4935=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%sborn_sf.f'
4936--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%sborn_sf.f 2017-07-31 08:48:20 +0000
4937+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%sborn_sf.f 2020-07-04 19:03:17 +0000
4938@@ -64,8 +64,8 @@
4939
4940 WGT = WGT_COL * G**2
4941 C update the amp_split_soft, which is summed in sbornsoft
4942- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4943- $IT_SIZE,1,QCD_POS)) * G**2
4944+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4945+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QCD_POS)) * G**2
4946
4947 ELSE IF (NEED_CHARGE_LINKS) THEN
4948 CHARGEPROD = CHARGES_BORN(M) * CHARGES_BORN(N)
4949@@ -76,8 +76,9 @@
4950 IF (M.EQ.N) CHARGEPROD = CHARGEPROD / 2D0
4951 WGT = DBLE(ANS_CNT(1, QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4952 C update the amp_split_soft, which is summed in sbornsoft
4953- AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) = DBLE(AMP_SPLIT_CNT(1:AMP_SPL
4954- $IT_SIZE,1,QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
4955+ AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
4956+ $ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QED_POS)) * CHARGEPROD
4957+ $ * DBLE(GAL(1))**2
4958 ENDIF
4959
4960 RETURN
4961
4962=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f'
4963--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f 2020-03-11 09:28:14 +0000
4964+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f 2020-07-04 19:03:17 +0000
4965@@ -72,8 +72,9 @@
4966 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4967 ENDDO
4968 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4969- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4970- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4971+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4972+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4973+ $ ,QCD_POS) = ANS(I)
4974 ENDIF
4975 ENDDO
4976
4977
4978=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f'
4979--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f 2020-03-11 09:28:14 +0000
4980+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f 2020-07-04 19:03:17 +0000
4981@@ -72,8 +72,9 @@
4982 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4983 ENDDO
4984 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
4985- IF(ABS(ANS(I)).GT.MAX_VAL*TINY) AMP_SPLIT_CNT(ORDERS_TO_AMP_S
4986- $PLIT_POS(AMP_ORDERS),1,QCD_POS) = ANS(I)
4987+ IF(ABS(ANS(I)).GT.MAX_VAL*TINY)
4988+ $ AMP_SPLIT_CNT(ORDERS_TO_AMP_SPLIT_POS(AMP_ORDERS),1
4989+ $ ,QCD_POS) = ANS(I)
4990 ENDIF
4991 ENDDO
4992
4993
4994=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f'
4995--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f 2020-03-11 09:28:14 +0000
4996+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f 2020-07-04 19:03:17 +0000
4997@@ -72,8 +72,9 @@
4998 IF (J.EQ.QCD_POS) AMP_ORDERS(J) = AMP_ORDERS(J) + 2
4999 ENDDO
5000 !amp_split_cnt(orders_to_amp_split_pos(amp_orders),1,qcd_pos) = ans(I)
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: