Merge lp:~maddevelopers/mg5amcnlo/3.0.2 into lp:mg5amcnlo
- 3.0.2
- Merge into 3.x
Status: | Merged |
---|---|
Merged at revision: | 961 |
Proposed branch: | lp:~maddevelopers/mg5amcnlo/3.0.2 |
Merge into: | lp:mg5amcnlo |
Diff against target: |
30647 lines (+11169/-5821) 325 files modified
HELAS/v2xxxx.f (+2/-2) MadSpin/decay.py (+11/-10) MadSpin/interface_madspin.py (+54/-23) MadSpin/src/driver.f (+181/-13) Template/Common/Cards/delphes_card_ATLAS.dat (+1/-2) Template/Common/Cards/delphes_card_CMS.dat (+1/-1) Template/Common/Cards/delphes_card_default.dat (+1/-1) Template/LO/Cards/run_card.dat (+40/-75) Template/LO/Source/.make_opts (+6/-2) Template/LO/Source/BIAS/ptj_bias/makefile (+1/-5) Template/LO/Source/PDF/PhotonFlux.f (+13/-1) Template/LO/Source/PDF/pdg2pdf.f (+9/-6) Template/LO/Source/PDF/pdg2pdf_lhapdf.f (+1/-0) Template/LO/Source/PDF/pdg2pdf_lhapdf6.f (+11/-6) Template/LO/Source/dsample.f (+24/-4) Template/LO/Source/genps.inc (+5/-0) Template/LO/Source/run.inc (+7/-1) Template/LO/Source/transpole.f (+20/-1) Template/LO/SubProcesses/cuts.f (+1/-0) Template/LO/SubProcesses/dummy_fct.f (+10/-0) Template/LO/SubProcesses/genps.f (+52/-4) Template/LO/SubProcesses/myamp.f (+43/-116) Template/LO/SubProcesses/reweight.f (+49/-10) Template/LO/SubProcesses/setcuts.f (+9/-2) Template/LO/bin/internal/Gridpack/compile (+1/-1) Template/NLO/Cards/FKS_params.dat (+10/-6) Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script (+113/-40) Template/NLO/MCatNLO/shower_template.sh (+5/-2) Template/NLO/Source/PDF/pdg2pdf.f (+8/-5) Template/NLO/Source/PDF/pdg2pdf_lhapdf.f (+8/-5) Template/NLO/Source/PDF/pdg2pdf_lhapdf6.f (+8/-5) Template/NLO/Source/kin_functions.f (+1/-1) Template/NLO/Source/makefile (+1/-0) Template/NLO/Source/ranmar.f (+0/-15) Template/NLO/SubProcesses/BinothLHA.f (+16/-5) Template/NLO/SubProcesses/BinothLHA_OLP.f (+1/-1) Template/NLO/SubProcesses/FKSParams.f90 (+248/-0) Template/NLO/SubProcesses/MC_integer.f (+3/-2) Template/NLO/SubProcesses/check_poles.f (+3/-16) Template/NLO/SubProcesses/cuts.f (+1/-1) Template/NLO/SubProcesses/driver_mintFO.f (+65/-122) Template/NLO/SubProcesses/driver_mintMC.f (+80/-222) Template/NLO/SubProcesses/fks_singular.f (+221/-179) Template/NLO/SubProcesses/genps_fks.f (+17/-24) Template/NLO/SubProcesses/handling_lhe_events.f (+4/-2) Template/NLO/SubProcesses/madfks_plot.f (+3/-12) Template/NLO/SubProcesses/makefile_fks_dir (+26/-25) Template/NLO/SubProcesses/mint_module.f90 (+1705/-0) Template/NLO/SubProcesses/polfit.f (+720/-0) Template/NLO/SubProcesses/setcuts.f (+2/-3) Template/NLO/SubProcesses/symmetry_fks_v3.f (+4/-34) Template/NLO/SubProcesses/test_soft_col_limits.f (+4/-20) Template/NLO/SubProcesses/write_event.f (+2/-4) Template/loop_material/StandAlone/SubProcesses/makefile (+2/-2) UpdateNotes.txt (+110/-5) VERSION (+3/-2) aloha/aloha_object.py (+717/-2) aloha/aloha_parsers.py (+10/-3) aloha/aloha_writers.py (+38/-5) aloha/create_aloha.py (+53/-9) bin/mg5_aMC (+11/-4) madgraph/__init__.py (+7/-0) madgraph/core/base_objects.py (+174/-25) madgraph/core/diagram_generation.py (+24/-21) madgraph/core/drawing.py (+18/-2) madgraph/core/helas_objects.py (+227/-52) madgraph/fks/fks_common.py (+19/-4) madgraph/interface/amcatnlo_run_interface.py (+139/-46) madgraph/interface/common_run_interface.py (+285/-87) madgraph/interface/extended_cmd.py (+46/-24) madgraph/interface/loop_interface.py (+8/-10) madgraph/interface/madevent_interface.py (+113/-105) madgraph/interface/madgraph_interface.py (+261/-61) madgraph/interface/master_interface.py (+19/-9) madgraph/interface/reweight_interface.py (+68/-18) madgraph/iolibs/drawing_eps.py (+17/-3) madgraph/iolibs/export_fks.py (+28/-19) madgraph/iolibs/export_v4.py (+193/-58) madgraph/iolibs/group_subprocs.py (+13/-3) madgraph/iolibs/helas_call_writers.py (+35/-12) madgraph/iolibs/template_files/Makefile_sa_cpp_sp (+1/-1) madgraph/iolibs/template_files/Makefile_sa_cpp_src (+1/-1) madgraph/iolibs/template_files/addmothers.f (+5/-1) madgraph/iolibs/template_files/auto_dsig_v4.inc (+11/-1) madgraph/iolibs/template_files/b_sf_xxx_splitorders_fks.inc (+14/-1) madgraph/iolibs/template_files/madevent_makefile_source (+4/-5) madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc (+1/-0) madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+25/-2) madgraph/iolibs/template_files/matrix_madevent_v4.inc (+22/-4) madgraph/iolibs/template_files/matrix_madweight_group_v4.inc (+1/-0) madgraph/iolibs/template_files/pythia8/pythia8_model_parameters_cc.inc (+47/-45) madgraph/iolibs/template_files/pythia8/pythia8_model_parameters_h.inc (+5/-3) madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc (+11/-1) madgraph/loop/loop_base_objects.py (+5/-1) madgraph/loop/loop_diagram_generation.py (+4/-1) madgraph/loop/loop_exporters.py (+1/-1) madgraph/madevent/gen_ximprove.py (+10/-11) madgraph/madevent/sum_html.py (+14/-1) madgraph/various/banner.py (+468/-166) madgraph/various/diagram_symmetry.py (+7/-2) madgraph/various/histograms.py (+138/-112) madgraph/various/lhe_parser.py (+77/-32) madgraph/various/misc.py (+63/-17) madgraph/various/process_checks.py (+1/-1) madgraph/various/shower_card.py (+38/-31) madgraph/various/systematics.py (+109/-47) models/check_param_card.py (+3/-0) models/import_ufo.py (+94/-34) models/template_files/fortran/lha_read.f (+24/-4) models/template_files/fortran/rw_para.f (+14/-3) models/write_param_card.py (+6/-3) tests/acceptance_tests/test_cmd.py (+7/-7) tests/acceptance_tests/test_cmd_madevent.py (+59/-0) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_gg_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uux_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fks_loonly/%SubProcesses%P0_uxu_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ag_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ddx_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_dxd_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_ga_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_gg_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uux_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksrealew/%SubProcesses%P0_uxu_ttx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%CT_interface.f (+0/-280) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f (+1/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%polynomial.f (+0/-36) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%CT_interface.f (+0/-280) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f (+1/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%polynomial.f (+0/-36) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_002.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_003.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_004.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_005.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_006.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_007.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%b_sf_008.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_tdecay_fksreal/%SubProcesses%P0_t_budx%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%CT_interface.f (+0/-313) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%loop_matrix.f (+1/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%V0_dxu_veep%polynomial.f (+0/-36) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_dxu_veep%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%CT_interface.f (+0/-313) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%loop_matrix.f (+1/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%V0_udx_veep%polynomial.f (+0/-36) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%b_sf_001.f (+15/-2) tests/input_files/IOTestsComparison/IOExportFKSTest/test_wprod_fksew/%SubProcesses%P0_udx_veep%orders.inc (+8/-7) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/auto_dsig.f (+11/-1) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f (+36/-8) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/super_auto_dsig.f (+19/-9) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/auto_dsig.f (+11/-1) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f (+27/-7) tests/input_files/IOTestsComparison/IOHistogramTest/DJR_histograms/CKKWL_djrs_output.gnuplot (+53/-54) tests/input_files/IOTestsComparison/IOHistogramTest/DJR_histograms/MLM_djrs_output.gnuplot (+53/-54) tests/input_files/IOTestsComparison/IOTest_Histogram/gnuplot_histo_output/HistoOut.gnuplot (+53/-54) tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_WGTsq_le_10_QEDAmpAndQEDsq_gt_2.f (+1/-1) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%CT_interface.f (+0/-302) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f (+1/-2) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%polynomial.f (+0/-37) tests/input_files/IOTestsComparison/TestMadWeight/modification_to_cuts/cuts.f (+1/-0) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%input.inc (+2/-8) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%intparam_definition.inc (+25/-56) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%mp_input.inc (+21/-28) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%input.inc (+8/-14) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%intparam_definition.inc (+46/-77) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_input.inc (+23/-30) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%input.inc (+2/-8) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%intparam_definition.inc (+25/-56) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%mp_input.inc (+21/-28) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%input.inc (+8/-14) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%intparam_definition.inc (+46/-77) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_input.inc (+23/-30) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%input.inc (+6/-12) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%intparam_definition.inc (+3/-36) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%mp_input.inc (+19/-26) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%mp_intparam_definition.inc (+3/-44) tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%input.inc (+4/-10) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%intparam_definition.inc (+33/-64) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_input.inc (+19/-27) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%couplings.f (+4/-0) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%input.inc (+4/-10) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%intparam_definition.inc (+33/-64) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_input.inc (+19/-27) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_intparam_definition.inc (+7/-48) tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%rw_para.f (+14/-3) tests/parallel_tests/compare_with_old_mg5_version.py (+77/-3) tests/parallel_tests/madevent_comparator.py (+24/-11) tests/parallel_tests/test_MG5aMC_distribution.py (+1/-1) tests/parallel_tests/test_ML5EW.py (+23/-10) tests/parallel_tests/test_aloha.py (+20/-2) tests/time_db (+268/-261) tests/unit_tests/core/test_base_objects.py (+56/-14) tests/unit_tests/core/test_helas_objects.py (+125/-0) tests/unit_tests/interface/test_cmd.py (+43/-3) tests/unit_tests/iolibs/test_export_cpp.py (+50/-46) tests/unit_tests/iolibs/test_export_v4.py (+7/-0) tests/unit_tests/iolibs/test_helas_call_writers.py (+2/-2) tests/unit_tests/iolibs/test_ufo_parsers.py (+0/-1) tests/unit_tests/madspin/test_madspin.py (+2/-2) tests/unit_tests/various/test_banner.py (+42/-0) tests/unit_tests/various/test_shower_card.py (+16/-1) tests/unit_tests/various/test_write_param.py (+28/-28) |
To merge this branch: | bzr merge lp:~maddevelopers/mg5amcnlo/3.0.2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Olivier Mattelaer | Approve | ||
Review via email: mp+381317@code.launchpad.net |
Commit message
Description of the change
This is mainly to start the discussion about releasing 3.0.2.
Are we waiting for something specific to release this?
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
marco zaro (marco-zaro) wrote : | # |
Hi Olivier,
I see that
tests/
exists, I don’t remember why and when it has been moved from/to acceptance_tests.
Ciao,
Marco
> On 27 Mar 2020, at 21:54, Olivier Mattelaer <email address hidden> wrote:
>
> First question,
>
> Is it normal that the file tests/acceptanc
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Ok, so should we release this?
Olivier
marco zaro (marco-zaro) wrote : | # |
Hi,
I am fine with releasing 3.0.2.
One detail: the new polyfit functionality included in the virt_tricks most of the time significantly increases the disk/ram usage, without having a major impact on run time. I tried it for a couple of processes with eternal photons (in the branch for the alpha0 scheme) and in all cases I had to disable this function via FKS_params.dat, specially when many jobs were submitted on the cluster.
So, I’d suggest either to clearly spell that there may be downsides on the memory/disk consumption, or to have the functionality disabled by default (sorry Rik for all your work…).
What does everybody think here?
Cheers,
marco
> On 6 Apr 2020, at 16:54, Olivier Mattelaer <email address hidden> wrote:
>
> Ok, so should we release this?
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
- 980. By olivier-mattelaer
-
fixing tests
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi,
I do not know too much about that feature but presented like that this seems indeed that deactivating this by default make sense.
Otherwise, we have issue with the loop in this version:
=======
FAIL: test_short_
-------
Traceback (most recent call last):
File "/Users/
chosen_
File "/Users/
my_
File "/Users/
test_
AssertionError: 'Failed for processes:u u~ > d d~ 4.8307135319e+00 -3.4038975349e+
=======
FAIL: test_short_
-------
Traceback (most recent call last):
File "/Users/
chosen_
File "/Users/
my_
File "/Users/
test_
AssertionError: 'Failed for processes:u u~ > d d~ 6.7303698120e+00 -1.5042412548e+
-------
Ran 2 tests in 1231.280s
FAILED (failures=2)
test_short_
only the finite part is not in agreement...
Is this expected? ...
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
On a related note,
The python3 version of 3.0.2 seems to be ready:
lp:~maddevelopers/mg5amcnlo/3.0.2.py3
It obviously has the same issue with the MadLoop issue.
But otherwise it seems working as expected. So we can test it as well and move to a 4 release scheme in parallel.
I do not get any negative feedback on the python3 release (for the 2.x version) so I hope that we can quickly move --in a month or two-- to supporting only those python3 version (and simplify our lives). Remember that those python3 version still supports python2.7.
Cheers,
Olivier
Richard Ruiz (rruiz) wrote : | # |
Hi Olivier,
Any feedback from users on how mg5mc@py3 is functioning? If not, I can ask
a few more people to stress-test.
best
On Thu, Apr 9, 2020 at 10:55 AM Olivier Mattelaer <
<email address hidden>> wrote:
> On a related note,
> The python3 version of 3.0.2 seems to be ready:
> lp:~maddevelopers/mg5amcnlo/3.0.2.py3
>
> It obviously has the same issue with the MadLoop issue.
> But otherwise it seems working as expected. So we can test it as well and
> move to a 4 release scheme in parallel.
>
> I do not get any negative feedback on the python3 release (for the 2.x
> version) so I hope that we can quickly move --in a month or two-- to
> supporting only those python3 version (and simplify our lives). Remember
> that those python3 version still supports python2.7.
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
--
-=-=-=-
Richard Ruiz, PhD
Fonds Speciaux de Recherche (FSR) Fellow,
Centre for Cosmology, Particle Physics and Phenomenology (CP3),
Université catholique de Louvain
Escargot: 2, Chemin du Cyclotron - Box L7.01.05,
B-1348 Louvain-la-Neuve, Belgium, Earth
Web: https:/
-=-=-=-
marco zaro (marco-zaro) wrote : | # |
Hi all,
any update on this merge?
Cheers,
Marco
On Thu, Apr 9, 2020 at 1:18 PM Richard Ruiz <email address hidden>
wrote:
> Hi Olivier,
>
> Any feedback from users on how mg5mc@py3 is functioning? If not, I can ask
> a few more people to stress-test.
>
> best
>
>
> On Thu, Apr 9, 2020 at 10:55 AM Olivier Mattelaer <
> <email address hidden>> wrote:
>
> > On a related note,
> > The python3 version of 3.0.2 seems to be ready:
> > lp:~maddevelopers/mg5amcnlo/3.0.2.py3
> >
> > It obviously has the same issue with the MadLoop issue.
> > But otherwise it seems working as expected. So we can test it as well and
> > move to a 4 release scheme in parallel.
> >
> > I do not get any negative feedback on the python3 release (for the 2.x
> > version) so I hope that we can quickly move --in a month or two-- to
> > supporting only those python3 version (and simplify our lives). Remember
> > that those python3 version still supports python2.7.
> >
> > Cheers,
> >
> > Olivier
> > --
> > https:/
> > Your team MadDevelopers is subscribed to branch
> > lp:~maddevelopers/mg5amcnlo/3.0.2.
> >
>
>
> --
> -=-=-=-
> Richard Ruiz, PhD
> Fonds Speciaux de Recherche (FSR) Fellow,
> Centre for Cosmology, Particle Physics and Phenomenology (CP3),
> Université catholique de Louvain
> Escargot: 2, Chemin du Cyclotron - Box L7.01.05,
> B-1348 Louvain-la-Neuve, Belgium, Earth
> Web: https:/
> -=-=-=-
>
> https:/
> Your team MadTeam is requested to review the proposed merge of
> lp:~maddevelopers/mg5amcnlo/3.0.2 into lp:mg5amcnlo/3.0.
>
- 981. By olivier-mattelaer
-
merge up to 2.7.2
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
I have a meeting with Valentin to discuss this merging this afternoon.
Otherwise I have tracked the issue to revision 974
which performs the merge with this branch:
lp:~maddevelopers/mg5amcnlo/3.0.2_loopparams
- 982. By olivier-mattelaer
-
fix issue with the non update of loop parameter
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi,
I have pushed a fix to the issue (thanks Valentin for the discussion on this).
Please take a look if you agree with such modification.
I will move forward on releasing this version now.
Cheers,
Olivier
marco zaro (marco-zaro) wrote : | # |
Hi Olivier,
thanks for the fix.
how about the polyfit business?
Cheers,
Marco
On Wed, Apr 8, 2020 at 10:29 AM Marco Zaro <email address hidden> wrote:
> Hi,
> I am fine with releasing 3.0.2.
> One detail: the new polyfit functionality included in the virt_tricks most
> of the time significantly increases the disk/ram usage, without having a
> major impact on run time. I tried it for a couple of processes with eternal
> photons (in the branch for the alpha0 scheme) and in all cases I had to
> disable this function via FKS_params.dat, specially when many jobs were
> submitted on the cluster.
> So, I’d suggest either to clearly spell that there may be downsides on the
> memory/disk consumption, or to have the functionality disabled by default
> (sorry Rik for all your work…).
>
> What does everybody think here?
>
> Cheers,
>
> marco
>
> > On 6 Apr 2020, at 16:54, Olivier Mattelaer <email address hidden>
> wrote:
> >
> > Ok, so should we release this?
> >
> > Olivier
> > --
> > https:/
> > Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
>
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Should we disable it by default?
Cheers,
Olivier
> On 11 May 2020, at 19:06, marco zaro <email address hidden> wrote:
>
> Hi Olivier,
> thanks for the fix.
> how about the polyfit business?
> Cheers,
>
> Marco
>
>
> On Wed, Apr 8, 2020 at 10:29 AM Marco Zaro <email address hidden> wrote:
>
>> Hi,
>> I am fine with releasing 3.0.2.
>> One detail: the new polyfit functionality included in the virt_tricks most
>> of the time significantly increases the disk/ram usage, without having a
>> major impact on run time. I tried it for a couple of processes with eternal
>> photons (in the branch for the alpha0 scheme) and in all cases I had to
>> disable this function via FKS_params.dat, specially when many jobs were
>> submitted on the cluster.
>> So, I’d suggest either to clearly spell that there may be downsides on the
>> memory/disk consumption, or to have the functionality disabled by default
>> (sorry Rik for all your work…).
>>
>> What does everybody think here?
>>
>> Cheers,
>>
>> marco
>>
>>> On 6 Apr 2020, at 16:54, Olivier Mattelaer <email address hidden>
>> wrote:
>>>
>>> Ok, so should we release this?
>>>
>>> Olivier
>>> --
>>> https:/
>>> Your team MadDevelopers is subscribed to branch
>> lp:~maddevelopers/mg5amcnlo/3.0.2.
>>
>>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
marco zaro (marco-zaro) wrote : | # |
This is what I would suggest, ie to set
158 #UsePolyVirtual
159 .False.
inside Template/
cheers,
Marco Zaro
On Mon, May 11, 2020 at 8:04 PM Olivier Mattelaer <
<email address hidden>> wrote:
> Should we disable it by default?
>
> Cheers,
>
> Olivier
>
> > On 11 May 2020, at 19:06, marco zaro <email address hidden> wrote:
> >
> > Hi Olivier,
> > thanks for the fix.
> > how about the polyfit business?
> > Cheers,
> >
> > Marco
> >
> >
> > On Wed, Apr 8, 2020 at 10:29 AM Marco Zaro <email address hidden> wrote:
> >
> >> Hi,
> >> I am fine with releasing 3.0.2.
> >> One detail: the new polyfit functionality included in the virt_tricks
> most
> >> of the time significantly increases the disk/ram usage, without having a
> >> major impact on run time. I tried it for a couple of processes with
> eternal
> >> photons (in the branch for the alpha0 scheme) and in all cases I had to
> >> disable this function via FKS_params.dat, specially when many jobs were
> >> submitted on the cluster.
> >> So, I’d suggest either to clearly spell that there may be downsides on
> the
> >> memory/disk consumption, or to have the functionality disabled by
> default
> >> (sorry Rik for all your work…).
> >>
> >> What does everybody think here?
> >>
> >> Cheers,
> >>
> >> marco
> >>
> >>> On 6 Apr 2020, at 16:54, Olivier Mattelaer <
> <email address hidden>>
> >> wrote:
> >>>
> >>> Ok, so should we release this?
> >>>
> >>> Olivier
> >>> --
> >>>
> https:/
> >>> Your team MadDevelopers is subscribed to branch
> >> lp:~maddevelopers/mg5amcnlo/3.0.2.
> >>
> >>
> >
> > --
> > https:/
> > Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Rikkert can you comment on that?
Olivier
Rikkert Frederix (frederix) wrote : | # |
Hi,
It's kind of a pity that this PolyVirtual doesn't work for you. Let's keep it turned off by default as Marco suggests -- at least for this release.
Best,
Rikkert
marco zaro (marco-zaro) wrote : | # |
Hi Rikkert,
thanks for your work on this. As I told you, I had crashes on the louvain cluster, due to the large memory and space usage. I guess that if you have few jobs that can be run on multicore, then you do get improvements, but i think that on a cluster it can create problems…
cheers,
marco
> On 13 May 2020, at 17:42, Rikkert Frederix <email address hidden> wrote:
>
> Hi,
>
> It's kind of a pity that this PolyVirtual doesn't work for you. Let's keep it turned off by default as Marco suggests -- at least for this release.
>
> Best,
> Rikkert
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
Valentin Hirschi (valentin-hirschi) wrote : | # |
Very naively I would expect the source of large memory consumption as to be
stemming from either a memory leak of PolyFit unnecessarily keeping all
training sample fed in memory.
Rik, do you know which one it is? If the latter, isn't there any easy way
of truncating the internal "history" of PolyFit so as to effectively cap
its memory footprint?
On Wed, May 13, 2020 at 5:45 PM marco zaro <email address hidden> wrote:
> Hi Rikkert,
> thanks for your work on this. As I told you, I had crashes on the louvain
> cluster, due to the large memory and space usage. I guess that if you have
> few jobs that can be run on multicore, then you do get improvements, but i
> think that on a cluster it can create problems…
>
> cheers,
>
> marco
>
>
> > On 13 May 2020, at 17:42, Rikkert Frederix <email address hidden>
> wrote:
> >
> > Hi,
> >
> > It's kind of a pity that this PolyVirtual doesn't work for you. Let's
> keep it turned off by default as Marco suggests -- at least for this
> release.
> >
> > Best,
> > Rikkert
> >
> > --
> > https:/
> > Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
--
Valentin
Rikkert Frederix (frederix) wrote : | # |
Hi Valentin,
PolyVirtual keeps all events (i.e., the random numbers that corresponds to the generated momenta) for which the virtual have been computed in memory to get the best possible polynomial fit for the virtuals. It also writes them all to disk so that they can be re-used in the next integration step.
I had hoped that in practice there are few enough PS points for which the virtuals need to be computed (i.e., well below several million) that this would not become an issue for most processes (in particular since the virt-tricks should work slightly better with the PolyVirtuals than without). Apparently this is not good enough when running on a cluster requiring high accuracy.
Best,
Rikkert
Valentin Hirschi (valentin-hirschi) wrote : | # |
Hi Rik,
Ok and I guess truncating the history to keep only a fixed number of past
events (may not impact the quality of the fit so much if this number is
large enough) would be hard to implement?
On Wed, May 13, 2020 at 6:25 PM Rikkert Frederix <email address hidden>
wrote:
> Hi Valentin,
>
> PolyVirtual keeps all events (i.e., the random numbers that corresponds to
> the generated momenta) for which the virtual have been computed in memory
> to get the best possible polynomial fit for the virtuals. It also writes
> them all to disk so that they can be re-used in the next integration step.
>
> I had hoped that in practice there are few enough PS points for which the
> virtuals need to be computed (i.e., well below several million) that this
> would not become an issue for most processes (in particular since the
> virt-tricks should work slightly better with the PolyVirtuals than
> without). Apparently this is not good enough when running on a cluster
> requiring high accuracy.
>
> Best,
> Rikkert
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
--
Valentin
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
This looks like a very painfull version to release:
Looks like we have a new (MadLoop?) issue:
The (parralel) test crashing is the following one:
ERROR: test_short_
tests the jet-veto cross section at NNLL+NLO
The associated log file points an issue with the poles:
In this case ML returns 0 which likely points to another issue related to not updating the virtual coupling correctly.
---- POLES CANCELLED ----
COEFFICIENT DOUBLE POLE:
MadFKS: -0.437643528470
COEFFICIENT SINGLE POLE:
MadFKS: 1.1667772655032984 OLP: 0.0000000000000000
FIX VETOXSEC in FKS_EW
Time in seconds: 1
Eleni Vryonidou (evryonidou) wrote : | # |
Hi Olivier, we noticed this (or a very similar) problem with some EFT tests in 3.0.x. Gauthier reported this by email to Valentin. I can forward the emails to you.
The problem occurred with COLLIER, we had this kind of incoherent output produced:
---- POLES CANCELLED ----
COEFFICIENT DOUBLE POLE:
MadFKS: -8.897391844113
COEFFICIENT SINGLE POLE:
MadFKS: -4.757409985973
Rikkert Frederix (frederix) wrote : | # |
Hi Olivier,
The NNLL+NLO jet veto cross sections are not supposed to work yet in the 3.0.2 branch. Hence, it shouldn't be a surprise that this test fails.
However, the factor that the coefficients of the poles are not correct is strange and shouldn't happen.
Best,
Rikkert
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Indeed with ninja we have the correct pole:
---- POLES CANCELLED ----
COEFFICIENT DOUBLE POLE:
MadFKS: -0.437643528470
COEFFICIENT SINGLE POLE:
MadFKS: 1.1667772655032984 OLP: 1.1667772655048829
Valentin what is your advise on this?
Should we veto the use of Collier for the moment?
Cheers,
Olivier
marco zaro (marco-zaro) wrote : | # |
Can we set ninja as default (as it should be) and use collier only for
recovery?
I would not disable it completely...
cheers,
Marco Zaro
On Wed, May 20, 2020 at 5:01 PM Olivier Mattelaer <
<email address hidden>> wrote:
> Indeed with ninja we have the correct pole:
> ---- POLES CANCELLED ----
> COEFFICIENT DOUBLE POLE:
> MadFKS: -0.437643528470
> -0.437643528471
> COEFFICIENT SINGLE POLE:
> MadFKS: 1.1667772655032984 OLP:
> 1.1667772655048829
>
> Valentin what is your advise on this?
> Should we veto the use of Collier for the moment?
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
I face the issue because ninja crashed at the installation actually.
Then collier became the default...
1) if we allow collier they are no guarantee that this is not the default.
2) Having a backup returning wrong value is not a good idea either...
I would personally veto collier here and check in 2.7.3 if we need to veto collier as well or not.
This as long as Valentin does not clarify the situation obviously. (and I do not want to wait for a fix to be ready to release this version)
Cheers,
Olivier
> On 20 May 2020, at 18:00, marco zaro <email address hidden> wrote:
>
> Can we set ninja as default (as it should be) and use collier only for
> recovery?
> I would not disable it completely...
> cheers,
>
> Marco Zaro
>
>
> On Wed, May 20, 2020 at 5:01 PM Olivier Mattelaer <
> <email address hidden>> wrote:
>
>> Indeed with ninja we have the correct pole:
>> ---- POLES CANCELLED ----
>> COEFFICIENT DOUBLE POLE:
>> MadFKS: -0.437643528470
>> -0.437643528471
>> COEFFICIENT SINGLE POLE:
>> MadFKS: 1.1667772655032984 OLP:
>> 1.1667772655048829
>>
>> Valentin what is your advise on this?
>> Should we veto the use of Collier for the moment?
>>
>> Cheers,
>>
>> Olivier
>> --
>> https:/
>> Your team MadDevelopers is subscribed to branch
>> lp:~maddevelopers/mg5amcnlo/3.0.2.
>>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
Valentin Hirschi (valentin-hirschi) wrote : | # |
I think Ninja crashed because Tiziano moved the installation tarball as
part of his migration from bitbucket to github.
We must keep COLLIER as it is crucial for loop-induced efficiency.
I could not reproduce seg-faults in standalone (and neither did Richard I
believe).
So it is either due to an interplay with the MadFKS code or because of some
particular setting of MadLoop when run within MadFKS as opposed to run in
standalone.
On Wed, May 20, 2020 at 6:12 PM Olivier Mattelaer <
<email address hidden>> wrote:
> I face the issue because ninja crashed at the installation actually.
> Then collier became the default...
>
> 1) if we allow collier they are no guarantee that this is not the default.
> 2) Having a backup returning wrong value is not a good idea either...
>
>
> I would personally veto collier here and check in 2.7.3 if we need to veto
> collier as well or not.
> This as long as Valentin does not clarify the situation obviously. (and I
> do not want to wait for a fix to be ready to release this version)
>
> Cheers,
>
> Olivier
>
>
> > On 20 May 2020, at 18:00, marco zaro <email address hidden> wrote:
> >
> > Can we set ninja as default (as it should be) and use collier only for
> > recovery?
> > I would not disable it completely...
> > cheers,
> >
> > Marco Zaro
> >
> >
> > On Wed, May 20, 2020 at 5:01 PM Olivier Mattelaer <
> > <email address hidden>> wrote:
> >
> >> Indeed with ninja we have the correct pole:
> >> ---- POLES CANCELLED ----
> >> COEFFICIENT DOUBLE POLE:
> >> MadFKS: -0.437643528470
> >> -0.437643528471
> >> COEFFICIENT SINGLE POLE:
> >> MadFKS: 1.1667772655032984 OLP:
> >> 1.1667772655048829
> >>
> >> Valentin what is your advise on this?
> >> Should we veto the use of Collier for the moment?
> >>
> >> Cheers,
> >>
> >> Olivier
> >> --
> >> https:/
> >> Your team MadDevelopers is subscribed to branch
> >> lp:~maddevelopers/mg5amcnlo/3.0.2.
> >>
> >
> > --
> > https:/
> > Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
--
Valentin
Stefano Frixione (stefano-frixione) wrote : | # |
Sorry if I didn't follow, but if ninja crashes, we must fix ninja,
not promote collier to being the default.
I think we must not release till ninja is fixed.
Cheers, Stefano.
On Wed, 20 May 2020, Olivier Mattelaer wrote:
> I face the issue because ninja crashed at the installation actually.
> Then collier became the default...
>
> 1) if we allow collier they are no guarantee that this is not the default.
> 2) Having a backup returning wrong value is not a good idea either...
>
>
> I would personally veto collier here and check in 2.7.3 if we need to veto collier as well or not.
> This as long as Valentin does not clarify the situation obviously. (and I do not want to wait for a fix to be ready to release this version)
>
> Cheers,
>
> Olivier
>
>
>> On 20 May 2020, at 18:00, marco zaro <email address hidden> wrote:
>>
>> Can we set ninja as default (as it should be) and use collier only for
>> recovery?
>> I would not disable it completely...
>> cheers,
>>
>> Marco Zaro
>>
>>
>> On Wed, May 20, 2020 at 5:01 PM Olivier Mattelaer <
>> <email address hidden>> wrote:
>>
>>> Indeed with ninja we have the correct pole:
>>> ---- POLES CANCELLED ----
>>> COEFFICIENT DOUBLE POLE:
>>> MadFKS: -0.437643528470
>>> -0.437643528471
>>> COEFFICIENT SINGLE POLE:
>>> MadFKS: 1.1667772655032984 OLP:
>>> 1.1667772655048829
>>>
>>> Valentin what is your advise on this?
>>> Should we veto the use of Collier for the moment?
>>>
>>> Cheers,
>>>
>>> Olivier
>>> --
>>> https:/
>>> Your team MadDevelopers is subscribed to branch
>>> lp:~maddevelopers/mg5amcnlo/3.0.2.
>>>
>>
>> --
>> https:/
>> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
>
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi,
Let's try to avoid any confusion here:
1) we do not have any issue with ninja.
- we can still install it
- when install it works
2) For some unknow reason, my version of 3.0.2 version was configured as if ninja was not installed in my machine, in that case collier is the next OLP provider and is used as default.
3) We have a bug related to collier that does not return the correct pole (I'm therefore worried about the other output like the finite part of the loop). This bug has been spotted by Eleni and Gauthier and independently by me (thanks to point 2 above)
>We must keep COLLIER as it is crucial for loop-induced efficiency.
I could not reproduce seg-faults in standalone (and neither did Richard I
believe).
Being fast is useless if we are wrong. Like this, this sounds like a bad bug.
If you are sure that this is a MadFKS related bug, then we can forbid the usage of COLLIER only in that case. But it would be nice that you take a real look at this. I prefer to be slow and correct than fast and wrong.
Cheers,
Olivier
Eleni Vryonidou (evryonidou) wrote : | # |
Hi Olivier,
when I was looking at this a few weeks ago I realised that in BinothLHA.f there is this line:
if ((dabs(
cpol = .not.((
$ (dabs(avgPoleRe
$ tolerance*
and
cpol = .not.((
$ .or.(mod(
I believe Collier corresponds to .eq.7 and this is why the test seems to pass, even if the numbers are not agreeing. E.g. I see things like:
---- POLES CANCELLED ----
COEFFICIENT DOUBLE POLE:
MadFKS: -5.111872482238
COEFFICIENT SINGLE POLE:
MadFKS: -5.479608369361
Maybe someone can confirm why that line was added there. It’s not the source of the zero numbers, but it’s weird that this was set up like that to allow the test to pass.
Cheers,
Eleni
> On 20 May 2020, at 20:38, Olivier Mattelaer <email address hidden> wrote:
>
> Hi,
>
> Let's try to avoid any confusion here:
> 1) we do not have any issue with ninja.
> - we can still install it
> - when install it works
>
> 2) For some unknow reason, my version of 3.0.2 version was configured as if ninja was not installed in my machine, in that case collier is the next OLP provider and is used as default.
>
> 3) We have a bug related to collier that does not return the correct pole (I'm therefore worried about the other output like the finite part of the loop). This bug has been spotted by Eleni and Gauthier and independently by me (thanks to point 2 above)
>
>
>> We must keep COLLIER as it is crucial for loop-induced efficiency.
> I could not reproduce seg-faults in standalone (and neither did Richard I
> believe).
>
> Being fast is useless if we are wrong. Like this, this sounds like a bad bug.
> If you are sure that this is a MadFKS related bug, then we can forbid the usage of COLLIER only in that case. But it would be nice that you take a real look at this. I prefer to be slow and correct than fast and wrong.
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Those lines were introduced by rikkert here:
https:/
But if you check the previous version [840] you face the exact same issue.
Actually I reproduce this issue up to version 835.
Version before that are crashing in another way preventing me to get more insight on this issue.
This means that both 3.0.0 and 3.0.1 have the exact same issue.
Cheers,
Olivier
Rikkert Frederix (frederix) wrote : | # |
Hi guys,
These lines were NOT introduced by me. If you go back in through the history you find them all the way back to some merge with a 'COLLIER' branch, (which was merged into 2.5.1 (hence, this is also part of public 2.7.X code) and that branch was later merged to the flattened_
The COLLIER branch is a branch that Valentin worked on some three years ago:
https:/
They were introduced in revision 78.355.19. I couldn't find a commit message, so I don't know why this was introduced here. Valentin, do you remember?
Best,
Rikkert
Stefano Frixione (stefano-frixione) wrote : | # |
Hi Olivier,
thanks for the clarification.
> If you are sure that this is a MadFKS related bug, then we can forbid
> the usage of COLLIER only in that case. But it would be nice that you
A bug is a bug, but I find it hard to believe it's in MadFKS, given
that in this case the only information returned by the latter is the
residues of the poles -- these are of course independent of the OLP,
so one might verify if there is a problem in that respect by running
the same thing on a machine where ninja works.
Cheers, Stefano.
> take a real look at this. I prefer to be slow and correct than fast and
> wrong.
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
>
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi,
Sorry indeed I miss the fact that Rik change the line in that version but only in a cosmetic way.
Consequently to this I have force the printout of the poles in 2.7.3 and found the same printout:
---- POLES CANCELLED ----
POLES ANCELLATION, DIFFERENCE < 1.0000000000000
COEFFICIENT DOUBLE POLE:
MadFKS: -0.480496563395
COEFFICIENT SINGLE POLE:
MadFKS: 1.2727761694678807 OLP: 0.0000000000000000
FINITE:
OLP: -0.695985715354
MOMENTA (Exyzm):
1 39.800372893656203 0.0000000000000000 0.0000000000000000 39.800372893656203 \
0.00000000000
2 39.800372893656203 -0.0000000000000000 -0.0000000000000000 -39.800372893656203 \
0.00000000000
3 39.800372893656203 -18.912294290529488 -32.109690658036719 -13.977216210235818 \
0.00000000000
4 39.800372893656203 18.912294290529488 32.109690658036719 13.977216210235818 \
0.00000000000
Now running in standalone mode on the same PS point we have (with collier):
|| Total(*) Born contribution (GeV^0):
| Born = 6.2823500530737
|| Total(*) virtual contribution normalized with born*alpha_
| Finite = 1.3071069893544
| Single pole = -4.724799186569
| Double pole = -2.666666666666
| (*) The results above sum all starred contributions below
Since Valentin does not want to take a look at this and that I'm completely loss on this I have:
1) revert the bypass on the check of the poles for COLLIER
2) set the default for madloop to ninja then cuttools (collier is only on request)
I have done that both in 2.7.3 and 3.0.2
As soon as Valentin found the time to fix this, we can revert this obviously but I have spent too much time on this and want ( and need to focus on something else)
So with this, we are ready to release 3.0.2
Cheers,
Olivier
- 985. By olivier-mattelaer
-
deactivating Collier as long as Valentin did not take a look
Valentin Hirschi (valentin-hirschi) wrote : | # |
Sorry for my slow reaction, I will have a serious look at this.
I'll check with Olivier what is the exact setup to reproduce the problem.
The fact that the problem cannot be reproduced in standalone (unless I
misunderstood the situation, in which case apologies) made me kind of put
it aside in so far as it did not seem like a genuine MadLoop problem but
more its use within MadFKS.
Hopefully I'll be able to easily spot the offending parameter by simply
comparing MadLoop's run for one particular point within MadFKS and in
standalone (which is what I was hoping would straight-forwardly reveal the
issue).
But it seems that the problem is more involved than I thought so I'll
investigate and let you knw.
On Thu, May 21, 2020 at 3:57 PM Olivier Mattelaer <
<email address hidden>> wrote:
> Review: Approve
>
> Hi,
>
> Sorry indeed I miss the fact that Rik change the line in that version but
> only in a cosmetic way.
> Consequently to this I have force the printout of the poles in 2.7.3 and
> found the same printout:
>
> ---- POLES CANCELLED ----
> POLES ANCELLATION, DIFFERENCE < 1.0000000000000
> COEFFICIENT DOUBLE POLE:
> MadFKS: -0.480496563395
> 0.0000000000000000
> COEFFICIENT SINGLE POLE:
> MadFKS: 1.2727761694678807 OLP:
> 0.0000000000000000
> FINITE:
> OLP: -0.695985715354
>
> MOMENTA (Exyzm):
> 1 39.800372893656203 0.0000000000000000
> 0.0000000000000000 39.800372893656203 \
> 0.0000000000000000
> 2 39.800372893656203 -0.0000000000000000
> -0.0000000000000000 -39.800372893656203 \
> 0.0000000000000000
> 3 39.800372893656203 -18.912294290529488
> -32.109690658036719 -13.977216210235818 \
> 0.0000000000000000
> 4 39.800372893656203 18.912294290529488
> 32.109690658036719 13.977216210235818 \
> 0.0000000000000000
>
> Now running in standalone mode on the same PS point we have (with collier):
> || Total(*) Born contribution (GeV^0):
> | Born = 6.2823500530737
> || Total(*) virtual contribution normalized with born*alpha_
> | Finite = 1.3071069893544
> | Single pole = -4.724799186569
> | Double pole = -2.666666666666
> | (*) The results above sum all starred contributions below
>
>
> Since Valentin does not want to take a look at this and that I'm
> completely loss on this I have:
> 1) revert the bypass on the check of the poles for COLLIER
> 2) set the default for madloop to ninja then cuttools (collier is only on
> request)
> I have done that both in 2.7.3 and 3.0.2
> As soon as Valentin found the time to fix this, we can revert this
> obviously but I have spent too much time on this and want ( and need to
> focus on something else)
>
> So with this, we are ready to release 3.0.2
>
> Cheers,
>
> Olivier
>
>
> --
> https:/
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/3.0.2.
>
--
Valentin
Valentin Hirschi (valentin-hirschi) wrote : | # |
So the problem seem to simply be that these few lines in `Binoth_LHA.f`:
CALL COLLIER_
CALL COLLIER_
are called *after* the similar ones in `check_poles.f`:
c Make sure that stability checks are always used by MadLoop, even for
c initialization
CALL FORCE_STABILITY
CALL COLLIER_
CALL COLLIER_
which of course means you'd get zero poles when running with COLLIER only.
The introduction of a common block "flag" of the sort of:
logical IS_DOING_POLE_CHECK
common pole_check/
data IS_DOING_
would allow to solve the problem by using it to make sure that
`Binoth_LHA.f` does not disable pole computations with COLLIER when doing
pole checks.
On Thu, May 21, 2020 at 9:42 PM Valentin Hirschi <email address hidden>
wrote:
> Sorry for my slow reaction, I will have a serious look at this.
> I'll check with Olivier what is the exact setup to reproduce the problem.
> The fact that the problem cannot be reproduced in standalone (unless I
> misunderstood the situation, in which case apologies) made me kind of put
> it aside in so far as it did not seem like a genuine MadLoop problem but
> more its use within MadFKS.
> Hopefully I'll be able to easily spot the offending parameter by simply
> comparing MadLoop's run for one particular point within MadFKS and in
> standalone (which is what I was hoping would straight-forwardly reveal the
> issue).
> But it seems that the problem is more involved than I thought so I'll
> investigate and let you knw.
>
> On Thu, May 21, 2020 at 3:57 PM Olivier Mattelaer <
> <email address hidden>> wrote:
>
> > Review: Approve
> >
> > Hi,
> >
> > Sorry indeed I miss the fact that Rik change the line in that version but
> > only in a cosmetic way.
> > Consequently to this I have force the printout of the poles in 2.7.3 and
> > found the same printout:
> >
> > ---- POLES CANCELLED ----
> > POLES ANCELLATION, DIFFERENCE < 1.0000000000000
> > COEFFICIENT DOUBLE POLE:
> > MadFKS: -0.480496563395
> > 0.0000000000000000
> > COEFFICIENT SINGLE POLE:
> > MadFKS: 1.2727761694678807 OLP:
> > 0.0000000000000000
> > FINITE:
> > OLP: -0.695985715354
> >
> > MOMENTA (Exyzm):
> > 1 39.800372893656203 0.0000000000000000
> > 0.0000000000000000 39.800372893656203 \
> > 0.0000000000000000
> > 2 39.800372893656203 -0.0000000000000000
> > -0.0000000000000000 -39.800372893656203 \
> > 0.0000000000000000
> > 3 39.800372893656203 -18.912294290529488
> > -32.109690658036719 -13.977216210235818 \
> > 0.0000000000000000
> > 4 39.800372893656203 18.912294290529488
> > 32.109690658036719 13.977216210235818 \
> > 0.0000000000000000
> >
> > Now running in standalone mode on the same PS point we have (with
> collier):
> > || Total(*) Born contribution (GeV^0):
> > | Born = 6.2823500530737
> > || Total(*) virtual contrib...
marco zaro (marco-zaro) wrote : | # |
Hi all,
just noticed a possible bug:
inside SubProcesses/
however, it should be ipdg_reco in both cases and not ipdg, right? (that
is, the pdg's of the particles after the recombination with photons...)
If anybody could confirm, I will push the fix.
Best wishes,
Marco Zaro
On Thu, May 21, 2020 at 11:42 PM Valentin Hirschi <
<email address hidden>> wrote:
> So the problem seem to simply be that these few lines in `Binoth_LHA.f`:
>
> CALL COLLIER_
> CALL COLLIER_
>
> are called *after* the similar ones in `check_poles.f`:
>
> c Make sure that stability checks are always used by MadLoop, even for
> c initialization
> CALL FORCE_STABILITY
> CALL COLLIER_
> CALL COLLIER_
>
> which of course means you'd get zero poles when running with COLLIER only.
>
> The introduction of a common block "flag" of the sort of:
>
> logical IS_DOING_POLE_CHECK
> common pole_check/
> data IS_DOING_
>
> would allow to solve the problem by using it to make sure that
> `Binoth_LHA.f` does not disable pole computations with COLLIER when doing
> pole checks.
>
> On Thu, May 21, 2020 at 9:42 PM Valentin Hirschi <
> <email address hidden>>
> wrote:
>
> > Sorry for my slow reaction, I will have a serious look at this.
> > I'll check with Olivier what is the exact setup to reproduce the problem.
> > The fact that the problem cannot be reproduced in standalone (unless I
> > misunderstood the situation, in which case apologies) made me kind of put
> > it aside in so far as it did not seem like a genuine MadLoop problem but
> > more its use within MadFKS.
> > Hopefully I'll be able to easily spot the offending parameter by simply
> > comparing MadLoop's run for one particular point within MadFKS and in
> > standalone (which is what I was hoping would straight-forwardly reveal
> the
> > issue).
> > But it seems that the problem is more involved than I thought so I'll
> > investigate and let you knw.
> >
> > On Thu, May 21, 2020 at 3:57 PM Olivier Mattelaer <
> > <email address hidden>> wrote:
> >
> > > Review: Approve
> > >
> > > Hi,
> > >
> > > Sorry indeed I miss the fact that Rik change the line in that version
> but
> > > only in a cosmetic way.
> > > Consequently to this I have force the printout of the poles in 2.7.3
> and
> > > found the same printout:
> > >
> > > ---- POLES CANCELLED ----
> > > POLES ANCELLATION, DIFFERENCE < 1.0000000000000
> > > COEFFICIENT DOUBLE POLE:
> > > MadFKS: -0.480496563395
> > > 0.0000000000000000
> > > COEFFICIENT SINGLE POLE:
> > > MadFKS: 1.2727761694678807 OLP:
> > > 0.0000000000000000
> > > FINITE:
> > > OLP: -0.695985715354
> > >
> > > MOMENTA (Exyzm):
> > > 1 39.800372893656203 0.0000000000000000
> > > 0.0000000000000000 39.800372893656203 \
> > > 0.0000000000000000
> > > 2 39.800372893656203 -0.0000000000000000
>...
- 986. By olivier-mattelaer
-
fixing issuue with the pole check with COLLIER
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi Valentin,
Thanks I have pushed such changes, a variable was actually already existing so I used that one.
@Marco, by reading the code, I would agree with you that this is a bug.
Cheers,
Olivier
- 987. By olivier-mattelaer
-
fix cuts.f --issue found by marco--
marco zaro (marco-zaro) wrote : | # |
Thanks for the fix.
Cheers,
Marco
> On 23 May 2020, at 21:27, Olivier Mattelaer <email address hidden> wrote:
>
> Hi Valentin,
>
> Thanks I have pushed such changes, a variable was actually already existing so I used that one.
>
> @Marco, by reading the code, I would agree with you that this is a bug.
>
> Cheers,
>
> Olivier
> --
> https:/
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/3.0.2.
Preview Diff
1 | === modified file 'HELAS/v2xxxx.f' | |||
2 | --- HELAS/v2xxxx.f 2010-10-30 03:26:37 +0000 | |||
3 | +++ HELAS/v2xxxx.f 2020-05-23 19:29:41 +0000 | |||
4 | @@ -30,11 +30,11 @@ | |||
5 | 30 | vc(2) = p(1)/p(0) | 30 | vc(2) = p(1)/p(0) |
6 | 31 | vc(3) = p(2)/p(0) | 31 | vc(3) = p(2)/p(0) |
7 | 32 | vc(4) = p(3)/p(0) | 32 | vc(4) = p(3)/p(0) |
9 | 33 | else | 33 | else |
10 | 34 | vc(1) = p(0)/vmass | 34 | vc(1) = p(0)/vmass |
11 | 35 | vc(2) = p(1)/vmass | 35 | vc(2) = p(1)/vmass |
12 | 36 | vc(3) = p(2)/vmass | 36 | vc(3) = p(2)/vmass |
13 | 37 | vc(4) = p(3)/vmass | 37 | vc(4) = p(3)/vmass |
15 | 38 | endif | 38 | endif |
16 | 39 | return | 39 | return |
17 | 40 | end | 40 | end |
18 | 41 | 41 | ||
19 | === modified file 'MadSpin/decay.py' | |||
20 | --- MadSpin/decay.py 2018-09-21 13:46:51 +0000 | |||
21 | +++ MadSpin/decay.py 2020-05-23 19:29:41 +0000 | |||
22 | @@ -284,12 +284,13 @@ | |||
23 | 284 | line_type = 'none' # support type: init / event / rwgt | 284 | line_type = 'none' # support type: init / event / rwgt |
24 | 285 | self.diese = '' | 285 | self.diese = '' |
25 | 286 | for line in self.inputfile: | 286 | for line in self.inputfile: |
26 | 287 | origline = line | ||
27 | 287 | line = line.lower() | 288 | line = line.lower() |
28 | 288 | if line=="": | 289 | if line=="": |
29 | 289 | continue | 290 | continue |
30 | 290 | # Find special tag in the line | 291 | # Find special tag in the line |
31 | 291 | if line[0]=="#": | 292 | if line[0]=="#": |
33 | 292 | self.diese+=line | 293 | self.diese+=origline |
34 | 293 | continue | 294 | continue |
35 | 294 | if '<event' in line: | 295 | if '<event' in line: |
36 | 295 | #start new_event | 296 | #start new_event |
37 | @@ -319,7 +320,7 @@ | |||
38 | 319 | if line_type == 'none': | 320 | if line_type == 'none': |
39 | 320 | continue | 321 | continue |
40 | 321 | elif line_type == 'other_block': | 322 | elif line_type == 'other_block': |
42 | 322 | self.diese += line | 323 | self.diese += origline |
43 | 323 | # read the line and assign the date accordingly | 324 | # read the line and assign the date accordingly |
44 | 324 | elif line_type == 'init': | 325 | elif line_type == 'init': |
45 | 325 | line_type = 'event' | 326 | line_type = 'event' |
46 | @@ -2244,7 +2245,7 @@ | |||
47 | 2244 | nb_mc_masses=len(indices_for_mc_masses) | 2245 | nb_mc_masses=len(indices_for_mc_masses) |
48 | 2245 | 2246 | ||
49 | 2246 | p, p_str=self.curr_event.give_momenta(event_map) | 2247 | p, p_str=self.curr_event.give_momenta(event_map) |
51 | 2247 | stdin_text=' %s %s %s %s \n' % ('2', self.options['BW_cut'], self.Ecollider, decay_me['max_weight']) | 2248 | stdin_text=' %s %s %s %s %s \n' % ('2', self.options['BW_cut'], self.Ecollider, decay_me['max_weight'], self.options['frame_id']) |
52 | 2248 | stdin_text+=p_str | 2249 | stdin_text+=p_str |
53 | 2249 | # here I also need to specify the Monte Carlo Masses | 2250 | # here I also need to specify the Monte Carlo Masses |
54 | 2250 | stdin_text+=" %s \n" % nb_mc_masses | 2251 | stdin_text+=" %s \n" % nb_mc_masses |
55 | @@ -2372,7 +2373,7 @@ | |||
56 | 2372 | #no decays for this production mode, run in passthrough mode, only adding the helicities to the events | 2373 | #no decays for this production mode, run in passthrough mode, only adding the helicities to the events |
57 | 2373 | nb_mc_masses=0 | 2374 | nb_mc_masses=0 |
58 | 2374 | p, p_str=self.curr_event.give_momenta(event_map) | 2375 | p, p_str=self.curr_event.give_momenta(event_map) |
60 | 2375 | stdin_text=' %s %s %s %s \n' % ('2', self.options['BW_cut'], self.Ecollider, 1.0) | 2376 | stdin_text=' %s %s %s %s \n' % ('2', self.options['BW_cut'], self.Ecollider, 1.0, self.options['frame_id']) |
61 | 2376 | stdin_text+=p_str | 2377 | stdin_text+=p_str |
62 | 2377 | # here I also need to specify the Monte Carlo Masses | 2378 | # here I also need to specify the Monte Carlo Masses |
63 | 2378 | stdin_text+=" %s \n" % nb_mc_masses | 2379 | stdin_text+=" %s \n" % nb_mc_masses |
64 | @@ -3277,8 +3278,7 @@ | |||
65 | 3277 | """return the max. weight associated with me decay['path']""" | 3278 | """return the max. weight associated with me decay['path']""" |
66 | 3278 | 3279 | ||
67 | 3279 | p, p_str=self.curr_event.give_momenta(event_map) | 3280 | p, p_str=self.curr_event.give_momenta(event_map) |
70 | 3280 | 3281 | std_in=" %s %s %s %s %s \n" % ("1",BWcut, self.Ecollider, nbpoints, self.options['frame_id']) | |
69 | 3281 | std_in=" %s %s %s %s \n" % ("1",BWcut, self.Ecollider, nbpoints) | ||
71 | 3282 | std_in+=p_str | 3282 | std_in+=p_str |
72 | 3283 | max_weight = self.loadfortran('maxweight', | 3283 | max_weight = self.loadfortran('maxweight', |
73 | 3284 | path, std_in) | 3284 | path, std_in) |
74 | @@ -3347,7 +3347,7 @@ | |||
75 | 3347 | if nb < cut: | 3347 | if nb < cut: |
76 | 3348 | if key[0]=='full': | 3348 | if key[0]=='full': |
77 | 3349 | path=key[1] | 3349 | path=key[1] |
79 | 3350 | end_signal="5 0 0 0 \n" # before closing, write down the seed | 3350 | end_signal="5 0 0 0 0\n" # before closing, write down the seed |
80 | 3351 | external.stdin.write(end_signal) | 3351 | external.stdin.write(end_signal) |
81 | 3352 | ranmar_state=external.stdout.readline() | 3352 | ranmar_state=external.stdout.readline() |
82 | 3353 | ranmar_file=pjoin(path,'ranmar_state.dat') | 3353 | ranmar_file=pjoin(path,'ranmar_state.dat') |
83 | @@ -3921,7 +3921,8 @@ | |||
84 | 3921 | 3921 | ||
85 | 3922 | self.cross = 0 | 3922 | self.cross = 0 |
86 | 3923 | self.error = 0 | 3923 | self.error = 0 |
88 | 3924 | if 'init' in self.banner and (eff!=1 or not any(v==-1 for v in self.br_per_id.values())): | 3924 | if 'init' in self.banner and (eff!=1 or not any(v==-1 for v in self.br_per_id.values())) \ |
89 | 3925 | and not self.options['onlyhelicity']: | ||
90 | 3925 | new_init ='' | 3926 | new_init ='' |
91 | 3926 | curr_proc = 0 | 3927 | curr_proc = 0 |
92 | 3927 | has_missing=False | 3928 | has_missing=False |
93 | @@ -3961,7 +3962,7 @@ | |||
94 | 3961 | external.terminate() | 3962 | external.terminate() |
95 | 3962 | del external | 3963 | del external |
96 | 3963 | elif mode=='full': | 3964 | elif mode=='full': |
98 | 3964 | stdin_text="5 0 0 0 \n" # before closing, write down the seed | 3965 | stdin_text="5 0 0 0 0\n" # before closing, write down the seed |
99 | 3965 | external = self.calculator[('full',path)] | 3966 | external = self.calculator[('full',path)] |
100 | 3966 | try: | 3967 | try: |
101 | 3967 | external.stdin.write(stdin_text) | 3968 | external.stdin.write(stdin_text) |
102 | @@ -3988,7 +3989,7 @@ | |||
103 | 3988 | except Exception: | 3989 | except Exception: |
104 | 3989 | pass | 3990 | pass |
105 | 3990 | else: | 3991 | else: |
107 | 3991 | stdin_text="5 0 0 0" | 3992 | stdin_text="5 0 0 0 0" |
108 | 3992 | external.stdin.write(stdin_text) | 3993 | external.stdin.write(stdin_text) |
109 | 3993 | external.stdin.close() | 3994 | external.stdin.close() |
110 | 3994 | external.stdout.close() | 3995 | external.stdout.close() |
111 | 3995 | 3996 | ||
112 | === modified file 'MadSpin/interface_madspin.py' | |||
113 | --- MadSpin/interface_madspin.py 2018-10-31 10:07:53 +0000 | |||
114 | +++ MadSpin/interface_madspin.py 2020-05-23 19:29:41 +0000 | |||
115 | @@ -75,7 +75,7 @@ | |||
116 | 75 | self.add_param('cross_section', {'__type__':0.}, comment="forcing normalization of cross-section after MS (for none/onshell)" ) | 75 | self.add_param('cross_section', {'__type__':0.}, comment="forcing normalization of cross-section after MS (for none/onshell)" ) |
117 | 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") | 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") |
118 | 77 | self.add_param('input_format', 'auto', allowed=['auto','lhe', 'hepmc', 'lhe_no_banner']) | 77 | self.add_param('input_format', 'auto', allowed=['auto','lhe', 'hepmc', 'lhe_no_banner']) |
120 | 78 | 78 | self.add_param('frame_id', 6) | |
121 | 79 | 79 | ||
122 | 80 | ############################################################################ | 80 | ############################################################################ |
123 | 81 | ## Special post-processing of the options ## | 81 | ## Special post-processing of the options ## |
124 | @@ -211,7 +211,7 @@ | |||
125 | 211 | # Read the banner of the inputfile | 211 | # Read the banner of the inputfile |
126 | 212 | self.events_file = open(os.path.realpath(inputfile)) | 212 | self.events_file = open(os.path.realpath(inputfile)) |
127 | 213 | self.banner = banner.Banner(self.events_file) | 213 | self.banner = banner.Banner(self.events_file) |
129 | 214 | 214 | ||
130 | 215 | 215 | ||
131 | 216 | # Check the validity of the banner: | 216 | # Check the validity of the banner: |
132 | 217 | if 'slha' not in self.banner: | 217 | if 'slha' not in self.banner: |
133 | @@ -226,14 +226,21 @@ | |||
134 | 226 | raise self.InvalidCmd('This event file was already decayed by MS. This is not possible to add to it a second decay') | 226 | raise self.InvalidCmd('This event file was already decayed by MS. This is not possible to add to it a second decay') |
135 | 227 | 227 | ||
136 | 228 | if 'mgruncard' in self.banner: | 228 | if 'mgruncard' in self.banner: |
137 | 229 | run_card = self.banner.charge_card('run_card') | ||
138 | 229 | if not self.options['Nevents_for_max_weigth']: | 230 | if not self.options['Nevents_for_max_weigth']: |
140 | 230 | nevents = int(self.banner.get_detail('run_card', 'nevents')) | 231 | nevents = run_card['nevents'] |
141 | 231 | N_weight = max([75, int(3*nevents**(1/3))]) | 232 | N_weight = max([75, int(3*nevents**(1/3))]) |
142 | 232 | self.options['Nevents_for_max_weigth'] = N_weight | 233 | self.options['Nevents_for_max_weigth'] = N_weight |
143 | 233 | N_sigma = max(4.5, math.log(nevents,7.7)) | 234 | N_sigma = max(4.5, math.log(nevents,7.7)) |
144 | 234 | self.options['nb_sigma'] = N_sigma | 235 | self.options['nb_sigma'] = N_sigma |
145 | 235 | if self.options['BW_cut'] == -1: | 236 | if self.options['BW_cut'] == -1: |
146 | 236 | self.options['BW_cut'] = float(self.banner.get_detail('run_card', 'bwcutoff')) | 237 | self.options['BW_cut'] = float(self.banner.get_detail('run_card', 'bwcutoff')) |
147 | 238 | |||
148 | 239 | if isinstance(run_card, banner.RunCardLO): | ||
149 | 240 | run_card.update_system_parameter_for_include() | ||
150 | 241 | self.options['frame_id'] = run_card['frame_id'] | ||
151 | 242 | else: | ||
152 | 243 | self.options['frame_id'] = 6 | ||
153 | 237 | else: | 244 | else: |
154 | 238 | if not self.options['Nevents_for_max_weigth']: | 245 | if not self.options['Nevents_for_max_weigth']: |
155 | 239 | self.options['Nevents_for_max_weigth'] = 75 | 246 | self.options['Nevents_for_max_weigth'] = 75 |
156 | @@ -313,7 +320,6 @@ | |||
157 | 313 | if model_name in line: | 320 | if model_name in line: |
158 | 314 | final_model = True | 321 | final_model = True |
159 | 315 | 322 | ||
160 | 316 | |||
161 | 317 | 323 | ||
162 | 318 | def import_model(self, args): | 324 | def import_model(self, args): |
163 | 319 | """syntax: import model NAME CARD_PATH | 325 | """syntax: import model NAME CARD_PATH |
164 | @@ -400,6 +406,12 @@ | |||
165 | 400 | #if self.model and not self.model['case_sensitive']: | 406 | #if self.model and not self.model['case_sensitive']: |
166 | 401 | # decaybranch = decaybranch.lower() | 407 | # decaybranch = decaybranch.lower() |
167 | 402 | 408 | ||
168 | 409 | if self.options['spinmode'] != 'full' and '{' in decaybranch: | ||
169 | 410 | if self.options['spinmode'] == 'none': | ||
170 | 411 | logger.warning("polarization option used with spinmode=none. The polarization definition will be done according to the rest-frame of the decaying particles (which is likely not what you expect).") | ||
171 | 412 | else: | ||
172 | 413 | logger.warning("polarization option used with spinmode=onshell. This combination is not validated and is by construction using sub-optimal method which can likely lead to bias in some situation. Use at your own risk.") | ||
173 | 414 | |||
174 | 403 | decay_process, init_part = self.decay.reorder_branch(decaybranch) | 415 | decay_process, init_part = self.decay.reorder_branch(decaybranch) |
175 | 404 | if not self.list_branches.has_key(init_part): | 416 | if not self.list_branches.has_key(init_part): |
176 | 405 | self.list_branches[init_part] = [] | 417 | self.list_branches[init_part] = [] |
177 | @@ -585,14 +597,16 @@ | |||
178 | 585 | self.check_launch(args) | 597 | self.check_launch(args) |
179 | 586 | for part in self.list_branches.keys(): | 598 | for part in self.list_branches.keys(): |
180 | 587 | if part in self.mg5cmd._multiparticles: | 599 | if part in self.mg5cmd._multiparticles: |
181 | 600 | |||
182 | 588 | if any(pid in self.final_state for pid in self.mg5cmd._multiparticles[part]): | 601 | if any(pid in self.final_state for pid in self.mg5cmd._multiparticles[part]): |
183 | 589 | break | 602 | break |
190 | 590 | pid = self.mg5cmd._curr_model.get('name2pdg')[part] | 603 | else: |
191 | 591 | if pid in self.final_state: | 604 | pid = self.mg5cmd._curr_model.get('name2pdg')[part] |
192 | 592 | break | 605 | if pid in self.final_state: |
193 | 593 | # else: | 606 | break |
194 | 594 | # logger.info("Nothing to decay ...") | 607 | else: |
195 | 595 | # return | 608 | logger.info("Nothing to decay ...") |
196 | 609 | return | ||
197 | 596 | 610 | ||
198 | 597 | 611 | ||
199 | 598 | model_line = self.banner.get('proc_card', 'full_model_line') | 612 | model_line = self.banner.get('proc_card', 'full_model_line') |
200 | @@ -801,6 +815,7 @@ | |||
201 | 801 | elif self.options['input_format'] in ['hepmc']: | 815 | elif self.options['input_format'] in ['hepmc']: |
202 | 802 | import madgraph.various.hepmc_parser as hepmc_parser | 816 | import madgraph.various.hepmc_parser as hepmc_parser |
203 | 803 | orig_lhe = hepmc_parser.HEPMC_EventFile(filename) | 817 | orig_lhe = hepmc_parser.HEPMC_EventFile(filename) |
204 | 818 | orig_lhe.allow_empty_event = True | ||
205 | 804 | logger.info("Parsing input event to know how many decay to generate. This can takes few minuts.") | 819 | logger.info("Parsing input event to know how many decay to generate. This can takes few minuts.") |
206 | 805 | else: | 820 | else: |
207 | 806 | raise Exception | 821 | raise Exception |
208 | @@ -1067,8 +1082,13 @@ | |||
209 | 1067 | if len(hepmc_output) == 0: | 1082 | if len(hepmc_output) == 0: |
210 | 1068 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) | 1083 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) |
211 | 1069 | hepmc_output[0].color2 = 0 | 1084 | hepmc_output[0].color2 = 0 |
212 | 1085 | hepmc_output[0].status = -1 | ||
213 | 1086 | hepmc_output.nexternal+=1 | ||
214 | 1070 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) | 1087 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) |
215 | 1088 | decayed_particle.mother1 = hepmc_output[0] | ||
216 | 1089 | decayed_particle.mother2 = hepmc_output[0] | ||
217 | 1071 | hepmc_output.append(decayed_particle) | 1090 | hepmc_output.append(decayed_particle) |
218 | 1091 | hepmc_output.nexternal+=1 | ||
219 | 1072 | decayed_particle.add_decay(decay) | 1092 | decayed_particle.add_decay(decay) |
220 | 1073 | # change the weight associate to the event | 1093 | # change the weight associate to the event |
221 | 1074 | if self.options['new_wgt'] == 'cross-section': | 1094 | if self.options['new_wgt'] == 'cross-section': |
222 | @@ -1086,7 +1106,6 @@ | |||
223 | 1086 | else: | 1106 | else: |
224 | 1087 | hepmc_output.wgt = event.wgt | 1107 | hepmc_output.wgt = event.wgt |
225 | 1088 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal | 1108 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal |
226 | 1089 | hepmc_output.assign_mother() | ||
227 | 1090 | output_lhe.write(str(hepmc_output)) | 1109 | output_lhe.write(str(hepmc_output)) |
228 | 1091 | else: | 1110 | else: |
229 | 1092 | if counter==0: | 1111 | if counter==0: |
230 | @@ -1226,7 +1245,11 @@ | |||
231 | 1226 | pass | 1245 | pass |
232 | 1227 | self.me_int[decay_dir] = me5_cmd | 1246 | self.me_int[decay_dir] = me5_cmd |
233 | 1228 | if self.options["run_card"]: | 1247 | if self.options["run_card"]: |
235 | 1229 | run_card = self.run_card | 1248 | if hasattr(self, 'run_card'): |
236 | 1249 | run_card = self.run_card | ||
237 | 1250 | else: | ||
238 | 1251 | self.run_card = banner.RunCard(self.options["run_card"]) | ||
239 | 1252 | run_card = self.run_card | ||
240 | 1230 | else: | 1253 | else: |
241 | 1231 | run_card = banner.RunCard(pjoin(decay_dir, "Cards", "run_card.dat")) | 1254 | run_card = banner.RunCard(pjoin(decay_dir, "Cards", "run_card.dat")) |
242 | 1232 | run_card["nevents"] = int(1.2*nb_event) | 1255 | run_card["nevents"] = int(1.2*nb_event) |
243 | @@ -1400,6 +1423,7 @@ | |||
244 | 1400 | if name not in self.list_branches or len(self.list_branches[name]) == 0: | 1423 | if name not in self.list_branches or len(self.list_branches[name]) == 0: |
245 | 1401 | continue | 1424 | continue |
246 | 1402 | raise self.InvalidCmd("The onshell mode of MadSpin does not support event files where events do not *all* share the same set of final state particles to be decayed.") | 1425 | raise self.InvalidCmd("The onshell mode of MadSpin does not support event files where events do not *all* share the same set of final state particles to be decayed.") |
247 | 1426 | |||
248 | 1403 | self.branching_ratio = br | 1427 | self.branching_ratio = br |
249 | 1404 | self.efficiency = 1 | 1428 | self.efficiency = 1 |
250 | 1405 | self.cross, self.error = self.banner.get_cross(witherror=True) | 1429 | self.cross, self.error = self.banner.get_cross(witherror=True) |
251 | @@ -1417,7 +1441,6 @@ | |||
252 | 1417 | #4. determine the maxwgt | 1441 | #4. determine the maxwgt |
253 | 1418 | maxwgt = self.get_maxwgt_for_onshell(orig_lhe, evt_decayfile) | 1442 | maxwgt = self.get_maxwgt_for_onshell(orig_lhe, evt_decayfile) |
254 | 1419 | 1443 | ||
255 | 1420 | |||
256 | 1421 | #5. generate the decay | 1444 | #5. generate the decay |
257 | 1422 | orig_lhe.seek(0) | 1445 | orig_lhe.seek(0) |
258 | 1423 | output_lhe = lhe_parser.EventFile(orig_lhe.name.replace('.lhe', '_decayed.lhe'), 'w') | 1446 | output_lhe = lhe_parser.EventFile(orig_lhe.name.replace('.lhe', '_decayed.lhe'), 'w') |
259 | @@ -1435,8 +1458,10 @@ | |||
260 | 1435 | for curr_event,production in enumerate(orig_lhe): | 1458 | for curr_event,production in enumerate(orig_lhe): |
261 | 1436 | if self.options['fixed_order']: | 1459 | if self.options['fixed_order']: |
262 | 1437 | production, counterevt= production[0], production[1:] | 1460 | production, counterevt= production[0], production[1:] |
265 | 1438 | if curr_event and curr_event % 1000 == 0 and float(str(curr_event)[1:]) ==0: | 1461 | if curr_event and self.efficiency and curr_event % 10 == 0 and float(str(curr_event)[1:]) ==0: |
266 | 1439 | print "decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start) | 1462 | logger.info("decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start)) |
267 | 1463 | else: | ||
268 | 1464 | logger.info("next event [%s]", time.time()-start) | ||
269 | 1440 | while 1: | 1465 | while 1: |
270 | 1441 | nb_try +=1 | 1466 | nb_try +=1 |
271 | 1442 | decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event) | 1467 | decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event) |
272 | @@ -1531,6 +1556,9 @@ | |||
273 | 1531 | # event_decay is a dict pdg -> list of event file (contain the decay) | 1556 | # event_decay is a dict pdg -> list of event file (contain the decay) |
274 | 1532 | 1557 | ||
275 | 1533 | 1558 | ||
276 | 1559 | if self.options['ms_dir'] and os.path.exists(pjoin(self.options['ms_dir'], 'max_wgt')): | ||
277 | 1560 | return float(open(pjoin(self.options['ms_dir'], 'max_wgt'),'r').read()) | ||
278 | 1561 | |||
279 | 1534 | nevents = self.options['Nevents_for_max_weigth'] | 1562 | nevents = self.options['Nevents_for_max_weigth'] |
280 | 1535 | if nevents == 0 : | 1563 | if nevents == 0 : |
281 | 1536 | nevents = 75 | 1564 | nevents = 75 |
282 | @@ -1540,7 +1568,6 @@ | |||
283 | 1540 | logger.info("*****************************") | 1568 | logger.info("*****************************") |
284 | 1541 | logger.info("Probing the first %s events with %s phase space points" % (nevents, self.options['max_weight_ps_point'])) | 1569 | logger.info("Probing the first %s events with %s phase space points" % (nevents, self.options['max_weight_ps_point'])) |
285 | 1542 | 1570 | ||
286 | 1543 | |||
287 | 1544 | self.efficiency = 1. / self.options['max_weight_ps_point'] | 1571 | self.efficiency = 1. / self.options['max_weight_ps_point'] |
288 | 1545 | start = time.time() | 1572 | start = time.time() |
289 | 1546 | for i in range(nevents): | 1573 | for i in range(nevents): |
290 | @@ -1553,7 +1580,7 @@ | |||
291 | 1553 | base_event = base_event[0] | 1580 | base_event = base_event[0] |
292 | 1554 | for j in range(self.options['max_weight_ps_point']): | 1581 | for j in range(self.options['max_weight_ps_point']): |
293 | 1555 | decays = self.get_decay_from_file(base_event, evt_decayfile, nevents-i) | 1582 | decays = self.get_decay_from_file(base_event, evt_decayfile, nevents-i) |
295 | 1556 | #carefull base_event is modified by the following function | 1583 | #carefull base_event is modified by the following function |
296 | 1557 | _, wgt = self.get_onshell_evt_and_wgt(base_event, decays) | 1584 | _, wgt = self.get_onshell_evt_and_wgt(base_event, decays) |
297 | 1558 | maxwgt = max(wgt, maxwgt) | 1585 | maxwgt = max(wgt, maxwgt) |
298 | 1559 | all_maxwgt.append(maxwgt) | 1586 | all_maxwgt.append(maxwgt) |
299 | @@ -1569,10 +1596,13 @@ | |||
300 | 1569 | if len(all_maxwgt) < i: | 1596 | if len(all_maxwgt) < i: |
301 | 1570 | break | 1597 | break |
302 | 1571 | ave_weight, std_weight = decay_tools.get_mean_sd(all_maxwgt[:i]) | 1598 | ave_weight, std_weight = decay_tools.get_mean_sd(all_maxwgt[:i]) |
303 | 1599 | #misc.sprint(ave_weight, std_weight) | ||
304 | 1572 | base_max_weight = max(base_max_weight, 1.05 * (ave_weight+self.options['nb_sigma']*std_weight)) | 1600 | base_max_weight = max(base_max_weight, 1.05 * (ave_weight+self.options['nb_sigma']*std_weight)) |
305 | 1573 | 1601 | ||
306 | 1574 | if all_maxwgt[1] > base_max_weight: | 1602 | if all_maxwgt[1] > base_max_weight: |
307 | 1575 | base_max_weight = 1.05 * all_maxwgt[1] | 1603 | base_max_weight = 1.05 * all_maxwgt[1] |
308 | 1604 | if self.options['ms_dir']: | ||
309 | 1605 | open(pjoin(self.options['ms_dir'], 'max_wgt'),'w').write(str(base_max_weight)) | ||
310 | 1576 | return base_max_weight | 1606 | return base_max_weight |
311 | 1577 | 1607 | ||
312 | 1578 | 1608 | ||
313 | @@ -1594,13 +1624,11 @@ | |||
314 | 1594 | raise | 1624 | raise |
315 | 1595 | import copy | 1625 | import copy |
316 | 1596 | 1626 | ||
317 | 1597 | |||
318 | 1598 | if hasattr(production, 'me_wgt'): | 1627 | if hasattr(production, 'me_wgt'): |
319 | 1599 | production_me = production.me_wgt | 1628 | production_me = production.me_wgt |
320 | 1600 | else: | 1629 | else: |
321 | 1601 | production_me = self.calculate_matrix_element(production) | 1630 | production_me = self.calculate_matrix_element(production) |
322 | 1602 | production.me_wgt = production_me | 1631 | production.me_wgt = production_me |
323 | 1603 | |||
324 | 1604 | decay_me = 1.0 | 1632 | decay_me = 1.0 |
325 | 1605 | for pdg in decays: | 1633 | for pdg in decays: |
326 | 1606 | for dec in decays[pdg]: | 1634 | for dec in decays[pdg]: |
327 | @@ -1628,7 +1656,6 @@ | |||
328 | 1628 | final = tuple(-i for i in final) | 1656 | final = tuple(-i for i in final) |
329 | 1629 | tag = (init, final) | 1657 | tag = (init, final) |
330 | 1630 | orig_order = self.all_me[tag]['order'] | 1658 | orig_order = self.all_me[tag]['order'] |
331 | 1631 | |||
332 | 1632 | pdir = self.all_me[tag]['pdir'] | 1659 | pdir = self.all_me[tag]['pdir'] |
333 | 1633 | if pdir in self.all_f2py: | 1660 | if pdir in self.all_f2py: |
334 | 1634 | p = event.get_momenta(orig_order) | 1661 | p = event.get_momenta(orig_order) |
335 | @@ -1643,11 +1670,15 @@ | |||
336 | 1643 | 1670 | ||
337 | 1644 | mymod = __import__("%s.matrix2py" % (pdir)) | 1671 | mymod = __import__("%s.matrix2py" % (pdir)) |
338 | 1645 | reload(mymod) | 1672 | reload(mymod) |
340 | 1646 | mymod = getattr(mymod, 'matrix2py') | 1673 | mymod = getattr(mymod, 'matrix2py') |
341 | 1647 | with misc.chdir(pjoin(self.path_me, 'madspin_me', 'SubProcesses', pdir)): | 1674 | with misc.chdir(pjoin(self.path_me, 'madspin_me', 'SubProcesses', pdir)): |
342 | 1648 | with misc.stdchannel_redirected(sys.stdout, os.devnull): | 1675 | with misc.stdchannel_redirected(sys.stdout, os.devnull): |
345 | 1649 | mymod.initialisemodel(pjoin(self.path_me, 'Cards','param_card.dat')) | 1676 | if not os.path.exists(pjoin(self.path_me, 'Cards','param_card.dat')) and \ |
346 | 1650 | self.all_f2py[pdir] = mymod.get_value | 1677 | os.path.exists(pjoin(self.path_me,'param_card.dat')): |
347 | 1678 | mymod.initialisemodel(pjoin(self.path_me,'param_card.dat')) | ||
348 | 1679 | else: | ||
349 | 1680 | mymod.initialisemodel(pjoin(self.path_me, 'Cards','param_card.dat')) | ||
350 | 1681 | self.all_f2py[pdir] = mymod.get_value | ||
351 | 1651 | return self.calculate_matrix_element(event) | 1682 | return self.calculate_matrix_element(event) |
352 | 1652 | 1683 | ||
353 | 1653 | 1684 | ||
354 | 1654 | 1685 | ||
355 | === modified file 'MadSpin/src/driver.f' | |||
356 | --- MadSpin/src/driver.f 2018-09-19 09:41:33 +0000 | |||
357 | +++ MadSpin/src/driver.f 2020-05-23 19:29:41 +0000 | |||
358 | @@ -18,7 +18,7 @@ | |||
359 | 18 | INTEGER I,J,K | 18 | INTEGER I,J,K |
360 | 19 | INTEGER HELSET(NEXTERNAL) | 19 | INTEGER HELSET(NEXTERNAL) |
361 | 20 | REAL*8 P(0:3,NEXTERNAL_PROD) | 20 | REAL*8 P(0:3,NEXTERNAL_PROD) |
363 | 21 | REAL*8 PFULL(0:3,NEXTERNAL), Ptrial(0:3,NEXTERNAL) | 21 | REAL*8 PFULL(0:3,NEXTERNAL), Ptrial(0:3,NEXTERNAL), P2(0:3,NEXTERNAL) |
364 | 22 | double precision x(36), Ecollider | 22 | double precision x(36), Ecollider |
365 | 23 | CHARACTER*120 BUFF(NEXTERNAL_PROD) | 23 | CHARACTER*120 BUFF(NEXTERNAL_PROD) |
366 | 24 | integer iforest(2,-nexternal:-1,N_MAX_CG) | 24 | integer iforest(2,-nexternal:-1,N_MAX_CG) |
367 | @@ -39,6 +39,7 @@ | |||
368 | 39 | double precision mean, variance, maxweight,weight,std | 39 | double precision mean, variance, maxweight,weight,std |
369 | 40 | double precision temp | 40 | double precision temp |
370 | 41 | double precision Pprod(0:3,nexternal_prod) | 41 | double precision Pprod(0:3,nexternal_prod) |
371 | 42 | |||
372 | 42 | integer nb_mc_masses, indices_mc_masses(nexternal) | 43 | integer nb_mc_masses, indices_mc_masses(nexternal) |
373 | 43 | double precision values_mc_masses(nexternal) | 44 | double precision values_mc_masses(nexternal) |
374 | 44 | 45 | ||
375 | @@ -54,6 +55,9 @@ | |||
376 | 54 | double precision BWcut, maxBW | 55 | double precision BWcut, maxBW |
377 | 55 | common /to_BWcut/BWcut, maxBW | 56 | common /to_BWcut/BWcut, maxBW |
378 | 56 | 57 | ||
379 | 58 | integer frame_id | ||
380 | 59 | common /to_me_frame/frame_id | ||
381 | 60 | |||
382 | 57 | c Conflicting BW stuff | 61 | c Conflicting BW stuff |
383 | 58 | integer cBW_level_max,cBW(-nexternal:-1),cBW_level(-nexternal:-1) | 62 | integer cBW_level_max,cBW(-nexternal:-1),cBW_level(-nexternal:-1) |
384 | 59 | double precision cBW_mass(-nexternal:-1,-1:1), | 63 | double precision cBW_mass(-nexternal:-1,-1:1), |
385 | @@ -94,7 +98,6 @@ | |||
386 | 94 | read(56,*) P_seed | 98 | read(56,*) P_seed |
387 | 95 | close(56) | 99 | close(56) |
388 | 96 | iseed = iseed + P_seed | 100 | iseed = iseed + P_seed |
389 | 97 | |||
390 | 98 | cccccccccccccccccccccccccccccccccccccccccccccccccccc | 101 | cccccccccccccccccccccccccccccccccccccccccccccccccccc |
391 | 99 | c I. read momenta for the production events | 102 | c I. read momenta for the production events |
392 | 100 | c | 103 | c |
393 | @@ -112,7 +115,7 @@ | |||
394 | 112 | 115 | ||
395 | 113 | 1 continue | 116 | 1 continue |
396 | 114 | maxBW=0d0 | 117 | maxBW=0d0 |
398 | 115 | read(*,*) mode, BWcut, Ecollider, temp | 118 | read(*,*) mode, BWcut, Ecollider, temp, frame_id |
399 | 116 | 119 | ||
400 | 117 | 120 | ||
401 | 118 | if (mode.eq.1) then ! calculate the maximum weight | 121 | if (mode.eq.1) then ! calculate the maximum weight |
402 | @@ -255,13 +258,14 @@ | |||
403 | 255 | 258 | ||
404 | 256 | cycle | 259 | cycle |
405 | 257 | endif | 260 | endif |
413 | 258 | !do j=1,nexternal | 261 | |
414 | 259 | ! write (*,*) (pfull(k,j), k=0,3) | 262 | call boost_to_frame(pfull, frame_id, P2) |
415 | 260 | !enddo | 263 | call SMATRIX(P2,M_full) |
416 | 261 | call SMATRIX(pfull,M_full) | 264 | |
417 | 262 | call SMATRIX_PROD(pprod,M_prod) | 265 | call boost_to_frame_prod(pprod, frame_id,nexternal_prod, P2) |
418 | 263 | c write(*,*) 'M_full ', M_full | 266 | call SMATRIX_PROD(P2,M_prod) |
419 | 264 | c write(*,*) 'jac',jac | 267 | |
420 | 268 | |||
421 | 265 | 269 | ||
422 | 266 | weight=M_full*jac/M_prod | 270 | weight=M_full*jac/M_prod |
423 | 267 | if (weight.gt.maxweight) then | 271 | if (weight.gt.maxweight) then |
424 | @@ -335,7 +339,6 @@ | |||
425 | 335 | do i = 1, 3*(nexternal-nexternal_prod)+1 | 339 | do i = 1, 3*(nexternal-nexternal_prod)+1 |
426 | 336 | call ntuple(x(i),0d0,1d0,i,1) | 340 | call ntuple(x(i),0d0,1d0,i,1) |
427 | 337 | enddo | 341 | enddo |
428 | 338 | |||
429 | 339 | call generate_momenta_conf(jac,x,itree,qmass,qwidth,pfull,pprod,map_external2res) | 342 | call generate_momenta_conf(jac,x,itree,qmass,qwidth,pfull,pprod,map_external2res) |
430 | 340 | if (jac.lt.0d0) then | 343 | if (jac.lt.0d0) then |
431 | 341 | counter2=counter2+1 | 344 | counter2=counter2+1 |
432 | @@ -366,8 +369,14 @@ | |||
433 | 366 | 369 | ||
434 | 367 | cycle | 370 | cycle |
435 | 368 | endif | 371 | endif |
438 | 369 | call SMATRIX(pfull,M_full) | 372 | |
439 | 370 | call SMATRIX_PROD(pprod,M_prod) | 373 | call boost_to_frame(pfull, frame_id, P2) |
440 | 374 | call SMATRIX(P2,M_full) | ||
441 | 375 | |||
442 | 376 | |||
443 | 377 | call boost_to_frame_prod(pprod, frame_id,nexternal_prod, P2) | ||
444 | 378 | call SMATRIX_PROD(P2,M_prod) | ||
445 | 379 | |||
446 | 371 | 380 | ||
447 | 372 | weight=M_full*jac/M_prod | 381 | weight=M_full*jac/M_prod |
448 | 373 | 382 | ||
449 | @@ -1892,3 +1901,162 @@ | |||
450 | 1892 | END | 1901 | END |
451 | 1893 | 1902 | ||
452 | 1894 | 1903 | ||
453 | 1904 | |||
454 | 1905 | |||
455 | 1906 | c====================================================================== | ||
456 | 1907 | C Subroutine to return momenta in a dedicated frame | ||
457 | 1908 | C frame_id is the tag of the particle to put at rest | ||
458 | 1909 | C frame_id follow the convention of cluster.f (sum 2**(N-1)) | ||
459 | 1910 | C ----------------------------------------- | ||
460 | 1911 | |||
461 | 1912 | subroutine boost_to_frame(P1, frame_id, P2) | ||
462 | 1913 | |||
463 | 1914 | implicit none | ||
464 | 1915 | |||
465 | 1916 | include 'nexternal.inc' | ||
466 | 1917 | |||
467 | 1918 | DOUBLE PRECISION P1(0:3,NEXTERNAL) | ||
468 | 1919 | DOUBLE PRECISION P2(0:3,NEXTERNAL) | ||
469 | 1920 | DOUBLE PRECISION PBOOST(0:3) | ||
470 | 1921 | integer frame_id | ||
471 | 1922 | |||
472 | 1923 | integer ids(nexternal) | ||
473 | 1924 | integer i,j | ||
474 | 1925 | Pboost(0)= 0d0 | ||
475 | 1926 | Pboost(1)= 0d0 | ||
476 | 1927 | Pboost(2)= 0d0 | ||
477 | 1928 | Pboost(3)= 0d0 | ||
478 | 1929 | |||
479 | 1930 | c uncompress | ||
480 | 1931 | call mapid(frame_id, ids) | ||
481 | 1932 | c find the boost momenta --sum of particles-- | ||
482 | 1933 | do i=1,nexternal | ||
483 | 1934 | if (ids(i).eq.1)then | ||
484 | 1935 | c write (999,*) (Pboost(j), j=0,3) | ||
485 | 1936 | do j=0,3 | ||
486 | 1937 | Pboost(j) = Pboost(j) + P1(j,i) | ||
487 | 1938 | enddo | ||
488 | 1939 | endif | ||
489 | 1940 | enddo | ||
490 | 1941 | do j=1,3 | ||
491 | 1942 | Pboost(j) = -1 * Pboost(j) | ||
492 | 1943 | enddo | ||
493 | 1944 | |||
494 | 1945 | c write (999,*) (Pboost(j), j=0,3) | ||
495 | 1946 | do i=1, nexternal | ||
496 | 1947 | call boostx(p1(0,i), pboost, p2(0,i)) | ||
497 | 1948 | enddo | ||
498 | 1949 | return | ||
499 | 1950 | end | ||
500 | 1951 | |||
501 | 1952 | |||
502 | 1953 | |||
503 | 1954 | |||
504 | 1955 | c======================================================================== | ||
505 | 1956 | |||
506 | 1957 | |||
507 | 1958 | subroutine mapid(id,ids) | ||
508 | 1959 | c************************************************************************** | ||
509 | 1960 | c input: | ||
510 | 1961 | c id compressed particle id | ||
511 | 1962 | c ids array of particle ids | ||
512 | 1963 | c************************************************************************** | ||
513 | 1964 | implicit none | ||
514 | 1965 | include 'nexternal.inc' | ||
515 | 1966 | integer i, icd, id, ids(nexternal) | ||
516 | 1967 | |||
517 | 1968 | icd=id | ||
518 | 1969 | do i=1,nexternal | ||
519 | 1970 | ids(i)=0 | ||
520 | 1971 | if (btest(id,i)) then | ||
521 | 1972 | ids(i)=1 | ||
522 | 1973 | endif | ||
523 | 1974 | c write(*,*) 'cluster.f: uncompressed code ',i,' is ',ids(i) | ||
524 | 1975 | enddo | ||
525 | 1976 | |||
526 | 1977 | return | ||
527 | 1978 | end | ||
528 | 1979 | |||
529 | 1980 | |||
530 | 1981 | |||
531 | 1982 | |||
532 | 1983 | C ----------------------------------------- | ||
533 | 1984 | |||
534 | 1985 | subroutine boost_to_frame_prod(P1, frame_id, nexternal_prod, P2) | ||
535 | 1986 | |||
536 | 1987 | implicit none | ||
537 | 1988 | |||
538 | 1989 | include 'nexternal.inc' | ||
539 | 1990 | |||
540 | 1991 | DOUBLE PRECISION P1(0:3,*) | ||
541 | 1992 | DOUBLE PRECISION P2(0:3,*) | ||
542 | 1993 | DOUBLE PRECISION PBOOST(0:3) | ||
543 | 1994 | integer frame_id, nexternal_prod | ||
544 | 1995 | |||
545 | 1996 | integer ids(nexternal_prod) | ||
546 | 1997 | integer i,j | ||
547 | 1998 | Pboost(0)= 0d0 | ||
548 | 1999 | Pboost(1)= 0d0 | ||
549 | 2000 | Pboost(2)= 0d0 | ||
550 | 2001 | Pboost(3)= 0d0 | ||
551 | 2002 | |||
552 | 2003 | c uncompress | ||
553 | 2004 | call mapid_prod(frame_id, ids,nexternal_prod) | ||
554 | 2005 | c find the boost momenta --sum of particles-- | ||
555 | 2006 | do i=1,nexternal_prod | ||
556 | 2007 | if (ids(i).eq.1)then | ||
557 | 2008 | c write (999,*) (Pboost(j), j=0,3) | ||
558 | 2009 | do j=0,3 | ||
559 | 2010 | Pboost(j) = Pboost(j) + P1(j,i) | ||
560 | 2011 | enddo | ||
561 | 2012 | endif | ||
562 | 2013 | enddo | ||
563 | 2014 | do j=1,3 | ||
564 | 2015 | Pboost(j) = -1 * Pboost(j) | ||
565 | 2016 | enddo | ||
566 | 2017 | |||
567 | 2018 | c write (999,*) (Pboost(j), j=0,3) | ||
568 | 2019 | do i=1, nexternal_prod | ||
569 | 2020 | call boostx(p1(0,i), pboost, p2(0,i)) | ||
570 | 2021 | enddo | ||
571 | 2022 | return | ||
572 | 2023 | end | ||
573 | 2024 | |||
574 | 2025 | |||
575 | 2026 | |||
576 | 2027 | |||
577 | 2028 | |||
578 | 2029 | |||
579 | 2030 | |||
580 | 2031 | |||
581 | 2032 | subroutine mapid_prod(id,ids,nexternal_prod) | ||
582 | 2033 | c************************************************************************** | ||
583 | 2034 | c input: | ||
584 | 2035 | c id compressed particle id | ||
585 | 2036 | c ids array of particle ids | ||
586 | 2037 | c************************************************************************** | ||
587 | 2038 | implicit none | ||
588 | 2039 | include 'nexternal.inc' | ||
589 | 2040 | integer i, icd, id, nexternal_prod, ids(nexternal_prod) | ||
590 | 2041 | |||
591 | 2042 | icd=id | ||
592 | 2043 | do i=1,nexternal_prod | ||
593 | 2044 | ids(i)=0 | ||
594 | 2045 | if (btest(id,i)) then | ||
595 | 2046 | ids(i)=1 | ||
596 | 2047 | endif | ||
597 | 2048 | c write(*,*) 'cluster.f: uncompressed code ',i,' is ',ids(i) | ||
598 | 2049 | enddo | ||
599 | 2050 | |||
600 | 2051 | return | ||
601 | 2052 | end | ||
602 | 2053 | |||
603 | 2054 | |||
604 | 2055 | |||
605 | 2056 | |||
606 | 2057 | |||
607 | 2058 | |||
608 | 2059 | |||
609 | 2060 | |||
610 | 2061 | |||
611 | 2062 | |||
612 | 1895 | 2063 | ||
613 | === modified file 'Template/Common/Cards/delphes_card_ATLAS.dat' | |||
614 | --- Template/Common/Cards/delphes_card_ATLAS.dat 2017-05-19 20:52:51 +0000 | |||
615 | +++ Template/Common/Cards/delphes_card_ATLAS.dat 2020-05-23 19:29:41 +0000 | |||
616 | @@ -405,11 +405,10 @@ | |||
617 | 405 | # add InputArray InputArray | 405 | # add InputArray InputArray |
618 | 406 | add InputArray ECal/ecalTowers | 406 | add InputArray ECal/ecalTowers |
619 | 407 | add InputArray HCal/hcalTowers | 407 | add InputArray HCal/hcalTowers |
620 | 408 | add InputArray MuonMomentumSmearing/muons | ||
621 | 408 | set OutputArray towers | 409 | set OutputArray towers |
622 | 409 | } | 410 | } |
623 | 410 | 411 | ||
624 | 411 | |||
625 | 412 | |||
626 | 413 | #################### | 412 | #################### |
627 | 414 | # Energy flow merger | 413 | # Energy flow merger |
628 | 415 | #################### | 414 | #################### |
629 | 416 | 415 | ||
630 | === modified file 'Template/Common/Cards/delphes_card_CMS.dat' | |||
631 | --- Template/Common/Cards/delphes_card_CMS.dat 2017-05-19 20:52:51 +0000 | |||
632 | +++ Template/Common/Cards/delphes_card_CMS.dat 2020-05-23 19:29:41 +0000 | |||
633 | @@ -168,7 +168,7 @@ | |||
634 | 168 | # set ResolutionFormula {resolution formula as a function of eta and energy} | 168 | # set ResolutionFormula {resolution formula as a function of eta and energy} |
635 | 169 | 169 | ||
636 | 170 | # resolution formula for electrons | 170 | # resolution formula for electrons |
638 | 171 | # based on arXiv:1405.6569 | 171 | # based on arXiv:1502.02701 |
639 | 172 | set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*1.3e-3^2) + | 172 | set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*1.3e-3^2) + |
640 | 173 | (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*1.7e-3^2) + | 173 | (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*1.7e-3^2) + |
641 | 174 | (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.15^2 + pt^2*3.1e-3^2)} | 174 | (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.15^2 + pt^2*3.1e-3^2)} |
642 | 175 | 175 | ||
643 | === modified file 'Template/Common/Cards/delphes_card_default.dat' | |||
644 | --- Template/Common/Cards/delphes_card_default.dat 2017-05-19 20:52:51 +0000 | |||
645 | +++ Template/Common/Cards/delphes_card_default.dat 2020-05-23 19:29:41 +0000 | |||
646 | @@ -168,7 +168,7 @@ | |||
647 | 168 | # set ResolutionFormula {resolution formula as a function of eta and energy} | 168 | # set ResolutionFormula {resolution formula as a function of eta and energy} |
648 | 169 | 169 | ||
649 | 170 | # resolution formula for electrons | 170 | # resolution formula for electrons |
651 | 171 | # based on arXiv:1405.6569 | 171 | # based on arXiv:1502.02701 |
652 | 172 | set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*1.3e-3^2) + | 172 | set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1) * sqrt(0.03^2 + pt^2*1.3e-3^2) + |
653 | 173 | (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*1.7e-3^2) + | 173 | (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1) * sqrt(0.05^2 + pt^2*1.7e-3^2) + |
654 | 174 | (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.15^2 + pt^2*3.1e-3^2)} | 174 | (abs(eta) > 1.5 && abs(eta) <= 2.5) * (pt > 0.1) * sqrt(0.15^2 + pt^2*3.1e-3^2)} |
655 | 175 | 175 | ||
656 | === modified file 'Template/LO/Cards/run_card.dat' | |||
657 | --- Template/LO/Cards/run_card.dat 2018-05-29 13:11:53 +0000 | |||
658 | +++ Template/LO/Cards/run_card.dat 2020-05-23 19:29:41 +0000 | |||
659 | @@ -14,10 +14,6 @@ | |||
660 | 14 | # To display more options, you can type the command: * | 14 | # To display more options, you can type the command: * |
661 | 15 | # update full_run_card * | 15 | # update full_run_card * |
662 | 16 | #********************************************************************* | 16 | #********************************************************************* |
663 | 17 | # | ||
664 | 18 | #******************* | ||
665 | 19 | # Running parameters | ||
666 | 20 | #******************* | ||
667 | 21 | # | 17 | # |
668 | 22 | #********************************************************************* | 18 | #********************************************************************* |
669 | 23 | # Tag name for the run (one word) * | 19 | # Tag name for the run (one word) * |
670 | @@ -26,7 +22,6 @@ | |||
671 | 26 | #********************************************************************* | 22 | #********************************************************************* |
672 | 27 | # Number of events and rnd seed * | 23 | # Number of events and rnd seed * |
673 | 28 | # Warning: Do not generate more than 1M events in a single run * | 24 | # Warning: Do not generate more than 1M events in a single run * |
674 | 29 | # If you want to run Pythia, avoid more than 50k events in a run. * | ||
675 | 30 | #********************************************************************* | 25 | #********************************************************************* |
676 | 31 | %(nevents)s = nevents ! Number of unweighted events requested | 26 | %(nevents)s = nevents ! Number of unweighted events requested |
677 | 32 | %(iseed)s = iseed ! rnd seed (0=assigned automatically=default)) | 27 | %(iseed)s = iseed ! rnd seed (0=assigned automatically=default)) |
678 | @@ -40,6 +35,7 @@ | |||
679 | 40 | %(ebeam1)s = ebeam1 ! beam 1 total energy in GeV | 35 | %(ebeam1)s = ebeam1 ! beam 1 total energy in GeV |
680 | 41 | %(ebeam2)s = ebeam2 ! beam 2 total energy in GeV | 36 | %(ebeam2)s = ebeam2 ! beam 2 total energy in GeV |
681 | 42 | $beam_pol | 37 | $beam_pol |
682 | 38 | $frame | ||
683 | 43 | #********************************************************************* | 39 | #********************************************************************* |
684 | 44 | # PDF CHOICE: this automatically fixes also alpha_s and its evol. * | 40 | # PDF CHOICE: this automatically fixes also alpha_s and its evol. * |
685 | 45 | #********************************************************************* | 41 | #********************************************************************* |
686 | @@ -61,20 +57,9 @@ | |||
687 | 61 | #********************************************************************* | 57 | #********************************************************************* |
688 | 62 | %(gridpack)s = gridpack !True = setting up the grid pack | 58 | %(gridpack)s = gridpack !True = setting up the grid pack |
689 | 63 | %(time_of_flight)s = time_of_flight ! threshold (in mm) below which the invariant livetime is not written (-1 means not written) | 59 | %(time_of_flight)s = time_of_flight ! threshold (in mm) below which the invariant livetime is not written (-1 means not written) |
690 | 64 | %(lhe_version)s = lhe_version ! Change the way clustering information pass to shower. | ||
691 | 65 | %(clusinfo)s = clusinfo ! include clustering tag in output | ||
692 | 66 | %(event_norm)s = event_norm ! average/sum. Normalization of the weight in the LHEF | 60 | %(event_norm)s = event_norm ! average/sum. Normalization of the weight in the LHEF |
704 | 67 | 61 | $MLM | |
705 | 68 | #********************************************************************* | 62 | $CKKW |
695 | 69 | # Matching parameter (MLM only) | ||
696 | 70 | #********************************************************************* | ||
697 | 71 | %(ickkw)s = ickkw ! 0 no matching, 1 MLM | ||
698 | 72 | %(alpsfact)s = alpsfact ! scale factor for QCD emission vx | ||
699 | 73 | %(chcluster)s = chcluster ! cluster only according to channel diag | ||
700 | 74 | %(asrwgtflavor)s = asrwgtflavor ! highest quark flavor for a_s reweight | ||
701 | 75 | %(auto_ptj_mjj)s = auto_ptj_mjj ! Automatic setting of ptj and mjj if xqcut >0 | ||
702 | 76 | ! (turn off for VBF and single top processes) | ||
703 | 77 | %(xqcut)s = xqcut ! minimum kt jet measure between partons | ||
706 | 78 | #********************************************************************* | 63 | #********************************************************************* |
707 | 79 | # | 64 | # |
708 | 80 | #********************************************************************* | 65 | #********************************************************************* |
709 | @@ -99,10 +84,10 @@ | |||
710 | 99 | # BW cutoff (M+/-bwcutoff*Gamma) ! Define on/off-shell for "$$" and decay | 84 | # BW cutoff (M+/-bwcutoff*Gamma) ! Define on/off-shell for "$$" and decay |
711 | 100 | #********************************************************************* | 85 | #********************************************************************* |
712 | 101 | %(bwcutoff)s = bwcutoff ! (M+/-bwcutoff*Gamma) | 86 | %(bwcutoff)s = bwcutoff ! (M+/-bwcutoff*Gamma) |
717 | 102 | #********************************************************************* | 87 | #IF(d)# #********************************************************************* |
718 | 103 | # Apply pt/E/eta/dr/mij/kt_durham cuts on decay products or not | 88 | #IF(d)# # Apply pt/E/eta/dr/mij/kt_durham cuts on decay products or not |
719 | 104 | # (note that etmiss/ptll/ptheavy/ht/sorted cuts always apply) | 89 | #IF(d)# # (note that etmiss/ptll/ptheavy/ht/sorted cuts always apply) |
720 | 105 | #********************************************************************* | 90 | #IF(d)# #********************************************************************* |
721 | 106 | %(cut_decays)s = cut_decays ! Cut decay products | 91 | %(cut_decays)s = cut_decays ! Cut decay products |
722 | 107 | #********************************************************************* | 92 | #********************************************************************* |
723 | 108 | # Standard Cuts * | 93 | # Standard Cuts * |
724 | @@ -121,24 +106,12 @@ | |||
725 | 121 | %(missetmax)s = missetmax ! maximum missing Et (sum of neutrino's momenta) | 106 | %(missetmax)s = missetmax ! maximum missing Et (sum of neutrino's momenta) |
726 | 122 | %(pt_min_pdg)s = pt_min_pdg ! pt cut for other particles (use pdg code). Applied on particle and anti-particle | 107 | %(pt_min_pdg)s = pt_min_pdg ! pt cut for other particles (use pdg code). Applied on particle and anti-particle |
727 | 123 | %(pt_max_pdg)s = pt_max_pdg ! pt cut for other particles (syntax e.g. {6: 100, 25: 50}) | 108 | %(pt_max_pdg)s = pt_max_pdg ! pt cut for other particles (syntax e.g. {6: 100, 25: 50}) |
741 | 124 | #********************************************************************* | 109 | $ecut |
729 | 125 | # Minimum and maximum E's (in the center of mass frame) * | ||
730 | 126 | #********************************************************************* | ||
731 | 127 | %(ej)s = ej ! minimum E for the jets | ||
732 | 128 | %(eb)s = eb ! minimum E for the b | ||
733 | 129 | %(ea)s = ea ! minimum E for the photons | ||
734 | 130 | %(el)s = el ! minimum E for the charged leptons | ||
735 | 131 | %(ejmax)s = ejmax ! maximum E for the jets | ||
736 | 132 | %(ebmax)s = ebmax ! maximum E for the b | ||
737 | 133 | %(eamax)s = eamax ! maximum E for the photons | ||
738 | 134 | %(elmax)s = elmax ! maximum E for the charged leptons | ||
739 | 135 | %(e_min_pdg)s = e_min_pdg ! E cut for other particles (use pdg code). Applied on particle and anti-particle | ||
740 | 136 | %(e_max_pdg)s = e_max_pdg ! E cut for other particles (syntax e.g. {6: 100, 25: 50}) | ||
742 | 137 | #********************************************************************* | 110 | #********************************************************************* |
743 | 138 | # Maximum and minimum absolute rapidity (for max, -1 means no cut) * | 111 | # Maximum and minimum absolute rapidity (for max, -1 means no cut) * |
744 | 139 | #********************************************************************* | 112 | #********************************************************************* |
747 | 140 | %(etaj)s = etaj ! max rap for the jets | 113 | %(etaj)s = etaj ! max rap for the jets |
748 | 141 | %(etab)s = etab ! max rap for the b | 114 | %(etab)s = etab ! max rap for the b |
749 | 142 | %(etaa)s = etaa ! max rap for the photons | 115 | %(etaa)s = etaa ! max rap for the photons |
750 | 143 | %(etal)s = etal ! max rap for the charged leptons | 116 | %(etal)s = etal ! max rap for the charged leptons |
751 | 144 | %(etajmin)s = etajmin ! min rap for the jets | 117 | %(etajmin)s = etajmin ! min rap for the jets |
752 | @@ -172,8 +145,8 @@ | |||
753 | 172 | %(dralmax)s = dralmax ! maxdistance between gamma and lepton | 145 | %(dralmax)s = dralmax ! maxdistance between gamma and lepton |
754 | 173 | #********************************************************************* | 146 | #********************************************************************* |
755 | 174 | # Minimum and maximum invariant mass for pairs * | 147 | # Minimum and maximum invariant mass for pairs * |
758 | 175 | # WARNING: for four lepton final state mmll cut require to have * | 148 | #IF(llll)# # WARNING: for four lepton final state mmll cut require to have * |
759 | 176 | # different lepton masses for each flavor! * | 149 | #IF(llll)# # different lepton masses for each flavor! * |
760 | 177 | #********************************************************************* | 150 | #********************************************************************* |
761 | 178 | %(mmjj)s = mmjj ! min invariant mass of a jet pair | 151 | %(mmjj)s = mmjj ! min invariant mass of a jet pair |
762 | 179 | %(mmbb)s = mmbb ! min invariant mass of a b pair | 152 | %(mmbb)s = mmbb ! min invariant mass of a b pair |
763 | @@ -186,14 +159,14 @@ | |||
764 | 186 | %(mxx_min_pdg)s = mxx_min_pdg ! min invariant mass of a pair of particles X/X~ (e.g. {6:250}) | 159 | %(mxx_min_pdg)s = mxx_min_pdg ! min invariant mass of a pair of particles X/X~ (e.g. {6:250}) |
765 | 187 | %(mxx_only_part_antipart)s = mxx_only_part_antipart ! if True the invariant mass is applied only | 160 | %(mxx_only_part_antipart)s = mxx_only_part_antipart ! if True the invariant mass is applied only |
766 | 188 | ! to pairs of particle/antiparticle and not to pairs of the same pdg codes. | 161 | ! to pairs of particle/antiparticle and not to pairs of the same pdg codes. |
770 | 189 | #********************************************************************* | 162 | #IF(LL)# #********************************************************************* |
771 | 190 | # Minimum and maximum invariant mass for all letpons * | 163 | #IF(LL)# # Minimum and maximum invariant mass for all letpons * |
772 | 191 | #********************************************************************* | 164 | #IF(LL)# #********************************************************************* |
773 | 192 | %(mmnl)s = mmnl ! min invariant mass for all letpons (l+- and vl) | 165 | %(mmnl)s = mmnl ! min invariant mass for all letpons (l+- and vl) |
774 | 193 | %(mmnlmax)s = mmnlmax ! max invariant mass for all letpons (l+- and vl) | 166 | %(mmnlmax)s = mmnlmax ! max invariant mass for all letpons (l+- and vl) |
778 | 194 | #********************************************************************* | 167 | #IF(LL)# #********************************************************************* |
779 | 195 | # Minimum and maximum pt for 4-momenta sum of leptons * | 168 | #IF(LL)# # Minimum and maximum pt for 4-momenta sum of leptons * |
780 | 196 | #********************************************************************* | 169 | #IF(LL)# #********************************************************************* |
781 | 197 | %(ptllmin)s = ptllmin ! Minimum pt for 4-momenta sum of leptons(l and vl) | 170 | %(ptllmin)s = ptllmin ! Minimum pt for 4-momenta sum of leptons(l and vl) |
782 | 198 | %(ptllmax)s = ptllmax ! Maximum pt for 4-momenta sum of leptons(l and vl) | 171 | %(ptllmax)s = ptllmax ! Maximum pt for 4-momenta sum of leptons(l and vl) |
783 | 199 | #********************************************************************* | 172 | #********************************************************************* |
784 | @@ -204,9 +177,9 @@ | |||
785 | 204 | %(xptb)s = xptb ! minimum pt for at least one b | 177 | %(xptb)s = xptb ! minimum pt for at least one b |
786 | 205 | %(xpta)s = xpta ! minimum pt for at least one photon | 178 | %(xpta)s = xpta ! minimum pt for at least one photon |
787 | 206 | %(xptl)s = xptl ! minimum pt for at least one charged lepton | 179 | %(xptl)s = xptl ! minimum pt for at least one charged lepton |
791 | 207 | #********************************************************************* | 180 | #IF(jj)# #********************************************************************* |
792 | 208 | # Control the pt's of the jets sorted by pt * | 181 | #IF(jj)# # Control the pt's of the jets sorted by pt * |
793 | 209 | #********************************************************************* | 182 | #IF(jj)# #********************************************************************* |
794 | 210 | %(ptj1min)s = ptj1min ! minimum pt for the leading jet in pt | 183 | %(ptj1min)s = ptj1min ! minimum pt for the leading jet in pt |
795 | 211 | %(ptj2min)s = ptj2min ! minimum pt for the second jet in pt | 184 | %(ptj2min)s = ptj2min ! minimum pt for the second jet in pt |
796 | 212 | %(ptj3min)s = ptj3min ! minimum pt for the third jet in pt | 185 | %(ptj3min)s = ptj3min ! minimum pt for the third jet in pt |
797 | @@ -216,9 +189,9 @@ | |||
798 | 216 | %(ptj3max)s = ptj3max ! maximum pt for the third jet in pt | 189 | %(ptj3max)s = ptj3max ! maximum pt for the third jet in pt |
799 | 217 | %(ptj4max)s = ptj4max ! maximum pt for the fourth jet in pt | 190 | %(ptj4max)s = ptj4max ! maximum pt for the fourth jet in pt |
800 | 218 | %(cutuse)s = cutuse ! reject event if fails any (0) / all (1) jet pt cuts | 191 | %(cutuse)s = cutuse ! reject event if fails any (0) / all (1) jet pt cuts |
804 | 219 | #********************************************************************* | 192 | #IF(ll)# #********************************************************************* |
805 | 220 | # Control the pt's of leptons sorted by pt * | 193 | #IF(ll)# # Control the pt's of leptons sorted by pt * |
806 | 221 | #********************************************************************* | 194 | #IF(ll)# #********************************************************************* |
807 | 222 | %(ptl1min)s = ptl1min ! minimum pt for the leading lepton in pt | 195 | %(ptl1min)s = ptl1min ! minimum pt for the leading lepton in pt |
808 | 223 | %(ptl2min)s = ptl2min ! minimum pt for the second lepton in pt | 196 | %(ptl2min)s = ptl2min ! minimum pt for the second lepton in pt |
809 | 224 | %(ptl3min)s = ptl3min ! minimum pt for the third lepton in pt | 197 | %(ptl3min)s = ptl3min ! minimum pt for the third lepton in pt |
810 | @@ -227,9 +200,9 @@ | |||
811 | 227 | %(ptl2max)s = ptl2max ! maximum pt for the second lepton in pt | 200 | %(ptl2max)s = ptl2max ! maximum pt for the second lepton in pt |
812 | 228 | %(ptl3max)s = ptl3max ! maximum pt for the third lepton in pt | 201 | %(ptl3max)s = ptl3max ! maximum pt for the third lepton in pt |
813 | 229 | %(ptl4max)s = ptl4max ! maximum pt for the fourth lepton in pt | 202 | %(ptl4max)s = ptl4max ! maximum pt for the fourth lepton in pt |
817 | 230 | #********************************************************************* | 203 | #IF(JJ)# #********************************************************************* |
818 | 231 | # Control the Ht(k)=Sum of k leading jets * | 204 | #IF(JJ)# # Control the Ht(k)=Sum of k leading jets * |
819 | 232 | #********************************************************************* | 205 | #IF(JJ)# #********************************************************************* |
820 | 233 | %(htjmin)s = htjmin ! minimum jet HT=Sum(jet pt) | 206 | %(htjmin)s = htjmin ! minimum jet HT=Sum(jet pt) |
821 | 234 | %(htjmax)s = htjmax ! maximum jet HT=Sum(jet pt) | 207 | %(htjmax)s = htjmax ! maximum jet HT=Sum(jet pt) |
822 | 235 | %(ihtmin)s = ihtmin !inclusive Ht for all partons (including b) | 208 | %(ihtmin)s = ihtmin !inclusive Ht for all partons (including b) |
823 | @@ -240,29 +213,21 @@ | |||
824 | 240 | %(ht2max)s = ht2max ! maximum Ht for the two leading jets | 213 | %(ht2max)s = ht2max ! maximum Ht for the two leading jets |
825 | 241 | %(ht3max)s = ht3max ! maximum Ht for the three leading jets | 214 | %(ht3max)s = ht3max ! maximum Ht for the three leading jets |
826 | 242 | %(ht4max)s = ht4max ! maximum Ht for the four leading jets | 215 | %(ht4max)s = ht4max ! maximum Ht for the four leading jets |
840 | 243 | #*********************************************************************** | 216 | #IF(aj)# #*********************************************************************** |
841 | 244 | # Photon-isolation cuts, according to hep-ph/9801442 * | 217 | #IF(aj)# # Photon-isolation cuts, according to hep-ph/9801442 * |
842 | 245 | # When ptgmin=0, all the other parameters are ignored * | 218 | #IF(aj)# # When ptgmin=0, all the other parameters are ignored * |
843 | 246 | # When ptgmin>0, pta and draj are not going to be used * | 219 | #IF(aj)# # When ptgmin>0, pta and draj are not going to be used * |
844 | 247 | #*********************************************************************** | 220 | #IF(aj)# #*********************************************************************** |
845 | 248 | %(ptgmin)s = ptgmin ! Min photon transverse momentum | 221 | #IF(aj)# %(ptgmin)s = ptgmin ! Min photon transverse momentum |
846 | 249 | %(r0gamma)s = R0gamma ! Radius of isolation code | 222 | #IF(aj)# %(r0gamma)s = R0gamma ! Radius of isolation code |
847 | 250 | %(xn)s = xn ! n parameter of eq.(3.4) in hep-ph/9801442 | 223 | #IF(aj)# %(xn)s = xn ! n parameter of eq.(3.4) in hep-ph/9801442 |
848 | 251 | %(epsgamma)s = epsgamma ! epsilon_gamma parameter of eq.(3.4) in hep-ph/9801442 | 224 | #IF(aj)# %(epsgamma)s = epsgamma ! epsilon_gamma parameter of eq.(3.4) in hep-ph/9801442 |
849 | 252 | %(isoem)s = isoEM ! isolate photons from EM energy (photons and leptons) | 225 | #IF(aj)# %(isoem)s = isoEM ! isolate photons from EM energy (photons and leptons) |
850 | 253 | #********************************************************************* | 226 | #IF(jj)# #********************************************************************* |
851 | 254 | # WBF cuts * | 227 | #IF(jj)# # WBF cuts * |
852 | 255 | #********************************************************************* | 228 | #IF(jj)# #********************************************************************* |
853 | 256 | %(xetamin)s = xetamin ! minimum rapidity for two jets in the WBF case | 229 | %(xetamin)s = xetamin ! minimum rapidity for two jets in the WBF case |
854 | 257 | %(deltaeta)s = deltaeta ! minimum rapidity for two jets in the WBF case | 230 | %(deltaeta)s = deltaeta ! minimum rapidity for two jets in the WBF case |
855 | 258 | #*********************************************************************** | ||
856 | 259 | # Turn on either the ktdurham or ptlund cut to activate * | ||
857 | 260 | # CKKW(L) merging with Pythia8 [arXiv:1410.3012, arXiv:1109.4829] * | ||
858 | 261 | #*********************************************************************** | ||
859 | 262 | %(ktdurham)s = ktdurham | ||
860 | 263 | %(dparameter)s = dparameter | ||
861 | 264 | %(ptlund)s = ptlund | ||
862 | 265 | %(pdgs_for_merging_cut)s = pdgs_for_merging_cut ! PDGs for two cuts above | ||
863 | 266 | #********************************************************************* | 231 | #********************************************************************* |
864 | 267 | # maximal pdg code for quark to be considered as a light jet * | 232 | # maximal pdg code for quark to be considered as a light jet * |
865 | 268 | # (otherwise b cuts are applied) * | 233 | # (otherwise b cuts are applied) * |
866 | 269 | 234 | ||
867 | === modified file 'Template/LO/Source/.make_opts' | |||
868 | --- Template/LO/Source/.make_opts 2017-08-14 08:20:30 +0000 | |||
869 | +++ Template/LO/Source/.make_opts 2020-05-23 19:29:41 +0000 | |||
870 | @@ -49,11 +49,15 @@ | |||
871 | 49 | ifeq ($(FC), ftn) | 49 | ifeq ($(FC), ftn) |
872 | 50 | FFLAGS+= -extend-source # for ifort type of compiler | 50 | FFLAGS+= -extend-source # for ifort type of compiler |
873 | 51 | else | 51 | else |
875 | 52 | FFLAGS+= -ffixed-line-length-132 | 52 | VERS="$(shell $(FC) --version | grep ifort -i)" |
876 | 53 | ifeq ($(VERS), "") | ||
877 | 54 | FFLAGS+= -ffixed-line-length-132 | ||
878 | 55 | else | ||
879 | 56 | FFLAGS+= -extend-source # for ifort type of compiler | ||
880 | 57 | endif | ||
881 | 53 | endif | 58 | endif |
882 | 54 | 59 | ||
883 | 55 | 60 | ||
884 | 56 | |||
885 | 57 | UNAME := $(shell uname -s) | 61 | UNAME := $(shell uname -s) |
886 | 58 | ifeq ($(origin LDFLAGS), undefined) | 62 | ifeq ($(origin LDFLAGS), undefined) |
887 | 59 | LDFLAGS=$(STDLIB) $(MACFLAG) | 63 | LDFLAGS=$(STDLIB) $(MACFLAG) |
888 | 60 | 64 | ||
889 | === modified file 'Template/LO/Source/BIAS/ptj_bias/makefile' | |||
890 | --- Template/LO/Source/BIAS/ptj_bias/makefile 2016-08-13 05:32:47 +0000 | |||
891 | +++ Template/LO/Source/BIAS/ptj_bias/makefile 2020-05-23 19:29:41 +0000 | |||
892 | @@ -19,9 +19,5 @@ | |||
893 | 19 | # 'VALID' is the keyword that *must* be returned if everything is in order. | 19 | # 'VALID' is the keyword that *must* be returned if everything is in order. |
894 | 20 | # | 20 | # |
895 | 21 | requirements: | 21 | requirements: |
896 | 22 | ifeq ($(shell $(call CHECK_MG5AMC_VERSION,2.4.2)),True) | ||
897 | 23 | @echo "VALID" | 22 | @echo "VALID" |
902 | 24 | else | 23 | |
899 | 25 | @echo "Error:: MG5aMC is not recent enough (found "$(MG5AMC_VERSION)")" | ||
900 | 26 | @echo "FAIL" | ||
901 | 27 | endif | ||
903 | 28 | 24 | ||
904 | === modified file 'Template/LO/Source/PDF/PhotonFlux.f' | |||
905 | --- Template/LO/Source/PDF/PhotonFlux.f 2018-04-20 08:02:12 +0000 | |||
906 | +++ Template/LO/Source/PDF/PhotonFlux.f 2020-05-23 19:29:41 +0000 | |||
907 | @@ -38,19 +38,31 @@ | |||
908 | 38 | 38 | ||
909 | 39 | end | 39 | end |
910 | 40 | 40 | ||
912 | 41 | real*8 function epa_proton(x,q2max) | 41 | real*8 function epa_proton(x,q2max,beamid) |
913 | 42 | integer i | 42 | integer i |
914 | 43 | integer beamid | ||
915 | 43 | real*8 x,phi_f | 44 | real*8 x,phi_f |
916 | 44 | real*8 xin | 45 | real*8 xin |
917 | 45 | real*8 alpha,qz | 46 | real*8 alpha,qz |
918 | 46 | real*8 f, qmi,qma, q2max | 47 | real*8 f, qmi,qma, q2max |
919 | 47 | real*8 PI | 48 | real*8 PI |
920 | 49 | |||
921 | 50 | integer nb_proton(2), nb_neutron(2) | ||
922 | 51 | common/to_heavyion_pdg/ nb_proton, nb_neutron | ||
923 | 52 | double precision mass_ion(2) | ||
924 | 53 | common/to_heavyion_mass/mass_ion | ||
925 | 54 | |||
926 | 48 | data PI/3.14159265358979323846/ | 55 | data PI/3.14159265358979323846/ |
927 | 49 | 56 | ||
928 | 50 | data xin/0.938/ ! proton mass in GeV | 57 | data xin/0.938/ ! proton mass in GeV |
929 | 51 | 58 | ||
930 | 52 | alpha = .0072992701 | 59 | alpha = .0072992701 |
931 | 53 | qz = 0.71 | 60 | qz = 0.71 |
932 | 61 | |||
933 | 62 | if (nb_proton(beamid).ne.1.or.nb_neutron(beamid).ne.0)then | ||
934 | 63 | xin = mass_ion(beamid) | ||
935 | 64 | alpha = alpha * nb_proton(beamid) | ||
936 | 65 | endif | ||
937 | 54 | 66 | ||
938 | 55 | C // x = omega/E = (E-E')/E | 67 | C // x = omega/E = (E-E')/E |
939 | 56 | if (x.lt.1) then | 68 | if (x.lt.1) then |
940 | 57 | 69 | ||
941 | === modified file 'Template/LO/Source/PDF/pdg2pdf.f' | |||
942 | --- Template/LO/Source/PDF/pdg2pdf.f 2018-03-07 23:11:46 +0000 | |||
943 | +++ Template/LO/Source/PDF/pdg2pdf.f 2020-05-23 19:29:41 +0000 | |||
944 | @@ -58,12 +58,14 @@ | |||
945 | 58 | endif | 58 | endif |
946 | 59 | 59 | ||
947 | 60 | ipart=ipdg | 60 | ipart=ipdg |
952 | 61 | if(iabs(ipart).eq.21) ipart=0 | 61 | if(iabs(ipart).eq.21) then |
953 | 62 | if(iabs(ipart).eq.22) ipart=7 | 62 | ipart=0 |
954 | 63 | iporg=ipart | 63 | else if(iabs(ipart).eq.22) then |
955 | 64 | 64 | ipart=7 | |
956 | 65 | else if(iabs(ipart).eq.7) then | ||
957 | 66 | ipart=7 | ||
958 | 65 | c This will be called for any PDG code, but we only support up to 7 | 67 | c This will be called for any PDG code, but we only support up to 7 |
960 | 66 | if(iabs(ipart).gt.7)then | 68 | else if(iabs(ipart).gt.7)then |
961 | 67 | write(*,*) 'PDF not supported for pdg ',ipdg | 69 | write(*,*) 'PDF not supported for pdg ',ipdg |
962 | 68 | write(*,*) 'For lepton colliders, please set the lpp* '// | 70 | write(*,*) 'For lepton colliders, please set the lpp* '// |
963 | 69 | $ 'variables to 0 in the run_card' | 71 | $ 'variables to 0 in the run_card' |
964 | @@ -72,6 +74,7 @@ | |||
965 | 72 | stop 1 | 74 | stop 1 |
966 | 73 | endif | 75 | endif |
967 | 74 | 76 | ||
968 | 77 | iporg=ipart | ||
969 | 75 | ireuse = 0 | 78 | ireuse = 0 |
970 | 76 | do i=1,2 | 79 | do i=1,2 |
971 | 77 | c Check if result can be reused since any of last two calls | 80 | c Check if result can be reused since any of last two calls |
972 | @@ -131,7 +134,7 @@ | |||
973 | 131 | if(ih.eq.3) then !from the electron | 134 | if(ih.eq.3) then !from the electron |
974 | 132 | pdg2pdf=epa_electron(x,q2max) | 135 | pdg2pdf=epa_electron(x,q2max) |
975 | 133 | elseif(ih .eq. 2) then !from a proton without breaking | 136 | elseif(ih .eq. 2) then !from a proton without breaking |
977 | 134 | pdg2pdf=epa_proton(x,q2max) | 137 | pdg2pdf=epa_proton(x,q2max,beamid) |
978 | 135 | endif | 138 | endif |
979 | 136 | pdflast(iporg,ireuse)=pdg2pdf | 139 | pdflast(iporg,ireuse)=pdg2pdf |
980 | 137 | return | 140 | return |
981 | 138 | 141 | ||
982 | === modified file 'Template/LO/Source/PDF/pdg2pdf_lhapdf.f' | |||
983 | --- Template/LO/Source/PDF/pdg2pdf_lhapdf.f 2018-03-07 23:11:46 +0000 | |||
984 | +++ Template/LO/Source/PDF/pdg2pdf_lhapdf.f 2020-05-23 19:29:41 +0000 | |||
985 | @@ -57,6 +57,7 @@ | |||
986 | 57 | ipart=ipdg | 57 | ipart=ipdg |
987 | 58 | if(ipart.eq.21) ipart=0 | 58 | if(ipart.eq.21) ipart=0 |
988 | 59 | if(iabs(ipart).eq.22) ipart=7 | 59 | if(iabs(ipart).eq.22) ipart=7 |
989 | 60 | if(iabs(ipart).eq.7) ipart=7 | ||
990 | 60 | iporg=ipart | 61 | iporg=ipart |
991 | 61 | 62 | ||
992 | 62 | c This will be called for any PDG code, but we only support up to 7 | 63 | c This will be called for any PDG code, but we only support up to 7 |
993 | 63 | 64 | ||
994 | === modified file 'Template/LO/Source/PDF/pdg2pdf_lhapdf6.f' | |||
995 | --- Template/LO/Source/PDF/pdg2pdf_lhapdf6.f 2018-03-07 23:11:46 +0000 | |||
996 | +++ Template/LO/Source/PDF/pdg2pdf_lhapdf6.f 2020-05-23 19:29:41 +0000 | |||
997 | @@ -24,7 +24,7 @@ | |||
998 | 24 | integer i,j,ihlast(20),ipart,iporg,ireuse,imemlast(20),iset,imem | 24 | integer i,j,ihlast(20),ipart,iporg,ireuse,imemlast(20),iset,imem |
999 | 25 | & ,i_replace,ii,ipartlast(20) | 25 | & ,i_replace,ii,ipartlast(20) |
1000 | 26 | double precision xlast(20),xmulast(20),pdflast(-7:7,20) | 26 | double precision xlast(20),xmulast(20),pdflast(-7:7,20) |
1002 | 27 | double precision epa_proton | 27 | double precision epa_proton, epa_electron |
1003 | 28 | save ihlast,xlast,xmulast,pdflast,imemlast,ipartlast | 28 | save ihlast,xlast,xmulast,pdflast,imemlast,ipartlast |
1004 | 29 | data ihlast/20*-99/ | 29 | data ihlast/20*-99/ |
1005 | 30 | data ipartlast/20*-99/ | 30 | data ipartlast/20*-99/ |
1006 | @@ -54,12 +54,14 @@ | |||
1007 | 54 | endif | 54 | endif |
1008 | 55 | 55 | ||
1009 | 56 | ipart=ipdg | 56 | ipart=ipdg |
1014 | 57 | if(iabs(ipart).eq.21) ipart=0 | 57 | if(iabs(ipart).eq.21) then |
1015 | 58 | if(iabs(ipart).eq.22) ipart=7 | 58 | ipart=0 |
1016 | 59 | iporg=ipart | 59 | else if(iabs(ipart).eq.22) then |
1017 | 60 | 60 | ipart=7 | |
1018 | 61 | else if (iabs(ipart).eq.7) then | ||
1019 | 62 | ipart=7 | ||
1020 | 61 | c This will be called for any PDG code, but we only support up to 7 | 63 | c This will be called for any PDG code, but we only support up to 7 |
1022 | 62 | if(iabs(ipart).gt.7)then | 64 | else if(iabs(ipart).gt.7)then |
1023 | 63 | write(*,*) 'PDF not supported for pdg ',ipdg | 65 | write(*,*) 'PDF not supported for pdg ',ipdg |
1024 | 64 | write(*,*) 'For lepton colliders, please set the lpp* '// | 66 | write(*,*) 'For lepton colliders, please set the lpp* '// |
1025 | 65 | $ 'variables to 0 in the run_card' | 67 | $ 'variables to 0 in the run_card' |
1026 | @@ -68,6 +70,7 @@ | |||
1027 | 68 | stop 1 | 70 | stop 1 |
1028 | 69 | endif | 71 | endif |
1029 | 70 | 72 | ||
1030 | 73 | iporg=ipart | ||
1031 | 71 | c Determine the iset used in lhapdf | 74 | c Determine the iset used in lhapdf |
1032 | 72 | call getnset(iset) | 75 | call getnset(iset) |
1033 | 73 | if (iset.ne.1) then | 76 | if (iset.ne.1) then |
1034 | @@ -136,6 +139,8 @@ | |||
1035 | 136 | pdg2pdf = get_ion_pdf(pdflast(-7, i_replace), ipart, nb_proton(beamid), nb_neutron(beamid)) | 139 | pdg2pdf = get_ion_pdf(pdflast(-7, i_replace), ipart, nb_proton(beamid), nb_neutron(beamid)) |
1036 | 137 | endif | 140 | endif |
1037 | 138 | pdg2pdf=pdg2pdf/x | 141 | pdg2pdf=pdg2pdf/x |
1038 | 142 | else if(ih.eq.3) then !from the electron | ||
1039 | 143 | pdg2pdf=epa_electron(x,xmu*xmu) | ||
1040 | 139 | else if(ih.eq.2) then ! photon from a proton without breaking | 144 | else if(ih.eq.2) then ! photon from a proton without breaking |
1041 | 140 | pdg2pdf = epa_proton(x,xmu*xmu) | 145 | pdg2pdf = epa_proton(x,xmu*xmu) |
1042 | 141 | else | 146 | else |
1043 | 142 | 147 | ||
1044 | === modified file 'Template/LO/Source/dsample.f' | |||
1045 | --- Template/LO/Source/dsample.f 2017-09-24 21:24:55 +0000 | |||
1046 | +++ Template/LO/Source/dsample.f 2020-05-23 19:29:41 +0000 | |||
1047 | @@ -316,6 +316,7 @@ | |||
1048 | 316 | fx =0d0 | 316 | fx =0d0 |
1049 | 317 | wgt=0d0 | 317 | wgt=0d0 |
1050 | 318 | endif | 318 | endif |
1051 | 319 | |||
1052 | 319 | if (nzoom .le. 0) then | 320 | if (nzoom .le. 0) then |
1053 | 320 | call sample_put_point(wgt,x(1),iter,ipole,itmin) !Store result | 321 | call sample_put_point(wgt,x(1),iter,ipole,itmin) !Store result |
1054 | 321 | else | 322 | else |
1055 | @@ -705,6 +706,7 @@ | |||
1056 | 705 | tmean = 0d0 | 706 | tmean = 0d0 |
1057 | 706 | trmean = 0d0 | 707 | trmean = 0d0 |
1058 | 707 | tsigma = 0d0 | 708 | tsigma = 0d0 |
1059 | 709 | nb_pass_cuts = 0 | ||
1060 | 708 | kn = 0 | 710 | kn = 0 |
1061 | 709 | cur_it = 1 | 711 | cur_it = 1 |
1062 | 710 | do j=1,ng | 712 | do j=1,ng |
1063 | @@ -1029,7 +1031,7 @@ | |||
1064 | 1029 | 1031 | ||
1065 | 1030 | integer i,j | 1032 | integer i,j |
1066 | 1031 | 1033 | ||
1068 | 1032 | open(26, file='ftn26',status='unknown') | 1034 | open(26, file=name, status='unknown') |
1069 | 1033 | write(26,fmt='(4f21.17)') ((grid(2,i,j),i=1,ng),j=1,invar) | 1035 | write(26,fmt='(4f21.17)') ((grid(2,i,j),i=1,ng),j=1,invar) |
1070 | 1034 | write(26,*) twgt, force_max_wgt | 1036 | write(26,*) twgt, force_max_wgt |
1071 | 1035 | c write(26,fmt='(4f21.16)') (alpha(i),i=1,maxconfigs) | 1037 | c write(26,fmt='(4f21.16)') (alpha(i),i=1,maxconfigs) |
1072 | @@ -1516,7 +1518,7 @@ | |||
1073 | 1516 | c | 1518 | c |
1074 | 1517 | include 'genps.inc' | 1519 | include 'genps.inc' |
1075 | 1518 | integer max_events | 1520 | integer max_events |
1077 | 1519 | parameter (max_events=500000) !Maximum # events before get non_zero | 1521 | parameter (max_events=5000000) !Maximum # events before get non_zero |
1078 | 1520 | c | 1522 | c |
1079 | 1521 | c Arguments | 1523 | c Arguments |
1080 | 1522 | c | 1524 | c |
1081 | @@ -1756,6 +1758,11 @@ | |||
1082 | 1756 | if (kn .ge. max_events .and. non_zero .le. 5) then | 1758 | if (kn .ge. max_events .and. non_zero .le. 5) then |
1083 | 1757 | call none_pass(max_events) | 1759 | call none_pass(max_events) |
1084 | 1758 | endif | 1760 | endif |
1085 | 1761 | if (iteration.eq.1) then | ||
1086 | 1762 | if (nb_pass_cuts.ge.1000 .and. non_zero.eq.0) then | ||
1087 | 1763 | call none_pass(1000) | ||
1088 | 1764 | endif | ||
1089 | 1765 | endif | ||
1090 | 1759 | if (non_zero .ge. events .or. (kn .gt. 200*events .and. | 1766 | if (non_zero .ge. events .or. (kn .gt. 200*events .and. |
1091 | 1760 | $ non_zero .gt. 5)) then | 1767 | $ non_zero .gt. 5)) then |
1092 | 1761 | 1768 | ||
1093 | @@ -2267,8 +2274,20 @@ | |||
1094 | 2267 | c---- | 2274 | c---- |
1095 | 2268 | c Begin Code | 2275 | c Begin Code |
1096 | 2269 | c---- | 2276 | c---- |
1099 | 2270 | write(*,*) 'No points passed cuts!' | 2277 | if (1000.eq.max_events) then |
1100 | 2271 | write(*,*) 'Loosen cuts or increase max_events',max_events | 2278 | write(*,*) nb_pass_cuts, |
1101 | 2279 | & ' points passed the cut but all returned zero' | ||
1102 | 2280 | write(*,*) 'therefore considering this contribution as zero' | ||
1103 | 2281 | else if (nb_pass_cuts.gt.0.and.nb_pass_cuts.lt.1000)then | ||
1104 | 2282 | write(*,*) 'only', nb_pass_cuts, | ||
1105 | 2283 | & ' points passed the cut and they all returned zero' | ||
1106 | 2284 | write(*,*) 'therefore considering this contribution as zero' | ||
1107 | 2285 | write(*,*) 'Loosen cuts or increase max_events if you believe this is not zero' | ||
1108 | 2286 | else | ||
1109 | 2287 | write(*,*) 'No points passed cuts!' | ||
1110 | 2288 | write(*,*) 'Loosen cuts or increase max_events',max_events | ||
1111 | 2289 | endif | ||
1112 | 2290 | |||
1113 | 2272 | c open(unit=22,file=result_file,status='old',access='append', | 2291 | c open(unit=22,file=result_file,status='old',access='append', |
1114 | 2273 | c & err=23) | 2292 | c & err=23) |
1115 | 2274 | c write(22,222) 'Iteration',0,'Mean: ',0d0, | 2293 | c write(22,222) 'Iteration',0,'Mean: ',0d0, |
1116 | @@ -2540,6 +2559,7 @@ | |||
1117 | 2540 | 2559 | ||
1118 | 2541 | write(*,*) "RESET CUMULATIVE VARIABLE" | 2560 | write(*,*) "RESET CUMULATIVE VARIABLE" |
1119 | 2542 | non_zero = 0 | 2561 | non_zero = 0 |
1120 | 2562 | nb_pass_cuts = 0 | ||
1121 | 2543 | do j=1,maxinvar | 2563 | do j=1,maxinvar |
1122 | 2544 | do i=1,ng -1 | 2564 | do i=1,ng -1 |
1123 | 2545 | inon_zero = 0 | 2565 | inon_zero = 0 |
1124 | 2546 | 2566 | ||
1125 | === modified file 'Template/LO/Source/genps.inc' | |||
1126 | --- Template/LO/Source/genps.inc 2016-04-02 14:23:21 +0000 | |||
1127 | +++ Template/LO/Source/genps.inc 2020-05-23 19:29:41 +0000 | |||
1128 | @@ -38,3 +38,8 @@ | |||
1129 | 38 | double precision hel_jacobian | 38 | double precision hel_jacobian |
1130 | 39 | INTEGER HEL_PICKED | 39 | INTEGER HEL_PICKED |
1131 | 40 | COMMON/HEL_PICKED/HEL_PICKED,hel_jacobian | 40 | COMMON/HEL_PICKED/HEL_PICKED,hel_jacobian |
1132 | 41 | c********************************************************************************** | ||
1133 | 42 | c parameters to control is zero-cross section is due to PS or matrix-element | ||
1134 | 43 | c********************************************************************************** | ||
1135 | 44 | integer nb_pass_cuts | ||
1136 | 45 | common/cut_efficiency/nb_pass_cuts | ||
1137 | 41 | \ No newline at end of file | 46 | \ No newline at end of file |
1138 | 42 | 47 | ||
1139 | === modified file 'Template/LO/Source/run.inc' | |||
1140 | --- Template/LO/Source/run.inc 2018-02-01 22:30:56 +0000 | |||
1141 | +++ Template/LO/Source/run.inc 2020-05-23 19:29:41 +0000 | |||
1142 | @@ -16,6 +16,9 @@ | |||
1143 | 16 | integer lpp(2) | 16 | integer lpp(2) |
1144 | 17 | double precision ebeam(2), xbk(2),q2fact(2) | 17 | double precision ebeam(2), xbk(2),q2fact(2) |
1145 | 18 | common/to_collider/ ebeam , xbk ,q2fact, lpp | 18 | common/to_collider/ ebeam , xbk ,q2fact, lpp |
1146 | 19 | |||
1147 | 20 | integer frame_id | ||
1148 | 21 | common/to_frame_me/frame_id | ||
1149 | 19 | c | 22 | c |
1150 | 20 | c Number of events | 23 | c Number of events |
1151 | 21 | c | 24 | c |
1152 | @@ -91,4 +94,7 @@ | |||
1153 | 91 | double precision mxxmin4pdg(0:25) | 94 | double precision mxxmin4pdg(0:25) |
1154 | 92 | logical mxxpart_antipart(1:25) | 95 | logical mxxpart_antipart(1:25) |
1155 | 93 | common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg, | 96 | common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg, |
1156 | 94 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
1157 | 95 | \ No newline at end of file | 97 | \ No newline at end of file |
1158 | 98 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
1159 | 99 | |||
1160 | 100 | double precision small_width_treatment | ||
1161 | 101 | common/narrow_width/small_width_treatment | ||
1162 | 96 | \ No newline at end of file | 102 | \ No newline at end of file |
1163 | 97 | 103 | ||
1164 | === modified file 'Template/LO/Source/transpole.f' | |||
1165 | --- Template/LO/Source/transpole.f 2016-06-15 22:46:42 +0000 | |||
1166 | +++ Template/LO/Source/transpole.f 2020-05-23 19:29:41 +0000 | |||
1167 | @@ -28,13 +28,24 @@ | |||
1168 | 28 | double precision z,zmin,zmax,xmin,xmax,ez | 28 | double precision z,zmin,zmax,xmin,xmax,ez |
1169 | 29 | double precision pole1,width1,x,xc | 29 | double precision pole1,width1,x,xc |
1170 | 30 | double precision a,b | 30 | double precision a,b |
1171 | 31 | c | ||
1172 | 32 | c small width treatment | ||
1173 | 33 | c | ||
1174 | 34 | double precision small_width_treatment | ||
1175 | 35 | common/narrow_width/small_width_treatment | ||
1176 | 31 | c----- | 36 | c----- |
1177 | 32 | c Begin Code | 37 | c Begin Code |
1178 | 33 | c----- | 38 | c----- |
1179 | 34 | pole=pole1 | 39 | pole=pole1 |
1180 | 35 | width=width1 | 40 | width=width1 |
1181 | 41 | |||
1182 | 36 | x = x1 | 42 | x = x1 |
1183 | 37 | if (pole .gt. 0d0) then | 43 | if (pole .gt. 0d0) then |
1184 | 44 | if (width.lt.pole*small_width_treatment)then | ||
1185 | 45 | width = pole * small_width_treatment | ||
1186 | 46 | jac = jac * width/width1 | ||
1187 | 47 | endif | ||
1188 | 48 | |||
1189 | 38 | zmin = atan((-pole)/width)/width | 49 | zmin = atan((-pole)/width)/width |
1190 | 39 | zmax = atan((1d0-pole)/width)/width | 50 | zmax = atan((1d0-pole)/width)/width |
1191 | 40 | if (x .gt. del .and. x .lt. 1d0-del) then | 51 | if (x .gt. del .and. x .lt. 1d0-del) then |
1192 | @@ -175,7 +186,11 @@ | |||
1193 | 175 | c | 186 | c |
1194 | 176 | double precision pole1,width1,y1,jac | 187 | double precision pole1,width1,y1,jac |
1195 | 177 | real*8 x | 188 | real*8 x |
1197 | 178 | 189 | c | |
1198 | 190 | c small width treatment | ||
1199 | 191 | c | ||
1200 | 192 | double precision small_width_treatment | ||
1201 | 193 | common/narrow_width/small_width_treatment | ||
1202 | 179 | c | 194 | c |
1203 | 180 | c Local | 195 | c Local |
1204 | 181 | c | 196 | c |
1205 | @@ -191,6 +206,10 @@ | |||
1206 | 191 | width=width1 | 206 | width=width1 |
1207 | 192 | y = y1 | 207 | y = y1 |
1208 | 193 | if (pole .gt. 0d0) then !BW | 208 | if (pole .gt. 0d0) then !BW |
1209 | 209 | if (width.lt.pole*small_width_treatment)then | ||
1210 | 210 | width = pole * small_width_treatment | ||
1211 | 211 | jac = jac * width/width1 | ||
1212 | 212 | endif | ||
1213 | 194 | zmin = atan((-pole)/width)/width | 213 | zmin = atan((-pole)/width)/width |
1214 | 195 | zmax = atan((1d0-pole)/width)/width | 214 | zmax = atan((1d0-pole)/width)/width |
1215 | 196 | z = atan((y-pole)/width)/width | 215 | z = atan((y-pole)/width)/width |
1216 | 197 | 216 | ||
1217 | === modified file 'Template/LO/SubProcesses/cuts.f' | |||
1218 | --- Template/LO/SubProcesses/cuts.f 2018-01-11 16:16:25 +0000 | |||
1219 | +++ Template/LO/SubProcesses/cuts.f 2020-05-23 19:29:41 +0000 | |||
1220 | @@ -1592,6 +1592,7 @@ | |||
1221 | 1592 | m0d = 0.0 | 1592 | m0d = 0.0 |
1222 | 1593 | m0c = 1.5 | 1593 | m0c = 1.5 |
1223 | 1594 | m0s = 0.0 | 1594 | m0s = 0.0 |
1224 | 1595 | m0b = 4.7 | ||
1225 | 1595 | m0t = 172.5 | 1596 | m0t = 172.5 |
1226 | 1596 | m0w = 80.4 | 1597 | m0w = 80.4 |
1227 | 1597 | m0z = 91.188 | 1598 | m0z = 91.188 |
1228 | 1598 | 1599 | ||
1229 | === modified file 'Template/LO/SubProcesses/dummy_fct.f' | |||
1230 | --- Template/LO/SubProcesses/dummy_fct.f 2018-01-11 16:16:25 +0000 | |||
1231 | +++ Template/LO/SubProcesses/dummy_fct.f 2020-05-23 19:29:41 +0000 | |||
1232 | @@ -86,3 +86,13 @@ | |||
1233 | 86 | shat = x(1)*x(2)*ebeam(1)*ebeam(2) | 86 | shat = x(1)*x(2)*ebeam(1)*ebeam(2) |
1234 | 87 | return | 87 | return |
1235 | 88 | end | 88 | end |
1236 | 89 | |||
1237 | 90 | |||
1238 | 91 | logical function dummy_boostframe() | ||
1239 | 92 | implicit none | ||
1240 | 93 | c | ||
1241 | 94 | c | ||
1242 | 95 | dummy_boostframe = .false. | ||
1243 | 96 | return | ||
1244 | 97 | end | ||
1245 | 98 | |||
1246 | 89 | 99 | ||
1247 | === modified file 'Template/LO/SubProcesses/genps.f' | |||
1248 | --- Template/LO/SubProcesses/genps.f 2018-06-27 09:03:22 +0000 | |||
1249 | +++ Template/LO/SubProcesses/genps.f 2020-05-23 19:29:41 +0000 | |||
1250 | @@ -185,7 +185,8 @@ | |||
1251 | 185 | c External function | 185 | c External function |
1252 | 186 | double precision SumDot | 186 | double precision SumDot |
1253 | 187 | external SumDot | 187 | external SumDot |
1255 | 188 | 188 | logical dummy_boostframe | |
1256 | 189 | external dummy_boostframe | ||
1257 | 189 | c | 190 | c |
1258 | 190 | c data | 191 | c data |
1259 | 191 | c | 192 | c |
1260 | @@ -304,8 +305,12 @@ | |||
1261 | 304 | c First Generate Momentum for initial state particles | 305 | c First Generate Momentum for initial state particles |
1262 | 305 | c | 306 | c |
1263 | 306 | if (lpp(1).eq.9.or.lpp(2).eq.9)then | 307 | if (lpp(1).eq.9.or.lpp(2).eq.9)then |
1266 | 307 | p(:,1) = pi1(:) | 308 | if (dummy_boostframe())then |
1267 | 308 | p(:,2) = pi2(:) | 309 | call mom2cx(m(-nbranch),m(1),m(2),1d0,0d0,p(0,1),p(0,2)) |
1268 | 310 | else | ||
1269 | 311 | p(:,1) = pi1(:) | ||
1270 | 312 | p(:,2) = pi2(:) | ||
1271 | 313 | endif | ||
1272 | 309 | else if(nincoming.eq.2) then | 314 | else if(nincoming.eq.2) then |
1273 | 310 | call mom2cx(m(-nbranch),m(1),m(2),1d0,0d0,p(0,1),p(0,2)) | 315 | call mom2cx(m(-nbranch),m(1),m(2),1d0,0d0,p(0,1),p(0,2)) |
1274 | 311 | else | 316 | else |
1275 | @@ -840,7 +845,7 @@ | |||
1276 | 840 | m12 = m(itree(2,ibranch))**2 | 845 | m12 = m(itree(2,ibranch))**2 |
1277 | 841 | mn2 = m(ibranch-1)**2 | 846 | mn2 = m(ibranch-1)**2 |
1278 | 842 | c write(*,*) 'Enertering yminmax',sqrt(s1),sqrt(m12),sqrt(mn2) | 847 | c write(*,*) 'Enertering yminmax',sqrt(s1),sqrt(m12),sqrt(mn2) |
1280 | 843 | call yminmax(s1,t,m12,ma2,mb2,mn2,tmin,tmax) | 848 | call yminmax(s1,0d0,m12,ma2,mb2,mn2,tmin,tmax) |
1281 | 844 | c | 849 | c |
1282 | 845 | c Call for 0<x<1 | 850 | c Call for 0<x<1 |
1283 | 846 | c | 851 | c |
1284 | @@ -1114,6 +1119,7 @@ | |||
1285 | 1114 | C This is the G function from Particle Kinematics by | 1119 | C This is the G function from Particle Kinematics by |
1286 | 1115 | C E. Byckling and K. Kajantie, Chapter 4 p. 91 eqs 5.28 | 1120 | C E. Byckling and K. Kajantie, Chapter 4 p. 91 eqs 5.28 |
1287 | 1116 | C It is used to determine physical limits for Y based on inputs | 1121 | C It is used to determine physical limits for Y based on inputs |
1288 | 1122 | C Y is not used in this formula (called with dummy value) | ||
1289 | 1117 | C************************************************************************** | 1123 | C************************************************************************** |
1290 | 1118 | implicit none | 1124 | implicit none |
1291 | 1119 | c | 1125 | c |
1292 | @@ -1258,5 +1264,47 @@ | |||
1293 | 1258 | END | 1264 | END |
1294 | 1259 | 1265 | ||
1295 | 1260 | 1266 | ||
1296 | 1267 | C ----------------------------------------- | ||
1297 | 1268 | C Subroutine to return momenta in a dedicated frame | ||
1298 | 1269 | C frame_id is the tag of the particle to put at rest | ||
1299 | 1270 | C frame_id follow the convention of cluster.f (sum 2**(N-1)) | ||
1300 | 1271 | C ----------------------------------------- | ||
1301 | 1272 | |||
1302 | 1273 | subroutine boost_to_frame(P1, frame_id, P2) | ||
1303 | 1274 | |||
1304 | 1275 | implicit none | ||
1305 | 1276 | |||
1306 | 1277 | include 'nexternal.inc' | ||
1307 | 1278 | |||
1308 | 1279 | DOUBLE PRECISION P1(0:3,NEXTERNAL) | ||
1309 | 1280 | DOUBLE PRECISION P2(0:3,NEXTERNAL) | ||
1310 | 1281 | DOUBLE PRECISION PBOOST(0:3) | ||
1311 | 1282 | integer frame_id | ||
1312 | 1283 | |||
1313 | 1284 | integer ids(nexternal) | ||
1314 | 1285 | integer i,j | ||
1315 | 1286 | |||
1316 | 1287 | c uncompress | ||
1317 | 1288 | call mapid(frame_id, ids) | ||
1318 | 1289 | pboost(:) = 0d0 | ||
1319 | 1290 | p2(:,:) = 0d0 | ||
1320 | 1291 | c find the boost momenta --sum of particles-- | ||
1321 | 1292 | do i=1,nexternal | ||
1322 | 1293 | if (ids(i).eq.1)then | ||
1323 | 1294 | do j=0,3 | ||
1324 | 1295 | Pboost(j) = Pboost(j) + P1(j,i) | ||
1325 | 1296 | enddo | ||
1326 | 1297 | endif | ||
1327 | 1298 | enddo | ||
1328 | 1299 | do j=1,3 | ||
1329 | 1300 | Pboost(j) = -1 * Pboost(j) | ||
1330 | 1301 | enddo | ||
1331 | 1302 | do i=1, nexternal | ||
1332 | 1303 | call boostx(p1(0,i), pboost, p2(0,i)) | ||
1333 | 1304 | enddo | ||
1334 | 1305 | return | ||
1335 | 1306 | end | ||
1336 | 1307 | |||
1337 | 1308 | |||
1338 | 1261 | 1309 | ||
1339 | 1262 | 1310 | ||
1340 | 1263 | 1311 | ||
1341 | === modified file 'Template/LO/SubProcesses/myamp.f' | |||
1342 | --- Template/LO/SubProcesses/myamp.f 2016-12-17 16:26:56 +0000 | |||
1343 | +++ Template/LO/SubProcesses/myamp.f 2020-05-23 19:29:41 +0000 | |||
1344 | @@ -1,91 +1,3 @@ | |||
1345 | 1 | double precision function testamp(p) | ||
1346 | 2 | c***************************************************************************** | ||
1347 | 3 | c Approximates matrix element by propagators | ||
1348 | 4 | c***************************************************************************** | ||
1349 | 5 | implicit none | ||
1350 | 6 | c | ||
1351 | 7 | c Constants | ||
1352 | 8 | c | ||
1353 | 9 | include 'genps.inc' | ||
1354 | 10 | include 'maxconfigs.inc' | ||
1355 | 11 | include 'nexternal.inc' | ||
1356 | 12 | double precision zero | ||
1357 | 13 | parameter (zero = 0d0) | ||
1358 | 14 | c | ||
1359 | 15 | c Arguments | ||
1360 | 16 | c | ||
1361 | 17 | double precision p(0:3,nexternal) | ||
1362 | 18 | c integer iconfig | ||
1363 | 19 | c | ||
1364 | 20 | c Local | ||
1365 | 21 | c | ||
1366 | 22 | double precision xp(0:3,-nexternal:nexternal) | ||
1367 | 23 | double precision mpole(-nexternal:0),shat,tsgn | ||
1368 | 24 | integer i,j,iconfig | ||
1369 | 25 | |||
1370 | 26 | double precision prmass(-nexternal:0,lmaxconfigs) | ||
1371 | 27 | double precision prwidth(-nexternal:0,lmaxconfigs) | ||
1372 | 28 | integer pow(-nexternal:0,lmaxconfigs) | ||
1373 | 29 | logical first_time | ||
1374 | 30 | c | ||
1375 | 31 | c Global | ||
1376 | 32 | c | ||
1377 | 33 | integer iforest(2,-max_branch:-1,lmaxconfigs) | ||
1378 | 34 | common/to_forest/ iforest | ||
1379 | 35 | integer mapconfig(0:lmaxconfigs), this_config | ||
1380 | 36 | common/to_mconfigs/mapconfig, this_config | ||
1381 | 37 | |||
1382 | 38 | include 'coupl.inc' | ||
1383 | 39 | c | ||
1384 | 40 | c External | ||
1385 | 41 | c | ||
1386 | 42 | double precision dot | ||
1387 | 43 | |||
1388 | 44 | save prmass,prwidth,pow | ||
1389 | 45 | data first_time /.true./ | ||
1390 | 46 | c----- | ||
1391 | 47 | c Begin Code | ||
1392 | 48 | c----- | ||
1393 | 49 | iconfig = this_config | ||
1394 | 50 | if (first_time) then | ||
1395 | 51 | c include 'props.inc' | ||
1396 | 52 | first_time=.false. | ||
1397 | 53 | endif | ||
1398 | 54 | |||
1399 | 55 | do i=1,nexternal | ||
1400 | 56 | mpole(-i)=0d0 | ||
1401 | 57 | do j=0,3 | ||
1402 | 58 | xp(j,i)=p(j,i) | ||
1403 | 59 | enddo | ||
1404 | 60 | enddo | ||
1405 | 61 | c mpole(-3) = 174**2 | ||
1406 | 62 | c shat = dot(p(0,1),p(0,2))/(1800)**2 | ||
1407 | 63 | shat = dot(p(0,1),p(0,2))/(10)**2 | ||
1408 | 64 | c shat = 1d0 | ||
1409 | 65 | testamp = 1d0 | ||
1410 | 66 | tsgn = +1d0 | ||
1411 | 67 | do i=-1,-(nexternal-3),-1 !Find all the propagotors | ||
1412 | 68 | if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0 | ||
1413 | 69 | do j=0,3 | ||
1414 | 70 | xp(j,i) = xp(j,iforest(1,i,iconfig)) | ||
1415 | 71 | $ +tsgn*xp(j,iforest(2,i,iconfig)) | ||
1416 | 72 | enddo | ||
1417 | 73 | if (prwidth(i,iconfig) .ne. 0d0 .and. .false.) then | ||
1418 | 74 | testamp=testamp/((dot(xp(0,i),xp(0,i)) | ||
1419 | 75 | $ -prmass(i,iconfig)**2)**2 | ||
1420 | 76 | $ -(prmass(i,iconfig)*prwidth(i,iconfig))**2) | ||
1421 | 77 | else | ||
1422 | 78 | testamp = testamp/((dot(xp(0,i),xp(0,i)) - | ||
1423 | 79 | $ prmass(i,iconfig)**2) | ||
1424 | 80 | $ **(pow(i,iconfig))) | ||
1425 | 81 | endif | ||
1426 | 82 | testamp=testamp*shat**(pow(i,iconfig)) | ||
1427 | 83 | c write(*,*) i,iconfig,pow(i,iconfig),prmass(i,iconfig) | ||
1428 | 84 | enddo | ||
1429 | 85 | c testamp = 1d0/dot(xp(0,-1),xp(0,-1)) | ||
1430 | 86 | testamp=abs(testamp) | ||
1431 | 87 | c testamp = 1d0 | ||
1432 | 88 | end | ||
1433 | 89 | 1 | ||
1434 | 90 | logical function cut_bw(p) | 2 | logical function cut_bw(p) |
1435 | 91 | c***************************************************************************** | 3 | c***************************************************************************** |
1436 | @@ -114,6 +26,7 @@ | |||
1437 | 114 | 26 | ||
1438 | 115 | double precision prmass(-nexternal:0,lmaxconfigs) | 27 | double precision prmass(-nexternal:0,lmaxconfigs) |
1439 | 116 | double precision prwidth(-nexternal:0,lmaxconfigs) | 28 | double precision prwidth(-nexternal:0,lmaxconfigs) |
1440 | 29 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
1441 | 117 | integer pow(-nexternal:0,lmaxconfigs) | 30 | integer pow(-nexternal:0,lmaxconfigs) |
1442 | 118 | logical first_time, onshell | 31 | logical first_time, onshell |
1443 | 119 | double precision xmass | 32 | double precision xmass |
1444 | @@ -152,13 +65,14 @@ | |||
1445 | 152 | c | 65 | c |
1446 | 153 | double precision dot | 66 | double precision dot |
1447 | 154 | 67 | ||
1449 | 155 | save prmass,prwidth,pow | 68 | save prmass,prwidth,pow,prwidth_tmp |
1450 | 156 | data first_time /.true./ | 69 | data first_time /.true./ |
1451 | 157 | c----- | 70 | c----- |
1452 | 158 | c Begin Code | 71 | c Begin Code |
1453 | 159 | c----- | 72 | c----- |
1454 | 160 | cut_bw = .false. !Default is we passed the cut | 73 | cut_bw = .false. !Default is we passed the cut |
1455 | 161 | iconfig = this_config | 74 | iconfig = this_config |
1456 | 75 | |||
1457 | 162 | if (first_time) then | 76 | if (first_time) then |
1458 | 163 | include 'props.inc' | 77 | include 'props.inc' |
1459 | 164 | nbw = 0 | 78 | nbw = 0 |
1460 | @@ -209,10 +123,12 @@ | |||
1461 | 209 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) | 123 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) |
1462 | 210 | c | 124 | c |
1463 | 211 | c Here we set if the BW is "on-shell" for LesHouches | 125 | c Here we set if the BW is "on-shell" for LesHouches |
1465 | 212 | c | 126 | c |
1466 | 127 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
1467 | 128 | |||
1468 | 213 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 129 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
1471 | 214 | $ bwcutoff*prwidth(i,iconfig).and. | 130 | $ bwcutoff*prwidth_tmp(i,iconfig).and. |
1472 | 215 | $ (prwidth(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. | 131 | $ (prwidth_tmp(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. |
1473 | 216 | $ gForceBW(i,iconfig).eq.1)) | 132 | $ gForceBW(i,iconfig).eq.1)) |
1474 | 217 | if(onshell)then | 133 | if(onshell)then |
1475 | 218 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) | 134 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) |
1476 | @@ -264,10 +180,10 @@ | |||
1477 | 264 | c For decay-chain syntax use BWcutoff here too (22/12/14) | 180 | c For decay-chain syntax use BWcutoff here too (22/12/14) |
1478 | 265 | if (gForceBW(i, iconfig).eq.1) then | 181 | if (gForceBW(i, iconfig).eq.1) then |
1479 | 266 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 182 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
1481 | 267 | $ bwcutoff*prwidth(i,iconfig)) | 183 | $ bwcutoff*prwidth_tmp(i,iconfig)) |
1482 | 268 | else | 184 | else |
1483 | 269 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 185 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
1485 | 270 | $ 5d0*prwidth(i,iconfig)) | 186 | $ 5d0*prwidth_tmp(i,iconfig)) |
1486 | 271 | endif | 187 | endif |
1487 | 272 | 188 | ||
1488 | 273 | if (onshell .and. (lbw(nbw).eq. 2) .or. | 189 | if (onshell .and. (lbw(nbw).eq. 2) .or. |
1489 | @@ -313,6 +229,7 @@ | |||
1490 | 313 | 229 | ||
1491 | 314 | double precision prmass(-nexternal:0,lmaxconfigs) | 230 | double precision prmass(-nexternal:0,lmaxconfigs) |
1492 | 315 | double precision prwidth(-nexternal:0,lmaxconfigs) | 231 | double precision prwidth(-nexternal:0,lmaxconfigs) |
1493 | 232 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
1494 | 316 | integer pow(-nexternal:0,lmaxconfigs) | 233 | integer pow(-nexternal:0,lmaxconfigs) |
1495 | 317 | 234 | ||
1496 | 318 | integer idup(nexternal,maxproc,maxsproc) | 235 | integer idup(nexternal,maxproc,maxsproc) |
1497 | @@ -382,11 +299,21 @@ | |||
1498 | 382 | 299 | ||
1499 | 383 | c----- | 300 | c----- |
1500 | 384 | c Begin Code | 301 | c Begin Code |
1502 | 385 | c----- | 302 | c----- |
1503 | 303 | iconfig = this_config | ||
1504 | 304 | c needs to be initialise to avoid segfault | ||
1505 | 305 | do i = -nexternal,-1 | ||
1506 | 306 | prwidth(i,iconfig) = 0 | ||
1507 | 307 | prmass(i,iconfig) =0 | ||
1508 | 308 | enddo | ||
1509 | 386 | include 'props.inc' | 309 | include 'props.inc' |
1510 | 387 | c etmin = 10 | 310 | c etmin = 10 |
1511 | 388 | nt = 0 | 311 | nt = 0 |
1513 | 389 | iconfig = this_config | 312 | do i = -nexternal,-1 |
1514 | 313 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
1515 | 314 | enddo | ||
1516 | 315 | |||
1517 | 316 | |||
1518 | 390 | mtot = 0d0 | 317 | mtot = 0d0 |
1519 | 391 | etot = 0d0 !Total energy needed | 318 | etot = 0d0 !Total energy needed |
1520 | 392 | spmass = 0d0 !Keep track of BW masses for shat | 319 | spmass = 0d0 !Keep track of BW masses for shat |
1521 | @@ -423,7 +350,7 @@ | |||
1522 | 423 | c Look for identical particles to map radiation processes | 350 | c Look for identical particles to map radiation processes |
1523 | 424 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), | 351 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), |
1524 | 425 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), | 352 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), |
1526 | 426 | $ prwidth(-nexternal,iconfig)) | 353 | $ prwidth_tmp(-nexternal,iconfig)) |
1527 | 427 | 354 | ||
1528 | 428 | c Start loop over propagators | 355 | c Start loop over propagators |
1529 | 429 | do i=-1,-(nexternal-3),-1 | 356 | do i=-1,-(nexternal-3),-1 |
1530 | @@ -446,15 +373,15 @@ | |||
1531 | 446 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) | 373 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) |
1532 | 447 | endif | 374 | endif |
1533 | 448 | c write(*,*) 'iconfig,i',iconfig,i | 375 | c write(*,*) 'iconfig,i',iconfig,i |
1536 | 449 | c write(*,*) prwidth(i,iconfig),prmass(i,iconfig) | 376 | c write(*,*) prwidth_tmp(i,iconfig),prmass(i,iconfig) |
1537 | 450 | if (prwidth(i,iconfig) .gt. 0 ) then | 377 | if (prwidth_tmp(i,iconfig) .gt. 0 ) then |
1538 | 451 | nbw=nbw+1 | 378 | nbw=nbw+1 |
1539 | 452 | c JA 6/8/2011 Set xe(i) for resonances | 379 | c JA 6/8/2011 Set xe(i) for resonances |
1540 | 453 | if (gforcebw(i,iconfig).eq.1) then | 380 | if (gforcebw(i,iconfig).eq.1) then |
1542 | 454 | xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth(i,iconfig)) | 381 | xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth_tmp(i,iconfig)) |
1543 | 455 | bwcut_for_PS(i) = bwcutoff | 382 | bwcut_for_PS(i) = bwcutoff |
1544 | 456 | else if (lbw(nbw).eq.1) then | 383 | else if (lbw(nbw).eq.1) then |
1546 | 457 | xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth(i,iconfig)) | 384 | xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth_tmp(i,iconfig)) |
1547 | 458 | bwcut_for_PS(i) = 5d0 | 385 | bwcut_for_PS(i) = 5d0 |
1548 | 459 | else | 386 | else |
1549 | 460 | bwcut_for_PS(i) = 5d0 | 387 | bwcut_for_PS(i) = 5d0 |
1550 | @@ -465,19 +392,19 @@ | |||
1551 | 465 | c Either: required onshell and daughter masses too large | 392 | c Either: required onshell and daughter masses too large |
1552 | 466 | c Or: forced and daughter masses too large | 393 | c Or: forced and daughter masses too large |
1553 | 467 | c Or: required offshell and forced | 394 | c Or: required offshell and forced |
1555 | 468 | if(prwidth(i,iconfig) .gt. 0.and. | 395 | if(prwidth_tmp(i,iconfig) .gt. 0.and. |
1556 | 469 | $ (lbw(nbw).eq.1.and. | 396 | $ (lbw(nbw).eq.1.and. |
1559 | 470 | $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig).lt.xm(i) | 397 | $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig).lt.xm(i) |
1560 | 471 | $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig).gt.dsqrt(stot)) | 398 | $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig).gt.dsqrt(stot)) |
1561 | 472 | $ .or.gforcebw(i,iconfig).eq.1.and. | 399 | $ .or.gforcebw(i,iconfig).eq.1.and. |
1563 | 473 | $ prmass(i,iconfig)+bwcutoff*prwidth(i,iconfig).lt.xm(i) | 400 | $ prmass(i,iconfig)+bwcutoff*prwidth_tmp(i,iconfig).lt.xm(i) |
1564 | 474 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) | 401 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) |
1565 | 475 | $ then | 402 | $ then |
1566 | 476 | c Write results.dat and quit | 403 | c Write results.dat and quit |
1567 | 477 | call write_null_results() | 404 | call write_null_results() |
1568 | 478 | stop | 405 | stop |
1569 | 479 | endif | 406 | endif |
1571 | 480 | if (prwidth(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W. | 407 | if (prwidth_tmp(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W. |
1572 | 481 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat | 408 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat |
1573 | 482 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 | 409 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 |
1574 | 483 | c----- | 410 | c----- |
1575 | @@ -489,27 +416,27 @@ | |||
1576 | 489 | $ .or. lbw(nbw).eq.1) then | 416 | $ .or. lbw(nbw).eq.1) then |
1577 | 490 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) | 417 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) |
1578 | 491 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 418 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
1580 | 492 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 419 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
1581 | 493 | endif | 420 | endif |
1583 | 494 | else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig)).ge.xm(i) | 421 | else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig)).ge.xm(i) |
1584 | 495 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then | 422 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then |
1585 | 496 | c JA 02/13 Only allow BW if xm below M+5*Gamma | 423 | c JA 02/13 Only allow BW if xm below M+5*Gamma |
1586 | 497 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) | 424 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) |
1587 | 498 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 425 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
1589 | 499 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 426 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
1590 | 500 | endif | 427 | endif |
1591 | 501 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) | 428 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) |
1592 | 502 | if (swidth(-i) .eq. 0d0 .and. | 429 | if (swidth(-i) .eq. 0d0 .and. |
1593 | 503 | $ i.ne.-(nexternal-(nincoming+1)))then | 430 | $ i.ne.-(nexternal-(nincoming+1)))then |
1594 | 504 | a=prmass(i,iconfig)**2/stot | 431 | a=prmass(i,iconfig)**2/stot |
1595 | 505 | xo = min(xm(i)**2/stot, 1-1d-8) | 432 | xo = min(xm(i)**2/stot, 1-1d-8) |
1597 | 506 | if (xo.eq.0d0) xo=1d0/stot | 433 | if (xo.eq.0d0) xo=MIN(10d0/stot, stot/50d0, 0.5) |
1598 | 507 | call setgrid(-i,xo,a,1) | 434 | call setgrid(-i,xo,a,1) |
1599 | 508 | endif | 435 | endif |
1600 | 509 | c Set spmass for BWs | 436 | c Set spmass for BWs |
1601 | 510 | if (swidth(-i) .ne. 0d0) | 437 | if (swidth(-i) .ne. 0d0) |
1602 | 511 | $ spmass=spmass-xm(i) + | 438 | $ spmass=spmass-xm(i) + |
1604 | 512 | $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig)) | 439 | $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig)) |
1605 | 513 | else !1/x^pow | 440 | else !1/x^pow |
1606 | 514 | a=prmass(i,iconfig)**2/stot | 441 | a=prmass(i,iconfig)**2/stot |
1607 | 515 | c JA 4/1/2011 always set grid | 442 | c JA 4/1/2011 always set grid |
1608 | @@ -529,8 +456,8 @@ | |||
1609 | 529 | xo = (MMJJ * 0.8)**2/stot | 456 | xo = (MMJJ * 0.8)**2/stot |
1610 | 530 | endif | 457 | endif |
1611 | 531 | endif | 458 | endif |
1614 | 532 | if (xo.eq.0d0) xo=1d0/stot | 459 | if (xo.eq.0d0) xo=MIN(10d0/stot, stot/50d0, 0.5) |
1615 | 533 | c if (prwidth(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then | 460 | c if (prwidth_tmp(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then |
1616 | 534 | call setgrid(-i,xo,a,1) | 461 | call setgrid(-i,xo,a,1) |
1617 | 535 | c else | 462 | c else |
1618 | 536 | c write(*,*) 'Using flat grid for BW',i,nbw, | 463 | c write(*,*) 'Using flat grid for BW',i,nbw, |
1619 | @@ -574,7 +501,7 @@ | |||
1620 | 574 | c Use 1/10000 of sqrt(s) as minimum, to always get integration | 501 | c Use 1/10000 of sqrt(s) as minimum, to always get integration |
1621 | 575 | xo = xo*xo/stot | 502 | xo = xo*xo/stot |
1622 | 576 | if (xo.eq.0d0)then | 503 | if (xo.eq.0d0)then |
1624 | 577 | xo=1d0/stot | 504 | xo=1/10000d0 |
1625 | 578 | write(*,*) 'Warning: No cutoff for shat integral found' | 505 | write(*,*) 'Warning: No cutoff for shat integral found' |
1626 | 579 | write(*,*) ' Minimum set to ', xo | 506 | write(*,*) ' Minimum set to ', xo |
1627 | 580 | endif | 507 | endif |
1628 | @@ -587,7 +514,7 @@ | |||
1629 | 587 | endif | 514 | endif |
1630 | 588 | enddo | 515 | enddo |
1631 | 589 | c Perform setting for shat (PDF BW or 1/s) | 516 | c Perform setting for shat (PDF BW or 1/s) |
1633 | 590 | if (abs(lpp(1)) .eq. 1 .or. abs(lpp(2)) .eq. 1) then | 517 | if (abs(lpp(1)) .ge. 1 .or. abs(lpp(2)) .ge. 1) then |
1634 | 591 | c Set minimum based on: 1) required energy 2) resonances 3) 1/10000 of sqrt(s) | 518 | c Set minimum based on: 1) required energy 2) resonances 3) 1/10000 of sqrt(s) |
1635 | 592 | i = max(1,3*(nexternal-2) - 4 + 1) | 519 | i = max(1,3*(nexternal-2) - 4 + 1) |
1636 | 593 | xo = max(min(etot**2/stot, 1d0-1d-8),1d0/stot) | 520 | xo = max(min(etot**2/stot, 1d0-1d-8),1d0/stot) |
1637 | @@ -610,7 +537,7 @@ | |||
1638 | 610 | spole(i)= -2.0d0 ! 1/s pole | 537 | spole(i)= -2.0d0 ! 1/s pole |
1639 | 611 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot | 538 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot |
1640 | 612 | else | 539 | else |
1642 | 613 | write(*,*) "Transforming s_hat BW ",spole(i),swidth(i) | 540 | write(*,*) "Transforming s_hat BW ",spole(i), max(swidth(i), spole(i)*small_width_treatment) |
1643 | 614 | endif | 541 | endif |
1644 | 615 | endif | 542 | endif |
1645 | 616 | 543 | ||
1646 | 617 | 544 | ||
1647 | === modified file 'Template/LO/SubProcesses/reweight.f' | |||
1648 | --- Template/LO/SubProcesses/reweight.f 2018-07-22 11:40:04 +0000 | |||
1649 | +++ Template/LO/SubProcesses/reweight.f 2020-05-23 19:29:41 +0000 | |||
1650 | @@ -316,7 +316,7 @@ | |||
1651 | 316 | ipart(1,imo)=ipart(1,ida2) | 316 | ipart(1,imo)=ipart(1,ida2) |
1652 | 317 | ipart(2,imo)=ipart(2,ida2) | 317 | ipart(2,imo)=ipart(2,ida2) |
1653 | 318 | endif | 318 | endif |
1655 | 319 | else if(idmo.eq.21 .and. abs(idda1).le.6 .and. | 319 | else if(idmo.eq.21.and. abs(idda1).le.6 .and. |
1656 | 320 | $ abs(idda2).le.6) then | 320 | $ abs(idda2).le.6) then |
1657 | 321 | c gluon -> quark anti-quark: use both, but take hardest as 1 | 321 | c gluon -> quark anti-quark: use both, but take hardest as 1 |
1658 | 322 | if(p(1,ipart(1,ida1))**2+p(2,ipart(1,ida1))**2.gt. | 322 | if(p(1,ipart(1,ida1))**2+p(2,ipart(1,ida1))**2.gt. |
1659 | @@ -327,6 +327,17 @@ | |||
1660 | 327 | ipart(1,imo)=ipart(1,ida2) | 327 | ipart(1,imo)=ipart(1,ida2) |
1661 | 328 | ipart(2,imo)=ipart(1,ida1) | 328 | ipart(2,imo)=ipart(1,ida1) |
1662 | 329 | endif | 329 | endif |
1663 | 330 | else if (get_color(idmo).eq.8.and.iabs(get_color(idda1)).eq.3.and. | ||
1664 | 331 | $ iabs(get_color(idda2)).eq.3) then | ||
1665 | 332 | c gluon' -> quark' anti-quark': use both, but take hardest as 1 | ||
1666 | 333 | if(p(1,ipart(1,ida1))**2+p(2,ipart(1,ida1))**2.gt. | ||
1667 | 334 | $ p(1,ipart(1,ida2))**2+p(2,ipart(1,ida2))**2) then | ||
1668 | 335 | ipart(1,imo)=ipart(1,ida1) | ||
1669 | 336 | ipart(2,imo)=ipart(1,ida2) | ||
1670 | 337 | else | ||
1671 | 338 | ipart(1,imo)=ipart(1,ida2) | ||
1672 | 339 | ipart(2,imo)=ipart(1,ida1) | ||
1673 | 340 | endif | ||
1674 | 330 | else if(idmo.eq.21.and.(idda1.eq.21.or.idda2.eq.21))then | 341 | else if(idmo.eq.21.and.(idda1.eq.21.or.idda2.eq.21))then |
1675 | 331 | if(idda1.eq.21) then | 342 | if(idda1.eq.21) then |
1676 | 332 | iddgluon = idda1 | 343 | iddgluon = idda1 |
1677 | @@ -380,10 +391,32 @@ | |||
1678 | 380 | c exotic q > Scalar q' | 391 | c exotic q > Scalar q' |
1679 | 381 | ipart(1,imo)=ipart(1,ida2) | 392 | ipart(1,imo)=ipart(1,ida2) |
1680 | 382 | ipart(2,imo)=0 | 393 | ipart(2,imo)=0 |
1682 | 383 | else if (get_color(idmo).eq.1) then | 394 | else if(iabs(get_color(idmo)).eq.3.and.iabs(get_color(idda2)).eq.8.and.iabs(get_color(idda1)).eq.3) then |
1683 | 395 | c exotic q > q' gluon | ||
1684 | 396 | ipart(1,imo)=ipart(1,ida2) | ||
1685 | 397 | ipart(2,imo)=0 | ||
1686 | 398 | else if(iabs(get_color(idmo)).eq.3.and.iabs(get_color(idda2)).eq.3.and.get_color(idda1).eq.8) then | ||
1687 | 399 | c exotic q > gluon q' | ||
1688 | 400 | ipart(1,imo)=ipart(1,ida1) | ||
1689 | 401 | ipart(2,imo)=0 | ||
1690 | 402 | else if (get_color(idmo).eq.1.or.get_color(idmo).eq.2.or.get_color(idda1).eq.2.or.get_color(idda2).eq.2) then | ||
1691 | 384 | c Color singlet | 403 | c Color singlet |
1692 | 385 | ipart(1,imo)=ipart(1,ida1) | 404 | ipart(1,imo)=ipart(1,ida1) |
1693 | 386 | ipart(2,imo)=ipart(1,ida2) | 405 | ipart(2,imo)=ipart(1,ida2) |
1694 | 406 | else if (abs(get_color(idmo)).eq.3.and.abs(get_color(idda1)).eq.3.and.abs(get_color(idda2)).eq.3)then | ||
1695 | 407 | c EPSILON^IJK color structure -- handle it as photon emission -- | ||
1696 | 408 | ipart(1,imo)=ipart(1,ida1) | ||
1697 | 409 | ipart(2,imo)=0 | ||
1698 | 410 | else if (abs(get_color(idmo)).eq.6.and.abs(get_color(idda1)).eq.3.and.abs(get_color(idda2)).eq.3)then | ||
1699 | 411 | c sextet -> (anti-)quark (anti-)quark': use both, but take hardest as 1 | ||
1700 | 412 | if(p(1,ipart(1,ida1))**2+p(2,ipart(1,ida1))**2.gt. | ||
1701 | 413 | $ p(1,ipart(1,ida2))**2+p(2,ipart(1,ida2))**2) then | ||
1702 | 414 | ipart(1,imo)=ipart(1,ida1) | ||
1703 | 415 | ipart(2,imo)=ipart(1,ida2) | ||
1704 | 416 | else | ||
1705 | 417 | ipart(1,imo)=ipart(1,ida2) | ||
1706 | 418 | ipart(2,imo)=ipart(1,ida1) | ||
1707 | 419 | endif | ||
1708 | 387 | else | 420 | else |
1709 | 388 | write(*,*) idmo,'>', idda1, idda2, 'color', get_color(idmo),'>', get_color(idda1), get_color(idda2) | 421 | write(*,*) idmo,'>', idda1, idda2, 'color', get_color(idmo),'>', get_color(idda1), get_color(idda2) |
1710 | 389 | write(*,*) "failed for ipartupdate. Please retry without MLM/default dynamical scale" | 422 | write(*,*) "failed for ipartupdate. Please retry without MLM/default dynamical scale" |
1711 | @@ -641,12 +674,12 @@ | |||
1712 | 641 | C If we have fixed factorization scale, for ickkw>0 means central | 674 | C If we have fixed factorization scale, for ickkw>0 means central |
1713 | 642 | C scale, i.e. last two scales (ren. scale for these vertices are | 675 | C scale, i.e. last two scales (ren. scale for these vertices are |
1714 | 643 | C anyway already set by "scale" above) | 676 | C anyway already set by "scale" above) |
1717 | 644 | if(ickkw.gt.0) then | 677 | if (first) then |
1716 | 645 | if(fixed_fac_scale.and.first)then | ||
1718 | 646 | q2bck(1)=q2fact(1) | 678 | q2bck(1)=q2fact(1) |
1719 | 647 | q2bck(2)=q2fact(2) | 679 | q2bck(2)=q2fact(2) |
1720 | 648 | first=.false. | 680 | first=.false. |
1722 | 649 | else if(fixed_fac_scale) then | 681 | else if(ickkw.gt.0) then |
1723 | 682 | if(fixed_fac_scale) then | ||
1724 | 650 | q2fact(1)=q2bck(1) | 683 | q2fact(1)=q2bck(1) |
1725 | 651 | q2fact(2)=q2bck(2) | 684 | q2fact(2)=q2bck(2) |
1726 | 652 | endif | 685 | endif |
1727 | @@ -775,15 +808,17 @@ | |||
1728 | 775 | c Check QCD jet, take care so not a decay | 808 | c Check QCD jet, take care so not a decay |
1729 | 776 | if(.not.isjetvx(imocl(n),idacl(n,1),idacl(n,2), | 809 | if(.not.isjetvx(imocl(n),idacl(n,1),idacl(n,2), |
1730 | 777 | $ ipdgcl(1,igraphs(1),iproc),ipart,n.eq.nexternal-2)) then | 810 | $ ipdgcl(1,igraphs(1),iproc),ipart,n.eq.nexternal-2)) then |
1731 | 811 | pdgm = ipdgcl(imocl(n),igraphs(1),iproc) | ||
1732 | 812 | pdgid1 = ipdgcl(idacl(n,1),igraphs(1),iproc) | ||
1733 | 813 | pdgid2 = ipdgcl(idacl(n,2),igraphs(1),iproc) | ||
1734 | 814 | if (isqcd(pdgm).and.isqcd(pdgid1).and.isqcd(pdgid2))then | ||
1735 | 815 | continue | ||
1736 | 778 | c Remove non-gluon jets that lead up to non-jet vertices | 816 | c Remove non-gluon jets that lead up to non-jet vertices |
1738 | 779 | if(ipart(1,imocl(n)).gt.2)then ! ipart(1) set and not IS line | 817 | elseif(ipart(1,imocl(n)).gt.2)then ! ipart(1) set and not IS line |
1739 | 780 | c The ishft gives the FS particle corresponding to imocl | 818 | c The ishft gives the FS particle corresponding to imocl |
1740 | 781 | if(.not.is_octet(ipdgcl(ishft(1,ipart(1,imocl(n))-1),igraphs(1),iproc)))then | 819 | if(.not.is_octet(ipdgcl(ishft(1,ipart(1,imocl(n))-1),igraphs(1),iproc)))then |
1741 | 782 | ! split case for q a > q and for g > g h (with the gluon splitting into quark) | 820 | ! split case for q a > q and for g > g h (with the gluon splitting into quark) |
1742 | 783 | ! also check for case of three scalar interaction (then do nothing) | 821 | ! also check for case of three scalar interaction (then do nothing) |
1743 | 784 | pdgm = ipdgcl(imocl(n),igraphs(1),iproc) | ||
1744 | 785 | pdgid1 = ipdgcl(idacl(n,1),igraphs(1),iproc) | ||
1745 | 786 | pdgid2 = ipdgcl(idacl(n,2),igraphs(1),iproc) | ||
1746 | 787 | if (.not.isqcd(pdgm).and..not.isqcd(pdgid1).and..not.isqcd(pdgid2)) then | 822 | if (.not.isqcd(pdgm).and..not.isqcd(pdgid1).and..not.isqcd(pdgid2)) then |
1747 | 788 | ! this is to avoid to do weird stuff for w+ w- z (or h h h) | 823 | ! this is to avoid to do weird stuff for w+ w- z (or h h h) |
1748 | 789 | ! this fix an issue for qq_zttxqq G1594.08 | 824 | ! this fix an issue for qq_zttxqq G1594.08 |
1749 | @@ -955,7 +990,7 @@ | |||
1750 | 955 | $ '. Have jets (>0)',(iqjets(i),i=1,nexternal), | 990 | $ '. Have jets (>0)',(iqjets(i),i=1,nexternal), |
1751 | 956 | $ ', should be ', | 991 | $ ', should be ', |
1752 | 957 | $ (iqjetstore(i,iconfig),i=1,njetstore(iconfig)) | 992 | $ (iqjetstore(i,iconfig),i=1,njetstore(iconfig)) |
1754 | 958 | stop | 993 | stop 4 |
1755 | 959 | endif | 994 | endif |
1756 | 960 | if (btest(mlevel,3)) | 995 | if (btest(mlevel,3)) |
1757 | 961 | $ write(*,*) 'Bad clustering, jets fail. Reclustering ', | 996 | $ write(*,*) 'Bad clustering, jets fail. Reclustering ', |
1758 | @@ -1697,6 +1732,10 @@ | |||
1759 | 1697 | if (btest(mlevel,3)) | 1732 | if (btest(mlevel,3)) |
1760 | 1698 | $ write(*,*)' set fact scales for PS to ', | 1733 | $ write(*,*)' set fact scales for PS to ', |
1761 | 1699 | $ sqrt(q2fact(1)),sqrt(q2fact(2)) | 1734 | $ sqrt(q2fact(1)),sqrt(q2fact(2)) |
1762 | 1735 | else if (abs(lpp(1)).eq.2.or.abs(lpp(1)).eq.3) then | ||
1763 | 1736 | q2fact(1)=q2bck(1) | ||
1764 | 1737 | else if (abs(lpp(2)).eq.2.or.abs(lpp(2)).eq.3) then | ||
1765 | 1738 | q2fact(2)=q2bck(2) | ||
1766 | 1700 | endif | 1739 | endif |
1767 | 1701 | 1740 | ||
1768 | 1702 | if (btest(mlevel,3)) then | 1741 | if (btest(mlevel,3)) then |
1769 | 1703 | 1742 | ||
1770 | === modified file 'Template/LO/SubProcesses/setcuts.f' | |||
1771 | --- Template/LO/SubProcesses/setcuts.f 2018-03-11 12:10:19 +0000 | |||
1772 | +++ Template/LO/SubProcesses/setcuts.f 2020-05-23 19:29:41 +0000 | |||
1773 | @@ -664,14 +664,21 @@ | |||
1774 | 664 | endif | 664 | endif |
1775 | 665 | enddo | 665 | enddo |
1776 | 666 | 666 | ||
1778 | 667 | c ensure symmetry of s_min(i,j) | 667 | c ensure symmetry of s_min(i,j) + mass effect |
1779 | 668 | do i=nincoming+1,nexternal-1 | 668 | do i=nincoming+1,nexternal-1 |
1780 | 669 | do j=nincoming+1,nexternal-1 | 669 | do j=nincoming+1,nexternal-1 |
1781 | 670 | if(j.lt.i)then | 670 | if(j.lt.i)then |
1783 | 671 | s_min(i,j) = max(s_min(j,i),s_min(i,j)) | 671 | s_min(i,j) = max(s_min(j,i), s_min(i,j), (pmass(i)+pmass(j))**2) |
1784 | 672 | endif | 672 | endif |
1785 | 673 | enddo | 673 | enddo |
1786 | 674 | enddo | 674 | enddo |
1787 | 675 | |||
1788 | 676 | c ensure that smin is bigger than mass threshold | ||
1789 | 677 | smin_p = 0d0 | ||
1790 | 678 | do i=nincoming+1, nexternal | ||
1791 | 679 | smin_p = smin_p + pmass(i) | ||
1792 | 680 | enddo | ||
1793 | 681 | smin = max(smin, smin_p**2) | ||
1794 | 675 | write(*,*) "Define smin to", smin | 682 | write(*,*) "Define smin to", smin |
1795 | 676 | 683 | ||
1796 | 677 | c Check that results are consistent among all the grouped subprocesses | 684 | c Check that results are consistent among all the grouped subprocesses |
1797 | 678 | 685 | ||
1798 | === modified file 'Template/LO/bin/internal/Gridpack/compile' | |||
1799 | --- Template/LO/bin/internal/Gridpack/compile 2015-09-28 20:34:44 +0000 | |||
1800 | +++ Template/LO/bin/internal/Gridpack/compile 2020-05-23 19:29:41 +0000 | |||
1801 | @@ -63,7 +63,7 @@ | |||
1802 | 63 | 63 | ||
1803 | 64 | if [[ -d Source ]]; then | 64 | if [[ -d Source ]]; then |
1804 | 65 | cd Source | 65 | cd Source |
1806 | 66 | for i in ../bin/internal/gen_ximprove all ../bin/internal/combine_events; do | 66 | for i in ../bin/internal/gen_ximprove all; do |
1807 | 67 | make $i -j 1 > /dev/null | 67 | make $i -j 1 > /dev/null |
1808 | 68 | if [[ $? -ne 0 ]];then | 68 | if [[ $? -ne 0 ]];then |
1809 | 69 | # Make didn't exit successfully | 69 | # Make didn't exit successfully |
1810 | 70 | 70 | ||
1811 | === modified file 'Template/NLO/Cards/FKS_params.dat' | |||
1812 | --- Template/NLO/Cards/FKS_params.dat 2017-08-04 19:52:15 +0000 | |||
1813 | +++ Template/NLO/Cards/FKS_params.dat 2020-05-23 19:29:41 +0000 | |||
1814 | @@ -153,6 +153,16 @@ | |||
1815 | 153 | 0.005d0 | 153 | 0.005d0 |
1816 | 154 | ! Default :: 0.005d0 | 154 | ! Default :: 0.005d0 |
1817 | 155 | ! | 155 | ! |
1818 | 156 | ! Use a polynomial fit for the virtual corrections. Gets a better accuracy, | ||
1819 | 157 | ! but uses more memmory and disk space. | ||
1820 | 158 | #UsePolyVirtual | ||
1821 | 159 | .False. | ||
1822 | 160 | ! Default :: .True. | ||
1823 | 161 | ! | ||
1824 | 162 | ! ========================================================================== | ||
1825 | 163 | ! Combination of matrix elements | ||
1826 | 164 | ! ========================================================================== | ||
1827 | 165 | ! | ||
1828 | 156 | ! For fixed order calculations only (ignored for (N)LO+PS runs): This | 166 | ! For fixed order calculations only (ignored for (N)LO+PS runs): This |
1829 | 157 | ! parameter determines if parton flavour configurations with idential | 167 | ! parameter determines if parton flavour configurations with idential |
1830 | 158 | ! matrix elements should be separated at the level of the analysis or | 168 | ! matrix elements should be separated at the level of the analysis or |
1831 | @@ -170,11 +180,5 @@ | |||
1832 | 170 | ! Default :: .false. | 180 | ! Default :: .false. |
1833 | 171 | ! | 181 | ! |
1834 | 172 | ! ========================================================================== | 182 | ! ========================================================================== |
1835 | 173 | ! Arbitrary numerical parameters used in the FKS formalism | ||
1836 | 174 | ! ========================================================================== | ||
1837 | 175 | ! | ||
1838 | 176 | ! To be implemented by the FKS authors | ||
1839 | 177 | ! | ||
1840 | 178 | ! ========================================================================== | ||
1841 | 179 | ! End of FKS_params.dat file | 183 | ! End of FKS_params.dat file |
1842 | 180 | ! ========================================================================== | 184 | ! ========================================================================== |
1843 | 181 | 185 | ||
1844 | === modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script' | |||
1845 | --- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script 2016-10-26 13:53:02 +0000 | |||
1846 | +++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIGPP.Script 2020-05-23 19:29:41 +0000 | |||
1847 | @@ -149,12 +149,15 @@ | |||
1848 | 149 | if [ -f $HWPPPATH/bin/Herwig ]; then HWEXE=Herwig ; fi | 149 | if [ -f $HWPPPATH/bin/Herwig ]; then HWEXE=Herwig ; fi |
1849 | 150 | HWVER=`$HWPPPATH/bin/$HWEXE --version` | 150 | HWVER=`$HWPPPATH/bin/$HWEXE --version` |
1850 | 151 | HWVER=($(echo "$HWVER" | sed 's/ / /g')) | 151 | HWVER=($(echo "$HWVER" | sed 's/ / /g')) |
1855 | 152 | HWVER=($(echo ${HWVER[1]} | tr "." "\n")) | 152 | HWVER1=($(echo ${HWVER[1]} | tr "." "\n")) |
1856 | 153 | HWVER=${HWVER[0]} | 153 | HWVER2=($(echo ${HWVER1[1]} | tr "." "\n")) |
1857 | 154 | if [ "$HWVER" -ge 7 ]; then HWNEW=1 ; HWEXE=Herwig ; fi | 154 | HWVER=$(echo "$HWVER1$HWVER2" | bc) |
1858 | 155 | if [ "$HWVER" -le 2 ]; then HWNEW=0 ; HWEXE=Herwig++ ; fi | 155 | if [ "$HWVER" -ge 72 ]; then HWNEW=3 ; HWEXE=Herwig ; fi |
1859 | 156 | if [ "$HWVER" -eq 71 ]; then HWNEW=2 ; HWEXE=Herwig ; fi | ||
1860 | 157 | if [ "$HWVER" -eq 70 ]; then HWNEW=1 ; HWEXE=Herwig ; fi | ||
1861 | 158 | if [ "$HWVER" -le 69 ]; then HWNEW=0 ; HWEXE=Herwig++ ; fi | ||
1862 | 156 | 159 | ||
1864 | 157 | if [[ "$PDFCODE" -ne 0 && "$HWNEW" -eq 0 ]] || [ "$HWNEW" -eq 1 ] | 160 | if [[ "$PDFCODE" -ne 0 && "$HWNEW" -eq 0 ]] || [ "$HWNEW" -ge 1 ] |
1865 | 158 | then | 161 | then |
1866 | 159 | HERPDF='EXTPDF' | 162 | HERPDF='EXTPDF' |
1867 | 160 | PDFLIBRARY='LHAPDF' | 163 | PDFLIBRARY='LHAPDF' |
1868 | @@ -166,7 +169,7 @@ | |||
1869 | 166 | if [ "$PDFCODE" -gt 1 ]; then PDFSET=$PDFCODE; fi | 169 | if [ "$PDFCODE" -gt 1 ]; then PDFSET=$PDFCODE; fi |
1870 | 167 | if [ "$PDFCODE" -lt 0 ]; then LHAOFL=EXTRAPOLATE; fi | 170 | if [ "$PDFCODE" -lt 0 ]; then LHAOFL=EXTRAPOLATE; fi |
1871 | 168 | if [ "$PDFCODE" -lt -1 ]; then PDFSET=$((PDFCODE*-1)); fi | 171 | if [ "$PDFCODE" -lt -1 ]; then PDFSET=$((PDFCODE*-1)); fi |
1873 | 169 | if [[ "$PDFCODE" -eq 0 && "$HWNEW" -eq 1 ]]; then PDFSET=25000 ; LHAOFL=FREEZE ; fi | 172 | if [[ "$PDFCODE" -eq 0 && "$HWNEW" -ge 1 ]]; then PDFSET=25000 ; LHAOFL=FREEZE ; fi |
1874 | 170 | linklhapdf | 173 | linklhapdf |
1875 | 171 | # convert PDF number to name reading PDFsets.index | 174 | # convert PDF number to name reading PDFsets.index |
1876 | 172 | ISLHA5=0 | 175 | ISLHA5=0 |
1877 | @@ -184,7 +187,7 @@ | |||
1878 | 184 | echo 'Unable to understand LHAPDF version!' | 187 | echo 'Unable to understand LHAPDF version!' |
1879 | 185 | exit 1 | 188 | exit 1 |
1880 | 186 | fi | 189 | fi |
1882 | 187 | if [[ "$ISLHA5" -eq 1 && "$HWNEW" -eq 1 ]] | 190 | if [[ "$ISLHA5" -eq 1 && "$HWNEW" -ge 1 ]] |
1883 | 188 | then | 191 | then |
1884 | 189 | echo " Please, use LHAPDF6 with HW7 " | 192 | echo " Please, use LHAPDF6 with HW7 " |
1885 | 190 | exit 1 | 193 | exit 1 |
1886 | @@ -282,7 +285,7 @@ | |||
1887 | 282 | HWPPUTIMAKE="HWPPUTI="$HWPPUTI | 285 | HWPPUTIMAKE="HWPPUTI="$HWPPUTI |
1888 | 283 | FORFILEMAKE="FORFILE="$HWPPUTI | 286 | FORFILEMAKE="FORFILE="$HWPPUTI |
1889 | 284 | HEPMCF=HepMCFortran7.h | 287 | HEPMCF=HepMCFortran7.h |
1891 | 285 | if [ "$HWVER" -le 2 ]; then HEPMCF=HepMCFortran2.h; fi | 288 | if [ "$HWVER" -le 69 ]; then HEPMCF=HepMCFortran2.h; fi |
1892 | 286 | cp $thisdir/HWPPAnalyzer/$HEPMCF $thisdir/HWPPAnalyzer/HepMCFortran.h | 289 | cp $thisdir/HWPPAnalyzer/$HEPMCF $thisdir/HWPPAnalyzer/HepMCFortran.h |
1893 | 287 | HWPPANALYZER=HepMCFortran | 290 | HWPPANALYZER=HepMCFortran |
1894 | 288 | if ! make -C $thisdir/HWPPAnalyzer $HWPPUTI $HWPPANALYZER.so $HWPPMAKE "$LIBSMAKE" "$LIBSMAKEP" "$INCLMAKE" "$FORFILEMAKE" | 291 | if ! make -C $thisdir/HWPPAnalyzer $HWPPUTI $HWPPANALYZER.so $HWPPMAKE "$LIBSMAKE" "$LIBSMAKEP" "$INCLMAKE" "$FORFILEMAKE" |
1895 | @@ -385,6 +388,16 @@ | |||
1896 | 385 | mv $EXEC_NAMEFF $exefile | 388 | mv $EXEC_NAMEFF $exefile |
1897 | 386 | 389 | ||
1898 | 387 | # create input file | 390 | # create input file |
1899 | 391 | if [ "$HWNEW" -le 1 ] | ||
1900 | 392 | then | ||
1901 | 393 | GENERATOR="LHCGenerator" | ||
1902 | 394 | EXTRACTOR="QCDExtractor" | ||
1903 | 395 | elif [ "$HWNEW" -ge 2 ] | ||
1904 | 396 | then | ||
1905 | 397 | GENERATOR="EventGenerator" | ||
1906 | 398 | EXTRACTOR="PPExtractor" | ||
1907 | 399 | fi | ||
1908 | 400 | |||
1909 | 388 | cat <<EOF > ./$ifile | 401 | cat <<EOF > ./$ifile |
1910 | 389 | # | 402 | # |
1911 | 390 | # Create the Les Houches handler for MC@NLO | 403 | # Create the Les Houches handler for MC@NLO |
1912 | @@ -394,35 +407,47 @@ | |||
1913 | 394 | 407 | ||
1914 | 395 | # --------------------------------------------------------------------- # | 408 | # --------------------------------------------------------------------- # |
1915 | 396 | # 1.) NECESSARY SETTINGS FOR RUNNING WITH MC@NLO EVENTS (DO NOT MODIFY) | 409 | # 1.) NECESSARY SETTINGS FOR RUNNING WITH MC@NLO EVENTS (DO NOT MODIFY) |
1916 | 410 | EOF | ||
1917 | 397 | 411 | ||
1918 | 412 | if [ "$HWNEW" -le 1 ] | ||
1919 | 413 | then | ||
1920 | 414 | cat <<EOF >> ./$ifile | ||
1921 | 398 | set /Herwig/Shower/Evolver:HardVetoMode 1 | 415 | set /Herwig/Shower/Evolver:HardVetoMode 1 |
1922 | 399 | set /Herwig/Shower/Evolver:HardVetoScaleSource 1 | 416 | set /Herwig/Shower/Evolver:HardVetoScaleSource 1 |
1923 | 400 | set /Herwig/Shower/Evolver:MECorrMode 0 | 417 | set /Herwig/Shower/Evolver:MECorrMode 0 |
1926 | 401 | 418 | EOF | |
1927 | 402 | 419 | fi | |
1928 | 420 | |||
1929 | 421 | cat <<EOF >> ./$ifile | ||
1930 | 403 | # create the Handler & Reader | 422 | # create the Handler & Reader |
1931 | 404 | create ThePEG::LesHouchesFileReader /Herwig/EventHandlers/LHEReader | 423 | create ThePEG::LesHouchesFileReader /Herwig/EventHandlers/LHEReader |
1932 | 405 | create ThePEG::LesHouchesEventHandler /Herwig/EventHandlers/LHEHandler | 424 | create ThePEG::LesHouchesEventHandler /Herwig/EventHandlers/LHEHandler |
1933 | 406 | insert /Herwig/EventHandlers/LHEHandler:LesHouchesReaders 0 /Herwig/EventHandlers/LHEReader | 425 | insert /Herwig/EventHandlers/LHEHandler:LesHouchesReaders 0 /Herwig/EventHandlers/LHEReader |
1935 | 407 | 426 | EOF | |
1936 | 427 | |||
1937 | 428 | |||
1938 | 429 | cat <<EOF >> ./$ifile | ||
1939 | 408 | set /Herwig/EventHandlers/LHEReader:AllowedToReOpen 0 | 430 | set /Herwig/EventHandlers/LHEReader:AllowedToReOpen 0 |
1940 | 409 | set /Herwig/EventHandlers/LHEReader:MomentumTreatment RescaleEnergy | 431 | set /Herwig/EventHandlers/LHEReader:MomentumTreatment RescaleEnergy |
1941 | 410 | set /Herwig/EventHandlers/LHEReader:WeightWarnings 0 | 432 | set /Herwig/EventHandlers/LHEReader:WeightWarnings 0 |
1943 | 411 | 433 | EOF | |
1944 | 434 | |||
1945 | 435 | |||
1946 | 436 | cat <<EOF >> ./$ifile | ||
1947 | 412 | set /Herwig/EventHandlers/LHEHandler:WeightOption VarNegWeight | 437 | set /Herwig/EventHandlers/LHEHandler:WeightOption VarNegWeight |
1949 | 413 | set /Herwig/EventHandlers/LHEHandler:PartonExtractor /Herwig/Partons/QCDExtractor | 438 | set /Herwig/EventHandlers/LHEHandler:PartonExtractor /Herwig/Partons/$EXTRACTOR |
1950 | 414 | set /Herwig/EventHandlers/LHEHandler:CascadeHandler /Herwig/Shower/ShowerHandler | 439 | set /Herwig/EventHandlers/LHEHandler:CascadeHandler /Herwig/Shower/ShowerHandler |
1951 | 415 | set /Herwig/EventHandlers/LHEHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler | 440 | set /Herwig/EventHandlers/LHEHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler |
1952 | 416 | set /Herwig/EventHandlers/LHEHandler:DecayHandler /Herwig/Decays/DecayHandler | 441 | set /Herwig/EventHandlers/LHEHandler:DecayHandler /Herwig/Decays/DecayHandler |
1959 | 417 | set /Herwig/Generators/LHCGenerator:EventHandler /Herwig/EventHandlers/LHEHandler | 442 | set /Herwig/Generators/$GENERATOR:EventHandler /Herwig/EventHandlers/LHEHandler |
1960 | 418 | set /Herwig/Generators/LHCGenerator:NumberOfEvents $NEVENTS | 443 | set /Herwig/Generators/$GENERATOR:NumberOfEvents $NEVENTS |
1961 | 419 | set /Herwig/Generators/LHCGenerator:RandomNumberGenerator:Seed $RNDEVSEED_HWPP | 444 | set /Herwig/Generators/$GENERATOR:RandomNumberGenerator:Seed $RNDEVSEED_HWPP |
1962 | 420 | set /Herwig/Generators/LHCGenerator:PrintEvent $MAXPR_HWPP | 445 | set /Herwig/Generators/$GENERATOR:PrintEvent $MAXPR_HWPP |
1963 | 421 | set /Herwig/Generators/LHCGenerator:MaxErrors $ERR_NUM_HWPP | 446 | set /Herwig/Generators/$GENERATOR:MaxErrors $ERR_NUM_HWPP |
1964 | 422 | set /Herwig/Generators/LHCGenerator:DebugLevel 1 | 447 | set /Herwig/Generators/$GENERATOR:DebugLevel 1 |
1965 | 423 | EOF | 448 | EOF |
1966 | 424 | 449 | ||
1968 | 425 | if [ $HWNEW = 0 ] | 450 | if [ "$HWNEW" -eq 0 ] |
1969 | 426 | then | 451 | then |
1970 | 427 | cat <<EOF >> ./$ifile | 452 | cat <<EOF >> ./$ifile |
1971 | 428 | insert /Herwig/EventHandlers/LHEHandler:PreCascadeHandlers 0 /Herwig/NewPhysics/DecayHandler | 453 | insert /Herwig/EventHandlers/LHEHandler:PreCascadeHandlers 0 /Herwig/NewPhysics/DecayHandler |
1972 | @@ -430,7 +455,7 @@ | |||
1973 | 430 | fi | 455 | fi |
1974 | 431 | 456 | ||
1975 | 432 | whichherpdf $HERPDF | 457 | whichherpdf $HERPDF |
1977 | 433 | if [[ "$pdftype" -eq 1 && "$HWNEW" -eq 0 ]] || [ "$HWNEW" -eq 1 ] | 458 | if [[ "$pdftype" -eq 1 && "$HWNEW" -eq 0 ]] || [ "$HWNEW" -ge 1 ] |
1978 | 434 | then | 459 | then |
1979 | 435 | cat <<EOF >> ./$ifile | 460 | cat <<EOF >> ./$ifile |
1980 | 436 | # Define PDF from MCatNLO.inputs PDFSET number | 461 | # Define PDF from MCatNLO.inputs PDFSET number |
1981 | @@ -438,6 +463,16 @@ | |||
1982 | 438 | create ThePEG::LHAPDF /LHAPDF/MCNLOPDF ThePEGLHAPDF.so | 463 | create ThePEG::LHAPDF /LHAPDF/MCNLOPDF ThePEGLHAPDF.so |
1983 | 439 | set /LHAPDF/MCNLOPDF:PDFName $PDFSETN | 464 | set /LHAPDF/MCNLOPDF:PDFName $PDFSETN |
1984 | 440 | set /LHAPDF/MCNLOPDF:RemnantHandler /Herwig/Partons/HadronRemnants | 465 | set /LHAPDF/MCNLOPDF:RemnantHandler /Herwig/Partons/HadronRemnants |
1985 | 466 | EOF | ||
1986 | 467 | |||
1987 | 468 | if [ "$HWNEW" -ge 1 ] | ||
1988 | 469 | then | ||
1989 | 470 | cat <<EOF >> ./$ifile | ||
1990 | 471 | set /Herwig/Partons/RemnantDecayer:AllowTop Yes | ||
1991 | 472 | EOF | ||
1992 | 473 | fi | ||
1993 | 474 | |||
1994 | 475 | cat <<EOF >> ./$ifile | ||
1995 | 441 | set /Herwig/EventHandlers/LHEReader:PDFA /LHAPDF/MCNLOPDF | 476 | set /Herwig/EventHandlers/LHEReader:PDFA /LHAPDF/MCNLOPDF |
1996 | 442 | set /Herwig/EventHandlers/LHEReader:PDFB /LHAPDF/MCNLOPDF | 477 | set /Herwig/EventHandlers/LHEReader:PDFB /LHAPDF/MCNLOPDF |
1997 | 443 | set /Herwig/Particles/p+:PDF /LHAPDF/MCNLOPDF | 478 | set /Herwig/Particles/p+:PDF /LHAPDF/MCNLOPDF |
1998 | @@ -494,9 +529,9 @@ | |||
1999 | 494 | # 3.) ADDITIONAL SETTINGS | 529 | # 3.) ADDITIONAL SETTINGS |
2000 | 495 | 530 | ||
2001 | 496 | # SHOWER SETTINGS | 531 | # SHOWER SETTINGS |
2002 | 497 | set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV | ||
2003 | 498 | EOF | 532 | EOF |
2004 | 499 | 533 | ||
2005 | 534 | |||
2006 | 500 | if ((`bc <<< "$LAMBDAHERW >= 0.0"`)) | 535 | if ((`bc <<< "$LAMBDAHERW >= 0.0"`)) |
2007 | 501 | then | 536 | then |
2008 | 502 | LAMBDAHERW=$(echo "$LAMBDAHERW * 1000" | bc) | 537 | LAMBDAHERW=$(echo "$LAMBDAHERW * 1000" | bc) |
2009 | @@ -512,23 +547,43 @@ | |||
2010 | 512 | EOF | 547 | EOF |
2011 | 513 | fi | 548 | fi |
2012 | 514 | 549 | ||
2013 | 550 | if [ "$HWNEW" -le 1 ] | ||
2014 | 551 | then | ||
2015 | 552 | cat <<EOF >> ./$ifile | ||
2016 | 553 | set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV | ||
2017 | 554 | EOF | ||
2018 | 555 | elif [ "$HWNEW" -ge 2 ] | ||
2019 | 556 | then | ||
2020 | 557 | cat <<EOF >> ./$ifile | ||
2021 | 558 | set /Herwig/Shower/ShowerHandler:IntrinsicPtGaussian 1.3*GeV | ||
2022 | 559 | EOF | ||
2023 | 560 | fi | ||
2024 | 515 | 561 | ||
2026 | 516 | if [ $HWNEW = 1 ] | 562 | if [ "$HWNEW" -ge 1 ] |
2027 | 517 | then | 563 | then |
2028 | 518 | cat <<EOF >> ./$ifile | 564 | cat <<EOF >> ./$ifile |
2029 | 519 | set /Herwig/Shower/PartnerFinder:PartnerMethod Random | 565 | set /Herwig/Shower/PartnerFinder:PartnerMethod Random |
2030 | 520 | set /Herwig/Shower/PartnerFinder:ScaleChoice Partner | 566 | set /Herwig/Shower/PartnerFinder:ScaleChoice Partner |
2031 | 567 | EOF | ||
2032 | 568 | fi | ||
2033 | 569 | |||
2034 | 570 | if [ "$HWNEW" -le 1 ] | ||
2035 | 571 | then | ||
2036 | 572 | cat <<EOF >> ./$ifile | ||
2037 | 521 | set /Herwig/Shower/GtoQQbarSplitFn:AngularOrdered Yes | 573 | set /Herwig/Shower/GtoQQbarSplitFn:AngularOrdered Yes |
2046 | 522 | 574 | set /Herwig/Shower/GammatoQQbarSplitFn:AngularOrdered Yes | |
2047 | 523 | #set /Herwig/Shower/Evolver:Interactions QCDOnly | 575 | #set /Herwig/Shower/ShowerHandler:Interactions QCDOnly |
2048 | 524 | #set /Herwig/Shower/Evolver:SoftCorrelations No | 576 | #set /Herwig/Shower/ShowerHandler:SoftCorrelations No |
2049 | 525 | #set /Herwig/Shower/Evolver:SpinCorrelations Yes | 577 | #set /Herwig/Shower/ShowerHandler:SpinCorrelations Yes |
2050 | 526 | 578 | EOF | |
2051 | 527 | set /Herwig/Shower/Evolver:SpinCorrelations No | 579 | fi |
2052 | 528 | set /Herwig/Shower/KinematicsReconstructor:FinalStateReconOption Default | 580 | |
2053 | 529 | set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption Rapidity | 581 | if [ "$HWNEW" -ge 2 ] |
2054 | 582 | then | ||
2055 | 583 | cat <<EOF >> ./$ifile | ||
2056 | 584 | set /Herwig/Shower/ShowerHandler:SpinCorrelations No | ||
2057 | 530 | set /Herwig/Shower/ShowerHandler:MaxPtIsMuF Yes | 585 | set /Herwig/Shower/ShowerHandler:MaxPtIsMuF Yes |
2059 | 531 | set /Herwig/Shower/ShowerHandler:RestrictPhasespace On | 586 | set /Herwig/Shower/ShowerHandler:RestrictPhasespace Yes |
2060 | 532 | 587 | ||
2061 | 533 | EOF | 588 | EOF |
2062 | 534 | fi | 589 | fi |
2063 | @@ -807,36 +862,53 @@ | |||
2064 | 807 | # 4.) HW++ SETTINGS THAT ARE NOT ALLOWED TO BE TOUCHED BY THE USER | 862 | # 4.) HW++ SETTINGS THAT ARE NOT ALLOWED TO BE TOUCHED BY THE USER |
2065 | 808 | 863 | ||
2066 | 809 | #Boost and reconstruction stuff | 864 | #Boost and reconstruction stuff |
2067 | 865 | EOF | ||
2068 | 866 | |||
2069 | 867 | if [ "$HWNEW" -eq 1 ] || [ "$HWNEW" -eq 2 ] | ||
2070 | 868 | then | ||
2071 | 869 | cat <<EOF >> ./$ifile | ||
2072 | 870 | set /Herwig/Shower/KinematicsReconstructor:FinalStateReconOption Default | ||
2073 | 871 | set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption Rapidity | ||
2074 | 872 | EOF | ||
2075 | 873 | fi | ||
2076 | 874 | |||
2077 | 875 | if [ "$HWNEW" -eq 3 ] | ||
2078 | 876 | then | ||
2079 | 877 | cat <<EOF >> ./$ifile | ||
2080 | 878 | set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption Rapidity | ||
2081 | 879 | EOF | ||
2082 | 880 | fi | ||
2083 | 881 | |||
2084 | 882 | cat <<EOF >> ./$ifile | ||
2085 | 810 | set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption General | 883 | set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption General |
2086 | 811 | set /Herwig/Shower/KinematicsReconstructor:InitialInitialBoostOption LongTransBoost | 884 | set /Herwig/Shower/KinematicsReconstructor:InitialInitialBoostOption LongTransBoost |
2087 | 812 | 885 | ||
2088 | 813 | # --------------------------------------------------------------------- # | 886 | # --------------------------------------------------------------------- # |
2089 | 814 | # 5.) CREATE THE ANALYZER AND SAVE THE RUN (DO NOT MODIFY) | 887 | # 5.) CREATE THE ANALYZER AND SAVE THE RUN (DO NOT MODIFY) |
2090 | 815 | |||
2091 | 816 | EOF | 888 | EOF |
2092 | 817 | 889 | ||
2093 | 818 | if [ "$HWPPUTI" != "" ] | 890 | if [ "$HWPPUTI" != "" ] |
2094 | 819 | then | 891 | then |
2095 | 820 | cat <<EOF >> ./$ifile | 892 | cat <<EOF >> ./$ifile |
2096 | 821 | create MCatNLO::$HWPPANALYZER $HWPPANALYZER $HWPPANALYZER.so | 893 | create MCatNLO::$HWPPANALYZER $HWPPANALYZER $HWPPANALYZER.so |
2098 | 822 | insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 $HWPPANALYZER | 894 | insert /Herwig/Generators/$GENERATOR:AnalysisHandlers 0 $HWPPANALYZER |
2099 | 823 | 895 | ||
2100 | 824 | EOF | 896 | EOF |
2101 | 825 | else | 897 | else |
2102 | 826 | cat <<EOF >> ./$ifile | 898 | cat <<EOF >> ./$ifile |
2103 | 827 | #create MCatNLO::hepfortr hepfortr hepfortr.so | 899 | #create MCatNLO::hepfortr hepfortr hepfortr.so |
2105 | 828 | #insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 hepfortr | 900 | #insert /Herwig/Generators/$GENERATOR:AnalysisHandlers 0 hepfortr |
2106 | 829 | 901 | ||
2107 | 830 | # Useful analysis handlers for HepMC related output | 902 | # Useful analysis handlers for HepMC related output |
2108 | 831 | ################################################## | 903 | ################################################## |
2109 | 832 | # Schematic overview of an event (requires --with-hepmc to be set at configure time | 904 | # Schematic overview of an event (requires --with-hepmc to be set at configure time |
2110 | 833 | # and the graphviz program 'dot' to produce a plot) | 905 | # and the graphviz program 'dot' to produce a plot) |
2111 | 834 | #create MCatNLO::$HWPPANALYZER $HWPPANALYZER $HWPPANALYZER.so | 906 | #create MCatNLO::$HWPPANALYZER $HWPPANALYZER $HWPPANALYZER.so |
2114 | 835 | #insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 $HWPPANALYZER | 907 | #insert /Herwig/Generators/$GENERATOR:AnalysisHandlers 0 $HWPPANALYZER |
2115 | 836 | # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot | 908 | # insert $GENERATOR:AnalysisHandlers 0 /Herwig/Analysis/Plot |
2116 | 837 | # A HepMC dump file (requires --with-hepmc to be set at configure time) | 909 | # A HepMC dump file (requires --with-hepmc to be set at configure time) |
2119 | 838 | # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile | 910 | # insert $GENERATOR:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile |
2120 | 839 | insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile | 911 | insert /Herwig/Generators/$GENERATOR:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile |
2121 | 840 | set /Herwig/Analysis/HepMCFile:PrintEvent $NEVENTS | 912 | set /Herwig/Analysis/HepMCFile:PrintEvent $NEVENTS |
2122 | 841 | set /Herwig/Analysis/HepMCFile:Format GenEvent | 913 | set /Herwig/Analysis/HepMCFile:Format GenEvent |
2123 | 842 | set /Herwig/Analysis/HepMCFile:Units GeV_mm | 914 | set /Herwig/Analysis/HepMCFile:Units GeV_mm |
2124 | @@ -845,9 +917,10 @@ | |||
2125 | 845 | fi | 917 | fi |
2126 | 846 | 918 | ||
2127 | 847 | cat <<EOF >> ./$ifile | 919 | cat <<EOF >> ./$ifile |
2129 | 848 | saverun $runfile /Herwig/Generators/LHCGenerator | 920 | saverun $runfile /Herwig/Generators/$GENERATOR |
2130 | 849 | EOF | 921 | EOF |
2131 | 850 | 922 | ||
2132 | 923 | |||
2133 | 851 | ( cd . ;\ | 924 | ( cd . ;\ |
2134 | 852 | $exefile ) | 925 | $exefile ) |
2135 | 853 | 926 | ||
2136 | 854 | 927 | ||
2137 | === modified file 'Template/NLO/MCatNLO/shower_template.sh' | |||
2138 | --- Template/NLO/MCatNLO/shower_template.sh 2017-01-16 14:11:24 +0000 | |||
2139 | +++ Template/NLO/MCatNLO/shower_template.sh 2020-05-23 19:29:41 +0000 | |||
2140 | @@ -9,8 +9,11 @@ | |||
2141 | 9 | 9 | ||
2142 | 10 | export %(ld_library_path)s=$%(ld_library_path)s:%(extralibs)s | 10 | export %(ld_library_path)s=$%(ld_library_path)s:%(extralibs)s |
2143 | 11 | 11 | ||
2146 | 12 | # this is for py8 runs | 12 | if [ $SHOWER == "HERWIGPP" ] ; then |
2147 | 13 | export PYTHIA8DATA=`pwd`/xmldoc | 13 | export PYTHIA8DATA="" |
2148 | 14 | else | ||
2149 | 15 | export PYTHIA8DATA=`pwd`/xmldoc | ||
2150 | 16 | fi | ||
2151 | 14 | 17 | ||
2152 | 15 | # if one is splitting file cd to a new dir and link all files here | 18 | # if one is splitting file cd to a new dir and link all files here |
2153 | 16 | if [[ "$NFILE" != "" ]]; then | 19 | if [[ "$NFILE" != "" ]]; then |
2154 | 17 | 20 | ||
2155 | === modified file 'Template/NLO/Source/PDF/pdg2pdf.f' | |||
2156 | --- Template/NLO/Source/PDF/pdg2pdf.f 2015-11-06 16:54:54 +0000 | |||
2157 | +++ Template/NLO/Source/PDF/pdg2pdf.f 2020-05-23 19:29:41 +0000 | |||
2158 | @@ -66,12 +66,14 @@ | |||
2159 | 66 | endif | 66 | endif |
2160 | 67 | 67 | ||
2161 | 68 | ipart=ipdg | 68 | ipart=ipdg |
2166 | 69 | if(iabs(ipart).eq.21) ipart=0 | 69 | if(iabs(ipart).eq.21) then |
2167 | 70 | if(iabs(ipart).eq.22) ipart=7 | 70 | ipart=0 |
2168 | 71 | iporg=ipart | 71 | else if(iabs(ipart).eq.22) then |
2169 | 72 | 72 | ipart=7 | |
2170 | 73 | else if(iabs(ipart).eq.7) then | ||
2171 | 74 | ipart=7 | ||
2172 | 75 | else if(iabs(ipart).gt.7)then | ||
2173 | 73 | c This will be called for any PDG code, but we only support up to 7 | 76 | c This will be called for any PDG code, but we only support up to 7 |
2174 | 74 | if(iabs(ipart).gt.7)then | ||
2175 | 75 | C write(*,*) 'PDF not supported for pdg ',ipdg | 77 | C write(*,*) 'PDF not supported for pdg ',ipdg |
2176 | 76 | C write(*,*) 'For lepton colliders, please set the lpp* '// | 78 | C write(*,*) 'For lepton colliders, please set the lpp* '// |
2177 | 77 | C $ 'variables to 0 in the run_card' | 79 | C $ 'variables to 0 in the run_card' |
2178 | @@ -82,6 +84,7 @@ | |||
2179 | 82 | return | 84 | return |
2180 | 83 | endif | 85 | endif |
2181 | 84 | 86 | ||
2182 | 87 | iporg=ipart | ||
2183 | 85 | ireuse = 0 | 88 | ireuse = 0 |
2184 | 86 | ii=i_replace | 89 | ii=i_replace |
2185 | 87 | do i=1,20 | 90 | do i=1,20 |
2186 | 88 | 91 | ||
2187 | === modified file 'Template/NLO/Source/PDF/pdg2pdf_lhapdf.f' | |||
2188 | --- Template/NLO/Source/PDF/pdg2pdf_lhapdf.f 2016-05-24 12:48:05 +0000 | |||
2189 | +++ Template/NLO/Source/PDF/pdg2pdf_lhapdf.f 2020-05-23 19:29:41 +0000 | |||
2190 | @@ -64,12 +64,14 @@ | |||
2191 | 64 | endif | 64 | endif |
2192 | 65 | 65 | ||
2193 | 66 | ipart=ipdg | 66 | ipart=ipdg |
2198 | 67 | if(iabs(ipart).eq.21) ipart=0 | 67 | if(iabs(ipart).eq.21) then |
2199 | 68 | if(iabs(ipart).eq.22) ipart=7 | 68 | ipart=0 |
2200 | 69 | iporg=ipart | 69 | else if(iabs(ipart).eq.22) then |
2201 | 70 | 70 | ipart=7 | |
2202 | 71 | else if(iabs(ipart).eq.7) then | ||
2203 | 72 | ipart=7 | ||
2204 | 73 | else if(iabs(ipart).gt.7)then | ||
2205 | 71 | c This will be called for any PDG code, but we only support up to 7 | 74 | c This will be called for any PDG code, but we only support up to 7 |
2206 | 72 | if(iabs(ipart).gt.7)then | ||
2207 | 73 | C write(*,*) 'PDF not supported for pdg ',ipdg | 75 | C write(*,*) 'PDF not supported for pdg ',ipdg |
2208 | 74 | C write(*,*) 'For lepton colliders, please set the lpp* '// | 76 | C write(*,*) 'For lepton colliders, please set the lpp* '// |
2209 | 75 | C $ 'variables to 0 in the run_card' | 77 | C $ 'variables to 0 in the run_card' |
2210 | @@ -86,6 +88,7 @@ | |||
2211 | 86 | c Determine the member of the set (function of lhapdf) | 88 | c Determine the member of the set (function of lhapdf) |
2212 | 87 | call getnmem(iset,imem) | 89 | call getnmem(iset,imem) |
2213 | 88 | 90 | ||
2214 | 91 | iporg=ipart | ||
2215 | 89 | ireuse = 0 | 92 | ireuse = 0 |
2216 | 90 | ii=i_replace | 93 | ii=i_replace |
2217 | 91 | do i=1,20 | 94 | do i=1,20 |
2218 | 92 | 95 | ||
2219 | === modified file 'Template/NLO/Source/PDF/pdg2pdf_lhapdf6.f' | |||
2220 | --- Template/NLO/Source/PDF/pdg2pdf_lhapdf6.f 2017-01-10 15:57:32 +0000 | |||
2221 | +++ Template/NLO/Source/PDF/pdg2pdf_lhapdf6.f 2020-05-23 19:29:41 +0000 | |||
2222 | @@ -65,12 +65,14 @@ | |||
2223 | 65 | endif | 65 | endif |
2224 | 66 | 66 | ||
2225 | 67 | ipart=ipdg | 67 | ipart=ipdg |
2230 | 68 | if(iabs(ipart).eq.21) ipart=0 | 68 | if(iabs(ipart).eq.21) then |
2231 | 69 | if(iabs(ipart).eq.22) ipart=7 | 69 | ipart=0 |
2232 | 70 | iporg=ipart | 70 | else if(iabs(ipart).eq.22) then |
2233 | 71 | 71 | ipart=7 | |
2234 | 72 | else if(iabs(ipart).eq.7) then | ||
2235 | 73 | ipart=7 | ||
2236 | 74 | else if(iabs(ipart).gt.7)then | ||
2237 | 72 | c This will be called for any PDG code, but we only support up to 7 | 75 | c This will be called for any PDG code, but we only support up to 7 |
2238 | 73 | if(iabs(ipart).gt.7)then | ||
2239 | 74 | C write(*,*) 'PDF not supported for pdg ',ipdg | 76 | C write(*,*) 'PDF not supported for pdg ',ipdg |
2240 | 75 | C write(*,*) 'For lepton colliders, please set the lpp* '// | 77 | C write(*,*) 'For lepton colliders, please set the lpp* '// |
2241 | 76 | C $ 'variables to 0 in the run_card' | 78 | C $ 'variables to 0 in the run_card' |
2242 | @@ -86,6 +88,7 @@ | |||
2243 | 86 | c Determine the member of the set (function of lhapdf) | 88 | c Determine the member of the set (function of lhapdf) |
2244 | 87 | call getnmem(iset,imem) | 89 | call getnmem(iset,imem) |
2245 | 88 | 90 | ||
2246 | 91 | iporg=ipart | ||
2247 | 89 | ireuse = 0 | 92 | ireuse = 0 |
2248 | 90 | ii=i_replace | 93 | ii=i_replace |
2249 | 91 | do i=1,20 | 94 | do i=1,20 |
2250 | 92 | 95 | ||
2251 | === modified file 'Template/NLO/Source/kin_functions.f' | |||
2252 | --- Template/NLO/Source/kin_functions.f 2017-07-14 08:23:18 +0000 | |||
2253 | +++ Template/NLO/Source/kin_functions.f 2020-05-23 19:29:41 +0000 | |||
2254 | @@ -236,7 +236,7 @@ | |||
2255 | 236 | c----- | 236 | c----- |
2256 | 237 | c Begin Code | 237 | c Begin Code |
2257 | 238 | c----- | 238 | c----- |
2259 | 239 | if ((lpp(1).eq.0).and.(lpp(2).eq.0)) then | 239 | if ((lpp(1).ne.1).and.(lpp(2).ne.1)) then |
2260 | 240 | p1a = dsqrt(p1(1)**2+p1(2)**2+p1(3)**2) | 240 | p1a = dsqrt(p1(1)**2+p1(2)**2+p1(3)**2) |
2261 | 241 | p2a = dsqrt(p2(1)**2+p2(2)**2+p2(3)**2) | 241 | p2a = dsqrt(p2(1)**2+p2(2)**2+p2(3)**2) |
2262 | 242 | if (p1a*p2a .ne. 0d0) then | 242 | if (p1a*p2a .ne. 0d0) then |
2263 | 243 | 243 | ||
2264 | === modified file 'Template/NLO/Source/makefile' | |||
2265 | --- Template/NLO/Source/makefile 2017-07-31 08:48:20 +0000 | |||
2266 | +++ Template/NLO/Source/makefile 2020-05-23 19:29:41 +0000 | |||
2267 | @@ -13,6 +13,7 @@ | |||
2268 | 13 | zerox64_cernlib.o | 13 | zerox64_cernlib.o |
2269 | 14 | 14 | ||
2270 | 15 | .f.o: ; $(FC) $(FFLAGS) -c $*.f | 15 | .f.o: ; $(FC) $(FFLAGS) -c $*.f |
2271 | 16 | .f90.o: ; $(FC) $(FFLAGS) -c $*.f90 | ||
2272 | 16 | 17 | ||
2273 | 17 | all: $(LIBDIR)libdhelas.a $(LIBDIR)libgeneric.a $(LIBDIR)libpdf.a \ | 18 | all: $(LIBDIR)libdhelas.a $(LIBDIR)libgeneric.a $(LIBDIR)libpdf.a \ |
2274 | 18 | $(LIBDIR)libmodel.a $(LIBDIR)libcernlib.a param_card.inc | 19 | $(LIBDIR)libmodel.a $(LIBDIR)libcernlib.a param_card.inc |
2275 | 19 | 20 | ||
2276 | === modified file 'Template/NLO/Source/ranmar.f' | |||
2277 | --- Template/NLO/Source/ranmar.f 2017-01-30 15:18:32 +0000 | |||
2278 | +++ Template/NLO/Source/ranmar.f 2020-05-23 19:29:41 +0000 | |||
2279 | @@ -1,18 +1,3 @@ | |||
2280 | 1 | function ran2() | ||
2281 | 2 | c Wrapper for the random numbers; needed for the NLO stuff | ||
2282 | 3 | implicit none | ||
2283 | 4 | include '../SubProcesses/mint.inc' ! includes iconfig common | ||
2284 | 5 | double precision ran2,x,a,b | ||
2285 | 6 | integer ii,jconfig | ||
2286 | 7 | a=0d0 ! min allowed value for x | ||
2287 | 8 | b=1d0 ! max allowed value for x | ||
2288 | 9 | ii=0 ! dummy argument of ntuple | ||
2289 | 10 | jconfig=iconfig ! integration channel (for off-set) | ||
2290 | 11 | call ntuple(x,a,b,ii,jconfig) | ||
2291 | 12 | ran2=x | ||
2292 | 13 | return | ||
2293 | 14 | end | ||
2294 | 15 | |||
2295 | 16 | subroutine ntuple(x,a,b,ii,jconfig) | 1 | subroutine ntuple(x,a,b,ii,jconfig) |
2296 | 17 | c------------------------------------------------------- | 2 | c------------------------------------------------------- |
2297 | 18 | c Front to ranmar which allows user to easily | 3 | c Front to ranmar which allows user to easily |
2298 | 19 | 4 | ||
2299 | === modified file 'Template/NLO/SubProcesses/BinothLHA.f' | |||
2300 | --- Template/NLO/SubProcesses/BinothLHA.f 2017-06-23 14:14:03 +0000 | |||
2301 | +++ Template/NLO/SubProcesses/BinothLHA.f 2020-05-23 19:29:41 +0000 | |||
2302 | @@ -4,12 +4,11 @@ | |||
2303 | 4 | c that calls the OLP and returns the virtual weights. For convenience | 4 | c that calls the OLP and returns the virtual weights. For convenience |
2304 | 5 | c also the born_wgt is passed to this subroutine. | 5 | c also the born_wgt is passed to this subroutine. |
2305 | 6 | c | 6 | c |
2306 | 7 | use FKSParams | ||
2307 | 7 | implicit none | 8 | implicit none |
2308 | 8 | include "nexternal.inc" | 9 | include "nexternal.inc" |
2309 | 9 | include "coupl.inc" | 10 | include "coupl.inc" |
2310 | 10 | include 'born_nhel.inc' | 11 | include 'born_nhel.inc' |
2311 | 11 | c general MadFKS parameters | ||
2312 | 12 | include 'FKSParams.inc' | ||
2313 | 13 | double precision pi, zero,mone | 12 | double precision pi, zero,mone |
2314 | 14 | parameter (pi=3.1415926535897932385d0) | 13 | parameter (pi=3.1415926535897932385d0) |
2315 | 15 | parameter (zero=0d0) | 14 | parameter (zero=0d0) |
2316 | @@ -72,6 +71,9 @@ | |||
2317 | 72 | integer ret_code_common | 71 | integer ret_code_common |
2318 | 73 | common /to_ret_code/ret_code_common | 72 | common /to_ret_code/ret_code_common |
2319 | 74 | double precision born_hel_from_virt | 73 | double precision born_hel_from_virt |
2320 | 74 | |||
2321 | 75 | logical updateloop | ||
2322 | 76 | common /to_updateloop/updateloop | ||
2323 | 75 | c masses | 77 | c masses |
2324 | 76 | include 'pmass.inc' | 78 | include 'pmass.inc' |
2325 | 77 | data nbad / 0 / | 79 | data nbad / 0 / |
2326 | @@ -80,7 +82,11 @@ | |||
2327 | 80 | c update the ren_scale for MadLoop and the couplings (should be the | 82 | c update the ren_scale for MadLoop and the couplings (should be the |
2328 | 81 | c Ellis-Sexton scale) | 83 | c Ellis-Sexton scale) |
2329 | 82 | mu_r = sqrt(QES2) | 84 | mu_r = sqrt(QES2) |
2330 | 85 | ! force to update also loop-related parameters | ||
2331 | 86 | updateloop=.true. | ||
2332 | 83 | call update_as_param() | 87 | call update_as_param() |
2333 | 88 | updateloop=.false. | ||
2334 | 89 | |||
2335 | 84 | alpha_S=g**2/(4d0*PI) | 90 | alpha_S=g**2/(4d0*PI) |
2336 | 85 | ao2pi= alpha_S/(2d0*PI) | 91 | ao2pi= alpha_S/(2d0*PI) |
2337 | 86 | virt_wgt= 0d0 | 92 | virt_wgt= 0d0 |
2338 | @@ -111,8 +117,13 @@ | |||
2339 | 111 | c itself again to perform stability check to make sure no unstable EPS | 117 | c itself again to perform stability check to make sure no unstable EPS |
2340 | 112 | c splips unnoticed. | 118 | c splips unnoticed. |
2341 | 113 | CALL FORCE_STABILITY_CHECK(.TRUE.) | 119 | CALL FORCE_STABILITY_CHECK(.TRUE.) |
2344 | 114 | CALL COLLIER_COMPUTE_UV_POLES(.FALSE.) | 120 | IF (.not. force_polecheck) THEN ! still have the pole for the pole check |
2345 | 115 | CALL COLLIER_COMPUTE_IR_POLES(.FALSE.) | 121 | CALL COLLIER_COMPUTE_UV_POLES(.FALSE.) |
2346 | 122 | CALL COLLIER_COMPUTE_IR_POLES(.FALSE.) | ||
2347 | 123 | else | ||
2348 | 124 | CALL COLLIER_COMPUTE_UV_POLES(.TRUE.) | ||
2349 | 125 | CALL COLLIER_COMPUTE_IR_POLES(.TRUE.) | ||
2350 | 126 | endif | ||
2351 | 116 | firsttime_run = .false. | 127 | firsttime_run = .false. |
2352 | 117 | endif | 128 | endif |
2353 | 118 | firsttime=firsttime.or.force_polecheck | 129 | firsttime=firsttime.or.force_polecheck |
2354 | @@ -290,7 +301,7 @@ | |||
2355 | 290 | if ((dabs(avgPoleRes(1))+dabs(avgPoleRes(2))).ne.0d0) then | 301 | if ((dabs(avgPoleRes(1))+dabs(avgPoleRes(2))).ne.0d0) then |
2356 | 291 | cpol = .not.((((PoleDiff(1)+PoleDiff(2))/ | 302 | cpol = .not.((((PoleDiff(1)+PoleDiff(2))/ |
2357 | 292 | $ (dabs(avgPoleRes(1))+dabs(avgPoleRes(2)))) .lt. | 303 | $ (dabs(avgPoleRes(1))+dabs(avgPoleRes(2)))) .lt. |
2359 | 293 | $ tolerance*10d0).or.(mod(ret_code,10).eq.7)) | 304 | $ tolerance*10d0).or.(mod(ret_code,10).eq.7.and..not.force_polecheck)) |
2360 | 294 | else | 305 | else |
2361 | 295 | cpol = .not.((PoleDiff(1)+PoleDiff(2).lt.tolerance*10d0) | 306 | cpol = .not.((PoleDiff(1)+PoleDiff(2).lt.tolerance*10d0) |
2362 | 296 | $ .or.(mod(ret_code,10).eq.7)) | 307 | $ .or.(mod(ret_code,10).eq.7)) |
2363 | 297 | 308 | ||
2364 | === modified file 'Template/NLO/SubProcesses/BinothLHA_OLP.f' | |||
2365 | --- Template/NLO/SubProcesses/BinothLHA_OLP.f 2015-08-13 09:26:37 +0000 | |||
2366 | +++ Template/NLO/SubProcesses/BinothLHA_OLP.f 2020-05-23 19:29:41 +0000 | |||
2367 | @@ -6,11 +6,11 @@ | |||
2368 | 6 | c | 6 | c |
2369 | 7 | C************************************************************************ | 7 | C************************************************************************ |
2370 | 8 | c | 8 | c |
2371 | 9 | use FKSParams | ||
2372 | 9 | implicit none | 10 | implicit none |
2373 | 10 | include "nexternal.inc" | 11 | include "nexternal.inc" |
2374 | 11 | include "coupl.inc" | 12 | include "coupl.inc" |
2375 | 12 | include "Binoth_proc.inc" | 13 | include "Binoth_proc.inc" |
2376 | 13 | include "FKSParams.inc" | ||
2377 | 14 | double precision pi | 14 | double precision pi |
2378 | 15 | parameter (pi=3.1415926535897932385d0) | 15 | parameter (pi=3.1415926535897932385d0) |
2379 | 16 | double precision pin(0:3,nexternal-1),p(0:4,nexternal-1) | 16 | double precision pin(0:3,nexternal-1),p(0:4,nexternal-1) |
2380 | 17 | 17 | ||
2381 | === removed file 'Template/NLO/SubProcesses/FKSParamReader.f' | |||
2382 | === added file 'Template/NLO/SubProcesses/FKSParams.f90' | |||
2383 | --- Template/NLO/SubProcesses/FKSParams.f90 1970-01-01 00:00:00 +0000 | |||
2384 | +++ Template/NLO/SubProcesses/FKSParams.f90 2020-05-23 19:29:41 +0000 | |||
2385 | @@ -0,0 +1,248 @@ | |||
2386 | 1 | !==================================================================== | ||
2387 | 2 | ! | ||
2388 | 3 | ! Define common block with all general parameters used by MadFKS | ||
2389 | 4 | ! See their definitions in the file FKS_params.dat. | ||
2390 | 5 | ! | ||
2391 | 6 | !==================================================================== | ||
2392 | 7 | module FKSParams | ||
2393 | 8 | character(len=64), parameter :: paramFileName='FKS_params.dat' | ||
2394 | 9 | integer,parameter :: maxContribsSelected=100, & | ||
2395 | 10 | maxCouplingsSelected=100, & | ||
2396 | 11 | maxContribType=15, & | ||
2397 | 12 | maxCouplingTypes=20 | ||
2398 | 13 | real*8 :: IRPoleCheckThreshold,Virt_fraction, PrecisionVirtualAtRunTime,Min_virt_fraction | ||
2399 | 14 | integer :: NHelForMCoverHels,VetoedContributionTypes(0:maxContribsSelected), & | ||
2400 | 15 | SelectedContributionTypes(0:maxContribsSelected),QED_squared_selected, & | ||
2401 | 16 | SelectedCouplingOrders(maxCouplingTypes,0:maxCouplingsSelected), & | ||
2402 | 17 | QCD_squared_selected | ||
2403 | 18 | logical :: separate_flavour_configs,IncludeBornContributions,use_poly_virtual | ||
2404 | 19 | |||
2405 | 20 | contains | ||
2406 | 21 | |||
2407 | 22 | subroutine FKSParamReader(filename, printParam, force) | ||
2408 | 23 | ! Reads the file 'filename' and sets the parameters found in that file. | ||
2409 | 24 | implicit none | ||
2410 | 25 | logical, save :: HasReadOnce=.False.,paramPrinted=.false. | ||
2411 | 26 | logical :: force,couldRead,printParam | ||
2412 | 27 | character(*) :: filename | ||
2413 | 28 | CHARACTER(len=64) :: buff, buff2, mode | ||
2414 | 29 | include "orders.inc" | ||
2415 | 30 | integer :: i,j | ||
2416 | 31 | couldRead=.False. | ||
2417 | 32 | if (HasReadOnce.and..not.force) then | ||
2418 | 33 | goto 901 | ||
2419 | 34 | endif | ||
2420 | 35 | ! Make sure to have default parameters if not set in the FKSParams.dat card | ||
2421 | 36 | ! (if it is an old one for instance) | ||
2422 | 37 | call DefaultFKSParam() | ||
2423 | 38 | ! Overwrite the default parameters from file: | ||
2424 | 39 | open(68, file=fileName, err=676, action='READ') | ||
2425 | 40 | do | ||
2426 | 41 | read(68,*,end=999) buff | ||
2427 | 42 | if(index(buff,'#').eq.1) then | ||
2428 | 43 | if (buff .eq. '#IRPoleCheckThreshold') then | ||
2429 | 44 | read(68,*,end=999) IRPoleCheckThreshold | ||
2430 | 45 | if (IRPoleCheckThreshold .lt. -1.01d0 ) then | ||
2431 | 46 | stop 'IRPoleCheckThreshold must be >= -1.0d0.' | ||
2432 | 47 | endif | ||
2433 | 48 | elseif (buff .eq. '#PrecisionVirtualAtRunTime') then | ||
2434 | 49 | read(68,*,end=999) PrecisionVirtualAtRunTime | ||
2435 | 50 | if (IRPoleCheckThreshold .lt. -1.01d0 ) then | ||
2436 | 51 | stop 'PrecisionVirtualAtRunTime must be >= -1.0d0.' | ||
2437 | 52 | endif | ||
2438 | 53 | else if (buff .eq. '#NHelForMCoverHels') then | ||
2439 | 54 | read(68,*,end=999) NHelForMCoverHels | ||
2440 | 55 | if (NHelForMCoverHels .lt. -1) then | ||
2441 | 56 | stop 'NHelForMCoverHels must be >= -1.' | ||
2442 | 57 | endif | ||
2443 | 58 | else if (buff .eq. '#QCD^2==') then | ||
2444 | 59 | read(68,*,end=999) QCD_squared_selected | ||
2445 | 60 | if (QCD_squared_selected .lt. -1) then | ||
2446 | 61 | stop 'QCD_squared_selected must be >= -1.' | ||
2447 | 62 | endif | ||
2448 | 63 | else if (buff .eq. '#QED^2==') then | ||
2449 | 64 | read(68,*,end=999) QED_squared_selected | ||
2450 | 65 | if (QED_squared_selected .lt. -1) then | ||
2451 | 66 | stop 'QED_squared_selected must be >= -1.' | ||
2452 | 67 | endif | ||
2453 | 68 | else if (buff .eq. '#VirtualFraction') then | ||
2454 | 69 | read(68,*,end=999) Virt_fraction | ||
2455 | 70 | if (Virt_fraction .lt. 0 .or. virt_fraction .gt.1) then | ||
2456 | 71 | stop 'VirtualFraction should be a fraction between 0 and 1' | ||
2457 | 72 | endif | ||
2458 | 73 | else if (buff .eq. '#MinVirtualFraction') then | ||
2459 | 74 | read(68,*,end=999) Min_Virt_fraction | ||
2460 | 75 | if (min_virt_fraction .lt. 0 .or. min_virt_fraction .gt.1) then | ||
2461 | 76 | stop 'VirtualFraction should be a fraction between 0 and 1' | ||
2462 | 77 | endif | ||
2463 | 78 | else if (buff .eq. '#SeparateFlavourConfigurations') then | ||
2464 | 79 | read(68,*,end=999) separate_flavour_configs | ||
2465 | 80 | else if (buff .eq. '#UsePolyVirtual') then | ||
2466 | 81 | read(68,*,end=999) use_poly_virtual | ||
2467 | 82 | else if (buff .eq. '#VetoedContributionTypes') then | ||
2468 | 83 | read(68,*,end=999) VetoedContributionTypes(0) | ||
2469 | 84 | if (VetoedContributionTypes(0) .lt. 0.or. & | ||
2470 | 85 | VetoedContributionTypes(0) .gt. maxContribsSelected) then | ||
2471 | 86 | write(*,*) 'VetoedContributionTypes length should be >= 0 and <=', & | ||
2472 | 87 | maxContribsSelected | ||
2473 | 88 | stop 'Format error in FKS_params.dat.' | ||
2474 | 89 | endif | ||
2475 | 90 | read(68,*,end=999) (VetoedContributionTypes(I),I=1,VetoedContributionTypes(0)) | ||
2476 | 91 | do I=1,VetoedContributionTypes(0) | ||
2477 | 92 | if (VetoedContributionTypes(I).lt.1.or. & | ||
2478 | 93 | VetoedContributionTypes(I).gt.maxContribType) then | ||
2479 | 94 | write(*,*) 'VetoedContributionTypes must be >=1 and <=',maxContribType | ||
2480 | 95 | stop 'Format error in FKS_params.dat.' | ||
2481 | 96 | endif | ||
2482 | 97 | enddo | ||
2483 | 98 | do I=VetoedContributionTypes(0)+1,maxContribsSelected | ||
2484 | 99 | VetoedContributionTypes(I)=-1 | ||
2485 | 100 | enddo | ||
2486 | 101 | |||
2487 | 102 | else if (buff .eq. '#SelectedContributionTypes') then | ||
2488 | 103 | read(68,*,end=999) SelectedContributionTypes(0) | ||
2489 | 104 | if (SelectedContributionTypes(0) .lt. 0 .or. & | ||
2490 | 105 | SelectedContributionTypes(0) .gt. maxContribsSelected) then | ||
2491 | 106 | write(*,*) 'SelectedContributionTypes length should be >= 0 and <=', & | ||
2492 | 107 | maxContribsSelected | ||
2493 | 108 | stop 'Format error in FKS_params.dat.' | ||
2494 | 109 | endif | ||
2495 | 110 | read(68,*,end=999) (SelectedContributionTypes(I),I=1,SelectedContributionTypes(0)) | ||
2496 | 111 | do I=1,SelectedContributionTypes(0) | ||
2497 | 112 | if (SelectedContributionTypes(I).lt.1.or. & | ||
2498 | 113 | SelectedContributionTypes(I).gt.maxContribType) then | ||
2499 | 114 | write(*,*) 'SelectedContributionTypes must be >=1 and <=',maxContribType | ||
2500 | 115 | stop 'Format error in FKS_params.dat.' | ||
2501 | 116 | endif | ||
2502 | 117 | enddo | ||
2503 | 118 | do I=SelectedContributionTypes(0)+1,maxContribsSelected | ||
2504 | 119 | SelectedContributionTypes(I)=-1 | ||
2505 | 120 | enddo | ||
2506 | 121 | else if (buff .eq. '#SelectedCouplingOrders') then | ||
2507 | 122 | read(68,*,end=999) SelectedCouplingOrders(1,0) | ||
2508 | 123 | if (SelectedCouplingOrders(1,0) .lt. 0 .or. & | ||
2509 | 124 | SelectedCouplingOrders(1,0) .gt. maxCouplingsSelected) then | ||
2510 | 125 | write(*,*) 'SelectedCouplingOrders length should be >= 0 and <=', & | ||
2511 | 126 | maxCouplingsSelected | ||
2512 | 127 | stop 'Format error in FKS_params.dat.' | ||
2513 | 128 | endif | ||
2514 | 129 | do j = 2, maxCouplingTypes | ||
2515 | 130 | SelectedCouplingOrders(j,0) = SelectedCouplingOrders(1,0) | ||
2516 | 131 | enddo | ||
2517 | 132 | do j = 1, SelectedCouplingOrders(1,0) | ||
2518 | 133 | read(68,*,end=999) (SelectedCouplingOrders(i,j),i=1,nsplitorders) | ||
2519 | 134 | do i=nsplitorders+1,maxCouplingTypes | ||
2520 | 135 | SelectedCouplingOrders(i,j)=-1 | ||
2521 | 136 | enddo | ||
2522 | 137 | enddo | ||
2523 | 138 | else | ||
2524 | 139 | write(*,*) 'The parameter name ',buff(2:),'is not reckognized.' | ||
2525 | 140 | stop 'Format error in FKS_params.dat.' | ||
2526 | 141 | endif | ||
2527 | 142 | endif | ||
2528 | 143 | enddo | ||
2529 | 144 | 999 continue | ||
2530 | 145 | couldRead=.True. | ||
2531 | 146 | goto 998 | ||
2532 | 147 | |||
2533 | 148 | 676 continue | ||
2534 | 149 | write(*,*) 'ERROR :: MadFKS parameter file ',fileName, & | ||
2535 | 150 | ' could not be found or is malformed. Please specify it.' | ||
2536 | 151 | stop | ||
2537 | 152 | ! Below is the code if one desires to let the code continue with | ||
2538 | 153 | ! a non existing or malformed parameter file | ||
2539 | 154 | write(*,*) 'WARNING :: The file ',fileName,' could not be ', & | ||
2540 | 155 | ' open or did not contain the necessary information. The ', & | ||
2541 | 156 | ' default MadFKS parameters will be used.' | ||
2542 | 157 | call DefaultFKSParam() | ||
2543 | 158 | goto 998 | ||
2544 | 159 | 998 continue | ||
2545 | 160 | |||
2546 | 161 | if(printParam.and..not.paramPrinted) then | ||
2547 | 162 | write(*,*) & | ||
2548 | 163 | '===============================================================' | ||
2549 | 164 | if (couldRead) then | ||
2550 | 165 | write(*,*) 'INFO: MadFKS read these parameters from ',filename | ||
2551 | 166 | else | ||
2552 | 167 | write(*,*) 'INFO: MadFKS used the default parameters.' | ||
2553 | 168 | endif | ||
2554 | 169 | write(*,*) & | ||
2555 | 170 | '===============================================================' | ||
2556 | 171 | write(*,*) ' > IRPoleCheckThreshold = ',IRPoleCheckThreshold | ||
2557 | 172 | write(*,*) ' > PrecisionVirtualAtRunTime = ',PrecisionVirtualAtRunTime | ||
2558 | 173 | if (SelectedContributionTypes(0).gt.0) then | ||
2559 | 174 | write(*,*) ' > SelectedContributionTypes = ', & | ||
2560 | 175 | (SelectedContributionTypes(I),I=1,SelectedContributionTypes(0)) | ||
2561 | 176 | else | ||
2562 | 177 | write(*,*) ' > SelectedContributionTypes = All' | ||
2563 | 178 | endif | ||
2564 | 179 | if (VetoedContributionTypes(0).gt.0) then | ||
2565 | 180 | write(*,*) ' > VetoedContributionTypes = ', & | ||
2566 | 181 | (VetoedContributionTypes(I),I=1,VetoedContributionTypes(0)) | ||
2567 | 182 | else | ||
2568 | 183 | write(*,*) ' > VetoedContributionTypes = None' | ||
2569 | 184 | endif | ||
2570 | 185 | if (QCD_squared_selected.eq.-1) then | ||
2571 | 186 | write(*,*) ' > QCD_squared_selected = All' | ||
2572 | 187 | else | ||
2573 | 188 | write(*,*) ' > QCD_squared_selected = ',QCD_squared_selected | ||
2574 | 189 | endif | ||
2575 | 190 | if (QED_squared_selected.eq.-1) then | ||
2576 | 191 | write(*,*) ' > QED_squared_selected = All' | ||
2577 | 192 | else | ||
2578 | 193 | write(*,*) ' > QED_squared_selected = ',QED_squared_selected | ||
2579 | 194 | endif | ||
2580 | 195 | if (SelectedCouplingOrders(1,0).gt.0) then | ||
2581 | 196 | do j=1,SelectedCouplingOrders(1,0) | ||
2582 | 197 | write(*,*) ' > SelectedCouplingOrders(',j,') = ', & | ||
2583 | 198 | (SelectedCouplingOrders(i,j),i=1,nsplitorders) | ||
2584 | 199 | enddo | ||
2585 | 200 | else | ||
2586 | 201 | write(*,*) ' > SelectedCouplingOrders = All' | ||
2587 | 202 | endif | ||
2588 | 203 | write(*,*) ' > NHelForMCoverHels = ',NHelForMCoverHels | ||
2589 | 204 | write(*,*) ' > VirtualFraction = ',Virt_fraction | ||
2590 | 205 | write(*,*) ' > MinVirtualFraction = ',Min_virt_fraction | ||
2591 | 206 | write(*,*) ' > SeparateFlavourConfigs = ',separate_flavour_configs | ||
2592 | 207 | write(*,*) ' > UsePolyVirtual = ',use_poly_virtual | ||
2593 | 208 | write(*,*) & | ||
2594 | 209 | '===============================================================' | ||
2595 | 210 | paramPrinted=.TRUE. | ||
2596 | 211 | endif | ||
2597 | 212 | |||
2598 | 213 | close(68) | ||
2599 | 214 | HasReadOnce=.TRUE. | ||
2600 | 215 | 901 continue | ||
2601 | 216 | end subroutine FKSParamReader | ||
2602 | 217 | |||
2603 | 218 | subroutine DefaultFKSParam() | ||
2604 | 219 | ! Sets the default parameters | ||
2605 | 220 | implicit none | ||
2606 | 221 | integer i,j | ||
2607 | 222 | IRPoleCheckThreshold=1.0d-5 | ||
2608 | 223 | NHelForMCoverHels=5 | ||
2609 | 224 | PrecisionVirtualAtRunTime=1d-3 | ||
2610 | 225 | Virt_fraction=1d0 | ||
2611 | 226 | QED_squared_selected=-1 | ||
2612 | 227 | QCD_squared_selected=-1 | ||
2613 | 228 | Min_virt_fraction=0.005d0 | ||
2614 | 229 | separate_flavour_configs=.false. | ||
2615 | 230 | use_poly_virtual=.true. | ||
2616 | 231 | IncludeBornContributions=.true. | ||
2617 | 232 | SelectedContributionTypes(0)=0 | ||
2618 | 233 | VetoedContributionTypes(0)=0 | ||
2619 | 234 | do i=1, maxContribsSelected | ||
2620 | 235 | SelectedContributionTypes(I)=-1 | ||
2621 | 236 | VetoedContributionTypes(I)=-1 | ||
2622 | 237 | enddo | ||
2623 | 238 | do j=1,maxCouplingTypes | ||
2624 | 239 | SelectedCouplingOrders(j,0) = 0 | ||
2625 | 240 | enddo | ||
2626 | 241 | do j=1,maxCouplingsSelected | ||
2627 | 242 | do i=1,maxCouplingTypes | ||
2628 | 243 | SelectedCouplingOrders(i,j) = -1 | ||
2629 | 244 | enddo | ||
2630 | 245 | enddo | ||
2631 | 246 | end subroutine DefaultFKSParam | ||
2632 | 247 | |||
2633 | 248 | end module FKSParams | ||
2634 | 0 | 249 | ||
2635 | === removed file 'Template/NLO/SubProcesses/FKSParams.inc' | |||
2636 | === modified file 'Template/NLO/SubProcesses/MC_integer.f' | |||
2637 | --- Template/NLO/SubProcesses/MC_integer.f 2018-06-04 07:36:30 +0000 | |||
2638 | +++ Template/NLO/SubProcesses/MC_integer.f 2020-05-23 19:29:41 +0000 | |||
2639 | @@ -58,6 +58,7 @@ | |||
2640 | 58 | data firsttime/maxdim*.true./ | 58 | data firsttime/maxdim*.true./ |
2641 | 59 | data realfirsttime/.true./ | 59 | data realfirsttime/.true./ |
2642 | 60 | character*1 cdum | 60 | character*1 cdum |
2643 | 61 | character*3 action | ||
2644 | 61 | integer nintervals(maxdim),maxintervals,niint_thisd | 62 | integer nintervals(maxdim),maxintervals,niint_thisd |
2645 | 62 | parameter (maxintervals=200) | 63 | parameter (maxintervals=200) |
2646 | 63 | integer ncall(0:maxintervals,maxdim) | 64 | integer ncall(0:maxintervals,maxdim) |
2647 | @@ -95,7 +96,7 @@ | |||
2648 | 95 | do i=1,this_dim-1 ! skip the lines not needed for 'this_dim' | 96 | do i=1,this_dim-1 ! skip the lines not needed for 'this_dim' |
2649 | 96 | read(52,*,end=999,err=999) cdum | 97 | read(52,*,end=999,err=999) cdum |
2650 | 97 | enddo | 98 | enddo |
2652 | 98 | read(52,*,end=999,err=999) | 99 | read(52,*,end=999,err=999) action, |
2653 | 99 | & (grid(i,this_dim),i=0,nintervals(this_dim)) ! here is what we want | 100 | & (grid(i,this_dim),i=0,nintervals(this_dim)) ! here is what we want |
2654 | 100 | do i=this_dim+1,maxdim ! make sure that there are enough lines in this file | 101 | do i=this_dim+1,maxdim ! make sure that there are enough lines in this file |
2655 | 101 | read(52,*,end=999,err=999) cdum | 102 | read(52,*,end=999,err=999) cdum |
2656 | @@ -266,7 +267,7 @@ | |||
2657 | 266 | enddo | 267 | enddo |
2658 | 267 | open(unit=52,file='grid.MC_integer',status='unknown',err=999) | 268 | open(unit=52,file='grid.MC_integer',status='unknown',err=999) |
2659 | 268 | do this_dim=1,maxdim | 269 | do this_dim=1,maxdim |
2661 | 269 | write(52,*) (grid(i,this_dim),i=0,nintervals(this_dim)) | 270 | write(52,*) 'AVE',(grid(i,this_dim),i=0,nintervals(this_dim)) |
2662 | 270 | enddo | 271 | enddo |
2663 | 271 | close(52) | 272 | close(52) |
2664 | 272 | c | 273 | c |
2665 | 273 | 274 | ||
2666 | === modified file 'Template/NLO/SubProcesses/check_poles.f' | |||
2667 | --- Template/NLO/SubProcesses/check_poles.f 2018-09-21 13:46:51 +0000 | |||
2668 | +++ Template/NLO/SubProcesses/check_poles.f 2020-05-23 19:29:41 +0000 | |||
2669 | @@ -2,6 +2,8 @@ | |||
2670 | 2 | c************************************************************************** | 2 | c************************************************************************** |
2671 | 3 | c This is the driver for the whole calulation | 3 | c This is the driver for the whole calulation |
2672 | 4 | c************************************************************************** | 4 | c************************************************************************** |
2673 | 5 | use mint_module | ||
2674 | 6 | use FKSParams | ||
2675 | 5 | implicit none | 7 | implicit none |
2676 | 6 | C | 8 | C |
2677 | 7 | C CONSTANTS | 9 | C CONSTANTS |
2678 | @@ -9,7 +11,7 @@ | |||
2679 | 9 | double precision pi, zero | 11 | double precision pi, zero |
2680 | 10 | parameter (pi=3.1415926535897932385d0) | 12 | parameter (pi=3.1415926535897932385d0) |
2681 | 11 | parameter (zero = 0d0) | 13 | parameter (zero = 0d0) |
2683 | 12 | integer npoints, npointsChecked | 14 | integer npointsChecked |
2684 | 13 | integer i, j, k | 15 | integer i, j, k |
2685 | 14 | integer return_code | 16 | integer return_code |
2686 | 15 | double precision tolerance, tolerance_default | 17 | double precision tolerance, tolerance_default |
2687 | @@ -63,8 +65,6 @@ | |||
2688 | 63 | common /to_polecheck/force_polecheck, polecheck_passed | 65 | common /to_polecheck/force_polecheck, polecheck_passed |
2689 | 64 | integer ret_code_ml | 66 | integer ret_code_ml |
2690 | 65 | common /to_ret_code/ret_code_ml | 67 | common /to_ret_code/ret_code_ml |
2691 | 66 | include 'FKSParams.inc' | ||
2692 | 67 | include 'mint.inc' | ||
2693 | 68 | 68 | ||
2694 | 69 | C----- | 69 | C----- |
2695 | 70 | C BEGIN CODE | 70 | C BEGIN CODE |
2696 | @@ -462,16 +462,3 @@ | |||
2697 | 462 | return | 462 | return |
2698 | 463 | end | 463 | end |
2699 | 464 | 464 | ||
2700 | 465 | subroutine outfun(p, a, b, i) | ||
2701 | 466 | c just a dummy subroutine | ||
2702 | 467 | implicit none | ||
2703 | 468 | include 'nexternal.inc' | ||
2704 | 469 | double precision p(0:3, nexternal), a, b | ||
2705 | 470 | integer i | ||
2706 | 471 | write(*,*) 'THIS FUNCTION SHOULD NEVER BE CALLED' | ||
2707 | 472 | return | ||
2708 | 473 | end | ||
2709 | 474 | |||
2710 | 475 | |||
2711 | 476 | subroutine initplot | ||
2712 | 477 | end | ||
2713 | 478 | 465 | ||
2714 | === modified file 'Template/NLO/SubProcesses/cuts.f' | |||
2715 | --- Template/NLO/SubProcesses/cuts.f 2018-04-16 14:08:47 +0000 | |||
2716 | +++ Template/NLO/SubProcesses/cuts.f 2020-05-23 19:29:41 +0000 | |||
2717 | @@ -139,7 +139,7 @@ | |||
2718 | 139 | return | 139 | return |
2719 | 140 | endif | 140 | endif |
2720 | 141 | endif | 141 | endif |
2722 | 142 | if (ipdg(i).eq.-ipdg(j)) then | 142 | if (ipdg_reco(i).eq.-ipdg_reco(j)) then |
2723 | 143 | if (drll_sf.gt.0d0) then | 143 | if (drll_sf.gt.0d0) then |
2724 | 144 | if (R2_04(p_reco(0,i),p_reco(0,j)).lt.drll_sf**2) then | 144 | if (R2_04(p_reco(0,i),p_reco(0,j)).lt.drll_sf**2) then |
2725 | 145 | passcuts_user=.false. | 145 | passcuts_user=.false. |
2726 | 146 | 146 | ||
2727 | === modified file 'Template/NLO/SubProcesses/driver_mintFO.f' | |||
2728 | --- Template/NLO/SubProcesses/driver_mintFO.f 2018-09-21 13:46:51 +0000 | |||
2729 | +++ Template/NLO/SubProcesses/driver_mintFO.f 2020-05-23 19:29:41 +0000 | |||
2730 | @@ -3,6 +3,8 @@ | |||
2731 | 3 | c This is the driver for the whole calculation | 3 | c This is the driver for the whole calculation |
2732 | 4 | c************************************************************************** | 4 | c************************************************************************** |
2733 | 5 | use extra_weights | 5 | use extra_weights |
2734 | 6 | use mint_module | ||
2735 | 7 | use FKSParams | ||
2736 | 6 | implicit none | 8 | implicit none |
2737 | 7 | C | 9 | C |
2738 | 8 | C CONSTANTS | 10 | C CONSTANTS |
2739 | @@ -11,13 +13,10 @@ | |||
2740 | 11 | parameter (ZERO = 0d0) | 13 | parameter (ZERO = 0d0) |
2741 | 12 | include 'nexternal.inc' | 14 | include 'nexternal.inc' |
2742 | 13 | include 'genps.inc' | 15 | include 'genps.inc' |
2743 | 14 | INTEGER ITMAX, NCALL | ||
2744 | 15 | |||
2745 | 16 | common/citmax/itmax,ncall | ||
2746 | 17 | C | 16 | C |
2747 | 18 | C LOCAL | 17 | C LOCAL |
2748 | 19 | C | 18 | C |
2750 | 20 | integer i,j,k,l,l1,l2 | 19 | integer i,j,k,l,l1,l2,kchan |
2751 | 21 | character*130 buf | 20 | character*130 buf |
2752 | 22 | c | 21 | c |
2753 | 23 | c Global | 22 | c Global |
2754 | @@ -27,8 +26,8 @@ | |||
2755 | 27 | include 'coupl.inc' | 26 | include 'coupl.inc' |
2756 | 28 | 27 | ||
2757 | 29 | c Vegas stuff | 28 | c Vegas stuff |
2760 | 30 | integer ndim | 29 | integer nndim |
2761 | 31 | common/tosigint/ndim | 30 | common/tosigint/nndim |
2762 | 32 | 31 | ||
2763 | 33 | real*8 sigint | 32 | real*8 sigint |
2764 | 34 | external sigint | 33 | external sigint |
2765 | @@ -43,21 +42,11 @@ | |||
2766 | 43 | double precision xratmax | 42 | double precision xratmax |
2767 | 44 | common/ccheckcnt/i_momcmp_count,xratmax | 43 | common/ccheckcnt/i_momcmp_count,xratmax |
2768 | 45 | 44 | ||
2769 | 45 | character*4 abrv | ||
2770 | 46 | common /to_abrv/ abrv | ||
2771 | 46 | integer n_mp, n_disc | 47 | integer n_mp, n_disc |
2772 | 47 | c For MINT: | ||
2773 | 48 | include "mint.inc" | ||
2774 | 49 | integer nhits_in_grids(maxchannels) | ||
2775 | 50 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals | ||
2776 | 51 | $ ,ndimmax,maxchannels),ymax_virt(0:maxchannels),ans(nintegrals | ||
2777 | 52 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals | ||
2778 | 53 | $ ,0:maxchannels),x(ndimmax),itmax_fl | ||
2779 | 54 | integer ixi_i,iphi_i,iy_ij,vn | 48 | integer ixi_i,iphi_i,iy_ij,vn |
2780 | 55 | integer ifold(ndimmax) | ||
2781 | 56 | common /cifold/ifold | ||
2782 | 57 | integer ifold_energy,ifold_phi,ifold_yij | ||
2783 | 58 | common /cifoldnumbers/ifold_energy,ifold_phi,ifold_yij | ||
2784 | 59 | logical putonshell | 49 | logical putonshell |
2785 | 60 | integer imode,dummy | ||
2786 | 61 | logical unwgt | 50 | logical unwgt |
2787 | 62 | double precision evtsgn | 51 | double precision evtsgn |
2788 | 63 | common /c_unwgt/evtsgn,unwgt | 52 | common /c_unwgt/evtsgn,unwgt |
2789 | @@ -72,20 +61,12 @@ | |||
2790 | 72 | 61 | ||
2791 | 73 | double precision virtual_over_born | 62 | double precision virtual_over_born |
2792 | 74 | common/c_vob/virtual_over_born | 63 | common/c_vob/virtual_over_born |
2793 | 75 | double precision average_virtual(0:n_ave_virt,maxchannels) | ||
2794 | 76 | $ ,virtual_fraction(maxchannels) | ||
2795 | 77 | common/c_avg_virt/average_virtual,virtual_fraction | ||
2796 | 78 | include 'orders.inc' | 64 | include 'orders.inc' |
2797 | 79 | integer n_ord_virt | ||
2798 | 80 | common /c_n_ord_virt/n_ord_virt | ||
2799 | 81 | 65 | ||
2800 | 82 | c timing statistics | 66 | c timing statistics |
2801 | 83 | include "timing_variables.inc" | 67 | include "timing_variables.inc" |
2802 | 84 | real*4 tOther, tTot | 68 | real*4 tOther, tTot |
2803 | 85 | 69 | ||
2804 | 86 | c general MadFKS parameters | ||
2805 | 87 | include "FKSParams.inc" | ||
2806 | 88 | |||
2807 | 89 | c applgrid | 70 | c applgrid |
2808 | 90 | integer iappl | 71 | integer iappl |
2809 | 91 | common /for_applgrid/ iappl | 72 | common /for_applgrid/ iappl |
2810 | @@ -95,13 +76,17 @@ | |||
2811 | 95 | integer ntot_granny,derntot,ncase(0:6) | 76 | integer ntot_granny,derntot,ncase(0:6) |
2812 | 96 | common /c_granny_counters/ ntot_granny,ncase,derntot,deravg,derstd | 77 | common /c_granny_counters/ ntot_granny,ncase,derntot,deravg,derstd |
2813 | 97 | & ,dermax,xi_i_fks_ev_der_max,y_ij_fks_ev_der_max | 78 | & ,dermax,xi_i_fks_ev_der_max,y_ij_fks_ev_der_max |
2814 | 98 | logical fixed_order,nlo_ps | ||
2815 | 99 | common /c_fnlo_nlops/fixed_order,nlo_ps | ||
2816 | 100 | 79 | ||
2817 | 80 | logical useitmax | ||
2818 | 81 | common/cuseitmax/useitmax | ||
2819 | 101 | 82 | ||
2820 | 102 | C----- | 83 | C----- |
2821 | 103 | C BEGIN CODE | 84 | C BEGIN CODE |
2823 | 104 | C----- | 85 | C----- |
2824 | 86 | c Write the process PID in the log.txt files (i.e., to the screen) | ||
2825 | 87 | write (*,*) getpid() | ||
2826 | 88 | |||
2827 | 89 | useitmax=.false. ! to be overwritten in open_output_files.f if need be | ||
2828 | 105 | c | 90 | c |
2829 | 106 | c Setup the timing variable | 91 | c Setup the timing variable |
2830 | 107 | c | 92 | c |
2831 | @@ -112,6 +97,7 @@ | |||
2832 | 112 | c Read general MadFKS parameters | 97 | c Read general MadFKS parameters |
2833 | 113 | c | 98 | c |
2834 | 114 | call FKSParamReader(paramFileName,.TRUE.,.FALSE.) | 99 | call FKSParamReader(paramFileName,.TRUE.,.FALSE.) |
2835 | 100 | min_virt_fraction_mint=min_virt_fraction | ||
2836 | 115 | do kchan=1,maxchannels | 101 | do kchan=1,maxchannels |
2837 | 116 | do i=0,n_ave_virt | 102 | do i=0,n_ave_virt |
2838 | 117 | average_virtual(i,kchan)=0d0 | 103 | average_virtual(i,kchan)=0d0 |
2839 | @@ -153,7 +139,7 @@ | |||
2840 | 153 | c Get user input | 139 | c Get user input |
2841 | 154 | c | 140 | c |
2842 | 155 | write(*,*) "getting user params" | 141 | write(*,*) "getting user params" |
2844 | 156 | call get_user_params(ncall,itmax,imode) | 142 | call get_user_params(ncalls0,itmax,imode) |
2845 | 157 | if(imode.eq.0)then | 143 | if(imode.eq.0)then |
2846 | 158 | flat_grid=.true. | 144 | flat_grid=.true. |
2847 | 159 | else | 145 | else |
2848 | @@ -162,6 +148,7 @@ | |||
2849 | 162 | ndim = 3*(nexternal-nincoming)-4 | 148 | ndim = 3*(nexternal-nincoming)-4 |
2850 | 163 | if (abs(lpp(1)) .ge. 1) ndim=ndim+1 | 149 | if (abs(lpp(1)) .ge. 1) ndim=ndim+1 |
2851 | 164 | if (abs(lpp(2)) .ge. 1) ndim=ndim+1 | 150 | if (abs(lpp(2)) .ge. 1) ndim=ndim+1 |
2852 | 151 | nndim=ndim | ||
2853 | 165 | c Don't proceed if muF1#muF2 (we need to work out the relevant formulae | 152 | c Don't proceed if muF1#muF2 (we need to work out the relevant formulae |
2854 | 166 | c at the NLO) | 153 | c at the NLO) |
2855 | 167 | if( ( fixed_fac_scale .and. | 154 | if( ( fixed_fac_scale .and. |
2856 | @@ -172,7 +159,7 @@ | |||
2857 | 172 | write(*,*)'NLO computations require muF1=muF2' | 159 | write(*,*)'NLO computations require muF1=muF2' |
2858 | 173 | stop | 160 | stop |
2859 | 174 | endif | 161 | endif |
2861 | 175 | write(*,*) "about to integrate ", ndim,ncall,itmax | 162 | write(*,*) "about to integrate ", ndim,ncalls0,itmax |
2862 | 176 | c APPLgrid | 163 | c APPLgrid |
2863 | 177 | if (imode.eq.0) iappl=0 ! overwrite when starting completely fresh | 164 | if (imode.eq.0) iappl=0 ! overwrite when starting completely fresh |
2864 | 178 | if(iappl.ne.0) then | 165 | if(iappl.ne.0) then |
2865 | @@ -184,6 +171,23 @@ | |||
2866 | 184 | call find_iproc_map | 171 | call find_iproc_map |
2867 | 185 | write(6,*) " ... done." | 172 | write(6,*) " ... done." |
2868 | 186 | endif | 173 | endif |
2869 | 174 | if (abrv(1:4).eq.'virt') then | ||
2870 | 175 | only_virt=.true. | ||
2871 | 176 | else | ||
2872 | 177 | only_virt=.false. | ||
2873 | 178 | endif | ||
2874 | 179 | c Prepare the MINT folding | ||
2875 | 180 | do j=1,ndimmax | ||
2876 | 181 | if (j.le.ndim) then | ||
2877 | 182 | ifold(j)=1 | ||
2878 | 183 | else | ||
2879 | 184 | ifold(j)=0 | ||
2880 | 185 | endif | ||
2881 | 186 | enddo | ||
2882 | 187 | ifold_energy=ndim-2 | ||
2883 | 188 | ifold_yij=ndim-1 | ||
2884 | 189 | ifold_phi=ndim | ||
2885 | 190 | c | ||
2886 | 187 | i_momcmp_count=0 | 191 | i_momcmp_count=0 |
2887 | 188 | xratmax=0.d0 | 192 | xratmax=0.d0 |
2888 | 189 | unwgt=.false. | 193 | unwgt=.false. |
2889 | @@ -194,38 +198,8 @@ | |||
2890 | 194 | doreweight=.false. | 198 | doreweight=.false. |
2891 | 195 | do_rwgt_scale=.false. | 199 | do_rwgt_scale=.false. |
2892 | 196 | do_rwgt_pdf=.false. | 200 | do_rwgt_pdf=.false. |
2893 | 197 | do kchan=1,nchans | ||
2894 | 198 | do i=1,ndimmax | ||
2895 | 199 | do j=0,nintervals | ||
2896 | 200 | xgrid(j,i,kchan)=0.d0 | ||
2897 | 201 | enddo | ||
2898 | 202 | enddo | ||
2899 | 203 | enddo | ||
2900 | 204 | else | 201 | else |
2925 | 205 | doreweight=do_rwgt_scale.or.do_rwgt_pdf | 202 | doreweight=do_rwgt_scale.or.do_rwgt_pdf.or.store_rwgt_info |
2902 | 206 | c to restore grids: | ||
2903 | 207 | open (unit=12, file='mint_grids',status='old') | ||
2904 | 208 | ans(1,0)=0d0 | ||
2905 | 209 | unc(1,0)=0d0 | ||
2906 | 210 | do kchan=1,nchans | ||
2907 | 211 | do j=0,nintervals | ||
2908 | 212 | read (12,*) (xgrid(j,i,kchan),i=1,ndim) | ||
2909 | 213 | enddo | ||
2910 | 214 | do j=1,nintervals_virt | ||
2911 | 215 | do k=0,n_ord_virt | ||
2912 | 216 | read (12,*) (ave_virt(j,i,k,kchan),i=1,ndim) | ||
2913 | 217 | enddo | ||
2914 | 218 | enddo | ||
2915 | 219 | read(12,*) ans(1,kchan),unc(1,kchan),dummy,dummy | ||
2916 | 220 | $ ,nhits_in_grids(kchan) | ||
2917 | 221 | read(12,*) virtual_fraction(kchan),average_virtual(0 | ||
2918 | 222 | $ ,kchan) | ||
2919 | 223 | ans(1,0)=ans(1,0)+ans(1,kchan) | ||
2920 | 224 | unc(1,0)=unc(1,0)+unc(1,kchan)**2 | ||
2921 | 225 | enddo | ||
2922 | 226 | unc(1,0)=sqrt(unc(1,0)) | ||
2923 | 227 | close (12) | ||
2924 | 228 | write (*,*) "Update iterations and points to",itmax,ncall | ||
2926 | 229 | endif | 203 | endif |
2927 | 230 | c | 204 | c |
2928 | 231 | write (*,*) 'imode is ',imode | 205 | write (*,*) 'imode is ',imode |
2929 | @@ -236,44 +210,10 @@ | |||
2930 | 236 | virtual_fraction(kchan)=1d0 | 210 | virtual_fraction(kchan)=1d0 |
2931 | 237 | enddo | 211 | enddo |
2932 | 238 | endif | 212 | endif |
2942 | 239 | C check for zero cross-section | 213 | call mint(sigint) |
2934 | 240 | C if restoring grids corresponding to sigma=0, just terminate the run | ||
2935 | 241 | if (imode.ne.0.and.ans(1,0).eq.0d0.and.unc(1,0).eq.0d0) then | ||
2936 | 242 | call initplot() | ||
2937 | 243 | call close_run_zero_res(ncall, itmax, ndim) | ||
2938 | 244 | stop | ||
2939 | 245 | endif | ||
2940 | 246 | call mint(sigint,ndim,ncall,itmax,imode,xgrid,ymax | ||
2941 | 247 | $ ,ymax_virt,ans,unc,chi2,nhits_in_grids) | ||
2943 | 248 | call topout | 214 | call topout |
2944 | 249 | call deallocate_weight_lines | 215 | call deallocate_weight_lines |
2945 | 250 | write(*,*)'Final result [ABS]:',ans(1,0),' +/-',unc(1,0) | ||
2946 | 251 | write(*,*)'Final result:',ans(2,0),' +/-',unc(2,0) | ||
2947 | 252 | write(*,*)'chi**2 per D.o.F.:',chi2(1,0) | ||
2948 | 253 | open(unit=58,file='results.dat',status='unknown') | ||
2949 | 254 | do kchan=0,nchans | ||
2950 | 255 | write(58,*) ans(1,kchan),unc(2,kchan),0d0,0,0,0,0,0d0,0d0 | ||
2951 | 256 | $ ,ans(2,kchan) | ||
2952 | 257 | enddo | ||
2953 | 258 | close(58) | ||
2954 | 259 | c | 216 | c |
2955 | 260 | c to save grids: | ||
2956 | 261 | open (unit=12, file='mint_grids',status='unknown') | ||
2957 | 262 | do kchan=1,nchans | ||
2958 | 263 | do j=0,nintervals | ||
2959 | 264 | write (12,*) (xgrid(j,i,kchan),i=1,ndim) | ||
2960 | 265 | enddo | ||
2961 | 266 | do j=1,nintervals_virt | ||
2962 | 267 | do k=0,n_ord_virt | ||
2963 | 268 | write (12,*) (ave_virt(j,i,k,kchan),i=1,ndim) | ||
2964 | 269 | enddo | ||
2965 | 270 | enddo | ||
2966 | 271 | write (12,*) ans(1,kchan),unc(1,kchan),ncall,itmax | ||
2967 | 272 | $ ,nhits_in_grids(kchan) | ||
2968 | 273 | write (12,*) virtual_fraction(kchan),average_virtual(0 | ||
2969 | 274 | $ ,kchan) | ||
2970 | 275 | enddo | ||
2971 | 276 | close (12) | ||
2972 | 277 | else | 217 | else |
2973 | 278 | write (*,*) 'Unknown imode',imode | 218 | write (*,*) 'Unknown imode',imode |
2974 | 279 | stop | 219 | stop |
2975 | @@ -351,7 +291,7 @@ | |||
2976 | 351 | open (unit=12, file='res.dat',status='unknown') | 291 | open (unit=12, file='res.dat',status='unknown') |
2977 | 352 | do kchan=0,nchans | 292 | do kchan=0,nchans |
2978 | 353 | write (12,*)ans(1,kchan),unc(1,kchan),ans(2,kchan),unc(2,kchan) | 293 | write (12,*)ans(1,kchan),unc(1,kchan),ans(2,kchan),unc(2,kchan) |
2980 | 354 | $ ,itmax,ncall,tTot | 294 | $ ,itmax,ncalls0,tTot |
2981 | 355 | enddo | 295 | enddo |
2982 | 356 | close(12) | 296 | close(12) |
2983 | 357 | 297 | ||
2984 | @@ -392,9 +332,9 @@ | |||
2985 | 392 | double precision function sigint(xx,vegas_wgt,ifl,f) | 332 | double precision function sigint(xx,vegas_wgt,ifl,f) |
2986 | 393 | use weight_lines | 333 | use weight_lines |
2987 | 394 | use extra_weights | 334 | use extra_weights |
2988 | 335 | use mint_module | ||
2989 | 395 | implicit none | 336 | implicit none |
2990 | 396 | include 'nexternal.inc' | 337 | include 'nexternal.inc' |
2991 | 397 | include 'mint.inc' | ||
2992 | 398 | include 'nFKSconfigs.inc' | 338 | include 'nFKSconfigs.inc' |
2993 | 399 | include 'run.inc' | 339 | include 'run.inc' |
2994 | 400 | include 'orders.inc' | 340 | include 'orders.inc' |
2995 | @@ -410,8 +350,8 @@ | |||
2996 | 410 | integer ini_fin_fks(maxchannels) | 350 | integer ini_fin_fks(maxchannels) |
2997 | 411 | common/fks_channels/ini_fin_fks | 351 | common/fks_channels/ini_fin_fks |
2998 | 412 | data sum /.false./ | 352 | data sum /.false./ |
3001 | 413 | integer ndim | 353 | integer nndim |
3002 | 414 | common/tosigint/ndim | 354 | common/tosigint/nndim |
3003 | 415 | logical nbody | 355 | logical nbody |
3004 | 416 | common/cnbody/nbody | 356 | common/cnbody/nbody |
3005 | 417 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | 357 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) |
3006 | @@ -419,9 +359,6 @@ | |||
3007 | 419 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | 359 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt |
3008 | 420 | double precision p_born(0:3,nexternal-1) | 360 | double precision p_born(0:3,nexternal-1) |
3009 | 421 | common /pborn/ p_born | 361 | common /pborn/ p_born |
3010 | 422 | double precision virt_wgt_mint(0:n_ave_virt), | ||
3011 | 423 | & born_wgt_mint(0:n_ave_virt) | ||
3012 | 424 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
3013 | 425 | double precision virtual_over_born | 362 | double precision virtual_over_born |
3014 | 426 | common/c_vob/virtual_over_born | 363 | common/c_vob/virtual_over_born |
3015 | 427 | logical calculatedBorn | 364 | logical calculatedBorn |
3016 | @@ -434,6 +371,9 @@ | |||
3017 | 434 | common /c_wgt_ME_tree/ wgt_ME_born,wgt_ME_real | 371 | common /c_wgt_ME_tree/ wgt_ME_born,wgt_ME_real |
3018 | 435 | integer ini_fin_fks_map(0:2,0:fks_configs) | 372 | integer ini_fin_fks_map(0:2,0:fks_configs) |
3019 | 436 | save ini_fin_fks_map | 373 | save ini_fin_fks_map |
3020 | 374 | if (new_point .and. ifl.ne.2) then | ||
3021 | 375 | pass_cuts_check=.false. | ||
3022 | 376 | endif | ||
3023 | 437 | if (firsttime) then | 377 | if (firsttime) then |
3024 | 438 | firsttime=.false. | 378 | firsttime=.false. |
3025 | 439 | call setup_ini_fin_fks_map(ini_fin_fks_map) | 379 | call setup_ini_fin_fks_map(ini_fin_fks_map) |
3026 | @@ -479,14 +419,16 @@ | |||
3027 | 479 | else | 419 | else |
3028 | 480 | jac=0.5d0 | 420 | jac=0.5d0 |
3029 | 481 | endif | 421 | endif |
3031 | 482 | call generate_momenta(ndim,iconfig,jac,x,p) | 422 | call generate_momenta(nndim,iconfig,jac,x,p) |
3032 | 483 | if (p_born(0,1).lt.0d0) goto 12 | 423 | if (p_born(0,1).lt.0d0) goto 12 |
3033 | 484 | call compute_prefactors_nbody(vegas_wgt) | 424 | call compute_prefactors_nbody(vegas_wgt) |
3034 | 485 | call set_cms_stuff(izero) | 425 | call set_cms_stuff(izero) |
3035 | 486 | passcuts_nbody=passcuts(p1_cnt(0,1,0),rwgt) | 426 | passcuts_nbody=passcuts(p1_cnt(0,1,0),rwgt) |
3036 | 487 | if (passcuts_nbody) then | 427 | if (passcuts_nbody) then |
3037 | 428 | pass_cuts_check=.true. | ||
3038 | 488 | if (ickkw.eq.3) call set_FxFx_scale(1,p1_cnt(0,1,0)) | 429 | if (ickkw.eq.3) call set_FxFx_scale(1,p1_cnt(0,1,0)) |
3039 | 489 | call set_alphaS(p1_cnt(0,1,0)) | 430 | call set_alphaS(p1_cnt(0,1,0)) |
3040 | 431 | call include_multichannel_enhance(1) | ||
3041 | 490 | if (abrv(1:2).ne.'vi') then | 432 | if (abrv(1:2).ne.'vi') then |
3042 | 491 | call compute_born | 433 | call compute_born |
3043 | 492 | endif | 434 | endif |
3044 | @@ -520,7 +462,7 @@ | |||
3045 | 520 | wgt_me_real=0d0 | 462 | wgt_me_real=0d0 |
3046 | 521 | jac=MC_int_wgt | 463 | jac=MC_int_wgt |
3047 | 522 | call update_fks_dir(iFKS) | 464 | call update_fks_dir(iFKS) |
3049 | 523 | call generate_momenta(ndim,iconfig,jac,x,p) | 465 | call generate_momenta(nndim,iconfig,jac,x,p) |
3050 | 524 | if (p_born(0,1).lt.0d0) cycle | 466 | if (p_born(0,1).lt.0d0) cycle |
3051 | 525 | call compute_prefactors_n1body(vegas_wgt,jac) | 467 | call compute_prefactors_n1body(vegas_wgt,jac) |
3052 | 526 | call set_cms_stuff(izero) | 468 | call set_cms_stuff(izero) |
3053 | @@ -528,9 +470,11 @@ | |||
3054 | 528 | call set_cms_stuff(mohdr) | 470 | call set_cms_stuff(mohdr) |
3055 | 529 | passcuts_n1body=passcuts(p,rwgt) | 471 | passcuts_n1body=passcuts(p,rwgt) |
3056 | 530 | if (passcuts_nbody .and. abrv.ne.'real') then | 472 | if (passcuts_nbody .and. abrv.ne.'real') then |
3057 | 473 | pass_cuts_check=.true. | ||
3058 | 531 | call set_cms_stuff(izero) | 474 | call set_cms_stuff(izero) |
3059 | 532 | if (ickkw.eq.3) call set_FxFx_scale(2,p1_cnt(0,1,0)) | 475 | if (ickkw.eq.3) call set_FxFx_scale(2,p1_cnt(0,1,0)) |
3060 | 533 | call set_alphaS(p1_cnt(0,1,0)) | 476 | call set_alphaS(p1_cnt(0,1,0)) |
3061 | 477 | call include_multichannel_enhance(3) | ||
3062 | 534 | call compute_soft_counter_term(0d0) | 478 | call compute_soft_counter_term(0d0) |
3063 | 535 | call set_cms_stuff(ione) | 479 | call set_cms_stuff(ione) |
3064 | 536 | call compute_collinear_counter_term(0d0) | 480 | call compute_collinear_counter_term(0d0) |
3065 | @@ -538,9 +482,11 @@ | |||
3066 | 538 | call compute_soft_collinear_counter_term(0d0) | 482 | call compute_soft_collinear_counter_term(0d0) |
3067 | 539 | endif | 483 | endif |
3068 | 540 | if (passcuts_n1body) then | 484 | if (passcuts_n1body) then |
3069 | 485 | pass_cuts_check=.true. | ||
3070 | 541 | call set_cms_stuff(mohdr) | 486 | call set_cms_stuff(mohdr) |
3071 | 542 | if (ickkw.eq.3) call set_FxFx_scale(3,p) | 487 | if (ickkw.eq.3) call set_FxFx_scale(3,p) |
3072 | 543 | call set_alphaS(p) | 488 | call set_alphaS(p) |
3073 | 489 | call include_multichannel_enhance(2) | ||
3074 | 544 | call compute_real_emission(p,1d0) | 490 | call compute_real_emission(p,1d0) |
3075 | 545 | endif | 491 | endif |
3076 | 546 | enddo | 492 | enddo |
3077 | @@ -703,26 +649,26 @@ | |||
3078 | 703 | end | 649 | end |
3079 | 704 | 650 | ||
3080 | 705 | subroutine update_vegas_x(xx,x) | 651 | subroutine update_vegas_x(xx,x) |
3081 | 652 | use mint_module | ||
3082 | 706 | implicit none | 653 | implicit none |
3083 | 707 | include 'mint.inc' | ||
3084 | 708 | integer i | 654 | integer i |
3085 | 709 | double precision xx(ndimmax),x(99),ran2 | 655 | double precision xx(ndimmax),x(99),ran2 |
3086 | 710 | external ran2 | 656 | external ran2 |
3090 | 711 | integer ndim | 657 | integer nndim |
3091 | 712 | common/tosigint/ndim | 658 | common/tosigint/nndim |
3092 | 713 | character*4 abrv | 659 | character*4 abrv |
3093 | 714 | common /to_abrv/ abrv | 660 | common /to_abrv/ abrv |
3094 | 715 | do i=1,99 | 661 | do i=1,99 |
3095 | 716 | if (abrv.eq.'born'.or.abrv(1:2).eq.'vi') then | 662 | if (abrv.eq.'born'.or.abrv(1:2).eq.'vi') then |
3097 | 717 | if(i.le.ndim-3)then | 663 | if(i.le.nndim-3)then |
3098 | 718 | x(i)=xx(i) | 664 | x(i)=xx(i) |
3100 | 719 | elseif(i.le.ndim) then | 665 | elseif(i.le.nndim) then |
3101 | 720 | x(i)=ran2() ! Choose them flat when not including real-emision | 666 | x(i)=ran2() ! Choose them flat when not including real-emision |
3102 | 721 | else | 667 | else |
3103 | 722 | x(i)=0.d0 | 668 | x(i)=0.d0 |
3104 | 723 | endif | 669 | endif |
3105 | 724 | else | 670 | else |
3107 | 725 | if(i.le.ndim)then | 671 | if(i.le.nndim)then |
3108 | 726 | x(i)=xx(i) | 672 | x(i)=xx(i) |
3109 | 727 | else | 673 | else |
3110 | 728 | x(i)=0.d0 | 674 | x(i)=0.d0 |
3111 | @@ -733,10 +679,11 @@ | |||
3112 | 733 | end | 679 | end |
3113 | 734 | 680 | ||
3114 | 735 | c | 681 | c |
3116 | 736 | subroutine get_user_params(ncall,itmax,irestart) | 682 | subroutine get_user_params(ncall,nitmax,irestart) |
3117 | 737 | c********************************************************************** | 683 | c********************************************************************** |
3118 | 738 | c Routine to get user specified parameters for run | 684 | c Routine to get user specified parameters for run |
3119 | 739 | c********************************************************************** | 685 | c********************************************************************** |
3120 | 686 | use mint_module | ||
3121 | 740 | implicit none | 687 | implicit none |
3122 | 741 | c | 688 | c |
3123 | 742 | c Constants | 689 | c Constants |
3124 | @@ -746,16 +693,15 @@ | |||
3125 | 746 | include 'nFKSconfigs.inc' | 693 | include 'nFKSconfigs.inc' |
3126 | 747 | include 'fks_info.inc' | 694 | include 'fks_info.inc' |
3127 | 748 | include 'run.inc' | 695 | include 'run.inc' |
3128 | 749 | include 'mint.inc' | ||
3129 | 750 | include 'orders.inc' | 696 | include 'orders.inc' |
3130 | 751 | c | 697 | c |
3131 | 752 | c Arguments | 698 | c Arguments |
3132 | 753 | c | 699 | c |
3134 | 754 | integer ncall,itmax | 700 | integer ncall,nitmax |
3135 | 755 | c | 701 | c |
3136 | 756 | c Local | 702 | c Local |
3137 | 757 | c | 703 | c |
3139 | 758 | integer i, j | 704 | integer i, j, kchan |
3140 | 759 | double precision dconfig(maxchannels) | 705 | double precision dconfig(maxchannels) |
3141 | 760 | c | 706 | c |
3142 | 761 | c Global | 707 | c Global |
3143 | @@ -789,8 +735,6 @@ | |||
3144 | 789 | character * 70 idstring | 735 | character * 70 idstring |
3145 | 790 | logical savegrid | 736 | logical savegrid |
3146 | 791 | 737 | ||
3147 | 792 | logical usexinteg,mint | ||
3148 | 793 | common/cusexinteg/usexinteg,mint | ||
3149 | 794 | logical unwgt | 738 | logical unwgt |
3150 | 795 | double precision evtsgn | 739 | double precision evtsgn |
3151 | 796 | common /c_unwgt/evtsgn,unwgt | 740 | common /c_unwgt/evtsgn,unwgt |
3152 | @@ -805,7 +749,6 @@ | |||
3153 | 805 | c----- | 749 | c----- |
3154 | 806 | c Begin Code | 750 | c Begin Code |
3155 | 807 | c----- | 751 | c----- |
3156 | 808 | mint=.true. | ||
3157 | 809 | unwgt=.false. | 752 | unwgt=.false. |
3158 | 810 | open (unit=83,file='input_app.txt',status='old') | 753 | open (unit=83,file='input_app.txt',status='old') |
3159 | 811 | done=.false. | 754 | done=.false. |
3160 | @@ -817,8 +760,8 @@ | |||
3161 | 817 | read(buffer,*) ncall | 760 | read(buffer,*) ncall |
3162 | 818 | write (*,*) 'Number of phase-space points per iteration:',ncall | 761 | write (*,*) 'Number of phase-space points per iteration:',ncall |
3163 | 819 | elseif(buffer(1:11).eq.'NITERATIONS') then | 762 | elseif(buffer(1:11).eq.'NITERATIONS') then |
3166 | 820 | read(buffer(14:),*) itmax | 763 | read(buffer(14:),*) nitmax |
3167 | 821 | write (*,*) 'Maximum number of iterations is:',itmax | 764 | write (*,*) 'Maximum number of iterations is:',nitmax |
3168 | 822 | elseif(buffer(1:8).eq.'ACCURACY') then | 765 | elseif(buffer(1:8).eq.'ACCURACY') then |
3169 | 823 | read(buffer(11:),*) accuracy | 766 | read(buffer(11:),*) accuracy |
3170 | 824 | write (*,*) 'Desired accuracy is:',accuracy | 767 | write (*,*) 'Desired accuracy is:',accuracy |
3171 | 825 | 768 | ||
3172 | === modified file 'Template/NLO/SubProcesses/driver_mintMC.f' | |||
3173 | --- Template/NLO/SubProcesses/driver_mintMC.f 2018-09-21 13:46:51 +0000 | |||
3174 | +++ Template/NLO/SubProcesses/driver_mintMC.f 2020-05-23 19:29:41 +0000 | |||
3175 | @@ -3,6 +3,8 @@ | |||
3176 | 3 | c This is the driver for the whole calculation | 3 | c This is the driver for the whole calculation |
3177 | 4 | c************************************************************************** | 4 | c************************************************************************** |
3178 | 5 | use extra_weights | 5 | use extra_weights |
3179 | 6 | use mint_module | ||
3180 | 7 | use FKSParams | ||
3181 | 6 | implicit none | 8 | implicit none |
3182 | 7 | C | 9 | C |
3183 | 8 | C CONSTANTS | 10 | C CONSTANTS |
3184 | @@ -11,16 +13,13 @@ | |||
3185 | 11 | parameter (ZERO = 0d0) | 13 | parameter (ZERO = 0d0) |
3186 | 12 | include 'nexternal.inc' | 14 | include 'nexternal.inc' |
3187 | 13 | include 'genps.inc' | 15 | include 'genps.inc' |
3188 | 14 | INTEGER ITMAX, NCALL | ||
3189 | 15 | |||
3190 | 16 | common/citmax/itmax,ncall | ||
3191 | 17 | integer ncall_virt,ncall_novi | 16 | integer ncall_virt,ncall_novi |
3192 | 18 | character*4 abrv | 17 | character*4 abrv |
3193 | 19 | common /to_abrv/ abrv | 18 | common /to_abrv/ abrv |
3194 | 20 | C | 19 | C |
3195 | 21 | C LOCAL | 20 | C LOCAL |
3196 | 22 | C | 21 | C |
3198 | 23 | integer i,j,k,l,l1,l2,ndim,nevts | 22 | integer i,j,k,l,l1,l2,nndim,nevts |
3199 | 24 | 23 | ||
3200 | 25 | integer lunlhe | 24 | integer lunlhe |
3201 | 26 | parameter (lunlhe=98) | 25 | parameter (lunlhe=98) |
3202 | @@ -30,10 +29,9 @@ | |||
3203 | 30 | cc | 29 | cc |
3204 | 31 | include 'run.inc' | 30 | include 'run.inc' |
3205 | 32 | include 'coupl.inc' | 31 | include 'coupl.inc' |
3206 | 33 | include "mint.inc" | ||
3207 | 34 | 32 | ||
3208 | 35 | c Vegas stuff | 33 | c Vegas stuff |
3210 | 36 | common/tosigint/ndim | 34 | common/tosigint/nndim |
3211 | 37 | 35 | ||
3212 | 38 | real*8 sigintF | 36 | real*8 sigintF |
3213 | 39 | external sigintF | 37 | external sigintF |
3214 | @@ -47,34 +45,17 @@ | |||
3215 | 47 | 45 | ||
3216 | 48 | double precision virtual_over_born | 46 | double precision virtual_over_born |
3217 | 49 | common/c_vob/virtual_over_born | 47 | common/c_vob/virtual_over_born |
3218 | 50 | double precision average_virtual(0:n_ave_virt,maxchannels) | ||
3219 | 51 | $ ,virtual_fraction(maxchannels) | ||
3220 | 52 | common/c_avg_virt/average_virtual,virtual_fraction | ||
3221 | 53 | include 'orders.inc' | 48 | include 'orders.inc' |
3222 | 54 | integer n_ord_virt | ||
3223 | 55 | common /c_n_ord_virt/n_ord_virt | ||
3224 | 56 | 49 | ||
3225 | 57 | double precision weight,event_weight,inv_bias | 50 | double precision weight,event_weight,inv_bias |
3226 | 58 | character*7 event_norm | 51 | character*7 event_norm |
3227 | 59 | common /event_normalisation/event_norm | 52 | common /event_normalisation/event_norm |
3238 | 60 | c For MINT: | 53 | integer ixi_i,iphi_i,iy_ij,vn |
3229 | 61 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals | ||
3230 | 62 | $ ,ndimmax,maxchannels),ymax_virt(0:maxchannels),ans(nintegrals | ||
3231 | 63 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals | ||
3232 | 64 | $ ,0:maxchannels),x(ndimmax) | ||
3233 | 65 | integer ixi_i,iphi_i,iy_ij,vn,nhits_in_grids(maxchannels) | ||
3234 | 66 | integer ifold(ndimmax) | ||
3235 | 67 | common /cifold/ifold | ||
3236 | 68 | integer ifold_energy,ifold_phi,ifold_yij | ||
3237 | 69 | common /cifoldnumbers/ifold_energy,ifold_phi,ifold_yij | ||
3239 | 70 | logical putonshell | 54 | logical putonshell |
3240 | 71 | logical only_virt | ||
3241 | 72 | integer imode | ||
3242 | 73 | common /c_imode/imode,only_virt | ||
3243 | 74 | logical unwgt | 55 | logical unwgt |
3244 | 75 | double precision evtsgn | 56 | double precision evtsgn |
3245 | 76 | common /c_unwgt/evtsgn,unwgt | 57 | common /c_unwgt/evtsgn,unwgt |
3247 | 77 | double precision ran2 | 58 | double precision ran2,x(ndimmax) |
3248 | 78 | external ran2 | 59 | external ran2 |
3249 | 79 | 60 | ||
3250 | 80 | integer ifile,ievents | 61 | integer ifile,ievents |
3251 | @@ -94,11 +75,6 @@ | |||
3252 | 94 | include "timing_variables.inc" | 75 | include "timing_variables.inc" |
3253 | 95 | real*4 tOther, tTot | 76 | real*4 tOther, tTot |
3254 | 96 | 77 | ||
3255 | 97 | c general MadFKS parameters | ||
3256 | 98 | include "FKSParams.inc" | ||
3257 | 99 | logical fixed_order,nlo_ps | ||
3258 | 100 | common /c_fnlo_nlops/fixed_order,nlo_ps | ||
3259 | 101 | |||
3260 | 102 | double precision deravg,derstd,dermax,xi_i_fks_ev_der_max | 78 | double precision deravg,derstd,dermax,xi_i_fks_ev_der_max |
3261 | 103 | & ,y_ij_fks_ev_der_max | 79 | & ,y_ij_fks_ev_der_max |
3262 | 104 | integer ntot_granny,derntot,ncase(0:6) | 80 | integer ntot_granny,derntot,ncase(0:6) |
3263 | @@ -110,6 +86,9 @@ | |||
3264 | 110 | C----- | 86 | C----- |
3265 | 111 | C BEGIN CODE | 87 | C BEGIN CODE |
3266 | 112 | C----- | 88 | C----- |
3267 | 89 | c Write the process PID in the log.txt files (i.e., to the screen) | ||
3268 | 90 | write (*,*) getpid() | ||
3269 | 91 | |||
3270 | 113 | call cpu_time(tBefore) | 92 | call cpu_time(tBefore) |
3271 | 114 | fixed_order=.false. | 93 | fixed_order=.false. |
3272 | 115 | nlo_ps=.true. | 94 | nlo_ps=.true. |
3273 | @@ -122,6 +101,7 @@ | |||
3274 | 122 | c Read general MadFKS parameters | 101 | c Read general MadFKS parameters |
3275 | 123 | c | 102 | c |
3276 | 124 | call FKSParamReader(paramFileName,.TRUE.,.FALSE.) | 103 | call FKSParamReader(paramFileName,.TRUE.,.FALSE.) |
3277 | 104 | min_virt_fraction_mint=min_virt_fraction | ||
3278 | 125 | do i=0,n_ave_virt | 105 | do i=0,n_ave_virt |
3279 | 126 | average_virtual(i,1)=0d0 | 106 | average_virtual(i,1)=0d0 |
3280 | 127 | enddo | 107 | enddo |
3281 | @@ -158,11 +138,11 @@ | |||
3282 | 158 | c Get user input | 138 | c Get user input |
3283 | 159 | c | 139 | c |
3284 | 160 | write(*,*) "getting user params" | 140 | write(*,*) "getting user params" |
3286 | 161 | call get_user_params(ncall,itmax,imode, | 141 | call get_user_params(ncalls0,itmax, |
3287 | 162 | & ixi_i,iphi_i,iy_ij,SHsep) | 142 | & ixi_i,iphi_i,iy_ij,SHsep) |
3288 | 163 | c Only do the reweighting when actually generating the events | 143 | c Only do the reweighting when actually generating the events |
3289 | 164 | if (imode.eq.2) then | 144 | if (imode.eq.2) then |
3291 | 165 | doreweight=do_rwgt_scale.or.do_rwgt_pdf | 145 | doreweight=do_rwgt_scale.or.do_rwgt_pdf.or.store_rwgt_info |
3292 | 166 | else | 146 | else |
3293 | 167 | doreweight=.false. | 147 | doreweight=.false. |
3294 | 168 | do_rwgt_scale=.false. | 148 | do_rwgt_scale=.false. |
3295 | @@ -182,6 +162,7 @@ | |||
3296 | 182 | ndim = 3*(nexternal-nincoming)-4 | 162 | ndim = 3*(nexternal-nincoming)-4 |
3297 | 183 | if (abs(lpp(1)) .ge. 1) ndim=ndim+1 | 163 | if (abs(lpp(1)) .ge. 1) ndim=ndim+1 |
3298 | 184 | if (abs(lpp(2)) .ge. 1) ndim=ndim+1 | 164 | if (abs(lpp(2)) .ge. 1) ndim=ndim+1 |
3299 | 165 | nndim=ndim | ||
3300 | 185 | c Don''t proceed if muF1#muF2 (we need to work out the relevant formulae | 166 | c Don''t proceed if muF1#muF2 (we need to work out the relevant formulae |
3301 | 186 | c at the NLO) | 167 | c at the NLO) |
3302 | 187 | if( ( fixed_fac_scale .and. | 168 | if( ( fixed_fac_scale .and. |
3303 | @@ -192,146 +173,46 @@ | |||
3304 | 192 | write(*,*)'NLO computations require muF1=muF2' | 173 | write(*,*)'NLO computations require muF1=muF2' |
3305 | 193 | stop | 174 | stop |
3306 | 194 | endif | 175 | endif |
3308 | 195 | write(*,*) "about to integrate ", ndim,ncall,itmax,iconfig | 176 | write(*,*) "about to integrate ", ndim,ncalls0,itmax,iconfig |
3309 | 196 | i_momcmp_count=0 | 177 | i_momcmp_count=0 |
3310 | 197 | xratmax=0.d0 | 178 | xratmax=0.d0 |
3311 | 198 | unwgt=.false. | 179 | unwgt=.false. |
3312 | 180 | c Prepare the MINT folding | ||
3313 | 181 | do j=1,ndimmax | ||
3314 | 182 | if (j.le.ndim) then | ||
3315 | 183 | ifold(j)=1 | ||
3316 | 184 | else | ||
3317 | 185 | ifold(j)=0 | ||
3318 | 186 | endif | ||
3319 | 187 | enddo | ||
3320 | 188 | ifold_energy=ndim-2 | ||
3321 | 189 | ifold_yij=ndim-1 | ||
3322 | 190 | ifold_phi=ndim | ||
3323 | 191 | ifold(ifold_energy)=ixi_i | ||
3324 | 192 | ifold(ifold_phi)=iphi_i | ||
3325 | 193 | ifold(ifold_yij)=iy_ij | ||
3326 | 199 | 194 | ||
3327 | 200 | c************************************************************* | 195 | c************************************************************* |
3328 | 201 | c setting of the grids | 196 | c setting of the grids |
3329 | 202 | c************************************************************* | 197 | c************************************************************* |
3330 | 203 | if (imode.eq.-1.or.imode.eq.0) then | 198 | if (imode.eq.-1.or.imode.eq.0) then |
3331 | 204 | if(imode.eq.0)then | ||
3332 | 205 | c initialize grids | ||
3333 | 206 | do j=0,nintervals | ||
3334 | 207 | do i=1,ndimmax | ||
3335 | 208 | xgrid(j,i,1)=0.d0 | ||
3336 | 209 | enddo | ||
3337 | 210 | enddo | ||
3338 | 211 | else | ||
3339 | 212 | c to restore grids: | ||
3340 | 213 | open (unit=12, file='mint_grids',status='old') | ||
3341 | 214 | do j=0,nintervals | ||
3342 | 215 | read (12,*) (xgrid(j,i,1),i=1,ndim) | ||
3343 | 216 | enddo | ||
3344 | 217 | do j=1,nintervals_virt | ||
3345 | 218 | do k=0,n_ord_virt | ||
3346 | 219 | read (12,*) (ave_virt(j,i,k,1),i=1,ndim) | ||
3347 | 220 | enddo | ||
3348 | 221 | enddo | ||
3349 | 222 | read (12,*) (ans(i,1),i=1,nintegrals) | ||
3350 | 223 | read (12,*) ifold_energy,ifold_phi,ifold_yij | ||
3351 | 224 | read (12,*) virtual_fraction(1),average_virtual(0,1) | ||
3352 | 225 | close (12) | ||
3353 | 226 | endif | ||
3354 | 227 | c | ||
3355 | 228 | write (*,*) 'imode is ',imode | 199 | write (*,*) 'imode is ',imode |
3358 | 229 | call mint(sigintF,ndim,ncall,itmax,imode,xgrid,ymax,ymax_virt | 200 | call mint(sigintF) |
3357 | 230 | $ ,ans,unc,chi2,nhits_in_grids) | ||
3359 | 231 | call deallocate_weight_lines | 201 | call deallocate_weight_lines |
3360 | 232 | open(unit=58,file='res_0',status='unknown') | ||
3361 | 233 | write(58,*)'Final result [ABS]:',ans(1,1),' +/-',unc(1,1) | ||
3362 | 234 | write(58,*)'Final result:',ans(2,1),' +/-',unc(2,1) | ||
3363 | 235 | close(58) | ||
3364 | 236 | write(*,*)'Final result [ABS]:',ans(1,1),' +/-',unc(1,1) | ||
3365 | 237 | write(*,*)'Final result:',ans(2,1),' +/-',unc(2,1) | ||
3366 | 238 | write(*,*)'chi**2 per D.o.F.:',chi2(1,1) | ||
3367 | 239 | open(unit=58,file='results.dat',status='unknown') | 202 | open(unit=58,file='results.dat',status='unknown') |
3368 | 240 | write(58,*) ans(1,1),unc(2,1),0d0,0,0,0,0,0d0,0d0,ans(2,1) | 203 | write(58,*) ans(1,1),unc(2,1),0d0,0,0,0,0,0d0,0d0,ans(2,1) |
3369 | 241 | close(58) | 204 | close(58) |
3370 | 242 | c | ||
3371 | 243 | c to save grids: | ||
3372 | 244 | open (unit=12, file='mint_grids',status='unknown') | ||
3373 | 245 | do j=0,nintervals | ||
3374 | 246 | write (12,*) (xgrid(j,i,1),i=1,ndim) | ||
3375 | 247 | enddo | ||
3376 | 248 | do j=1,nintervals_virt | ||
3377 | 249 | do k=0,n_ord_virt | ||
3378 | 250 | write (12,*) (ave_virt(j,i,k,1),i=1,ndim) | ||
3379 | 251 | enddo | ||
3380 | 252 | enddo | ||
3381 | 253 | write (12,*) (ans(i,1),i=1,nintegrals) | ||
3382 | 254 | write (12,*) ifold_energy,ifold_phi,ifold_yij | ||
3383 | 255 | write (12,*) virtual_fraction(1),average_virtual(0,1) | ||
3384 | 256 | close (12) | ||
3385 | 257 | |||
3386 | 258 | c************************************************************* | 205 | c************************************************************* |
3387 | 259 | c computation of upper bounding envelope | 206 | c computation of upper bounding envelope |
3388 | 260 | c************************************************************* | 207 | c************************************************************* |
3389 | 261 | elseif(imode.eq.1) then | 208 | elseif(imode.eq.1) then |
3390 | 262 | c to restore grids: | ||
3391 | 263 | open (unit=12, file='mint_grids',status='old') | ||
3392 | 264 | do j=0,nintervals | ||
3393 | 265 | read (12,*) (xgrid(j,i,1),i=1,ndim) | ||
3394 | 266 | enddo | ||
3395 | 267 | do j=1,nintervals_virt | ||
3396 | 268 | do k=0,n_ord_virt | ||
3397 | 269 | read (12,*) (ave_virt(j,i,k,1),i=1,ndim) | ||
3398 | 270 | enddo | ||
3399 | 271 | enddo | ||
3400 | 272 | read (12,*) (ans(i,1),i=1,nintegrals) | ||
3401 | 273 | read (12,*) ifold_energy,ifold_phi,ifold_yij | ||
3402 | 274 | read (12,*) virtual_fraction(1),average_virtual(0,1) | ||
3403 | 275 | close (12) | ||
3404 | 276 | |||
3405 | 277 | c Prepare the MINT folding | ||
3406 | 278 | do j=1,ndimmax | ||
3407 | 279 | if (j.le.ndim) then | ||
3408 | 280 | ifold(j)=1 | ||
3409 | 281 | else | ||
3410 | 282 | ifold(j)=0 | ||
3411 | 283 | endif | ||
3412 | 284 | enddo | ||
3413 | 285 | ifold(ifold_energy)=ixi_i | ||
3414 | 286 | ifold(ifold_phi)=iphi_i | ||
3415 | 287 | ifold(ifold_yij)=iy_ij | ||
3416 | 288 | |||
3417 | 289 | write (*,*) 'imode is ',imode | 209 | write (*,*) 'imode is ',imode |
3420 | 290 | call mint(sigintF,ndim,ncall,itmax,imode,xgrid,ymax,ymax_virt | 210 | call mint(sigintF) |
3419 | 291 | $ ,ans,unc,chi2,nhits_in_grids) | ||
3421 | 292 | call deallocate_weight_lines | 211 | call deallocate_weight_lines |
3422 | 293 | |||
3423 | 294 | c If integrating the virtuals alone, we include the virtuals in | ||
3424 | 295 | c ans(1). Therefore, no need to have them in ans(5) and we have to set | ||
3425 | 296 | c them to zero. | ||
3426 | 297 | if (only_virt) then | ||
3427 | 298 | ans(3,1)=0d0 ! virtual Xsec | ||
3428 | 299 | ans(5,1)=0d0 ! ABS virtual Xsec | ||
3429 | 300 | endif | ||
3430 | 301 | |||
3431 | 302 | open(unit=58,file='res_1',status='unknown') | ||
3432 | 303 | write(58,*)'Final result [ABS]:',ans(1,1)+ans(5,1),' +/-' | ||
3433 | 304 | $ ,sqrt(unc(1,1)**2+unc(5,1)**2) | ||
3434 | 305 | write(58,*)'Final result:',ans(2,1),' +/-',unc(2,1) | ||
3435 | 306 | close(58) | ||
3436 | 307 | write(*,*)'Final result [ABS]:',ans(1,1)+ans(5,1),' +/-' | ||
3437 | 308 | $ ,sqrt(unc(1,1)**2+unc(5,1)**2) | ||
3438 | 309 | write(*,*)'Final result:',ans(2,1),' +/-',unc(2,1) | ||
3439 | 310 | write(*,*)'chi**2 per D.o.F.:',chi2(1,1) | ||
3440 | 311 | c write the results.dat file | ||
3441 | 312 | open(unit=58,file='results.dat',status='unknown') | 212 | open(unit=58,file='results.dat',status='unknown') |
3443 | 313 | write(58,*)ans(1,1)+ans(5,1), unc(2,1), 0d0, 0, 0, 0, 0, 0d0 ,0d0, ans(2,1) | 213 | write(58,*) ans(1,1)+ans(5,1),unc(2,1),0d0,0,0,0,0,0d0,0d0 |
3444 | 214 | $ ,ans(2,1) | ||
3445 | 314 | close(58) | 215 | close(58) |
3446 | 315 | |||
3447 | 316 | c to save grids: | ||
3448 | 317 | open (unit=12, file='mint_grids',status='unknown') | ||
3449 | 318 | write (12,*) (xgrid(0,i,1),i=1,ndim) | ||
3450 | 319 | do j=1,nintervals | ||
3451 | 320 | write (12,*) (xgrid(j,i,1),i=1,ndim) | ||
3452 | 321 | write (12,*) (ymax(j,i,1),i=1,ndim) | ||
3453 | 322 | enddo | ||
3454 | 323 | do j=1,nintervals_virt | ||
3455 | 324 | do k=0,n_ord_virt | ||
3456 | 325 | write (12,*) (ave_virt(j,i,k,1),i=1,ndim) | ||
3457 | 326 | enddo | ||
3458 | 327 | enddo | ||
3459 | 328 | write (12,*) ymax_virt(1) | ||
3460 | 329 | write (12,*) (ifold(i),i=1,ndim) | ||
3461 | 330 | write (12,*) (ans(i,1),i=1,nintegrals) | ||
3462 | 331 | write (12,*) (unc(i,1),i=1,nintegrals) | ||
3463 | 332 | write (12,*) virtual_fraction(1),average_virtual(0,1) | ||
3464 | 333 | close (12) | ||
3465 | 334 | |||
3466 | 335 | c************************************************************* | 216 | c************************************************************* |
3467 | 336 | c event generation | 217 | c event generation |
3468 | 337 | c************************************************************* | 218 | c************************************************************* |
3469 | @@ -354,30 +235,15 @@ | |||
3470 | 354 | & 'No events needed for this channel...skipping it' | 235 | & 'No events needed for this channel...skipping it' |
3471 | 355 | stop | 236 | stop |
3472 | 356 | endif | 237 | endif |
3493 | 357 | ncall=nevts ! Update ncall with the number found in 'nevts' | 238 | ncalls0=nevts ! Update ncall with the number found in 'nevts' |
3494 | 358 | 239 | ||
3495 | 359 | c to restore grids: | 240 | c to restore grids: |
3496 | 360 | open (unit=12, file='mint_grids',status='unknown') | 241 | |
3497 | 361 | read (12,*) (xgrid(0,i,1),i=1,ndim) | 242 | call read_grids_from_file |
3478 | 362 | do j=1,nintervals | ||
3479 | 363 | read (12,*) (xgrid(j,i,1),i=1,ndim) | ||
3480 | 364 | read (12,*) (ymax(j,i,1),i=1,ndim) | ||
3481 | 365 | enddo | ||
3482 | 366 | do j=1,nintervals_virt | ||
3483 | 367 | do k=0,n_ord_virt | ||
3484 | 368 | read (12,*) (ave_virt(j,i,k,1),i=1,ndim) | ||
3485 | 369 | enddo | ||
3486 | 370 | enddo | ||
3487 | 371 | read (12,*) ymax_virt(1) | ||
3488 | 372 | read (12,*) (ifold(i),i=1,ndim) | ||
3489 | 373 | read (12,*) (ans(i,1),i=1,nintegrals) | ||
3490 | 374 | read (12,*) (unc(i,1),i=1,nintegrals) | ||
3491 | 375 | read (12,*) virtual_fraction(1),average_virtual(0,1) | ||
3492 | 376 | close (12) | ||
3498 | 377 | 243 | ||
3499 | 378 | c determine how many events for the virtual and how many for the no-virt | 244 | c determine how many events for the virtual and how many for the no-virt |
3502 | 379 | ncall_virt=int(ans(5,1)/(ans(1,1)+ans(5,1)) * ncall) | 245 | ncall_virt=int(ans(5,1)/(ans(1,1)+ans(5,1)) * ncalls0) |
3503 | 380 | ncall_novi=ncall-ncall_virt | 246 | ncall_novi=ncalls0-ncall_virt |
3504 | 381 | 247 | ||
3505 | 382 | write (*,*) "Generating virt :: novi approx.",ncall_virt | 248 | write (*,*) "Generating virt :: novi approx.",ncall_virt |
3506 | 383 | $ ,ncall_novi | 249 | $ ,ncall_novi |
3507 | @@ -386,13 +252,13 @@ | |||
3508 | 386 | 252 | ||
3509 | 387 | c fill the information for the write_header_init common block | 253 | c fill the information for the write_header_init common block |
3510 | 388 | ifile=lunlhe | 254 | ifile=lunlhe |
3512 | 389 | ievents=ncall | 255 | ievents=ncalls0 |
3513 | 390 | inter=ans(2,1) | 256 | inter=ans(2,1) |
3514 | 391 | absint=ans(1,1)+ans(5,1) | 257 | absint=ans(1,1)+ans(5,1) |
3515 | 392 | uncer=unc(2,1) | 258 | uncer=unc(2,1) |
3516 | 393 | 259 | ||
3517 | 394 | if (event_norm(1:4).ne.'bias') then | 260 | if (event_norm(1:4).ne.'bias') then |
3519 | 395 | weight=(ans(1,1)+ans(5,1))/ncall | 261 | weight=(ans(1,1)+ans(5,1))/ncalls0 |
3520 | 396 | else | 262 | else |
3521 | 397 | weight=event_weight | 263 | weight=event_weight |
3522 | 398 | endif | 264 | endif |
3523 | @@ -405,25 +271,25 @@ | |||
3524 | 405 | 271 | ||
3525 | 406 | write (*,*) 'imode is ',imode | 272 | write (*,*) 'imode is ',imode |
3526 | 407 | vn=-1 | 273 | vn=-1 |
3529 | 408 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,0,x,vn) | 274 | call gen(sigintF,0,vn,x) |
3530 | 409 | do j=1,ncall | 275 | do j=1,ncalls0 |
3531 | 410 | if (abrv(1:4).eq.'born') then | 276 | if (abrv(1:4).eq.'born') then |
3532 | 411 | vn=3 | 277 | vn=3 |
3534 | 412 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,1,x,vn) | 278 | call gen(sigintF,1,vn,x) |
3535 | 413 | else | 279 | else |
3536 | 414 | if (ran2().lt.ans(5,1)/(ans(1,1)+ans(5,1)) .or. only_virt) then | 280 | if (ran2().lt.ans(5,1)/(ans(1,1)+ans(5,1)) .or. only_virt) then |
3537 | 415 | abrv='virt' | 281 | abrv='virt' |
3538 | 416 | if (only_virt) then | 282 | if (only_virt) then |
3539 | 417 | vn=2 | 283 | vn=2 |
3541 | 418 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,1,x,vn) | 284 | call gen(sigintF,1,vn,x) |
3542 | 419 | else | 285 | else |
3543 | 420 | vn=1 | 286 | vn=1 |
3545 | 421 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,1,x,vn) | 287 | call gen(sigintF,1,vn,x) |
3546 | 422 | endif | 288 | endif |
3547 | 423 | else | 289 | else |
3548 | 424 | abrv='novi' | 290 | abrv='novi' |
3549 | 425 | vn=2 | 291 | vn=2 |
3551 | 426 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,1,x,vn) | 292 | call gen(sigintF,1,vn,x) |
3552 | 427 | endif | 293 | endif |
3553 | 428 | endif | 294 | endif |
3554 | 429 | c Randomly pick the contribution that will be written in the event file | 295 | c Randomly pick the contribution that will be written in the event file |
3555 | @@ -438,14 +304,7 @@ | |||
3556 | 438 | enddo | 304 | enddo |
3557 | 439 | call deallocate_weight_lines | 305 | call deallocate_weight_lines |
3558 | 440 | vn=-1 | 306 | vn=-1 |
3567 | 441 | call gen(sigintF,ndim,xgrid,ymax,ymax_virt,3,x,vn) | 307 | call gen(sigintF,3,vn,x) ! print counters generation efficiencies |
3560 | 442 | write (*,*) 'Generation efficiencies:',x(1),x(4) | ||
3561 | 443 | c Uncomment the next to lines to print the integral from the PS points | ||
3562 | 444 | c trown during event generation. This corresponds only to the cross | ||
3563 | 445 | c section if these points are thrown flat, so not using the xmmm() stuff | ||
3564 | 446 | c in mint. | ||
3565 | 447 | c write (*,*) 'Integral from novi points computed',x(2),x(3) | ||
3566 | 448 | c write (*,*) 'Integral from virt points computed',x(5),x(6) | ||
3568 | 449 | write (lunlhe,'(a)') "</LesHouchesEvents>" | 308 | write (lunlhe,'(a)') "</LesHouchesEvents>" |
3569 | 450 | close(lunlhe) | 309 | close(lunlhe) |
3570 | 451 | endif | 310 | endif |
3571 | @@ -528,10 +387,10 @@ | |||
3572 | 528 | 387 | ||
3573 | 529 | open (unit=12, file='res.dat',status='unknown') | 388 | open (unit=12, file='res.dat',status='unknown') |
3574 | 530 | if (imode.eq.0) then | 389 | if (imode.eq.0) then |
3576 | 531 | write (12,*)ans(1,1),unc(1,1),ans(2,1),unc(2,1),itmax,ncall,tTot | 390 | write (12,*)ans(1,1),unc(1,1),ans(2,1),unc(2,1),itmax,ncalls0,tTot |
3577 | 532 | else | 391 | else |
3578 | 533 | write (12,*)ans(1,1)+ans(5,1),sqrt(unc(1,1)**2+unc(5,1)**2),ans(2,1) | 392 | write (12,*)ans(1,1)+ans(5,1),sqrt(unc(1,1)**2+unc(5,1)**2),ans(2,1) |
3580 | 534 | $ ,unc(2,1),itmax,ncall,tTot | 393 | $ ,unc(2,1),itmax,ncalls0,tTot |
3581 | 535 | endif | 394 | endif |
3582 | 536 | close(12) | 395 | close(12) |
3583 | 537 | 396 | ||
3584 | @@ -565,25 +424,25 @@ | |||
3585 | 565 | end | 424 | end |
3586 | 566 | 425 | ||
3587 | 567 | 426 | ||
3590 | 568 | subroutine get_user_params(ncall,itmax, | 427 | subroutine get_user_params(ncall,nitmax, |
3591 | 569 | & imode,ixi_i,iphi_i,iy_ij,SHsep) | 428 | & ixi_i,iphi_i,iy_ij,SHsep) |
3592 | 570 | c********************************************************************** | 429 | c********************************************************************** |
3593 | 571 | c Routine to get user specified parameters for run | 430 | c Routine to get user specified parameters for run |
3594 | 572 | c********************************************************************** | 431 | c********************************************************************** |
3595 | 432 | use mint_module | ||
3596 | 573 | implicit none | 433 | implicit none |
3597 | 574 | c | 434 | c |
3598 | 575 | c Constants | 435 | c Constants |
3599 | 576 | c | 436 | c |
3600 | 577 | include 'nexternal.inc' | 437 | include 'nexternal.inc' |
3601 | 578 | include 'genps.inc' | 438 | include 'genps.inc' |
3602 | 579 | include 'mint.inc' | ||
3603 | 580 | include 'nFKSconfigs.inc' | 439 | include 'nFKSconfigs.inc' |
3604 | 581 | include 'fks_info.inc' | 440 | include 'fks_info.inc' |
3605 | 582 | include 'run.inc' | 441 | include 'run.inc' |
3606 | 583 | c | 442 | c |
3607 | 584 | c Arguments | 443 | c Arguments |
3608 | 585 | c | 444 | c |
3610 | 586 | integer ncall,itmax,jconfig | 445 | integer ncall,nitmax |
3611 | 587 | c | 446 | c |
3612 | 588 | c Local | 447 | c Local |
3613 | 589 | c | 448 | c |
3614 | @@ -633,19 +492,14 @@ | |||
3615 | 633 | c | 492 | c |
3616 | 634 | c MINT stuff | 493 | c MINT stuff |
3617 | 635 | c | 494 | c |
3622 | 636 | integer imode,ixi_i,iphi_i,iy_ij | 495 | integer ixi_i,iphi_i,iy_ij |
3619 | 637 | |||
3620 | 638 | logical usexinteg,mint | ||
3621 | 639 | common/cusexinteg/usexinteg,mint | ||
3623 | 640 | 496 | ||
3624 | 641 | c----- | 497 | c----- |
3625 | 642 | c Begin Code | 498 | c Begin Code |
3626 | 643 | c----- | 499 | c----- |
3627 | 644 | mint=.true. | ||
3628 | 645 | usexinteg=.false. | ||
3629 | 646 | write(*,'(a)') 'Enter number of events and iterations: ' | 500 | write(*,'(a)') 'Enter number of events and iterations: ' |
3632 | 647 | read(*,*) ncall,itmax | 501 | read(*,*) ncall,nitmax |
3633 | 648 | write(*,*) 'Number of events and iterations ',ncall,itmax | 502 | write(*,*) 'Number of events and iterations ',ncall,nitmax |
3634 | 649 | 503 | ||
3635 | 650 | write(*,'(a)') 'Enter desired fractional accuracy: ' | 504 | write(*,'(a)') 'Enter desired fractional accuracy: ' |
3636 | 651 | read(*,*) accuracy | 505 | read(*,*) accuracy |
3637 | @@ -736,7 +590,7 @@ | |||
3638 | 736 | write (*,*) 'MINT running mode:',imode | 590 | write (*,*) 'MINT running mode:',imode |
3639 | 737 | if (imode.eq.2)then | 591 | if (imode.eq.2)then |
3640 | 738 | write (*,*) 'Generating events, doing only one iteration' | 592 | write (*,*) 'Generating events, doing only one iteration' |
3642 | 739 | itmax=1 | 593 | nitmax=1 |
3643 | 740 | endif | 594 | endif |
3644 | 741 | 595 | ||
3645 | 742 | write (*,'(a)') 'Set the three folding parameters for MINT' | 596 | write (*,'(a)') 'Set the three folding parameters for MINT' |
3646 | @@ -790,8 +644,8 @@ | |||
3647 | 790 | 644 | ||
3648 | 791 | function sigintF(xx,vegas_wgt,ifl,f) | 645 | function sigintF(xx,vegas_wgt,ifl,f) |
3649 | 792 | use weight_lines | 646 | use weight_lines |
3650 | 647 | use mint_module | ||
3651 | 793 | implicit none | 648 | implicit none |
3652 | 794 | include 'mint.inc' | ||
3653 | 795 | include 'nexternal.inc' | 649 | include 'nexternal.inc' |
3654 | 796 | include 'nFKSconfigs.inc' | 650 | include 'nFKSconfigs.inc' |
3655 | 797 | include 'run.inc' | 651 | include 'run.inc' |
3656 | @@ -817,25 +671,22 @@ | |||
3657 | 817 | common/ccalculatedBorn/calculatedBorn | 671 | common/ccalculatedBorn/calculatedBorn |
3658 | 818 | logical MCcntcalled | 672 | logical MCcntcalled |
3659 | 819 | common/c_MCcntcalled/MCcntcalled | 673 | common/c_MCcntcalled/MCcntcalled |
3660 | 820 | double precision virt_wgt_mint(0:n_ave_virt), | ||
3661 | 821 | & born_wgt_mint(0:n_ave_virt) | ||
3662 | 822 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
3663 | 823 | double precision virtual_over_born | 674 | double precision virtual_over_born |
3664 | 824 | common /c_vob/ virtual_over_born | 675 | common /c_vob/ virtual_over_born |
3665 | 825 | logical nbody | 676 | logical nbody |
3666 | 826 | common/cnbody/nbody | 677 | common/cnbody/nbody |
3669 | 827 | integer ndim | 678 | integer nndim |
3670 | 828 | common/tosigint/ndim | 679 | common/tosigint/nndim |
3671 | 829 | character*4 abrv | 680 | character*4 abrv |
3672 | 830 | common /to_abrv/ abrv | 681 | common /to_abrv/ abrv |
3673 | 831 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | 682 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) |
3674 | 832 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) | 683 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) |
3675 | 833 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | 684 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt |
3676 | 834 | logical only_virt | ||
3677 | 835 | integer imode | ||
3678 | 836 | common /c_imode/imode,only_virt | ||
3679 | 837 | double precision wgt_ME_born,wgt_ME_real | 685 | double precision wgt_ME_born,wgt_ME_real |
3680 | 838 | common /c_wgt_ME_tree/ wgt_ME_born,wgt_ME_real | 686 | common /c_wgt_ME_tree/ wgt_ME_born,wgt_ME_real |
3681 | 687 | if (new_point .and. ifl.ne.2) then | ||
3682 | 688 | pass_cuts_check=.false. | ||
3683 | 689 | endif | ||
3684 | 839 | sigintF=0d0 | 690 | sigintF=0d0 |
3685 | 840 | c Find the nFKSprocess for which we compute the Born-like contributions | 691 | c Find the nFKSprocess for which we compute the Born-like contributions |
3686 | 841 | if (firsttime) then | 692 | if (firsttime) then |
3687 | @@ -887,15 +738,17 @@ | |||
3688 | 887 | else | 738 | else |
3689 | 888 | jac=0.5d0 | 739 | jac=0.5d0 |
3690 | 889 | endif | 740 | endif |
3692 | 890 | call generate_momenta(ndim,iconfig,jac,x,p) | 741 | call generate_momenta(nndim,iconfig,jac,x,p) |
3693 | 891 | if (p_born(0,1).lt.0d0) goto 12 | 742 | if (p_born(0,1).lt.0d0) goto 12 |
3694 | 892 | call compute_prefactors_nbody(vegas_wgt) | 743 | call compute_prefactors_nbody(vegas_wgt) |
3695 | 893 | call set_cms_stuff(izero) | 744 | call set_cms_stuff(izero) |
3696 | 894 | call set_shower_scale_noshape(p,nFKS_picked_nbody*2-1) | 745 | call set_shower_scale_noshape(p,nFKS_picked_nbody*2-1) |
3697 | 895 | passcuts_nbody=passcuts(p1_cnt(0,1,0),rwgt) | 746 | passcuts_nbody=passcuts(p1_cnt(0,1,0),rwgt) |
3698 | 896 | if (passcuts_nbody) then | 747 | if (passcuts_nbody) then |
3699 | 748 | pass_cuts_check=.true. | ||
3700 | 897 | if (ickkw.eq.3) call set_FxFx_scale(1,p1_cnt(0,1,0)) | 749 | if (ickkw.eq.3) call set_FxFx_scale(1,p1_cnt(0,1,0)) |
3701 | 898 | call set_alphaS(p1_cnt(0,1,0)) | 750 | call set_alphaS(p1_cnt(0,1,0)) |
3702 | 751 | call include_multichannel_enhance(1) | ||
3703 | 899 | if (abrv(1:2).ne.'vi') then | 752 | if (abrv(1:2).ne.'vi') then |
3704 | 900 | call compute_born | 753 | call compute_born |
3705 | 901 | endif | 754 | endif |
3706 | @@ -926,7 +779,7 @@ | |||
3707 | 926 | gfactsf=1.d0 | 779 | gfactsf=1.d0 |
3708 | 927 | gfactcl=1.d0 | 780 | gfactcl=1.d0 |
3709 | 928 | MCcntcalled=.false. | 781 | MCcntcalled=.false. |
3711 | 929 | call generate_momenta(ndim,iconfig,jac,x,p) | 782 | call generate_momenta(nndim,iconfig,jac,x,p) |
3712 | 930 | c Every contribution has to have a viable set of Born momenta (even if | 783 | c Every contribution has to have a viable set of Born momenta (even if |
3713 | 931 | c counter-event momenta do not exist). | 784 | c counter-event momenta do not exist). |
3714 | 932 | if (p_born(0,1).lt.0d0) cycle | 785 | if (p_born(0,1).lt.0d0) cycle |
3715 | @@ -970,11 +823,13 @@ | |||
3716 | 970 | endif | 823 | endif |
3717 | 971 | endif | 824 | endif |
3718 | 972 | if (passcuts_nbody .and. abrv.ne.'real') then | 825 | if (passcuts_nbody .and. abrv.ne.'real') then |
3719 | 826 | pass_cuts_check=.true. | ||
3720 | 973 | c Include the MonteCarlo subtraction terms | 827 | c Include the MonteCarlo subtraction terms |
3721 | 974 | if (ickkw.ne.4) then | 828 | if (ickkw.ne.4) then |
3722 | 975 | call set_cms_stuff(mohdr) | 829 | call set_cms_stuff(mohdr) |
3723 | 976 | if (ickkw.eq.3) call set_FxFx_scale(-3,p) | 830 | if (ickkw.eq.3) call set_FxFx_scale(-3,p) |
3724 | 977 | call set_alphaS(p) | 831 | call set_alphaS(p) |
3725 | 832 | call include_multichannel_enhance(4) | ||
3726 | 978 | call compute_MC_subt_term(p,gfactsf,gfactcl,probne) | 833 | call compute_MC_subt_term(p,gfactsf,gfactcl,probne) |
3727 | 979 | else | 834 | else |
3728 | 980 | c For UNLOPS all real-emission contributions need to be added to the | 835 | c For UNLOPS all real-emission contributions need to be added to the |
3729 | @@ -989,6 +844,7 @@ | |||
3730 | 989 | call set_cms_stuff(izero) | 844 | call set_cms_stuff(izero) |
3731 | 990 | if (ickkw.eq.3) call set_FxFx_scale(-2,p1_cnt(0,1,0)) | 845 | if (ickkw.eq.3) call set_FxFx_scale(-2,p1_cnt(0,1,0)) |
3732 | 991 | call set_alphaS(p1_cnt(0,1,0)) | 846 | call set_alphaS(p1_cnt(0,1,0)) |
3733 | 847 | call include_multichannel_enhance(3) | ||
3734 | 992 | replace_MC_subt=(1d0-gfactsf)*probne | 848 | replace_MC_subt=(1d0-gfactsf)*probne |
3735 | 993 | call compute_soft_counter_term(replace_MC_subt) | 849 | call compute_soft_counter_term(replace_MC_subt) |
3736 | 994 | call set_cms_stuff(ione) | 850 | call set_cms_stuff(ione) |
3737 | @@ -1000,9 +856,11 @@ | |||
3738 | 1000 | endif | 856 | endif |
3739 | 1001 | c Include the real-emission contribution. | 857 | c Include the real-emission contribution. |
3740 | 1002 | if (passcuts_n1body) then | 858 | if (passcuts_n1body) then |
3741 | 859 | pass_cuts_check=.true. | ||
3742 | 1003 | call set_cms_stuff(mohdr) | 860 | call set_cms_stuff(mohdr) |
3743 | 1004 | if (ickkw.eq.3) call set_FxFx_scale(-3,p) | 861 | if (ickkw.eq.3) call set_FxFx_scale(-3,p) |
3744 | 1005 | call set_alphaS(p) | 862 | call set_alphaS(p) |
3745 | 863 | call include_multichannel_enhance(2) | ||
3746 | 1006 | sudakov_damp=probne | 864 | sudakov_damp=probne |
3747 | 1007 | call compute_real_emission(p,sudakov_damp) | 865 | call compute_real_emission(p,sudakov_damp) |
3748 | 1008 | endif | 866 | endif |
3749 | @@ -1280,26 +1138,26 @@ | |||
3750 | 1280 | end | 1138 | end |
3751 | 1281 | 1139 | ||
3752 | 1282 | subroutine update_vegas_x(xx,x) | 1140 | subroutine update_vegas_x(xx,x) |
3753 | 1141 | use mint_module | ||
3754 | 1283 | implicit none | 1142 | implicit none |
3755 | 1284 | include 'mint.inc' | ||
3756 | 1285 | integer i | 1143 | integer i |
3757 | 1286 | double precision xx(ndimmax),x(99),ran2 | 1144 | double precision xx(ndimmax),x(99),ran2 |
3758 | 1287 | external ran2 | 1145 | external ran2 |
3762 | 1288 | integer ndim | 1146 | integer nndim |
3763 | 1289 | common/tosigint/ndim | 1147 | common/tosigint/nndim |
3764 | 1290 | character*4 abrv | 1148 | character*4 abrv |
3765 | 1291 | common /to_abrv/ abrv | 1149 | common /to_abrv/ abrv |
3766 | 1292 | do i=1,99 | 1150 | do i=1,99 |
3767 | 1293 | if (abrv.eq.'born') then | 1151 | if (abrv.eq.'born') then |
3769 | 1294 | if(i.le.ndim-3)then | 1152 | if(i.le.nndim-3)then |
3770 | 1295 | x(i)=xx(i) | 1153 | x(i)=xx(i) |
3772 | 1296 | elseif(i.le.ndim) then | 1154 | elseif(i.le.nndim) then |
3773 | 1297 | x(i)=ran2() ! Choose them flat when not including real-emision | 1155 | x(i)=ran2() ! Choose them flat when not including real-emision |
3774 | 1298 | else | 1156 | else |
3775 | 1299 | x(i)=0.d0 | 1157 | x(i)=0.d0 |
3776 | 1300 | endif | 1158 | endif |
3777 | 1301 | else | 1159 | else |
3779 | 1302 | if(i.le.ndim)then | 1160 | if(i.le.nndim)then |
3780 | 1303 | x(i)=xx(i) | 1161 | x(i)=xx(i) |
3781 | 1304 | else | 1162 | else |
3782 | 1305 | x(i)=0.d0 | 1163 | x(i)=0.d0 |
3783 | 1306 | 1164 | ||
3784 | === modified file 'Template/NLO/SubProcesses/fks_singular.f' | |||
3785 | --- Template/NLO/SubProcesses/fks_singular.f 2018-11-21 15:25:36 +0000 | |||
3786 | +++ Template/NLO/SubProcesses/fks_singular.f 2020-05-23 19:29:41 +0000 | |||
3787 | @@ -176,13 +176,13 @@ | |||
3788 | 176 | c This subroutine computes the soft-virtual matrix elements and adds its | 176 | c This subroutine computes the soft-virtual matrix elements and adds its |
3789 | 177 | c value to the list of weights using the add_wgt subroutine | 177 | c value to the list of weights using the add_wgt subroutine |
3790 | 178 | use extra_weights | 178 | use extra_weights |
3791 | 179 | use mint_module | ||
3792 | 179 | implicit none | 180 | implicit none |
3793 | 180 | include 'nexternal.inc' | 181 | include 'nexternal.inc' |
3794 | 181 | include 'coupl.inc' | 182 | include 'coupl.inc' |
3795 | 182 | include 'run.inc' | 183 | include 'run.inc' |
3796 | 183 | include 'timing_variables.inc' | 184 | include 'timing_variables.inc' |
3797 | 184 | include 'orders.inc' | 185 | include 'orders.inc' |
3798 | 185 | include 'mint.inc' | ||
3799 | 186 | integer orders(nsplitorders) | 186 | integer orders(nsplitorders) |
3800 | 187 | integer iamp, i | 187 | integer iamp, i |
3801 | 188 | double precision amp_split_virt(amp_split_size), | 188 | double precision amp_split_virt(amp_split_size), |
3802 | @@ -203,9 +203,6 @@ | |||
3803 | 203 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | 203 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) |
3804 | 204 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) | 204 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) |
3805 | 205 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | 205 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt |
3806 | 206 | double precision virt_wgt_mint(0:n_ave_virt), | ||
3807 | 207 | & born_wgt_mint(0:n_ave_virt) | ||
3808 | 208 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
3809 | 209 | double precision xiimax_cnt(-2:2) | 206 | double precision xiimax_cnt(-2:2) |
3810 | 210 | common /cxiimaxcnt/xiimax_cnt | 207 | common /cxiimaxcnt/xiimax_cnt |
3811 | 211 | double precision xi_i_hat_ev,xi_i_hat_cnt(-2:2) | 208 | double precision xi_i_hat_ev,xi_i_hat_cnt(-2:2) |
3812 | @@ -976,23 +973,17 @@ | |||
3813 | 976 | c i.e. all the nbody contributions. Also initialises the plots and | 973 | c i.e. all the nbody contributions. Also initialises the plots and |
3814 | 977 | c bpower. | 974 | c bpower. |
3815 | 978 | use extra_weights | 975 | use extra_weights |
3816 | 976 | use mint_module | ||
3817 | 979 | implicit none | 977 | implicit none |
3818 | 980 | include 'nexternal.inc' | 978 | include 'nexternal.inc' |
3819 | 981 | include 'run.inc' | 979 | include 'run.inc' |
3820 | 982 | include 'genps.inc' | 980 | include 'genps.inc' |
3821 | 983 | include 'timing_variables.inc' | 981 | include 'timing_variables.inc' |
3828 | 984 | double precision pi,vegas_wgt,enhance,xnoborn_cnt,xtot | 982 | double precision pi,vegas_wgt |
3829 | 985 | $ ,bpower,cpower,tiny | 983 | integer i |
3824 | 986 | data xnoborn_cnt /0d0/ | ||
3825 | 987 | integer inoborn_cnt,i | ||
3826 | 988 | data inoborn_cnt /0/ | ||
3827 | 989 | double precision wgt_c | ||
3830 | 990 | logical firsttime | 984 | logical firsttime |
3831 | 991 | data firsttime /.true./ | 985 | data firsttime /.true./ |
3832 | 992 | parameter (pi=3.1415926535897932385d0) | 986 | parameter (pi=3.1415926535897932385d0) |
3833 | 993 | parameter (tiny=1d-6) | ||
3834 | 994 | double precision p_born(0:3,nexternal-1) | ||
3835 | 995 | common/pborn/ p_born | ||
3836 | 996 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | 987 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) |
3837 | 997 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) | 988 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) |
3838 | 998 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | 989 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt |
3839 | @@ -1009,12 +1000,6 @@ | |||
3840 | 1009 | integer ngluons,nquarks(-6:6),nphotons | 1000 | integer ngluons,nquarks(-6:6),nphotons |
3841 | 1010 | common/numberofparticles/fkssymmetryfactor,fkssymmetryfactorBorn, | 1001 | common/numberofparticles/fkssymmetryfactor,fkssymmetryfactorBorn, |
3842 | 1011 | & fkssymmetryfactorDeg,ngluons,nquarks,nphotons | 1002 | & fkssymmetryfactorDeg,ngluons,nquarks,nphotons |
3843 | 1012 | integer mapconfig(0:lmaxconfigs), iconfig | ||
3844 | 1013 | common/to_mconfigs/mapconfig, iconfig | ||
3845 | 1014 | Double Precision amp2(ngraphs), jamp2(0:ncolor) | ||
3846 | 1015 | common/to_amps/ amp2, jamp2 | ||
3847 | 1016 | double precision diagramsymmetryfactor | ||
3848 | 1017 | common /dsymfactor/diagramsymmetryfactor | ||
3849 | 1018 | double precision f_b,f_nb | 1003 | double precision f_b,f_nb |
3850 | 1019 | common /factor_nbody/ f_b,f_nb | 1004 | common /factor_nbody/ f_b,f_nb |
3851 | 1020 | integer iappl | 1005 | integer iappl |
3852 | @@ -1025,8 +1010,6 @@ | |||
3853 | 1025 | external ran2 | 1010 | external ran2 |
3854 | 1026 | real*8 rndec(10) | 1011 | real*8 rndec(10) |
3855 | 1027 | common/crndec/rndec | 1012 | common/crndec/rndec |
3856 | 1028 | logical fixed_order,nlo_ps | ||
3857 | 1029 | common /c_fnlo_nlops/fixed_order,nlo_ps | ||
3858 | 1030 | include "appl_common.inc" | 1013 | include "appl_common.inc" |
3859 | 1031 | !!!include "orders.inc" | 1014 | !!!include "orders.inc" |
3860 | 1032 | call cpu_time(tBefore) | 1015 | call cpu_time(tBefore) |
3861 | @@ -1043,138 +1026,70 @@ | |||
3862 | 1043 | if (fixed_order) call initplot | 1026 | if (fixed_order) call initplot |
3863 | 1044 | firsttime=.false. | 1027 | firsttime=.false. |
3864 | 1045 | endif | 1028 | endif |
3865 | 1046 | c Compute the multi-channel enhancement factor 'enhance'. | ||
3866 | 1047 | enhance=1.d0 | ||
3867 | 1048 | if (p_born(0,1).gt.0d0) then | ||
3868 | 1049 | call sborn(p_born,wgt_c) | ||
3869 | 1050 | elseif(p_born(0,1).lt.0d0)then | ||
3870 | 1051 | enhance=0d0 | ||
3871 | 1052 | endif | ||
3872 | 1053 | if (enhance.eq.0d0)then | ||
3873 | 1054 | xnoborn_cnt=xnoborn_cnt+1.d0 | ||
3874 | 1055 | if(log10(xnoborn_cnt).gt.inoborn_cnt)then | ||
3875 | 1056 | write (*,*) 'WARNING: no Born momenta more than 10**', | ||
3876 | 1057 | $ inoborn_cnt,'times' | ||
3877 | 1058 | inoborn_cnt=inoborn_cnt+1 | ||
3878 | 1059 | endif | ||
3879 | 1060 | else | ||
3880 | 1061 | xtot=0d0 | ||
3881 | 1062 | if (mapconfig(0).eq.0) then | ||
3882 | 1063 | write (*,*) 'Fatal error in compute_prefactor_nbody:'/ | ||
3883 | 1064 | & /' no Born diagrams ',mapconfig, | ||
3884 | 1065 | & '. Check bornfromreal.inc' | ||
3885 | 1066 | write (*,*) 'Is fks_singular compiled correctly?' | ||
3886 | 1067 | stop 1 | ||
3887 | 1068 | endif | ||
3888 | 1069 | do i=1, mapconfig(0) | ||
3889 | 1070 | xtot=xtot+amp2(mapconfig(i)) | ||
3890 | 1071 | enddo | ||
3891 | 1072 | if (xtot.ne.0d0) then | ||
3892 | 1073 | enhance=amp2(mapconfig(iconfig))/xtot | ||
3893 | 1074 | enhance=enhance*diagramsymmetryfactor | ||
3894 | 1075 | else | ||
3895 | 1076 | enhance=0d0 | ||
3896 | 1077 | endif | ||
3897 | 1078 | endif | ||
3898 | 1079 | call set_cms_stuff(0) | 1029 | call set_cms_stuff(0) |
3899 | 1080 | c f_* multiplication factors for Born and nbody | 1030 | c f_* multiplication factors for Born and nbody |
3900 | 1081 | f_b=jac_cnt(0)*xinorm_ev/(min(xiimax_ev,xiBSVcut_used)*shat/(16 | 1031 | f_b=jac_cnt(0)*xinorm_ev/(min(xiimax_ev,xiBSVcut_used)*shat/(16 |
3902 | 1082 | $ *pi**2))*enhance*fkssymmetryfactorBorn*vegas_wgt | 1032 | $ *pi**2))*fkssymmetryfactorBorn*vegas_wgt |
3903 | 1083 | f_nb=f_b | 1033 | f_nb=f_b |
3904 | 1084 | call cpu_time(tAfter) | 1034 | call cpu_time(tAfter) |
3905 | 1085 | tf_nb=tf_nb+(tAfter-tBefore) | 1035 | tf_nb=tf_nb+(tAfter-tBefore) |
3906 | 1086 | return | 1036 | return |
3907 | 1087 | end | 1037 | end |
3908 | 1088 | 1038 | ||
3912 | 1089 | subroutine compute_prefactors_n1body(vegas_wgt,jac_ev) | 1039 | |
3913 | 1090 | c Compute all relevant prefactors for the real emission and counter | 1040 | subroutine include_multichannel_enhance(imode) |
3911 | 1091 | c terms. | ||
3914 | 1092 | implicit none | 1041 | implicit none |
3915 | 1093 | include 'nexternal.inc' | 1042 | include 'nexternal.inc' |
3916 | 1094 | include 'run.inc' | 1043 | include 'run.inc' |
3917 | 1095 | include 'genps.inc' | 1044 | include 'genps.inc' |
3918 | 1096 | include 'fks_powers.inc' | ||
3919 | 1097 | include 'coupl.inc' | ||
3920 | 1098 | include 'timing_variables.inc' | 1045 | include 'timing_variables.inc' |
3926 | 1099 | double precision vegas_wgt,enhance,xnoborn_cnt,xtot | 1046 | double precision xnoborn_cnt,xtot,wgt_c,enhance,enhance_real |
3927 | 1100 | & ,prefact,prefact_cnt_ssc,prefact_deg,prefact_c,prefact_coll | 1047 | $ ,pas(0:3,nexternal) |
3923 | 1101 | & ,jac_ev,pi,prefact_cnt_ssc_c,prefact_coll_c,prefact_deg_slxi | ||
3924 | 1102 | & ,prefact_deg_sxi,zero,enhance_real | ||
3925 | 1103 | parameter (pi=3.1415926535897932385d0, zero=0d0) | ||
3928 | 1104 | data xnoborn_cnt /0d0/ | 1048 | data xnoborn_cnt /0d0/ |
3930 | 1105 | integer inoborn_cnt,i | 1049 | integer inoborn_cnt,i,imode |
3931 | 1106 | data inoborn_cnt /0/ | 1050 | data inoborn_cnt /0/ |
3932 | 1107 | double precision wgt_c | ||
3933 | 1108 | double precision p_born(0:3,nexternal-1) | 1051 | double precision p_born(0:3,nexternal-1) |
3934 | 1109 | common/pborn/ p_born | 1052 | common/pborn/ p_born |
3935 | 1110 | double precision p_born_ev(0:3,nexternal-1) | 1053 | double precision p_born_ev(0:3,nexternal-1) |
3937 | 1111 | common/pborn_ev/p_born_ev | 1054 | common/pborn_ev/ p_born_ev |
3938 | 1055 | double precision p_ev(0:3,nexternal) | ||
3939 | 1056 | common/pev/ p_ev | ||
3940 | 1112 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | 1057 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) |
3941 | 1113 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) | 1058 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) |
3942 | 1114 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | 1059 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt |
3943 | 1115 | double precision xi_i_fks_ev,y_ij_fks_ev | ||
3944 | 1116 | double precision p_i_fks_ev(0:3),p_i_fks_cnt(0:3,-2:2) | ||
3945 | 1117 | common/fksvariables/xi_i_fks_ev,y_ij_fks_ev,p_i_fks_ev,p_i_fks_cnt | ||
3946 | 1118 | integer i_fks,j_fks | ||
3947 | 1119 | common/fks_indices/i_fks,j_fks | ||
3948 | 1120 | double precision xi_i_fks_cnt(-2:2) | ||
3949 | 1121 | common /cxiifkscnt/xi_i_fks_cnt | ||
3950 | 1122 | double precision xinorm_ev | ||
3951 | 1123 | common /cxinormev/xinorm_ev | ||
3952 | 1124 | double precision xiimax_ev | ||
3953 | 1125 | common /cxiimaxev/xiimax_ev | ||
3954 | 1126 | double precision xiimax_cnt(-2:2) | ||
3955 | 1127 | common /cxiimaxcnt/xiimax_cnt | ||
3956 | 1128 | double precision xinorm_cnt(-2:2) | ||
3957 | 1129 | common /cxinormcnt/xinorm_cnt | ||
3958 | 1130 | double precision delta_used | ||
3959 | 1131 | common /cdelta_used/delta_used | ||
3960 | 1132 | double precision xicut_used | ||
3961 | 1133 | common /cxicut_used/xicut_used | ||
3962 | 1134 | double precision xiScut_used,xiBSVcut_used | ||
3963 | 1135 | common /cxiScut_used/xiScut_used,xiBSVcut_used | ||
3964 | 1136 | double precision ybst_til_tolab,ybst_til_tocm,sqrtshat,shat | ||
3965 | 1137 | common/parton_cms_stuff/ybst_til_tolab,ybst_til_tocm,sqrtshat,shat | ||
3966 | 1138 | double precision fkssymmetryfactor,fkssymmetryfactorBorn, | ||
3967 | 1139 | & fkssymmetryfactorDeg | ||
3968 | 1140 | integer ngluons,nquarks(-6:6),nphotons | ||
3969 | 1141 | common/numberofparticles/fkssymmetryfactor,fkssymmetryfactorBorn, | ||
3970 | 1142 | & fkssymmetryfactorDeg,ngluons,nquarks,nphotons | ||
3971 | 1143 | integer mapconfig(0:lmaxconfigs), iconfig | 1060 | integer mapconfig(0:lmaxconfigs), iconfig |
3972 | 1144 | common/to_mconfigs/mapconfig, iconfig | 1061 | common/to_mconfigs/mapconfig, iconfig |
3973 | 1145 | Double Precision amp2(ngraphs), jamp2(0:ncolor) | 1062 | Double Precision amp2(ngraphs), jamp2(0:ncolor) |
3974 | 1146 | common/to_amps/ amp2, jamp2 | 1063 | common/to_amps/ amp2, jamp2 |
3975 | 1147 | double precision diagramsymmetryfactor | 1064 | double precision diagramsymmetryfactor |
3976 | 1148 | common /dsymfactor/diagramsymmetryfactor | 1065 | common /dsymfactor/diagramsymmetryfactor |
3979 | 1149 | logical nocntevents | 1066 | double precision f_b,f_nb |
3980 | 1150 | common/cnocntevents/nocntevents | 1067 | common /factor_nbody/ f_b,f_nb |
3981 | 1068 | double precision f_r,f_s,f_c,f_dc,f_sc,f_dsc(4) | ||
3982 | 1069 | common/factor_n1body/f_r,f_s,f_c,f_dc,f_sc,f_dsc | ||
3983 | 1070 | double precision f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
3984 | 1071 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
3985 | 1072 | common/factor_n1body_NLOPS/f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
3986 | 1073 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
3987 | 1074 | double precision f_dis_d,f_dis_p,f_dis_l | ||
3988 | 1075 | common/factor_dis/f_dis_d,f_dis_p,f_dis_l | ||
3989 | 1151 | integer igranny,iaunt | 1076 | integer igranny,iaunt |
3990 | 1152 | logical granny_chain(-nexternal:nexternal),granny_is_res | 1077 | logical granny_chain(-nexternal:nexternal),granny_is_res |
3991 | 1153 | & ,granny_chain_real_final(-nexternal:nexternal) | 1078 | & ,granny_chain_real_final(-nexternal:nexternal) |
3992 | 1154 | common /c_granny_res/igranny,iaunt,granny_is_res,granny_chain | 1079 | common /c_granny_res/igranny,iaunt,granny_is_res,granny_chain |
3993 | 1155 | & ,granny_chain_real_final | 1080 | & ,granny_chain_real_final |
3994 | 1156 | double precision f_r,f_s,f_c,f_dc,f_sc,f_dsc(4) | ||
3995 | 1157 | common/factor_n1body/f_r,f_s,f_c,f_dc,f_sc,f_dsc | ||
3996 | 1158 | double precision f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
3997 | 1159 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
3998 | 1160 | common/factor_n1body_NLOPS/f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
3999 | 1161 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
4000 | 1162 | ! prefactors for the DIS scheme | ||
4001 | 1163 | double precision prefact_dis_d,prefact_dis_p,prefact_dis_l | ||
4002 | 1164 | double precision f_dis_d,f_dis_p,f_dis_l | ||
4003 | 1165 | common/factor_dis/f_dis_d,f_dis_p,f_dis_l | ||
4004 | 1166 | logical calculatedBorn | 1081 | logical calculatedBorn |
4005 | 1167 | common/ccalculatedBorn/calculatedBorn | 1082 | common/ccalculatedBorn/calculatedBorn |
4008 | 1168 | double precision pmass(nexternal) | 1083 | |
4007 | 1169 | include 'pmass.inc' | ||
4009 | 1170 | call cpu_time(tBefore) | 1084 | call cpu_time(tBefore) |
4010 | 1085 | |||
4011 | 1086 | c Compute the multi-channel enhancement factor 'enhance'. | ||
4012 | 1171 | enhance=1.d0 | 1087 | enhance=1.d0 |
4013 | 1172 | if (p_born(0,1).gt.0d0) then | 1088 | if (p_born(0,1).gt.0d0) then |
4014 | 1173 | call sborn(p_born,wgt_c) | 1089 | call sborn(p_born,wgt_c) |
4015 | 1174 | elseif(p_born(0,1).lt.0d0)then | 1090 | elseif(p_born(0,1).lt.0d0)then |
4016 | 1175 | enhance=0d0 | 1091 | enhance=0d0 |
4017 | 1176 | endif | 1092 | endif |
4018 | 1177 | c Compute the multi-channel enhancement factor 'enhance'. | ||
4019 | 1178 | if (enhance.eq.0d0)then | 1093 | if (enhance.eq.0d0)then |
4020 | 1179 | xnoborn_cnt=xnoborn_cnt+1.d0 | 1094 | xnoborn_cnt=xnoborn_cnt+1.d0 |
4021 | 1180 | if(log10(xnoborn_cnt).gt.inoborn_cnt)then | 1095 | if(log10(xnoborn_cnt).gt.inoborn_cnt)then |
4022 | @@ -1185,9 +1100,9 @@ | |||
4023 | 1185 | else | 1100 | else |
4024 | 1186 | xtot=0d0 | 1101 | xtot=0d0 |
4025 | 1187 | if (mapconfig(0).eq.0) then | 1102 | if (mapconfig(0).eq.0) then |
4029 | 1188 | write (*,*) 'Fatal error in compute_prefactor_n1body,'/ | 1103 | write (*,*) 'Fatal error in compute_prefactor_nbody:'/ |
4030 | 1189 | & /' no Born diagrams ',mapconfig | 1104 | & /' no Born diagrams ',mapconfig, |
4031 | 1190 | & ,'. Check bornfromreal.inc' | 1105 | & '. Check bornfromreal.inc' |
4032 | 1191 | write (*,*) 'Is fks_singular compiled correctly?' | 1106 | write (*,*) 'Is fks_singular compiled correctly?' |
4033 | 1192 | stop 1 | 1107 | stop 1 |
4034 | 1193 | endif | 1108 | endif |
4035 | @@ -1202,11 +1117,17 @@ | |||
4036 | 1202 | endif | 1117 | endif |
4037 | 1203 | endif | 1118 | endif |
4038 | 1204 | 1119 | ||
4039 | 1120 | c In the case there is the special phase-space mapping for resonances, | ||
4040 | 1121 | c use the Born computed with those as the mapping. | ||
4041 | 1205 | enhance_real=1.d0 | 1122 | enhance_real=1.d0 |
4043 | 1206 | if (granny_is_res) then | 1123 | if (granny_is_res .and. imode.eq.2) then |
4044 | 1207 | if (p_born_ev(0,1).gt.0d0) then | 1124 | if (p_born_ev(0,1).gt.0d0) then |
4045 | 1208 | calculatedBorn=.false. | 1125 | calculatedBorn=.false. |
4046 | 1126 | pas(0:3,nexternal)=0d0 | ||
4047 | 1127 | pas(0:3,1:nexternal-1)=p_born_ev(0:3,1:nexternal-1) | ||
4048 | 1128 | call set_alphas(pas) | ||
4049 | 1209 | call sborn(p_born_ev,wgt_c) | 1129 | call sborn(p_born_ev,wgt_c) |
4050 | 1130 | call set_alphas(p_ev) | ||
4051 | 1210 | calculatedBorn=.false. | 1131 | calculatedBorn=.false. |
4052 | 1211 | elseif(p_born_ev(0,1).lt.0d0)then | 1132 | elseif(p_born_ev(0,1).lt.0d0)then |
4053 | 1212 | if (enhance.ne.0d0) then | 1133 | if (enhance.ne.0d0) then |
4054 | @@ -1246,18 +1167,114 @@ | |||
4055 | 1246 | enhance_real=enhance | 1167 | enhance_real=enhance |
4056 | 1247 | endif | 1168 | endif |
4057 | 1248 | 1169 | ||
4058 | 1170 | if (imode.eq.1) then | ||
4059 | 1171 | f_b= f_b *enhance | ||
4060 | 1172 | f_nb= f_nb *enhance | ||
4061 | 1173 | elseif(imode.eq.2) then | ||
4062 | 1174 | f_r= f_r *enhance_real | ||
4063 | 1175 | elseif(imode.eq.4) then | ||
4064 | 1176 | f_MC_S= f_MC_S *enhance | ||
4065 | 1177 | f_MC_H= f_MC_H *enhance | ||
4066 | 1178 | elseif(imode.eq.3) then | ||
4067 | 1179 | f_s= f_s *enhance | ||
4068 | 1180 | f_s_MC_S= f_s_MC_S *enhance | ||
4069 | 1181 | f_S_MC_H= f_S_MC_H *enhance | ||
4070 | 1182 | f_c= f_c *enhance | ||
4071 | 1183 | f_c_MC_S= f_c_MC_S *enhance | ||
4072 | 1184 | f_c_MC_H= f_c_MC_H *enhance | ||
4073 | 1185 | f_dc= f_dc *enhance | ||
4074 | 1186 | f_sc= f_sc *enhance | ||
4075 | 1187 | f_sc_MC_S=f_sc_MC_S*enhance | ||
4076 | 1188 | f_sc_MC_H=f_sc_MC_H*enhance | ||
4077 | 1189 | f_dsc(1)= f_dsc(1) *enhance | ||
4078 | 1190 | f_dsc(2)= f_dsc(2) *enhance | ||
4079 | 1191 | f_dsc(3)= f_dsc(3) *enhance | ||
4080 | 1192 | f_dsc(4)= f_dsc(4) *enhance | ||
4081 | 1193 | f_dis_d= f_dis_d *enhance | ||
4082 | 1194 | f_dis_p= f_dis_p *enhance | ||
4083 | 1195 | f_dis_l= f_dis_l *enhance | ||
4084 | 1196 | endif | ||
4085 | 1197 | call cpu_time(tAfter) | ||
4086 | 1198 | tf_nb=tf_nb+(tAfter-tBefore) | ||
4087 | 1199 | |||
4088 | 1200 | return | ||
4089 | 1201 | end | ||
4090 | 1202 | |||
4091 | 1203 | |||
4092 | 1204 | subroutine compute_prefactors_n1body(vegas_wgt,jac_ev) | ||
4093 | 1205 | c Compute all relevant prefactors for the real emission and counter | ||
4094 | 1206 | c terms. | ||
4095 | 1207 | implicit none | ||
4096 | 1208 | include 'nexternal.inc' | ||
4097 | 1209 | include 'run.inc' | ||
4098 | 1210 | include 'genps.inc' | ||
4099 | 1211 | include 'fks_powers.inc' | ||
4100 | 1212 | include 'coupl.inc' | ||
4101 | 1213 | include 'timing_variables.inc' | ||
4102 | 1214 | double precision vegas_wgt,prefact,prefact_cnt_ssc,prefact_deg | ||
4103 | 1215 | $ ,prefact_c,prefact_coll,jac_ev,pi,prefact_cnt_ssc_c | ||
4104 | 1216 | $ ,prefact_coll_c,prefact_deg_slxi,prefact_deg_sxi,zero | ||
4105 | 1217 | integer i | ||
4106 | 1218 | parameter (pi=3.1415926535897932385d0, ZERO=0d0) | ||
4107 | 1219 | double precision p1_cnt(0:3,nexternal,-2:2),wgt_cnt(-2:2) | ||
4108 | 1220 | $ ,pswgt_cnt(-2:2),jac_cnt(-2:2) | ||
4109 | 1221 | common/counterevnts/p1_cnt,wgt_cnt,pswgt_cnt,jac_cnt | ||
4110 | 1222 | double precision xi_i_fks_ev,y_ij_fks_ev | ||
4111 | 1223 | double precision p_i_fks_ev(0:3),p_i_fks_cnt(0:3,-2:2) | ||
4112 | 1224 | common/fksvariables/xi_i_fks_ev,y_ij_fks_ev,p_i_fks_ev,p_i_fks_cnt | ||
4113 | 1225 | integer i_fks,j_fks | ||
4114 | 1226 | common/fks_indices/i_fks,j_fks | ||
4115 | 1227 | double precision xi_i_fks_cnt(-2:2) | ||
4116 | 1228 | common /cxiifkscnt/xi_i_fks_cnt | ||
4117 | 1229 | double precision xinorm_ev | ||
4118 | 1230 | common /cxinormev/xinorm_ev | ||
4119 | 1231 | double precision xiimax_ev | ||
4120 | 1232 | common /cxiimaxev/xiimax_ev | ||
4121 | 1233 | double precision xiimax_cnt(-2:2) | ||
4122 | 1234 | common /cxiimaxcnt/xiimax_cnt | ||
4123 | 1235 | double precision xinorm_cnt(-2:2) | ||
4124 | 1236 | common /cxinormcnt/xinorm_cnt | ||
4125 | 1237 | double precision delta_used | ||
4126 | 1238 | common /cdelta_used/delta_used | ||
4127 | 1239 | double precision xicut_used | ||
4128 | 1240 | common /cxicut_used/xicut_used | ||
4129 | 1241 | double precision xiScut_used,xiBSVcut_used | ||
4130 | 1242 | common /cxiScut_used/xiScut_used,xiBSVcut_used | ||
4131 | 1243 | double precision ybst_til_tolab,ybst_til_tocm,sqrtshat,shat | ||
4132 | 1244 | common/parton_cms_stuff/ybst_til_tolab,ybst_til_tocm,sqrtshat,shat | ||
4133 | 1245 | double precision fkssymmetryfactor,fkssymmetryfactorBorn, | ||
4134 | 1246 | & fkssymmetryfactorDeg | ||
4135 | 1247 | integer ngluons,nquarks(-6:6),nphotons | ||
4136 | 1248 | common/numberofparticles/fkssymmetryfactor,fkssymmetryfactorBorn, | ||
4137 | 1249 | & fkssymmetryfactorDeg,ngluons,nquarks,nphotons | ||
4138 | 1250 | logical nocntevents | ||
4139 | 1251 | common/cnocntevents/nocntevents | ||
4140 | 1252 | double precision f_r,f_s,f_c,f_dc,f_sc,f_dsc(4) | ||
4141 | 1253 | common/factor_n1body/f_r,f_s,f_c,f_dc,f_sc,f_dsc | ||
4142 | 1254 | double precision f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
4143 | 1255 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
4144 | 1256 | common/factor_n1body_NLOPS/f_s_MC_S,f_s_MC_H,f_c_MC_S,f_c_MC_H | ||
4145 | 1257 | $ ,f_sc_MC_S,f_sc_MC_H,f_MC_S,f_MC_H | ||
4146 | 1258 | ! prefactors for the DIS scheme | ||
4147 | 1259 | double precision prefact_dis_d,prefact_dis_p,prefact_dis_l | ||
4148 | 1260 | double precision f_dis_d,f_dis_p,f_dis_l | ||
4149 | 1261 | common/factor_dis/f_dis_d,f_dis_p,f_dis_l | ||
4150 | 1262 | double precision pmass(nexternal) | ||
4151 | 1263 | include 'pmass.inc' | ||
4152 | 1264 | call cpu_time(tBefore) | ||
4153 | 1265 | |||
4154 | 1249 | c f_* multiplication factors for real-emission, soft counter, ... etc. | 1266 | c f_* multiplication factors for real-emission, soft counter, ... etc. |
4155 | 1250 | prefact=xinorm_ev/xi_i_fks_ev/(1-y_ij_fks_ev) | 1267 | prefact=xinorm_ev/xi_i_fks_ev/(1-y_ij_fks_ev) |
4157 | 1251 | f_r=prefact*jac_ev*enhance_real*fkssymmetryfactor*vegas_wgt | 1268 | f_r=prefact*jac_ev*fkssymmetryfactor*vegas_wgt |
4158 | 1252 | f_MC_S=f_r | 1269 | f_MC_S=f_r |
4159 | 1253 | f_MC_H=f_r | 1270 | f_MC_H=f_r |
4160 | 1254 | if (.not.nocntevents) then | 1271 | if (.not.nocntevents) then |
4161 | 1255 | prefact_cnt_ssc=xinorm_ev/min(xiimax_ev,xiScut_used)* | 1272 | prefact_cnt_ssc=xinorm_ev/min(xiimax_ev,xiScut_used)* |
4162 | 1256 | $ log(xicut_used/min(xiimax_ev,xiScut_used))/(1 | 1273 | $ log(xicut_used/min(xiimax_ev,xiScut_used))/(1 |
4163 | 1257 | $ -y_ij_fks_ev) | 1274 | $ -y_ij_fks_ev) |
4165 | 1258 | f_s=(prefact+prefact_cnt_ssc)*jac_cnt(0)*enhance | 1275 | f_s=(prefact+prefact_cnt_ssc)*jac_cnt(0) |
4166 | 1259 | $ *fkssymmetryfactor*vegas_wgt | 1276 | $ *fkssymmetryfactor*vegas_wgt |
4168 | 1260 | f_s_MC_S=prefact*jac_cnt(0)*enhance | 1277 | f_s_MC_S=prefact*jac_cnt(0) |
4169 | 1261 | $ *fkssymmetryfactor*vegas_wgt | 1278 | $ *fkssymmetryfactor*vegas_wgt |
4170 | 1262 | f_s_MC_H=f_s_MC_S | 1279 | f_s_MC_H=f_s_MC_S |
4171 | 1263 | 1280 | ||
4172 | @@ -1268,9 +1285,9 @@ | |||
4173 | 1268 | prefact_coll=xinorm_cnt(1)/xi_i_fks_cnt(1)*log(delta_used | 1285 | prefact_coll=xinorm_cnt(1)/xi_i_fks_cnt(1)*log(delta_used |
4174 | 1269 | $ /deltaS)/deltaS | 1286 | $ /deltaS)/deltaS |
4175 | 1270 | f_c=(prefact_c+prefact_coll)*jac_cnt(1) | 1287 | f_c=(prefact_c+prefact_coll)*jac_cnt(1) |
4177 | 1271 | $ *enhance*fkssymmetryfactor*vegas_wgt | 1288 | $ *fkssymmetryfactor*vegas_wgt |
4178 | 1272 | f_c_MC_S=prefact_c*jac_cnt(1) | 1289 | f_c_MC_S=prefact_c*jac_cnt(1) |
4180 | 1273 | $ *enhance*fkssymmetryfactor*vegas_wgt | 1290 | $ *fkssymmetryfactor*vegas_wgt |
4181 | 1274 | f_c_MC_H=f_c_MC_S | 1291 | f_c_MC_H=f_c_MC_S |
4182 | 1275 | 1292 | ||
4183 | 1276 | call set_cms_stuff(1) | 1293 | call set_cms_stuff(1) |
4184 | @@ -1281,13 +1298,13 @@ | |||
4185 | 1281 | prefact_coll_c=xinorm_cnt(1)/min(xiimax_cnt(1),xiScut_used) | 1298 | prefact_coll_c=xinorm_cnt(1)/min(xiimax_cnt(1),xiScut_used) |
4186 | 1282 | $ *log(xicut_used/min(xiimax_cnt(1),xiScut_used)) | 1299 | $ *log(xicut_used/min(xiimax_cnt(1),xiScut_used)) |
4187 | 1283 | $ *log(delta_used/deltaS)/deltaS | 1300 | $ *log(delta_used/deltaS)/deltaS |
4189 | 1284 | f_dc=jac_cnt(1)*prefact_deg/(shat/(32*pi**2))*enhance | 1301 | f_dc=jac_cnt(1)*prefact_deg/(shat/(32*pi**2)) |
4190 | 1285 | $ *fkssymmetryfactorDeg*vegas_wgt | 1302 | $ *fkssymmetryfactorDeg*vegas_wgt |
4191 | 1286 | f_sc=(prefact_c+prefact_coll+prefact_cnt_ssc_c | 1303 | f_sc=(prefact_c+prefact_coll+prefact_cnt_ssc_c |
4193 | 1287 | & +prefact_coll_c)*jac_cnt(2)*enhance | 1304 | & +prefact_coll_c)*jac_cnt(2) |
4194 | 1288 | & *fkssymmetryfactorDeg*vegas_wgt | 1305 | & *fkssymmetryfactorDeg*vegas_wgt |
4195 | 1289 | f_sc_MC_S=prefact_c*jac_cnt(2) | 1306 | f_sc_MC_S=prefact_c*jac_cnt(2) |
4197 | 1290 | $ *enhance*fkssymmetryfactor*vegas_wgt | 1307 | $ *fkssymmetryfactor*vegas_wgt |
4198 | 1291 | f_sc_MC_H=f_sc_MC_S | 1308 | f_sc_MC_H=f_sc_MC_S |
4199 | 1292 | 1309 | ||
4200 | 1293 | call set_cms_stuff(2) | 1310 | call set_cms_stuff(2) |
4201 | @@ -1298,24 +1315,24 @@ | |||
4202 | 1298 | & ,xiScut_used)*( log(xicut_used)**2 | 1315 | & ,xiScut_used)*( log(xicut_used)**2 |
4203 | 1299 | & -log(min(xiimax_cnt(1),xiScut_used))**2 )*1/(2.d0 | 1316 | & -log(min(xiimax_cnt(1),xiScut_used))**2 )*1/(2.d0 |
4204 | 1300 | & *deltaS) | 1317 | & *deltaS) |
4206 | 1301 | f_dsc(1)=prefact_deg*jac_cnt(2)/(shat/(32*pi**2))*enhance | 1318 | f_dsc(1)=prefact_deg*jac_cnt(2)/(shat/(32*pi**2)) |
4207 | 1302 | & *fkssymmetryfactorDeg*vegas_wgt | 1319 | & *fkssymmetryfactorDeg*vegas_wgt |
4208 | 1303 | f_dsc(2)=prefact_deg_sxi*jac_cnt(2)/(shat/(32*pi**2)) | 1320 | f_dsc(2)=prefact_deg_sxi*jac_cnt(2)/(shat/(32*pi**2)) |
4210 | 1304 | & *enhance*fkssymmetryfactorDeg*vegas_wgt | 1321 | & *fkssymmetryfactorDeg*vegas_wgt |
4211 | 1305 | f_dsc(3)=prefact_deg_slxi*jac_cnt(2)/(shat/(32*pi**2)) | 1322 | f_dsc(3)=prefact_deg_slxi*jac_cnt(2)/(shat/(32*pi**2)) |
4213 | 1306 | & *enhance*fkssymmetryfactorDeg*vegas_wgt | 1323 | & *fkssymmetryfactorDeg*vegas_wgt |
4214 | 1307 | f_dsc(4)=( prefact_deg+prefact_deg_sxi )*jac_cnt(2)/(shat | 1324 | f_dsc(4)=( prefact_deg+prefact_deg_sxi )*jac_cnt(2)/(shat |
4216 | 1308 | & /(32*pi**2))*enhance*fkssymmetryfactorDeg | 1325 | & /(32*pi**2))*fkssymmetryfactorDeg |
4217 | 1309 | & *vegas_wgt | 1326 | & *vegas_wgt |
4218 | 1310 | ! prefactor for the DIS scheme | 1327 | ! prefactor for the DIS scheme |
4219 | 1311 | prefact_dis_d=xinorm_cnt(1)/xiScut_used/deltaS | 1328 | prefact_dis_d=xinorm_cnt(1)/xiScut_used/deltaS |
4221 | 1312 | f_dis_d=prefact_dis_d*jac_cnt(2)/(shat/(32*pi**2))*enhance | 1329 | f_dis_d=prefact_dis_d*jac_cnt(2)/(shat/(32*pi**2)) |
4222 | 1313 | & *fkssymmetryfactorDeg*vegas_wgt | 1330 | & *fkssymmetryfactorDeg*vegas_wgt |
4223 | 1314 | prefact_dis_p=xinorm_cnt(1)*dlog(xiScut_used)/xiScut_used/deltaS | 1331 | prefact_dis_p=xinorm_cnt(1)*dlog(xiScut_used)/xiScut_used/deltaS |
4225 | 1315 | f_dis_p=prefact_dis_p*jac_cnt(2)/(shat/(32*pi**2))*enhance | 1332 | f_dis_p=prefact_dis_p*jac_cnt(2)/(shat/(32*pi**2)) |
4226 | 1316 | & *fkssymmetryfactorDeg*vegas_wgt | 1333 | & *fkssymmetryfactorDeg*vegas_wgt |
4227 | 1317 | prefact_dis_l=xinorm_cnt(1)*dlog(xiScut_used)**2/2d0/xiScut_used/deltaS | 1334 | prefact_dis_l=xinorm_cnt(1)*dlog(xiScut_used)**2/2d0/xiScut_used/deltaS |
4229 | 1318 | f_dis_l=prefact_dis_l*jac_cnt(2)/(shat/(32*pi**2))*enhance | 1335 | f_dis_l=prefact_dis_l*jac_cnt(2)/(shat/(32*pi**2)) |
4230 | 1319 | & *fkssymmetryfactorDeg*vegas_wgt | 1336 | & *fkssymmetryfactorDeg*vegas_wgt |
4231 | 1320 | else | 1337 | else |
4232 | 1321 | f_c=0d0 | 1338 | f_c=0d0 |
4233 | @@ -1439,6 +1456,7 @@ | |||
4234 | 1439 | c contribution | 1456 | c contribution |
4235 | 1440 | use weight_lines | 1457 | use weight_lines |
4236 | 1441 | use extra_weights | 1458 | use extra_weights |
4237 | 1459 | use FKSParams | ||
4238 | 1442 | implicit none | 1460 | implicit none |
4239 | 1443 | include 'nexternal.inc' | 1461 | include 'nexternal.inc' |
4240 | 1444 | include 'run.inc' | 1462 | include 'run.inc' |
4241 | @@ -1446,7 +1464,6 @@ | |||
4242 | 1446 | include 'coupl.inc' | 1464 | include 'coupl.inc' |
4243 | 1447 | include 'fks_info.inc' | 1465 | include 'fks_info.inc' |
4244 | 1448 | include 'q_es.inc' | 1466 | include 'q_es.inc' |
4245 | 1449 | include 'FKSParams.inc' | ||
4246 | 1450 | include 'orders.inc' | 1467 | include 'orders.inc' |
4247 | 1451 | integer type,i,j | 1468 | integer type,i,j |
4248 | 1452 | logical foundIt,foundOrders | 1469 | logical foundIt,foundOrders |
4249 | @@ -1633,6 +1650,8 @@ | |||
4250 | 1633 | c or to fill histograms. | 1650 | c or to fill histograms. |
4251 | 1634 | use weight_lines | 1651 | use weight_lines |
4252 | 1635 | use extra_weights | 1652 | use extra_weights |
4253 | 1653 | use mint_module | ||
4254 | 1654 | use FKSParams | ||
4255 | 1636 | implicit none | 1655 | implicit none |
4256 | 1637 | include 'nexternal.inc' | 1656 | include 'nexternal.inc' |
4257 | 1638 | include 'run.inc' | 1657 | include 'run.inc' |
4258 | @@ -1640,10 +1659,8 @@ | |||
4259 | 1640 | include 'timing_variables.inc' | 1659 | include 'timing_variables.inc' |
4260 | 1641 | include 'genps.inc' | 1660 | include 'genps.inc' |
4261 | 1642 | include 'orders.inc' | 1661 | include 'orders.inc' |
4262 | 1643 | include 'mint.inc' | ||
4263 | 1644 | include 'FKSParams.inc' | ||
4264 | 1645 | integer orders(nsplitorders) | 1662 | integer orders(nsplitorders) |
4266 | 1646 | integer i,j,k,iamp | 1663 | integer i,j,k,iamp,icontr_orig |
4267 | 1647 | logical virt_found | 1664 | logical virt_found |
4268 | 1648 | double precision xlum,dlum,pi,mu2_r,mu2_f,mu2_q,rwgt_muR_dep_fac | 1665 | double precision xlum,dlum,pi,mu2_r,mu2_f,mu2_q,rwgt_muR_dep_fac |
4269 | 1649 | $ ,wgt_wo_pdf,conv | 1666 | $ ,wgt_wo_pdf,conv |
4270 | @@ -1652,9 +1669,6 @@ | |||
4271 | 1652 | external dlum | 1669 | external dlum |
4272 | 1653 | integer nFKSprocess | 1670 | integer nFKSprocess |
4273 | 1654 | common/c_nFKSprocess/nFKSprocess | 1671 | common/c_nFKSprocess/nFKSprocess |
4274 | 1655 | double precision virt_wgt_mint(0:n_ave_virt), | ||
4275 | 1656 | & born_wgt_mint(0:n_ave_virt) | ||
4276 | 1657 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
4277 | 1658 | INTEGER IPROC | 1672 | INTEGER IPROC |
4278 | 1659 | DOUBLE PRECISION PD(0:MAXPROC) | 1673 | DOUBLE PRECISION PD(0:MAXPROC) |
4279 | 1660 | COMMON /SUBPROC/ PD, IPROC | 1674 | COMMON /SUBPROC/ PD, IPROC |
4280 | @@ -1662,6 +1676,9 @@ | |||
4281 | 1662 | call cpu_time(tBefore) | 1676 | call cpu_time(tBefore) |
4282 | 1663 | if (icontr.eq.0) return | 1677 | if (icontr.eq.0) return |
4283 | 1664 | virt_found=.false. | 1678 | virt_found=.false. |
4284 | 1679 | c number of contributions before they are (possibly) increased through a | ||
4285 | 1680 | c call to separate_flavour_config(). | ||
4286 | 1681 | icontr_orig=icontr | ||
4287 | 1665 | i=0 | 1682 | i=0 |
4288 | 1666 | do while (i.lt.icontr) | 1683 | do while (i.lt.icontr) |
4289 | 1667 | i=i+1 | 1684 | i=i+1 |
4290 | @@ -1678,8 +1695,12 @@ | |||
4291 | 1678 | c iwgt=1 is the central value (i.e. no scale/PDF reweighting). | 1695 | c iwgt=1 is the central value (i.e. no scale/PDF reweighting). |
4292 | 1679 | iwgt=1 | 1696 | iwgt=1 |
4293 | 1680 | call weight_lines_allocated(nexternal,max_contr,iwgt,iproc) | 1697 | call weight_lines_allocated(nexternal,max_contr,iwgt,iproc) |
4296 | 1681 | c set_pdg_codes fills the niproc, parton_iproc, parton_pdg and parton_pdg_uborn | 1698 | c set_pdg_codes fills the niproc, parton_iproc, parton_pdg and |
4297 | 1682 | call set_pdg_codes(iproc,pd,nFKSprocess,i) | 1699 | c parton_pdg_uborn [Do only for the contributions that were already |
4298 | 1700 | c available as part of the input -- NOT the ones that are created | ||
4299 | 1701 | c through the call to separate_flavour_config(), since that will | ||
4300 | 1702 | c overwrite the relevant information.] | ||
4301 | 1703 | if (i.le.icontr_orig) call set_pdg_codes(iproc,pd,nFKSprocess,i) | ||
4302 | 1683 | if (separate_flavour_configs .and. ipr(i).eq.0) then | 1704 | if (separate_flavour_configs .and. ipr(i).eq.0) then |
4303 | 1684 | call separate_flavour_config(i) ! this increases icontr | 1705 | call separate_flavour_config(i) ! this increases icontr |
4304 | 1685 | endif | 1706 | endif |
4305 | @@ -1733,18 +1754,15 @@ | |||
4306 | 1733 | c include the weight also in the 'wgt' array that contain the | 1754 | c include the weight also in the 'wgt' array that contain the |
4307 | 1734 | c coefficients for PDF and scale computations. | 1755 | c coefficients for PDF and scale computations. |
4308 | 1735 | use weight_lines | 1756 | use weight_lines |
4309 | 1757 | use mint_module | ||
4310 | 1736 | implicit none | 1758 | implicit none |
4311 | 1737 | include 'orders.inc' | 1759 | include 'orders.inc' |
4312 | 1738 | include 'mint.inc' | ||
4313 | 1739 | integer orders(nsplitorders) | 1760 | integer orders(nsplitorders) |
4314 | 1740 | integer i,j,iamp | 1761 | integer i,j,iamp |
4315 | 1741 | logical virt_found | 1762 | logical virt_found |
4316 | 1742 | double precision bias | 1763 | double precision bias |
4317 | 1743 | character*7 event_norm | 1764 | character*7 event_norm |
4318 | 1744 | common /event_normalisation/event_norm | 1765 | common /event_normalisation/event_norm |
4319 | 1745 | double precision virt_wgt_mint(0:n_ave_virt), | ||
4320 | 1746 | & born_wgt_mint(0:n_ave_virt) | ||
4321 | 1747 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
4322 | 1748 | c Set the bias_wgt to 1 in case we do not have to do any biassing | 1766 | c Set the bias_wgt to 1 in case we do not have to do any biassing |
4323 | 1749 | if (event_norm(1:4).ne.'bias') then | 1767 | if (event_norm(1:4).ne.'bias') then |
4324 | 1750 | do i=1,icontr | 1768 | do i=1,icontr |
4325 | @@ -1993,11 +2011,11 @@ | |||
4326 | 1993 | c wgts() array to include the weights. | 2011 | c wgts() array to include the weights. |
4327 | 1994 | use weight_lines | 2012 | use weight_lines |
4328 | 1995 | use extra_weights | 2013 | use extra_weights |
4329 | 2014 | use FKSParams | ||
4330 | 1996 | implicit none | 2015 | implicit none |
4331 | 1997 | include 'nexternal.inc' | 2016 | include 'nexternal.inc' |
4332 | 1998 | include 'run.inc' | 2017 | include 'run.inc' |
4333 | 1999 | include 'timing_variables.inc' | 2018 | include 'timing_variables.inc' |
4334 | 2000 | include 'FKSParams.inc' | ||
4335 | 2001 | include 'genps.inc' | 2019 | include 'genps.inc' |
4336 | 2002 | integer i,kr,kf,iwgt_save,dd | 2020 | integer i,kr,kf,iwgt_save,dd |
4337 | 2003 | double precision xlum(maxscales),dlum,pi,mu2_r(maxscales),c_mu2_r | 2021 | double precision xlum(maxscales),dlum,pi,mu2_r(maxscales),c_mu2_r |
4338 | @@ -2076,11 +2094,11 @@ | |||
4339 | 2076 | c computations (ickkw.eq.-1). | 2094 | c computations (ickkw.eq.-1). |
4340 | 2077 | use weight_lines | 2095 | use weight_lines |
4341 | 2078 | use extra_weights | 2096 | use extra_weights |
4342 | 2097 | use FKSParams | ||
4343 | 2079 | implicit none | 2098 | implicit none |
4344 | 2080 | include 'nexternal.inc' | 2099 | include 'nexternal.inc' |
4345 | 2081 | include 'run.inc' | 2100 | include 'run.inc' |
4346 | 2082 | include 'timing_variables.inc' | 2101 | include 'timing_variables.inc' |
4347 | 2083 | include 'FKSParams.inc' | ||
4348 | 2084 | include 'genps.inc' | 2102 | include 'genps.inc' |
4349 | 2085 | integer i,ks,kh,iwgt_save | 2103 | integer i,ks,kh,iwgt_save |
4350 | 2086 | double precision xlum(maxscales),dlum,pi,mu2_r(maxscales) | 2104 | double precision xlum(maxscales),dlum,pi,mu2_r(maxscales) |
4351 | @@ -2182,11 +2200,11 @@ | |||
4352 | 2182 | c wgts() array to include the weights. | 2200 | c wgts() array to include the weights. |
4353 | 2183 | use weight_lines | 2201 | use weight_lines |
4354 | 2184 | use extra_weights | 2202 | use extra_weights |
4355 | 2203 | use FKSParams | ||
4356 | 2185 | implicit none | 2204 | implicit none |
4357 | 2186 | include 'nexternal.inc' | 2205 | include 'nexternal.inc' |
4358 | 2187 | include 'run.inc' | 2206 | include 'run.inc' |
4359 | 2188 | include 'timing_variables.inc' | 2207 | include 'timing_variables.inc' |
4360 | 2189 | include 'FKSParams.inc' | ||
4361 | 2190 | include 'genps.inc' | 2208 | include 'genps.inc' |
4362 | 2191 | integer n,izero,i,nn | 2209 | integer n,izero,i,nn |
4363 | 2192 | parameter (izero=0) | 2210 | parameter (izero=0) |
4364 | @@ -2569,15 +2587,12 @@ | |||
4365 | 2569 | subroutine fill_mint_function(f) | 2587 | subroutine fill_mint_function(f) |
4366 | 2570 | c Fills the function that is returned to the MINT integrator | 2588 | c Fills the function that is returned to the MINT integrator |
4367 | 2571 | use weight_lines | 2589 | use weight_lines |
4368 | 2590 | use mint_module | ||
4369 | 2572 | implicit none | 2591 | implicit none |
4370 | 2573 | include 'nexternal.inc' | 2592 | include 'nexternal.inc' |
4371 | 2574 | include 'mint.inc' | ||
4372 | 2575 | include 'orders.inc' | 2593 | include 'orders.inc' |
4373 | 2576 | integer i,iamp,ithree,isix | 2594 | integer i,iamp,ithree,isix |
4374 | 2577 | double precision f(nintegrals),sigint | 2595 | double precision f(nintegrals),sigint |
4375 | 2578 | double precision virt_wgt_mint(0:n_ave_virt), | ||
4376 | 2579 | & born_wgt_mint(0:n_ave_virt) | ||
4377 | 2580 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
4378 | 2581 | double precision virtual_over_born | 2596 | double precision virtual_over_born |
4379 | 2582 | common /c_vob/ virtual_over_born | 2597 | common /c_vob/ virtual_over_born |
4380 | 2583 | sigint=0d0 | 2598 | sigint=0d0 |
4381 | @@ -2674,6 +2689,7 @@ | |||
4382 | 2674 | c configuration, while for the S-events also contributions from the | 2689 | c configuration, while for the S-events also contributions from the |
4383 | 2675 | c various FKS configurations can be summed together. | 2690 | c various FKS configurations can be summed together. |
4384 | 2676 | use weight_lines | 2691 | use weight_lines |
4385 | 2692 | use mint_module | ||
4386 | 2677 | implicit none | 2693 | implicit none |
4387 | 2678 | include 'nexternal.inc' | 2694 | include 'nexternal.inc' |
4388 | 2679 | include 'genps.inc' | 2695 | include 'genps.inc' |
4389 | @@ -2686,9 +2702,6 @@ | |||
4390 | 2686 | integer iproc_save(fks_configs),eto(maxproc,fks_configs), | 2702 | integer iproc_save(fks_configs),eto(maxproc,fks_configs), |
4391 | 2687 | & etoi(maxproc,fks_configs),maxproc_found | 2703 | & etoi(maxproc,fks_configs),maxproc_found |
4392 | 2688 | common/cproc_combination/iproc_save,eto,etoi,maxproc_found | 2704 | common/cproc_combination/iproc_save,eto,etoi,maxproc_found |
4393 | 2689 | logical only_virt | ||
4394 | 2690 | integer imode | ||
4395 | 2691 | common /c_imode/imode,only_virt | ||
4396 | 2692 | call cpu_time(tBefore) | 2705 | call cpu_time(tBefore) |
4397 | 2693 | if (icontr.eq.0) return | 2706 | if (icontr.eq.0) return |
4398 | 2694 | c Find the contribution to sum all the S-event ones. This should be one | 2707 | c Find the contribution to sum all the S-event ones. This should be one |
4399 | @@ -2835,21 +2848,15 @@ | |||
4400 | 2835 | c Fills the function that is returned to the MINT integrator. Depending | 2848 | c Fills the function that is returned to the MINT integrator. Depending |
4401 | 2836 | c on the imode we should or should not include the virtual corrections. | 2849 | c on the imode we should or should not include the virtual corrections. |
4402 | 2837 | use weight_lines | 2850 | use weight_lines |
4403 | 2851 | use mint_module | ||
4404 | 2838 | implicit none | 2852 | implicit none |
4405 | 2839 | include 'nexternal.inc' | 2853 | include 'nexternal.inc' |
4406 | 2840 | include 'mint.inc' | ||
4407 | 2841 | include 'orders.inc' | 2854 | include 'orders.inc' |
4408 | 2842 | integer i,j,ict,iamp,ithree,isix | 2855 | integer i,j,ict,iamp,ithree,isix |
4409 | 2843 | double precision f(nintegrals),sigint,sigint1,sigint_ABS | 2856 | double precision f(nintegrals),sigint,sigint1,sigint_ABS |
4410 | 2844 | $ ,n1body_wgt,tmp_wgt,max_weight | 2857 | $ ,n1body_wgt,tmp_wgt,max_weight |
4411 | 2845 | double precision virt_wgt_mint(0:n_ave_virt), | ||
4412 | 2846 | & born_wgt_mint(0:n_ave_virt) | ||
4413 | 2847 | common /virt_born_wgt_mint/virt_wgt_mint,born_wgt_mint | ||
4414 | 2848 | double precision virtual_over_born | 2858 | double precision virtual_over_born |
4415 | 2849 | common /c_vob/ virtual_over_born | 2859 | common /c_vob/ virtual_over_born |
4416 | 2850 | logical only_virt | ||
4417 | 2851 | integer imode | ||
4418 | 2852 | common /c_imode/imode,only_virt | ||
4419 | 2853 | sigint=0d0 | 2860 | sigint=0d0 |
4420 | 2854 | sigint1=0d0 | 2861 | sigint1=0d0 |
4421 | 2855 | sigint_ABS=0d0 | 2862 | sigint_ABS=0d0 |
4422 | @@ -3621,10 +3628,12 @@ | |||
4423 | 3621 | & pjet,njet,jet) | 3628 | & pjet,njet,jet) |
4424 | 3622 | do i=1,NN | 3629 | do i=1,NN |
4425 | 3623 | di(i)=sqrt(amcatnlo_fastjetdmergemax(i-1)) | 3630 | di(i)=sqrt(amcatnlo_fastjetdmergemax(i-1)) |
4430 | 3624 | if (i.gt.1.and.di(i).gt.di(i-1))then | 3631 | if (i.gt.1)then |
4431 | 3625 | write(*,*)'Error in set_shower_scale_noshape' | 3632 | if(di(i).gt.di(i-1))then |
4432 | 3626 | write(*,*)NN,i,di(i),di(i-1) | 3633 | write(*,*)'Error in set_shower_scale_noshape' |
4433 | 3627 | stop | 3634 | write(*,*)NN,i,di(i),di(i-1) |
4434 | 3635 | stop | ||
4435 | 3636 | endif | ||
4436 | 3628 | endif | 3637 | endif |
4437 | 3629 | enddo | 3638 | enddo |
4438 | 3630 | if(iSH.eq.1)shower_S_scale(iFKS)=di(NN) | 3639 | if(iSH.eq.1)shower_S_scale(iFKS)=di(NN) |
4439 | @@ -5470,6 +5479,7 @@ | |||
4440 | 5470 | 5479 | ||
4441 | 5471 | subroutine bornsoftvirtual(p,bsv_wgt,virt_wgt,born_wgt) | 5480 | subroutine bornsoftvirtual(p,bsv_wgt,virt_wgt,born_wgt) |
4442 | 5472 | use extra_weights | 5481 | use extra_weights |
4443 | 5482 | use mint_module | ||
4444 | 5473 | implicit none | 5483 | implicit none |
4445 | 5474 | include "genps.inc" | 5484 | include "genps.inc" |
4446 | 5475 | include 'nexternal.inc' | 5485 | include 'nexternal.inc' |
4447 | @@ -5483,7 +5493,6 @@ | |||
4448 | 5483 | common /c_charges/particle_charge | 5493 | common /c_charges/particle_charge |
4449 | 5484 | include "run.inc" | 5494 | include "run.inc" |
4450 | 5485 | include "fks_powers.inc" | 5495 | include "fks_powers.inc" |
4451 | 5486 | include "mint.inc" | ||
4452 | 5487 | double precision p(0:3,nexternal),bsv_wgt,born_wgt,avv_wgt | 5496 | double precision p(0:3,nexternal),bsv_wgt,born_wgt,avv_wgt |
4453 | 5488 | double precision pp(0:3,nexternal) | 5497 | double precision pp(0:3,nexternal) |
4454 | 5489 | 5498 | ||
4455 | @@ -5542,9 +5551,6 @@ | |||
4456 | 5542 | integer iminmax | 5551 | integer iminmax |
4457 | 5543 | common/cExceptPSpoint/iminmax,ExceptPSpoint | 5552 | common/cExceptPSpoint/iminmax,ExceptPSpoint |
4458 | 5544 | 5553 | ||
4459 | 5545 | double precision average_virtual(0:n_ave_virt,maxchannels) | ||
4460 | 5546 | $ ,virtual_fraction(maxchannels) | ||
4461 | 5547 | common/c_avg_virt/average_virtual,virtual_fraction | ||
4462 | 5548 | double precision virtual_over_born | 5554 | double precision virtual_over_born |
4463 | 5549 | common/c_vob/virtual_over_born | 5555 | common/c_vob/virtual_over_born |
4464 | 5550 | 5556 | ||
4465 | @@ -5871,12 +5877,22 @@ | |||
4466 | 5871 | tOLP=tOLP+(tAfter-tBefore) | 5877 | tOLP=tOLP+(tAfter-tBefore) |
4467 | 5872 | virtual_over_born=virt_wgt/born_wgt | 5878 | virtual_over_born=virt_wgt/born_wgt |
4468 | 5873 | if (ickkw.ne.-1) then | 5879 | if (ickkw.ne.-1) then |
4470 | 5874 | virt_wgt=virt_wgt-average_virtual(0,ichan)*born_wgt | 5880 | if (use_poly_virtual) then |
4471 | 5881 | virt_wgt=virt_wgt-polyfit(0)*born_wgt | ||
4472 | 5882 | else | ||
4473 | 5883 | virt_wgt=virt_wgt-average_virtual(0,ichan)*born_wgt | ||
4474 | 5884 | endif | ||
4475 | 5875 | do iamp=1,amp_split_size | 5885 | do iamp=1,amp_split_size |
4476 | 5876 | if (amp_split_virt(iamp).eq.0d0) cycle | 5886 | if (amp_split_virt(iamp).eq.0d0) cycle |
4477 | 5887 | if (use_poly_virtual) then | ||
4478 | 5888 | amp_split_virt(iamp)=amp_split_virt(iamp)- | ||
4479 | 5889 | $ polyfit(iamp) | ||
4480 | 5890 | $ *amp_split_born_for_virt(iamp) | ||
4481 | 5891 | else | ||
4482 | 5877 | amp_split_virt(iamp)=amp_split_virt(iamp)- | 5892 | amp_split_virt(iamp)=amp_split_virt(iamp)- |
4483 | 5878 | $ average_virtual(iamp,ichan) | 5893 | $ average_virtual(iamp,ichan) |
4484 | 5879 | $ *amp_split_born_for_virt(iamp) | 5894 | $ *amp_split_born_for_virt(iamp) |
4485 | 5895 | endif | ||
4486 | 5880 | enddo | 5896 | enddo |
4487 | 5881 | endif | 5897 | endif |
4488 | 5882 | if (abrv.ne.'virt') then | 5898 | if (abrv.ne.'virt') then |
4489 | @@ -5896,12 +5912,21 @@ | |||
4490 | 5896 | $ amp_split_virt_save(1:amp_split_size) | 5912 | $ amp_split_virt_save(1:amp_split_size) |
4491 | 5897 | endif | 5913 | endif |
4492 | 5898 | if (abrv(1:4).ne.'virt' .and. ickkw.ne.-1) then | 5914 | if (abrv(1:4).ne.'virt' .and. ickkw.ne.-1) then |
4499 | 5899 | avv_wgt=average_virtual(0,ichan)*born_wgt | 5915 | if (use_poly_virtual) then |
4500 | 5900 | do iamp=1, amp_split_size | 5916 | avv_wgt=polyfit(0)*born_wgt |
4501 | 5901 | if (amp_split_born_for_virt(iamp).eq.0d0) cycle | 5917 | do iamp=1, amp_split_size |
4502 | 5902 | amp_split_avv(iamp)= average_virtual(iamp,ichan) | 5918 | if (amp_split_born_for_virt(iamp).eq.0d0) cycle |
4503 | 5903 | $ *amp_split_born_for_virt(iamp) | 5919 | amp_split_avv(iamp)= polyfit(iamp) |
4504 | 5904 | enddo | 5920 | $ *amp_split_born_for_virt(iamp) |
4505 | 5921 | enddo | ||
4506 | 5922 | else | ||
4507 | 5923 | avv_wgt=average_virtual(0,ichan)*born_wgt | ||
4508 | 5924 | do iamp=1, amp_split_size | ||
4509 | 5925 | if (amp_split_born_for_virt(iamp).eq.0d0) cycle | ||
4510 | 5926 | amp_split_avv(iamp)= average_virtual(iamp,ichan) | ||
4511 | 5927 | $ *amp_split_born_for_virt(iamp) | ||
4512 | 5928 | enddo | ||
4513 | 5929 | endif | ||
4514 | 5905 | endif | 5930 | endif |
4515 | 5906 | 5931 | ||
4516 | 5907 | c eq.(MadFKS.C.13) | 5932 | c eq.(MadFKS.C.13) |
4517 | @@ -6512,9 +6537,8 @@ | |||
4518 | 6512 | subroutine setfksfactor(match_to_shower) | 6537 | subroutine setfksfactor(match_to_shower) |
4519 | 6513 | use weight_lines | 6538 | use weight_lines |
4520 | 6514 | use extra_weights | 6539 | use extra_weights |
4521 | 6540 | use mint_module | ||
4522 | 6515 | implicit none | 6541 | implicit none |
4523 | 6516 | |||
4524 | 6517 | include 'mint.inc' | ||
4525 | 6518 | 6542 | ||
4526 | 6519 | double precision CA,CF, PI | 6543 | double precision CA,CF, PI |
4527 | 6520 | parameter (CA=3d0,CF=4d0/3d0) | 6544 | parameter (CA=3d0,CF=4d0/3d0) |
4528 | @@ -6529,7 +6553,7 @@ | |||
4529 | 6529 | logical softtest,colltest | 6553 | logical softtest,colltest |
4530 | 6530 | common/sctests/softtest,colltest | 6554 | common/sctests/softtest,colltest |
4531 | 6531 | 6555 | ||
4533 | 6532 | integer config_fks,i,j,fac1,fac2 | 6556 | integer config_fks,i,j,fac1,fac2,kchan |
4534 | 6533 | logical match_to_shower | 6557 | logical match_to_shower |
4535 | 6534 | 6558 | ||
4536 | 6535 | double precision fkssymmetryfactor,fkssymmetryfactorBorn, | 6559 | double precision fkssymmetryfactor,fkssymmetryfactorBorn, |
4537 | @@ -6917,11 +6941,11 @@ | |||
4538 | 6917 | c the grandmother corresponds (igranny) as well as the aunt (iaunt). | 6941 | c the grandmother corresponds (igranny) as well as the aunt (iaunt). |
4539 | 6918 | c This information can be used to improve the phase-space | 6942 | c This information can be used to improve the phase-space |
4540 | 6919 | c parametrisation. | 6943 | c parametrisation. |
4541 | 6944 | use mint_module | ||
4542 | 6920 | implicit none | 6945 | implicit none |
4543 | 6921 | include 'genps.inc' | 6946 | include 'genps.inc' |
4544 | 6922 | include 'nexternal.inc' | 6947 | include 'nexternal.inc' |
4545 | 6923 | include 'nFKSconfigs.inc' | 6948 | include 'nFKSconfigs.inc' |
4546 | 6924 | include 'mint.inc' | ||
4547 | 6925 | c arguments | 6949 | c arguments |
4548 | 6926 | integer nFKSprocess,iconf | 6950 | integer nFKSprocess,iconf |
4549 | 6927 | double precision mass_min(-nexternal:nexternal) | 6951 | double precision mass_min(-nexternal:nexternal) |
4550 | @@ -7110,3 +7134,21 @@ | |||
4551 | 7110 | endif | 7134 | endif |
4552 | 7111 | return | 7135 | return |
4553 | 7112 | end | 7136 | end |
4554 | 7137 | |||
4555 | 7138 | |||
4556 | 7139 | function ran2() | ||
4557 | 7140 | ! Wrapper for the random numbers; needed for the NLO stuff | ||
4558 | 7141 | use mint_module | ||
4559 | 7142 | implicit none | ||
4560 | 7143 | double precision ran2,x,a,b | ||
4561 | 7144 | integer ii,jconfig | ||
4562 | 7145 | a=0d0 ! min allowed value for x | ||
4563 | 7146 | b=1d0 ! max allowed value for x | ||
4564 | 7147 | ii=0 ! dummy argument of ntuple | ||
4565 | 7148 | jconfig=iconfig ! integration channel (for off-set) | ||
4566 | 7149 | call ntuple(x,a,b,ii,jconfig) | ||
4567 | 7150 | ran2=x | ||
4568 | 7151 | return | ||
4569 | 7152 | end | ||
4570 | 7153 | |||
4571 | 7154 | |||
4572 | 7113 | 7155 | ||
4573 | === removed file 'Template/NLO/SubProcesses/fks_singular_paolo.f' | |||
4574 | === modified file 'Template/NLO/SubProcesses/genps_fks.f' | |||
4575 | --- Template/NLO/SubProcesses/genps_fks.f 2018-07-13 10:16:34 +0000 | |||
4576 | +++ Template/NLO/SubProcesses/genps_fks.f 2020-05-23 19:29:41 +0000 | |||
4577 | @@ -95,8 +95,8 @@ | |||
4578 | 95 | double precision p(0:3,nexternal) | 95 | double precision p(0:3,nexternal) |
4579 | 96 | integer itree(2,-max_branch:-1),iconf | 96 | integer itree(2,-max_branch:-1),iconf |
4580 | 97 | common /to_itree/itree,iconf | 97 | common /to_itree/itree,iconf |
4583 | 98 | integer ndim | 98 | integer nndim |
4584 | 99 | common/tosigint/ndim | 99 | common/tosigint/nndim |
4585 | 100 | double precision qmass_common(-nexternal:0),qwidth_common( | 100 | double precision qmass_common(-nexternal:0),qwidth_common( |
4586 | 101 | & -nexternal:0) | 101 | & -nexternal:0) |
4587 | 102 | common /c_qmass_qwidth/qmass_common,qwidth_common | 102 | common /c_qmass_qwidth/qmass_common,qwidth_common |
4588 | @@ -110,7 +110,7 @@ | |||
4589 | 110 | virtgranny=0d0 | 110 | virtgranny=0d0 |
4590 | 111 | return | 111 | return |
4591 | 112 | endif | 112 | endif |
4593 | 113 | call generate_momenta_conf(.true.,ndim,jac,xvar,granny_m2_red | 113 | call generate_momenta_conf(.true.,nndim,jac,xvar,granny_m2_red |
4594 | 114 | & ,rat_xi_orig,itree,qmass_common,qwidth_common,p) | 114 | & ,rat_xi_orig,itree,qmass_common,qwidth_common,p) |
4595 | 115 | if (jac.gt.0d0) then | 115 | if (jac.gt.0d0) then |
4596 | 116 | do j=0,3 | 116 | do j=0,3 |
4597 | @@ -152,8 +152,8 @@ | |||
4598 | 152 | double precision p(0:3,nexternal) | 152 | double precision p(0:3,nexternal) |
4599 | 153 | integer itree(2,-max_branch:-1),iconf | 153 | integer itree(2,-max_branch:-1),iconf |
4600 | 154 | common /to_itree/itree,iconf | 154 | common /to_itree/itree,iconf |
4603 | 155 | integer ndim | 155 | integer nndim |
4604 | 156 | common/tosigint/ndim | 156 | common/tosigint/nndim |
4605 | 157 | double precision qmass_common(-nexternal:0),qwidth_common( | 157 | double precision qmass_common(-nexternal:0),qwidth_common( |
4606 | 158 | & -nexternal:0) | 158 | & -nexternal:0) |
4607 | 159 | common /c_qmass_qwidth/qmass_common,qwidth_common | 159 | common /c_qmass_qwidth/qmass_common,qwidth_common |
4608 | @@ -177,7 +177,7 @@ | |||
4609 | 177 | virtgranny_red=0d0 | 177 | virtgranny_red=0d0 |
4610 | 178 | return | 178 | return |
4611 | 179 | endif | 179 | endif |
4613 | 180 | call generate_momenta_conf(.true.,ndim,jac,xvar,granny_m2_red | 180 | call generate_momenta_conf(.true.,nndim,jac,xvar,granny_m2_red |
4614 | 181 | & ,rat_xi_orig,itree,qmass_common,qwidth_common,p) | 181 | & ,rat_xi_orig,itree,qmass_common,qwidth_common,p) |
4615 | 182 | if (jac.gt.0d0) then | 182 | if (jac.gt.0d0) then |
4616 | 183 | do j=1,3 | 183 | do j=1,3 |
4617 | @@ -282,13 +282,14 @@ | |||
4618 | 282 | 282 | ||
4619 | 283 | 283 | ||
4620 | 284 | 284 | ||
4622 | 285 | subroutine generate_momenta_conf_wrapper(ndim,jac,x,itree,qmass | 285 | subroutine generate_momenta_conf_wrapper(nndim,jac,x,itree,qmass |
4623 | 286 | $ ,qwidth,p) | 286 | $ ,qwidth,p) |
4624 | 287 | use mint_module | ||
4625 | 287 | implicit none | 288 | implicit none |
4626 | 288 | include 'nexternal.inc' | 289 | include 'nexternal.inc' |
4627 | 289 | include 'genps.inc' | 290 | include 'genps.inc' |
4628 | 290 | include 'nFKSconfigs.inc' | 291 | include 'nFKSconfigs.inc' |
4630 | 291 | integer ndim | 292 | integer nndim |
4631 | 292 | double precision jac,x(99),p(0:3,nexternal) | 293 | double precision jac,x(99),p(0:3,nexternal) |
4632 | 293 | integer itree(2,-max_branch:-1),i,j | 294 | integer itree(2,-max_branch:-1),i,j |
4633 | 294 | double precision qmass(-nexternal:0),qwidth(-nexternal:0),del1 | 295 | double precision qmass(-nexternal:0),qwidth(-nexternal:0),del1 |
4634 | @@ -367,8 +368,6 @@ | |||
4635 | 367 | common /to_abrv/ abrv | 368 | common /to_abrv/ abrv |
4636 | 368 | character*10 shower_mc | 369 | character*10 shower_mc |
4637 | 369 | common /cMonteCarloType/shower_mc | 370 | common /cMonteCarloType/shower_mc |
4638 | 370 | logical fixed_order,nlo_ps | ||
4639 | 371 | common /c_fnlo_nlops/fixed_order,nlo_ps | ||
4640 | 372 | c | 371 | c |
4641 | 373 | write_granny(nFKSprocess)=.true. | 372 | write_granny(nFKSprocess)=.true. |
4642 | 374 | which_is_granny(nFKSprocess)=0 | 373 | which_is_granny(nFKSprocess)=0 |
4643 | @@ -405,7 +404,7 @@ | |||
4644 | 405 | only_event_phsp=.true. | 404 | only_event_phsp=.true. |
4645 | 406 | skip_event_phsp=.false. | 405 | skip_event_phsp=.false. |
4646 | 407 | input_granny_m2=.false. | 406 | input_granny_m2=.false. |
4648 | 408 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 407 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4649 | 409 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) | 408 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) |
4650 | 410 | if (nint(jac).eq.-222) return ! numerical inaccuracy: not | 409 | if (nint(jac).eq.-222) return ! numerical inaccuracy: not |
4651 | 411 | ! even Born momenta generated. | 410 | ! even Born momenta generated. |
4652 | @@ -540,7 +539,7 @@ | |||
4653 | 540 | c a shower scale. The kinematics won't be used, because below jac=-222 | 539 | c a shower scale. The kinematics won't be used, because below jac=-222 |
4654 | 541 | c and p(0,1)=-99d0. | 540 | c and p(0,1)=-99d0. |
4655 | 542 | skip_event_phsp=.false. | 541 | skip_event_phsp=.false. |
4657 | 543 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 542 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4658 | 544 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) | 543 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) |
4659 | 545 | jac=-222 | 544 | jac=-222 |
4660 | 546 | p(0,1)=-99d0 | 545 | p(0,1)=-99d0 |
4661 | @@ -554,7 +553,7 @@ | |||
4662 | 554 | do i=-1,1 | 553 | do i=-1,1 |
4663 | 555 | granny_m2_red(i)=-99d99 | 554 | granny_m2_red(i)=-99d99 |
4664 | 556 | enddo | 555 | enddo |
4666 | 557 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 556 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4667 | 558 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) | 557 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) |
4668 | 559 | c In this case, we should not write the grandmother in the event file, | 558 | c In this case, we should not write the grandmother in the event file, |
4669 | 560 | c because the shower should not keep its inv. mass fixed. | 559 | c because the shower should not keep its inv. mass fixed. |
4670 | @@ -592,7 +591,7 @@ | |||
4671 | 592 | skip_event_phsp=.false. | 591 | skip_event_phsp=.false. |
4672 | 593 | only_event_phsp=.true. | 592 | only_event_phsp=.true. |
4673 | 594 | granny_m2_red(0)=xmbe2inv | 593 | granny_m2_red(0)=xmbe2inv |
4675 | 595 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 594 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4676 | 596 | $ ,granny_m2_red,rat_xi_orig,itree,qmass,qwidth,p) | 595 | $ ,granny_m2_red,rat_xi_orig,itree,qmass,qwidth,p) |
4677 | 597 | c multiply event jacobian by the numerically computed jacobian for the | 596 | c multiply event jacobian by the numerically computed jacobian for the |
4678 | 598 | c derivative | 597 | c derivative |
4679 | @@ -602,7 +601,7 @@ | |||
4680 | 602 | input_granny_m2=.false. | 601 | input_granny_m2=.false. |
4681 | 603 | only_event_phsp=.false. | 602 | only_event_phsp=.false. |
4682 | 604 | skip_event_phsp=.true. | 603 | skip_event_phsp=.true. |
4684 | 605 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 604 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4685 | 606 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) | 605 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) |
4686 | 607 | endif | 606 | endif |
4687 | 608 | jac=jac*MC_sum_factor | 607 | jac=jac*MC_sum_factor |
4688 | @@ -610,7 +609,7 @@ | |||
4689 | 610 | skip_event_phsp=.false. | 609 | skip_event_phsp=.false. |
4690 | 611 | only_event_phsp =.false. | 610 | only_event_phsp =.false. |
4691 | 612 | input_granny_m2=.false. | 611 | input_granny_m2=.false. |
4693 | 613 | call generate_momenta_conf(input_granny_m2,ndim,jac,x | 612 | call generate_momenta_conf(input_granny_m2,nndim,jac,x |
4694 | 614 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) | 613 | $ ,granny_m2_red,rat_xi,itree,qmass,qwidth,p) |
4695 | 615 | endif | 614 | endif |
4696 | 616 | end | 615 | end |
4697 | @@ -701,9 +700,6 @@ | |||
4698 | 701 | c Masses of particles. Should be filled in setcuts.f | 700 | c Masses of particles. Should be filled in setcuts.f |
4699 | 702 | double precision pmass(nexternal) | 701 | double precision pmass(nexternal) |
4700 | 703 | common /to_mass/pmass | 702 | common /to_mass/pmass |
4701 | 704 | c For MINT: | ||
4702 | 705 | integer ifold_energy,ifold_phi,ifold_yij | ||
4703 | 706 | common /cifoldnumbers/ifold_energy,ifold_phi,ifold_yij | ||
4704 | 707 | c local | 703 | c local |
4705 | 708 | integer i,j,nbranch,ns_channel,nt_channel,ionebody | 704 | integer i,j,nbranch,ns_channel,nt_channel,ionebody |
4706 | 709 | & ,fksconfiguration,icountevts,imother,ixEi,ixyij,ixpi,isolsign | 705 | & ,fksconfiguration,icountevts,imother,ixEi,ixyij,ixpi,isolsign |
4707 | @@ -1000,14 +996,10 @@ | |||
4708 | 1000 | if (.not.only_event_phsp) xij_aor=(0.d0,0.d0) | 996 | if (.not.only_event_phsp) xij_aor=(0.d0,0.d0) |
4709 | 1001 | c | 997 | c |
4710 | 1002 | c These will correspond to the vegas x's for the FKS variables xi_i, | 998 | c These will correspond to the vegas x's for the FKS variables xi_i, |
4712 | 1003 | c y_ij and phi_i | 999 | c y_ij and phi_i (changing this also requires changing folding parameters) |
4713 | 1004 | ixEi=ndim-2 | 1000 | ixEi=ndim-2 |
4714 | 1005 | ixyij=ndim-1 | 1001 | ixyij=ndim-1 |
4715 | 1006 | ixpi=ndim | 1002 | ixpi=ndim |
4716 | 1007 | c Set up the MINT folding: | ||
4717 | 1008 | ifold_energy=ixEi | ||
4718 | 1009 | ifold_phi=ixpi | ||
4719 | 1010 | ifold_yij=ixyij | ||
4720 | 1011 | c | 1003 | c |
4721 | 1012 | imother=min(j_fks,i_fks) | 1004 | imother=min(j_fks,i_fks) |
4722 | 1013 | m_j_fks=pmass(j_fks) | 1005 | m_j_fks=pmass(j_fks) |
4723 | @@ -2147,6 +2139,7 @@ | |||
4724 | 2147 | xp(3,2)=-xp(0,2) | 2139 | xp(3,2)=-xp(0,2) |
4725 | 2148 | c | 2140 | c |
4726 | 2149 | xp(0,i_fks)=E_i_fks*(chy_lbst-shy_lbst*yijdir) | 2141 | xp(0,i_fks)=E_i_fks*(chy_lbst-shy_lbst*yijdir) |
4727 | 2142 | p_i_fks(0)=p_i_fks(0)*(chy_lbst-shy_lbst*yijdir) | ||
4728 | 2150 | xpifksred(1)=sinth_i_fks*cosphi_i_fks | 2143 | xpifksred(1)=sinth_i_fks*cosphi_i_fks |
4729 | 2151 | xpifksred(2)=sinth_i_fks*sinphi_i_fks | 2144 | xpifksred(2)=sinth_i_fks*sinphi_i_fks |
4730 | 2152 | xpifksred(3)=chy_lbst*yijdir-shy_lbst | 2145 | xpifksred(3)=chy_lbst*yijdir-shy_lbst |
4731 | 2153 | 2146 | ||
4732 | === modified file 'Template/NLO/SubProcesses/handling_lhe_events.f' | |||
4733 | --- Template/NLO/SubProcesses/handling_lhe_events.f 2017-06-15 19:31:40 +0000 | |||
4734 | +++ Template/NLO/SubProcesses/handling_lhe_events.f 2020-05-23 19:29:41 +0000 | |||
4735 | @@ -602,7 +602,7 @@ | |||
4736 | 602 | endif | 602 | endif |
4737 | 603 | write(ifile,'(a)') | 603 | write(ifile,'(a)') |
4738 | 604 | # ' </init>' | 604 | # ' </init>' |
4740 | 605 | 501 format(2(1x,i6),2(1x,e14.8),2(1x,i2),2(1x,i6),1x,i2,1x,i3) | 605 | 501 format(2(1x,i6),2(1x,e14.8),2(1x,i2),2(1x,i8),1x,i2,1x,i3) |
4741 | 606 | 502 format(3(1x,e14.8),1x,i6) | 606 | 502 format(3(1x,e14.8),1x,i6) |
4742 | 607 | c | 607 | c |
4743 | 608 | return | 608 | return |
4744 | @@ -665,8 +665,10 @@ | |||
4745 | 665 | c if event_id is zero or positive (that means that there was a call | 665 | c if event_id is zero or positive (that means that there was a call |
4746 | 666 | c to write_lhef_header_banner) update it and write it | 666 | c to write_lhef_header_banner) update it and write it |
4747 | 667 | c RF: don't use the event_id: | 667 | c RF: don't use the event_id: |
4748 | 668 | logical do_rwgt | ||
4749 | 668 | event_id = -99 | 669 | event_id = -99 |
4750 | 669 | c | 670 | c |
4751 | 671 | do_rwgt = do_rwgt_scale .or. do_rwgt_pdf .or. store_rwgt_info | ||
4752 | 670 | if (event_id.ge.0) then | 672 | if (event_id.ge.0) then |
4753 | 671 | event_id=event_id+1 | 673 | event_id=event_id+1 |
4754 | 672 | if (event_id.le.9) then | 674 | if (event_id.le.9) then |
4755 | @@ -720,7 +722,7 @@ | |||
4756 | 720 | # PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I),PUP(5,I), | 722 | # PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I),PUP(5,I), |
4757 | 721 | # VTIMUP(I),SPINUP(I) | 723 | # VTIMUP(I),SPINUP(I) |
4758 | 722 | enddo | 724 | enddo |
4760 | 723 | if(buff(1:1).eq.'#' .and. (do_rwgt_scale .or. do_rwgt_pdf .or. | 725 | if(buff(1:1).eq.'#' .and. (do_rwgt .or. |
4761 | 724 | & jwgtinfo.lt.0)) then | 726 | & jwgtinfo.lt.0)) then |
4762 | 725 | write(ifile,'(a)') buff(1:len_trim(buff)) | 727 | write(ifile,'(a)') buff(1:len_trim(buff)) |
4763 | 726 | read(buff,*)ch1,iSorH_lhe,ifks_lhe,jfks_lhe, | 728 | read(buff,*)ch1,iSorH_lhe,ifks_lhe,jfks_lhe, |
4764 | 727 | 729 | ||
4765 | === modified file 'Template/NLO/SubProcesses/madfks_plot.f' | |||
4766 | --- Template/NLO/SubProcesses/madfks_plot.f 2017-07-31 08:48:20 +0000 | |||
4767 | +++ Template/NLO/SubProcesses/madfks_plot.f 2020-05-23 19:29:41 +0000 | |||
4768 | @@ -148,14 +148,11 @@ | |||
4769 | 148 | 148 | ||
4770 | 149 | subroutine topout | 149 | subroutine topout |
4771 | 150 | use extra_weights | 150 | use extra_weights |
4772 | 151 | use mint_module | ||
4773 | 151 | implicit none | 152 | implicit none |
4774 | 152 | include "nexternal.inc" | 153 | include "nexternal.inc" |
4775 | 153 | include 'run.inc' | 154 | include 'run.inc' |
4776 | 154 | integer ii,jj,n,kk,nn | 155 | integer ii,jj,n,kk,nn |
4777 | 155 | logical usexinteg,mint | ||
4778 | 156 | common/cusexinteg/usexinteg,mint | ||
4779 | 157 | integer itmax,ncall | ||
4780 | 158 | common/citmax/itmax,ncall | ||
4781 | 159 | logical useitmax | 156 | logical useitmax |
4782 | 160 | common/cuseitmax/useitmax | 157 | common/cuseitmax/useitmax |
4783 | 161 | real*8 xnorm | 158 | real*8 xnorm |
4784 | @@ -166,16 +163,10 @@ | |||
4785 | 166 | common /for_applgrid/ iappl | 163 | common /for_applgrid/ iappl |
4786 | 167 | include "appl_common.inc" | 164 | include "appl_common.inc" |
4787 | 168 | c | 165 | c |
4795 | 169 | if(usexinteg.and..not.mint) then | 166 | xnorm=1.d0/float(ncalls0) |
4789 | 170 | xnorm=1.d0/float(itmax) | ||
4790 | 171 | elseif(mint) then | ||
4791 | 172 | xnorm=1.d0/float(ncall) | ||
4792 | 173 | else | ||
4793 | 174 | xnorm=1d0 | ||
4794 | 175 | endif | ||
4796 | 176 | if(useitmax)xnorm=xnorm/float(itmax) | 167 | if(useitmax)xnorm=xnorm/float(itmax) |
4797 | 177 | c Normalization factor for the APPLgrid grids | 168 | c Normalization factor for the APPLgrid grids |
4799 | 178 | if(iappl.ne.0) appl_norm_histo = 1d0 / dble(ncall*itmax) | 169 | if(iappl.ne.0) appl_norm_histo = 1d0 / dble(ncalls0*itmax) |
4800 | 179 | call analysis_end(xnorm) | 170 | call analysis_end(xnorm) |
4801 | 180 | c Write the accumulated results to a file | 171 | c Write the accumulated results to a file |
4802 | 181 | open (unit=34,file='scale_pdf_dependence.dat',status='unknown') | 172 | open (unit=34,file='scale_pdf_dependence.dat',status='unknown') |
4803 | 182 | 173 | ||
4804 | === modified file 'Template/NLO/SubProcesses/makefile_fks_dir' | |||
4805 | --- Template/NLO/SubProcesses/makefile_fks_dir 2017-09-28 15:13:09 +0000 | |||
4806 | +++ Template/NLO/SubProcesses/makefile_fks_dir 2020-05-23 19:29:41 +0000 | |||
4807 | @@ -25,42 +25,37 @@ | |||
4808 | 25 | $(LIBDIR)libpdf.a $(LIBDIR)libcernlib.a | 25 | $(LIBDIR)libpdf.a $(LIBDIR)libcernlib.a |
4809 | 26 | 26 | ||
4810 | 27 | # Files for all executables | 27 | # Files for all executables |
4824 | 28 | FILES= $(patsubst %.f,%.o,$(wildcard parton_lum_*.f)) \ | 28 | FILES= $(patsubst %.f,%.o,$(wildcard parton_lum_*.f)) $(patsubst \ |
4825 | 29 | $(patsubst %.f,%.o,$(wildcard matrix_*.f)) \ | 29 | %.f,%.o,$(wildcard matrix_*.f)) FKSParams.o real_me_chooser.o \ |
4826 | 30 | real_me_chooser.o chooser_functions.o \ | 30 | chooser_functions.o genps_fks.o setcuts.o setscales.o \ |
4827 | 31 | genps_fks.o setcuts.o setscales.o veto_xsec.o \ | 31 | veto_xsec.o $(patsubst %.f,%.o,$(wildcard b_sf_???.f)) \ |
4828 | 32 | $(patsubst %.f,%.o,$(wildcard b_sf_???.f)) \ | 32 | born.o sborn_sf.o extra_cnt_wrapper.o $(patsubst \ |
4829 | 33 | born.o sborn_sf.o extra_cnt_wrapper.o \ | 33 | %.f,%.o,$(wildcard born_cnt_*.f)) fks_Sij.o \ |
4830 | 34 | $(patsubst %.f,%.o,$(wildcard born_cnt_*.f)) \ | 34 | $(fastjetfortran_madfks) fks_singular.o montecarlocounter.o \ |
4831 | 35 | fks_Sij.o $(fastjetfortran_madfks) fks_singular.o \ | 35 | reweight_xsec.o boostwdir2.o initcluster.o cluster.o \ |
4832 | 36 | montecarlocounter.o reweight_xsec.o boostwdir2.o \ | 36 | splitorders_stuff.o reweight.o get_color.o \ |
4833 | 37 | initcluster.o cluster.o splitorders_stuff.o \ | 37 | iproc_map.o MC_integer.o $(reweight_xsec_events_pdf_dummy) \ |
4834 | 38 | reweight.o get_color.o FKSParamReader.o iproc_map.o \ | 38 | $(applgrid_interface) weight_lines.o mint_module.o polfit.o |
4822 | 39 | MC_integer.o $(reweight_xsec_events_pdf_dummy) \ | ||
4823 | 40 | $(applgrid_interface) weight_lines.o | ||
4835 | 41 | 39 | ||
4836 | 42 | # Files needed for mintFO & mintMC | 40 | # Files needed for mintFO & mintMC |
4837 | 43 | RUN= $(FO_ANALYSE) $(FILES) cuts.o pythia_unlops.o recluster.o \ | 41 | RUN= $(FO_ANALYSE) $(FILES) cuts.o pythia_unlops.o recluster.o \ |
4838 | 44 | fill_MC_mshell.o born_hel.o open_output_files.o \ | 42 | fill_MC_mshell.o born_hel.o open_output_files.o \ |
4840 | 45 | add_write_info.o BinothLHA.o madfks_plot.o | 43 | add_write_info.o madfks_plot.o |
4841 | 46 | 44 | ||
4842 | 47 | # Files for mintFO | 45 | # Files for mintFO |
4844 | 48 | MINTFO= $(RUN) driver_mintFO.o mint-integrator2.o handling_lhe_events.o | 46 | MINTFO= $(RUN) driver_mintFO.o handling_lhe_events.o BinothLHA.o |
4845 | 49 | 47 | ||
4846 | 50 | # Files for mintMC | 48 | # Files for mintMC |
4849 | 51 | MINTMC= $(RUN) mint-integrator2.o driver_mintMC.o write_event.o \ | 49 | MINTMC= $(RUN) driver_mintMC.o handling_lhe_events.o write_event.o BinothLHA.o |
4848 | 52 | handling_lhe_events.o | ||
4850 | 53 | 50 | ||
4851 | 54 | # Files for check_poles | 51 | # Files for check_poles |
4854 | 55 | POLES= $(FILES) cuts.o pythia_unlops.o recluster.o check_poles.o \ | 52 | POLES= $(RUN) check_poles.o BinothLHA.o |
4853 | 56 | BinothLHA.o born_hel.o | ||
4855 | 57 | 53 | ||
4856 | 58 | # Files for tests | 54 | # Files for tests |
4859 | 59 | TEST= $(FILES) test_soft_col_limits.o BinothLHADummy.o cuts.o \ | 55 | TEST= $(RUN) test_soft_col_limits.o BinothLHADummy.o |
4858 | 60 | pythia_unlops.o recluster.o | ||
4860 | 61 | 56 | ||
4861 | 62 | # Files for gensym | 57 | # Files for gensym |
4863 | 63 | SYM= $(FILES) BinothLHADummy.o symmetry_fks_v3.o write_ajob.o | 58 | SYM= $(RUN) BinothLHADummy.o symmetry_fks_v3.o write_ajob.o |
4864 | 64 | 59 | ||
4865 | 65 | # Files for event reweighting to get e.g. scale and PDF uncertainties | 60 | # Files for event reweighting to get e.g. scale and PDF uncertainties |
4866 | 66 | RWGFILES=reweight_xsec_events.o handling_lhe_events.o \ | 61 | RWGFILES=reweight_xsec_events.o handling_lhe_events.o \ |
4867 | @@ -73,6 +68,8 @@ | |||
4868 | 73 | 68 | ||
4869 | 74 | %.o: %.f | 69 | %.o: %.f |
4870 | 75 | $(FC) $(FFLAGS) -c -I. -I$(LIBDIR) $< | 70 | $(FC) $(FFLAGS) -c -I. -I$(LIBDIR) $< |
4871 | 71 | %.o: %.f90 | ||
4872 | 72 | $(FC) $(FFLAGS) -c -I. -I$(LIBDIR) $< | ||
4873 | 76 | %.o: $(ANADIR)/%.f | 73 | %.o: $(ANADIR)/%.f |
4874 | 77 | $(FC) $(FFLAGS) -c -I. -I$(ANADIR) $(FO_INCLUDEPATHS) $< | 74 | $(FC) $(FFLAGS) -c -I. -I$(ANADIR) $(FO_INCLUDEPATHS) $< |
4875 | 78 | %.o: %.for | 75 | %.o: %.for |
4876 | @@ -121,9 +118,13 @@ | |||
4877 | 121 | for dir in `ls -d V*`; do cd $$dir; make; cd ../; done | 118 | for dir in `ls -d V*`; do cd $$dir; make; cd ../; done |
4878 | 122 | 119 | ||
4879 | 123 | reweight_xsec_events.o: weight_lines.o | 120 | reweight_xsec_events.o: weight_lines.o |
4883 | 124 | fks_singular.o: weight_lines.o | 121 | fks_singular.o: weight_lines.o mint_module.o |
4884 | 125 | driver_mintMC.o: weight_lines.o | 122 | driver_mintMC.o: weight_lines.o mint_module.o |
4885 | 126 | driver_mintFO.o: weight_lines.o | 123 | driver_mintFO.o: weight_lines.o mint_module.o |
4886 | 124 | setcuts.o: mint_module.o | ||
4887 | 125 | genps_fks.o: mint_module.o | ||
4888 | 126 | symmetry_fks_v3.o: mint_module.o | ||
4889 | 127 | test_soft_col_limits.o: mint_module.o | ||
4890 | 127 | 128 | ||
4891 | 128 | clean: | 129 | clean: |
4892 | 129 | @rm -f *.o write_ajob_basic reweight_xsec_events madevent_* check_poles\ | 130 | @rm -f *.o write_ajob_basic reweight_xsec_events madevent_* check_poles\ |
4893 | 130 | 131 | ||
4894 | === removed file 'Template/NLO/SubProcesses/mint-integrator2.f' | |||
4895 | === removed file 'Template/NLO/SubProcesses/mint.inc' | |||
4896 | === added file 'Template/NLO/SubProcesses/mint_module.f90' | |||
4897 | --- Template/NLO/SubProcesses/mint_module.f90 1970-01-01 00:00:00 +0000 | |||
4898 | +++ Template/NLO/SubProcesses/mint_module.f90 2020-05-23 19:29:41 +0000 | |||
4899 | @@ -0,0 +1,1705 @@ | |||
4900 | 1 | !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ||
4901 | 2 | ! MINT Integrator Package | ||
4902 | 3 | !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ||
4903 | 4 | ! Original version by Paolo Nason (for POWHEG (BOX)) | ||
4904 | 5 | ! Modified by Rikkert Frederix (for MadGraph5_aMC@NLO) | ||
4905 | 6 | !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc | ||
4906 | 7 | ! subroutine mint(fun,ndim,ncalls0,itmax,imode, | ||
4907 | 8 | ! ndim=number of dimensions | ||
4908 | 9 | ! ncalls0=# of calls per iteration | ||
4909 | 10 | ! itmax =# of iterations | ||
4910 | 11 | ! fun(xx,www,ifirst): returns the function to be integrated multiplied by www; | ||
4911 | 12 | ! xx(1:ndim) are the variables of integration | ||
4912 | 13 | ! ifirst=0: normal behaviour | ||
4913 | 14 | ! imode: integer flag | ||
4914 | 15 | ! | ||
4915 | 16 | ! imode=-1: | ||
4916 | 17 | ! same as imode=0 as far as this routine is concerned, except for the | ||
4917 | 18 | ! fact that a grid is read at the beginning (rather than initialized). | ||
4918 | 19 | ! The return value of imode will be zero. | ||
4919 | 20 | ! | ||
4920 | 21 | ! imode=0: | ||
4921 | 22 | ! When called with imode=0 the routine integrates the absolute value of | ||
4922 | 23 | ! the function and sets up a grid xgrid(0:50,ndim) such that in each | ||
4923 | 24 | ! ndim-1 dimensional slice (i.e. xgrid(m-1,n)<xx(n)<xgrid(m,n)) the | ||
4924 | 25 | ! contribution of the integral is the same the array xgrid is setup at | ||
4925 | 26 | ! this stage; ans and err are the integral and its error | ||
4926 | 27 | ! | ||
4927 | 28 | ! imode=1 (in fact #0) | ||
4928 | 29 | ! When called with imode=1, the routine performs the integral of the | ||
4929 | 30 | ! function fun using the grid xgrid. If some number in the array ifold, | ||
4930 | 31 | ! (say, ifold(n)) is different from 1, it must be a divisor of 50, and | ||
4931 | 32 | ! the 50 intervals xgrid(0:50,n) are grouped into ifold(n) groups, each | ||
4932 | 33 | ! group containing 50/ifold(n) nearby intervals. For example, if | ||
4933 | 34 | ! ifold(1)=5, the 50 intervals for the first dimension are divided in 5 | ||
4934 | 35 | ! groups of 10. The integral is then performed by folding on top of each | ||
4935 | 36 | ! other these 5 groups. Suppose, for example, that we choose a random | ||
4936 | 37 | ! point in xx(1) = xgrid(2,1)+x*(xgrid(3,1)-xgrid(2,1)), in the group of | ||
4937 | 38 | ! the first 5 interval. we sum the contribution of this point to the | ||
4938 | 39 | ! contributions of points | ||
4939 | 40 | ! xgrid(2+m*10,1)+x*(xgrid(3+m*10,1)-xgrid(2+m*10,1)), with m=1,...,4. | ||
4940 | 41 | ! In the sequence of calls to the function fun, the call for the first | ||
4941 | 42 | ! point is performed with ifirst=0, and that for all subsequent points | ||
4942 | 43 | ! with ifirst=1, so that the function can avoid to compute quantities | ||
4943 | 44 | ! that only depend upon dimensions that have ifold=1, and do not change | ||
4944 | 45 | ! in each group of folded call. The values returned by fun in a sequence | ||
4945 | 46 | ! of folded calls with ifirst=0 and ifirst=1 are not used. The function | ||
4946 | 47 | ! itself must accumulate the values, and must return them when called | ||
4947 | 48 | ! with ifirst=2. | ||
4948 | 49 | ! | ||
4949 | 50 | ! Added the posibility to keep track of more than one integral: | ||
4950 | 51 | ! | ||
4951 | 52 | ! nintegrals=1 : the function that is used to update the grids. This is | ||
4952 | 53 | ! the ABS cross section. If imode.eq.1, this does not contain the | ||
4953 | 54 | ! virtual corrections because for them a separate maximum is kept using (5). | ||
4954 | 55 | ! nintegrals=2 : the actual cross section. This includes virtual corrections. | ||
4955 | 56 | ! nintegrals=3 : the cross section from the M_Virt/M_Born ratio alone: | ||
4956 | 57 | ! this defines the average virtual that is added to each phase-space | ||
4957 | 58 | ! point | ||
4958 | 59 | ! nintegrals=4 : the cross section of the actual virtual minus the | ||
4959 | 60 | ! average virtual. This is used to determine the fraction of phase-space | ||
4960 | 61 | ! points for which we include the virtual. | ||
4961 | 62 | ! nintegrals=5 : abs of 3 | ||
4962 | 63 | ! nintegrals=6 : born | ||
4963 | 64 | ! nintegrals>6 : virtual and born order by order | ||
4964 | 65 | ! | ||
4965 | 66 | |||
4966 | 67 | module mint_module | ||
4967 | 68 | use FKSParams ! contains use_poly_virtual | ||
4968 | 69 | implicit none | ||
4969 | 70 | integer, parameter, private :: nintervals=32 ! max number of intervals in the integration grids | ||
4970 | 71 | integer, parameter, public :: ndimmax=60 ! max number of dimensions of the integral | ||
4971 | 72 | integer, parameter, public :: n_ave_virt=10 ! max number of grids to set up to approx virtual | ||
4972 | 73 | integer, parameter, public :: nintegrals=26 ! number of integrals to keep track of | ||
4973 | 74 | integer, parameter, private :: nintervals_virt=8! max number of intervals in the grids for the approx virtual | ||
4974 | 75 | integer, parameter, private :: min_inter=4 ! minimal number of intervals | ||
4975 | 76 | integer, parameter, private :: min_it0=4 ! minimal number of iterations in the mint step 0 phase | ||
4976 | 77 | integer, parameter, private :: min_it1=5 ! minimal number of iterations in the mint step 1 phase | ||
4977 | 78 | integer, parameter, private :: max_points=100000! maximum number of points to trow per iteration if not enough non-zero points can be found. | ||
4978 | 79 | integer, parameter, public :: maxchannels=20 ! set as least as large as in amcatnlo_run_interface | ||
4979 | 80 | ! Note that the number of intervals in the integration grids, 'nintervals', cannot be arbitrarily large. | ||
4980 | 81 | ! It should be equal to | ||
4981 | 82 | ! nintervals = min_inter * 2^n, | ||
4982 | 83 | ! where 'n' is an integer smaller than or equal to min(min_it0,min_it1). | ||
4983 | 84 | ! | ||
4984 | 85 | ! The number of intergrals should be equal to | ||
4985 | 86 | ! nintegrals=6+2*n_ave_virt | ||
4986 | 87 | ! | ||
4987 | 88 | |||
4988 | 89 | ! public variables | ||
4989 | 90 | integer, public :: ncalls0,ndim,itmax,imode,n_ord_virt,nchans,iconfig,ichan,ifold_energy,ifold_yij,ifold_phi | ||
4990 | 91 | integer, dimension(ndimmax), public :: ifold | ||
4991 | 92 | integer, dimension(maxchannels), public :: iconfigs | ||
4992 | 93 | double precision, public :: accuracy,min_virt_fraction_mint,wgt_mult | ||
4993 | 94 | double precision, dimension(0:n_ave_virt,maxchannels), public :: average_virtual | ||
4994 | 95 | double precision, dimension(0:n_ave_virt), public :: virt_wgt_mint,born_wgt_mint,polyfit | ||
4995 | 96 | double precision, dimension(maxchannels), public :: virtual_fraction | ||
4996 | 97 | double precision, dimension(nintegrals,0:maxchannels), public :: ans,unc | ||
4997 | 98 | logical :: only_virt,new_point,pass_cuts_check | ||
4998 | 99 | |||
4999 | 100 | ! private variables | ||
5000 | 101 | character(len=13), parameter, dimension(nintegrals), private :: title=(/ & |
First question,
Is it normal that the file tests/acceptanc e_tests/ test_export_ fks.py was removed?
Cheers,
Olivier