Merge lp:~maddevelopers/mg5amcnlo/2.1.2-lhapdf6 into lp:~maddevelopers/mg5amcnlo/2.1.3

Proposed by marco zaro
Status: Rejected
Rejected by: Olivier Mattelaer
Proposed branch: lp:~maddevelopers/mg5amcnlo/2.1.2-lhapdf6
Merge into: lp:~maddevelopers/mg5amcnlo/2.1.3
Diff against target: 673489 lines (+532988/-85638) (has conflicts)
794 files modified
Template/LO/Source/make_opts (+9/-2)
Template/NLO/Cards/shower_card.dat (+108/-78)
Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script (+0/-1)
Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f (+0/-3)
Template/NLO/Source/make_opts (+0/-86)
Template/NLO/Source/make_opts.inc (+86/-0)
Template/NLO/Source/makefile (+12/-2)
Template/NLO/SubProcesses/BinothLHA.f (+55/-30)
Template/NLO/SubProcesses/add_write_info.f (+1/-1)
Template/NLO/SubProcesses/ajob_template (+9/-13)
Template/NLO/SubProcesses/check_poles.f (+24/-17)
Template/NLO/SubProcesses/driver_mintFO.f (+10/-3)
Template/NLO/SubProcesses/driver_mintMC.f (+10/-3)
Template/NLO/SubProcesses/driver_vegas.f (+10/-3)
Template/NLO/SubProcesses/makefile_loop (+0/-33)
Template/NLO/SubProcesses/makefile_loop.inc (+36/-0)
Template/NLO/SubProcesses/montecarlocounter.f (+144/-35)
Template/NLO/SubProcesses/setcuts.f (+1/-1)
Template/NLO/SubProcesses/sumres.py (+2/-1)
Template/loop_material/Checks/StabilityCheckDriver.f (+37/-11)
Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f (+31/-7)
Template/loop_material/StandAlone/Cards/MadLoopParams.dat (+50/-3)
Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f (+341/-0)
Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f (+77/-3)
Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc (+6/-4)
Template/loop_material/StandAlone/SubProcesses/check_sa.f (+0/-583)
Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f (+0/-574)
Template/loop_material/StandAlone/SubProcesses/makefile (+0/-29)
Template/loop_material/StandAlone/SubProcesses/makefile.inc (+74/-0)
UpdateNotes.txt (+21/-0)
aloha/aloha_lib.py (+11/-1)
aloha/aloha_writers.py (+23/-31)
aloha/create_aloha.py (+21/-17)
input/.mg5_configuration_default.txt (+16/-1)
input/proc_card_default.dat (+0/-40)
madgraph/VERSION (+2/-2)
madgraph/core/base_objects.py (+246/-23)
madgraph/core/color_algebra.py (+34/-0)
madgraph/core/color_amp.py (+20/-13)
madgraph/core/diagram_generation.py (+77/-13)
madgraph/core/drawing.py (+39/-6)
madgraph/core/helas_objects.py (+346/-47)
madgraph/fks/fks_base.py (+76/-34)
madgraph/fks/fks_common.py (+144/-92)
madgraph/fks/fks_helas_objects.py (+9/-5)
madgraph/interface/amcatnlo_interface.py (+7/-0)
madgraph/interface/amcatnlo_run_interface.py (+79/-34)
madgraph/interface/common_run_interface.py (+31/-52)
madgraph/interface/launch_ext_program.py (+104/-30)
madgraph/interface/loop_interface.py (+115/-55)
madgraph/interface/madevent_interface.py (+1/-2)
madgraph/interface/madgraph_interface.py (+335/-76)
madgraph/interface/master_interface.py (+18/-12)
madgraph/iolibs/drawing_eps.py (+76/-3)
madgraph/iolibs/export_fks.py (+191/-45)
madgraph/iolibs/export_v4.py (+356/-44)
madgraph/iolibs/file_writers.py (+34/-7)
madgraph/iolibs/files.py (+0/-1)
madgraph/iolibs/helas_call_writers.py (+166/-69)
madgraph/iolibs/save_load_object.py (+4/-2)
madgraph/iolibs/template_files/check_sa_splitOrders.f (+457/-0)
madgraph/iolibs/template_files/loop/CT_interface.inc (+13/-14)
madgraph/iolibs/template_files/loop/check_sa.inc (+658/-0)
madgraph/iolibs/template_files/loop/check_sa_loop_induced.inc (+619/-0)
madgraph/iolibs/template_files/loop/helas_calls_split.inc (+3/-3)
madgraph/iolibs/template_files/loop/helas_loop_amplitude.inc (+7/-7)
madgraph/iolibs/template_files/loop/improve_ps.inc (+57/-51)
madgraph/iolibs/template_files/loop/loop_matrix_standalone.inc (+217/-105)
madgraph/iolibs/template_files/loop/loop_num.inc (+30/-30)
madgraph/iolibs/template_files/loop/mp_born_amps_and_wfs.inc (+10/-10)
madgraph/iolibs/template_files/loop/mp_helas_calls_split.inc (+3/-3)
madgraph/iolibs/template_files/loop_optimized/CT_interface.inc (+13/-14)
madgraph/iolibs/template_files/loop_optimized/GOLEM_interface.inc (+625/-0)
madgraph/iolibs/template_files/loop_optimized/TIR_interface.inc (+268/-0)
madgraph/iolibs/template_files/loop_optimized/helas_calls_split.inc (+41/-11)
madgraph/iolibs/template_files/loop_optimized/helas_loop_amplitude.inc (+54/-19)
madgraph/iolibs/template_files/loop_optimized/loop_matrix_standalone.inc (+876/-275)
madgraph/iolibs/template_files/loop_optimized/loop_num.inc (+31/-25)
madgraph/iolibs/template_files/loop_optimized/mp_compute_loop_coefs.inc (+60/-22)
madgraph/iolibs/template_files/loop_optimized/mp_helas_calls_split.inc (+29/-11)
madgraph/iolibs/template_files/loop_optimized/polynomial.inc (+78/-123)
madgraph/iolibs/template_files/makefile_sa_f_sp (+10/-4)
madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+30/-7)
madgraph/iolibs/template_files/matrix_madevent_v4.inc (+30/-7)
madgraph/iolibs/template_files/matrix_method_python.inc (+2/-1)
madgraph/iolibs/template_files/matrix_standalone_splitOrders_v4.inc (+251/-0)
madgraph/iolibs/template_files/matrix_standalone_v4.inc (+52/-9)
madgraph/iolibs/template_files/split_orders_helping_functions.inc (+89/-0)
madgraph/iolibs/ufo_expression_parsers.py (+14/-6)
madgraph/loop/loop_base_objects.py (+43/-13)
madgraph/loop/loop_diagram_generation.py (+378/-97)
madgraph/loop/loop_exporters.py (+958/-163)
madgraph/loop/loop_helas_objects.py (+396/-44)
madgraph/various/banner.py (+18/-0)
madgraph/various/cluster.py (+6/-2)
madgraph/various/misc.py (+20/-3)
madgraph/various/process_checks.py (+873/-572)
madgraph/various/q_polynomial.py (+512/-3)
madgraph/various/shower_card.py (+1/-3)
mg5decay/decay_objects.py (+1/-2)
models/import_ufo.py (+24/-11)
models/loop_MSSM/.restrict_parallel_test.dat (+532/-0)
models/loop_MSSM/.restrict_parallel_test_gogo.dat (+532/-0)
models/loop_MSSM/CT_couplings.py (+22863/-0)
models/loop_MSSM/CT_vertices.py (+7619/-0)
models/loop_MSSM/MSSM_NLO.log (+87/-0)
models/loop_MSSM/__init__.py (+48/-0)
models/loop_MSSM/coupling_orders.py (+17/-0)
models/loop_MSSM/couplings.py (+6439/-0)
models/loop_MSSM/function_library.py (+71/-0)
models/loop_MSSM/lorentz.py (+198/-0)
models/loop_MSSM/object_library.py (+377/-0)
models/loop_MSSM/parameters.py (+1756/-0)
models/loop_MSSM/particles.py (+814/-0)
models/loop_MSSM/propagators.py (+35/-0)
models/loop_MSSM/restrict_default.dat (+526/-0)
models/loop_MSSM/restrict_test.dat (+532/-0)
models/loop_MSSM/vertices.py (+9119/-0)
models/loop_MSSM/write_param_card.py (+207/-0)
models/loop_qcd_qed_sm/.restrict_parallel_test.dat (+65/-0)
models/loop_qcd_qed_sm/CT_couplings.py (+7213/-0)
models/loop_qcd_qed_sm/CT_parameters.py (+448/-0)
models/loop_qcd_qed_sm/CT_vertices.py (+4849/-0)
models/loop_qcd_qed_sm/__init__.py (+26/-0)
models/loop_qcd_qed_sm/coupling_orders.py (+16/-0)
models/loop_qcd_qed_sm/couplings.py (+539/-0)
models/loop_qcd_qed_sm/function_library.py (+68/-0)
models/loop_qcd_qed_sm/lorentz.py (+361/-0)
models/loop_qcd_qed_sm/object_library.py (+351/-0)
models/loop_qcd_qed_sm/parameters.py (+1225/-0)
models/loop_qcd_qed_sm/particles.py (+381/-0)
models/loop_qcd_qed_sm/restrict_ckm.dat (+65/-0)
models/loop_qcd_qed_sm/restrict_default.dat (+65/-0)
models/loop_qcd_qed_sm/restrict_no_widths.dat (+65/-0)
models/loop_qcd_qed_sm/restrict_parallel_test.dat (+65/-0)
models/loop_qcd_qed_sm/vertices.py (+1037/-0)
models/loop_qcd_qed_sm/write_param_card.py (+181/-0)
models/loop_qcd_qed_sm_Gmu/.restrict_parallel_test.dat (+65/-0)
models/loop_qcd_qed_sm_Gmu/.restrict_parallel_test_WW.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/.restrict_parallel_test_WZ.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/.restrict_parallel_test_ZZ.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/CT_couplings.py (+7213/-0)
models/loop_qcd_qed_sm_Gmu/CT_parameters.py (+447/-0)
models/loop_qcd_qed_sm_Gmu/CT_vertices.py (+4849/-0)
models/loop_qcd_qed_sm_Gmu/__init__.py (+26/-0)
models/loop_qcd_qed_sm_Gmu/coupling_orders.py (+16/-0)
models/loop_qcd_qed_sm_Gmu/couplings.py (+539/-0)
models/loop_qcd_qed_sm_Gmu/function_library.py (+68/-0)
models/loop_qcd_qed_sm_Gmu/lorentz.py (+361/-0)
models/loop_qcd_qed_sm_Gmu/object_library.py (+358/-0)
models/loop_qcd_qed_sm_Gmu/parameters.py (+1211/-0)
models/loop_qcd_qed_sm_Gmu/particles.py (+381/-0)
models/loop_qcd_qed_sm_Gmu/restrict_ckm.dat (+65/-0)
models/loop_qcd_qed_sm_Gmu/restrict_default.dat (+65/-0)
models/loop_qcd_qed_sm_Gmu/restrict_no_widths.dat (+65/-0)
models/loop_qcd_qed_sm_Gmu/restrict_parallel_test.dat (+65/-0)
models/loop_qcd_qed_sm_Gmu/restrict_parallel_test_WW.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/restrict_parallel_test_WZ.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/restrict_parallel_test_ZZ.dat (+66/-0)
models/loop_qcd_qed_sm_Gmu/vertices.py (+1037/-0)
models/loop_qcd_qed_sm_Gmu/write_param_card.py (+181/-0)
models/loop_sm/__init__.py (+2/-2)
models/loop_sm/restrict_no_widths.dat (+59/-0)
models/model_reader.py (+5/-7)
models/sm/restrict_no_widths.dat (+53/-0)
models/template_files/fortran/lha_read.f (+14/-4)
models/template_files/fortran/lha_read_mp.f (+43/-7)
models/template_files/fortran/rw_para.f (+51/-2)
tests/IOTests.py (+5/-3)
tests/acceptance_tests/test_cmd.py (+10/-0)
tests/acceptance_tests/test_cmd_amcatnlo.py (+6/-9)
tests/acceptance_tests/test_cmd_madevent.py (+1/-2)
tests/acceptance_tests/test_cmd_madloop.py (+28/-3)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_001.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_002.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_003.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_004.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_005.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_006.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_007.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%b_sf_008.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%born_hel.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_gg_ttx%fks_info.inc (+20/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_001.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_002.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_003.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_004.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_005.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_006.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_007.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%b_sf_008.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%born_hel.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uux_ttx%fks_info.inc (+16/-0)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_001.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_002.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_003.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_004.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_005.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_006.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_007.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%b_sf_008.f (+6/-6)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%born_hel.f (+4/-4)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_pptt_fksreal/%SubProcesses%P0_uxu_ttx%fks_info.inc (+16/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_eq_4.f (+3187/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_gt_0_QEDAmpAndQEDsq_gt_2.f (+10164/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QCDsq_gt_4.f (+2235/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_QEDsq_le_4.f (+10402/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_WGTsq_le_10_QEDAmpAndQEDsq_gt_2.f (+10164/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDQEDpert_default.f (+3187/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QCDpert_default.f (+2235/-0)
tests/input_files/IOTestsComparison/LoopSquaredOrder_IOTest/Loop_sqso_uux_ddx/loop_matrix_QEDpert_default.f (+2371/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%MadLoopCommons.f (+341/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%MadLoopParamReader.f (+260/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%CT_interface.f (+770/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f (+833/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f (+370/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%born_matrix.f (+388/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%check_sa.f (+748/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%check_sa_born_splitOrders.f (+508/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%improve_ps.f (+989/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f (+2745/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_num.f (+133/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%mp_compute_loop_coefs.f (+951/-0)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%polynomial.f (+861/-0)
tests/input_files/IOTestsComparison/SquaredOrder_IOTest/sqso_uux_uuxuuxx/matrix_NoSQSO.f (+406/-0)
tests/input_files/IOTestsComparison/SquaredOrder_IOTest/sqso_uux_uuxuuxx/matrix_QCDsq_le_6.f (+591/-0)
tests/input_files/IOTestsComparison/SquaredOrder_IOTest/sqso_uux_uuxuuxx/matrix_ampOrderQED2_eq_2_WGTsq_le_14_QCDsq_gt_4.f (+591/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+39/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+39/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/%MadLoop5_resources%ML5_0_HelConfigs.dat (+32/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/CT_interface.f (+41/-42)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/ColorDenomFactors.dat (+0/-39)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/ColorNumFactors.dat (+0/-39)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/HelConfigs.dat (+0/-32)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/check_sa.f (+738/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/loop_matrix.f (+314/-189)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/loop_num.f (+34/-34)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/mp_born_amps_and_wfs.f (+13/-13)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/dux_mumvmxg/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%mp_couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+414/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+414/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+48/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/CT_interface.f (+76/-76)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/ColorDenomFactors.dat (+0/-414)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/ColorNumFactors.dat (+0/-414)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/HelConfigs.dat (+0/-48)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/check_sa.f (+738/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/loop_matrix.f (+699/-574)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/loop_num.f (+34/-34)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/mp_born_amps_and_wfs.f (+13/-13)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_default/gg_wmtbx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+39/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+39/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/%MadLoop5_resources%ML5_0_HelConfigs.dat (+32/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/CT_interface.f (+197/-78)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/ColorDenomFactors.dat (+0/-39)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/ColorNumFactors.dat (+0/-39)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/HelConfigs.dat (+0/-32)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/TIR_interface.f (+281/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/check_sa.f (+740/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/loop_matrix.f (+1139/-422)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/loop_num.f (+30/-24)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/mp_compute_loop_coefs.f (+142/-79)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/polynomial.f (+429/-364)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%mp_couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+414/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+414/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+48/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/CT_interface.f (+441/-162)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/ColorDenomFactors.dat (+0/-414)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/ColorNumFactors.dat (+0/-414)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/HelConfigs.dat (+0/-48)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/TIR_interface.f (+281/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/check_sa.f (+740/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/coef_construction_1.f (+509/-537)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/helas_calls_ampb_1.f (+47/-76)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/helas_calls_uvct_1.f (+172/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/loop_CT_calls_1.f (+192/-166)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/loop_matrix.f (+1062/-435)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/loop_num.f (+30/-24)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/mp_coef_construction_1.f (+765/-632)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/mp_compute_loop_coefs.f (+80/-115)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/mp_helas_calls_ampb_1.f (+35/-76)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/mp_helas_calls_uvct_1.f (+158/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/gg_wmtbx/polynomial.f (+1003/-930)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+20/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+20/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/%MadLoop5_resources%ML5_0_HelConfigs.dat (+4/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/CT_interface.f (+33/-34)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/ColorDenomFactors.dat (+0/-20)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/ColorNumFactors.dat (+0/-20)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/HelConfigs.dat (+0/-4)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/check_sa.f (+685/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/loop_matrix.f (+312/-186)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/loop_num.f (+30/-30)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/mp_born_amps_and_wfs.f (+11/-11)
tests/input_files/IOTestsComparison/short_ML_SMQCD_LoopInduced/gg_hh/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+43/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+43/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+16/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/CT_interface.f (+41/-42)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/ColorDenomFactors.dat (+0/-43)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/ColorNumFactors.dat (+0/-43)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/HelConfigs.dat (+0/-16)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/check_sa.f (+738/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/loop_matrix.f (+312/-187)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/loop_num.f (+34/-34)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/mp_born_amps_and_wfs.f (+13/-13)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/ddx_ttx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%mp_couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+138/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+138/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+16/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/CT_interface.f (+58/-58)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/ColorDenomFactors.dat (+0/-138)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/ColorNumFactors.dat (+0/-138)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/HelConfigs.dat (+0/-16)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/check_sa.f (+738/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/loop_matrix.f (+395/-270)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/loop_num.f (+34/-34)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/mp_born_amps_and_wfs.f (+13/-13)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_default/gg_ttx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+43/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+43/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+16/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/CT_interface.f (+197/-78)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/ColorDenomFactors.dat (+0/-43)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/ColorNumFactors.dat (+0/-43)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/HelConfigs.dat (+0/-16)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/TIR_interface.f (+281/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/check_sa.f (+740/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/loop_matrix.f (+1148/-433)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/loop_num.f (+30/-24)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/mp_compute_loop_coefs.f (+155/-94)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/ddx_ttx/polynomial.f (+343/-278)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%couplings.f (+19/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%couplings1.f (+4/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%model_functions.f (+24/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_couplings2.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%mp_couplings3.f (+2/-1)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%..%..%Source%MODEL%rw_para.f (+51/-2)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%MadLoop5_resources%ML5_0_ColorDenomFactors.dat (+138/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%MadLoop5_resources%ML5_0_ColorNumFactors.dat (+138/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/%MadLoop5_resources%ML5_0_HelConfigs.dat (+16/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/CT_interface.f (+319/-120)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/ColorDenomFactors.dat (+0/-138)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/ColorNumFactors.dat (+0/-138)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/HelConfigs.dat (+0/-16)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/TIR_interface.f (+281/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/born_matrix.f (+52/-8)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/check_sa.f (+740/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/improve_ps.f (+77/-67)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/loop_matrix.f (+1409/-672)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/loop_num.f (+30/-24)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/mp_compute_loop_coefs.f (+364/-286)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/nsqso_born.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/nsquaredSO.inc (+2/-0)
tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/polynomial.f (+615/-546)
tests/input_files/LoopSMEWTest/CT_couplings.py (+7213/-0)
tests/input_files/LoopSMEWTest/CT_parameters.py (+447/-0)
tests/input_files/LoopSMEWTest/CT_vertices.py (+4849/-0)
tests/input_files/LoopSMEWTest/__init__.py (+26/-0)
tests/input_files/LoopSMEWTest/coupling_orders.py (+16/-0)
tests/input_files/LoopSMEWTest/couplings.py (+539/-0)
tests/input_files/LoopSMEWTest/function_library.py (+68/-0)
tests/input_files/LoopSMEWTest/lorentz.py (+361/-0)
tests/input_files/LoopSMEWTest/object_library.py (+358/-0)
tests/input_files/LoopSMEWTest/parameters.py (+1225/-0)
tests/input_files/LoopSMEWTest/particles.py (+381/-0)
tests/input_files/LoopSMEWTest/restrict_ckm.dat (+65/-0)
tests/input_files/LoopSMEWTest/restrict_default.dat (+65/-0)
tests/input_files/LoopSMEWTest/restrict_no_widths.dat (+65/-0)
tests/input_files/LoopSMEWTest/restrict_parallel_test.dat (+65/-0)
tests/input_files/LoopSMEWTest/vertices.py (+1037/-0)
tests/input_files/LoopSMEWTest/write_param_card.py (+181/-0)
tests/input_files/test_draw_nlo.obj (+234839/-68594)
tests/parallel_tests/compare_gauge.py (+1/-1)
tests/parallel_tests/compare_with_old_mg5_version.py (+59/-4)
tests/parallel_tests/loop_me_comparator.py (+123/-34)
tests/parallel_tests/loop_sample_script.py (+24/-9)
tests/parallel_tests/madevent_comparator.py (+6/-6)
tests/parallel_tests/me_comparator.py (+44/-12)
tests/parallel_tests/test_ML5.py (+111/-24)
tests/parallel_tests/test_ML5EW.py (+629/-0)
tests/parallel_tests/test_ML5MSSMQCD.py (+204/-0)
tests/test_manager.py (+2/-2)
tests/time_db (+167/-81)
tests/unit_tests/__init__.py (+2/-1)
tests/unit_tests/core/test_base_objects.py (+10/-4)
tests/unit_tests/core/test_diagram_generation.py (+35/-1)
tests/unit_tests/core/test_drawing.py (+0/-1)
tests/unit_tests/fks/test_fks_base.py (+518/-47)
tests/unit_tests/fks/test_fks_common.py (+1689/-231)
tests/unit_tests/fks/test_fks_helas_objects.py (+104/-6)
tests/unit_tests/iolibs/test_export_fks.py (+0/-3)
tests/unit_tests/iolibs/test_export_fks_EW.py (+1785/-0)
tests/unit_tests/iolibs/test_export_python.py (+2/-2)
tests/unit_tests/iolibs/test_export_v4.py (+468/-63)
tests/unit_tests/loop/test_loop_diagram_generation.py (+773/-24)
tests/unit_tests/loop/test_loop_exporters.py (+98/-0)
tests/unit_tests/various/test_aloha.py (+17/-18)
tests/unit_tests/various/test_shower_card.py (+260/-202)
vendor/CutTools/README (+6/-2)
vendor/CutTools/examples/cts_mpc.h (+0/-1)
vendor/CutTools/examples/cts_mpr.h (+0/-1)
vendor/CutTools/examples/cts_mprec.h (+0/-1)
vendor/CutTools/examples/testdir/out10_ccc (+1/-1)
vendor/CutTools/examples/testdir/out11_ccc (+1/-1)
vendor/CutTools/examples/testdir/out20_ccc (+1/-1)
vendor/CutTools/examples/testdir/out21_ccc (+1/-1)
vendor/CutTools/examples/testdir/out22_ccc (+1/-1)
vendor/CutTools/examples/testdir/out30_ccc (+1/-1)
vendor/CutTools/examples/testdir/out31_ccc (+1/-1)
vendor/CutTools/examples/testdir/out32_ccc (+1/-1)
vendor/CutTools/examples/testdir/out33_ccc (+1/-1)
vendor/CutTools/examples/testdir/out40_ccc (+1/-1)
vendor/CutTools/examples/testdir/out41_ccc (+1/-1)
vendor/CutTools/examples/testdir/out42_ccc (+1/-1)
vendor/CutTools/examples/testdir/out43_ccc (+1/-1)
vendor/CutTools/examples/testdir/out44_ccc (+1/-1)
vendor/CutTools/examples/testdir/out50_ccc (+1/-1)
vendor/CutTools/examples/testdir/out51_ccc (+1/-1)
vendor/CutTools/examples/testdir/out52_ccc (+1/-1)
vendor/CutTools/examples/testdir/out53_ccc (+1/-1)
vendor/CutTools/examples/testdir/out54_ccc (+1/-1)
vendor/CutTools/examples/testdir/out55_ccc (+1/-1)
vendor/CutTools/examples/testdir/out60_ccc (+1/-1)
vendor/CutTools/examples/testdir/out61_ccc (+1/-1)
vendor/CutTools/examples/testdir/out62_ccc (+1/-1)
vendor/CutTools/examples/testdir/out63_ccc (+1/-1)
vendor/CutTools/examples/testdir/out64_ccc (+1/-1)
vendor/CutTools/examples/testdir/out65_ccc (+1/-1)
vendor/CutTools/examples/testdir/out66_ccc (+1/-1)
vendor/CutTools/makefile (+2/-2)
vendor/CutTools/src/cts/cts_combinatorics.f90 (+8/-0)
vendor/CutTools/src/cts/cts_cutroutines.f90 (+4/-0)
vendor/CutTools/src/cts/cts_cuttools.f90 (+1/-1)
vendor/CutTools/src/cts/cts_kinematics.f90 (+127/-2)
vendor/CutTools/src/cts/cts_loopfunctions.f90 (+16/-0)
vendor/IREGI/src/IREGI4ML5_interface.f90 (+177/-0)
vendor/IREGI/src/README (+8/-0)
vendor/IREGI/src/binary_tree.f90 (+1277/-0)
vendor/IREGI/src/cmatrix_base.f90 (+2221/-0)
vendor/IREGI/src/cpave_reduce.f90 (+2855/-0)
vendor/IREGI/src/csi_reduce.f90 (+604/-0)
vendor/IREGI/src/cti_reduce.f90 (+245/-0)
vendor/IREGI/src/funlib.f90 (+973/-0)
vendor/IREGI/src/global.f90 (+184/-0)
vendor/IREGI/src/gti_reduce.f90 (+436/-0)
vendor/IREGI/src/kinematics.f90 (+58/-0)
vendor/IREGI/src/linear_algebra.f90 (+192/-0)
vendor/IREGI/src/makefile (+4/-0)
vendor/IREGI/src/makefile_ML5_lib (+78/-0)
vendor/IREGI/src/makefile_oneloop (+11/-0)
vendor/IREGI/src/makefile_qcdloop (+18/-0)
vendor/IREGI/src/matrices.f90 (+436/-0)
vendor/IREGI/src/matrix_base.f90 (+2270/-0)
vendor/IREGI/src/mis_warp.f90 (+604/-0)
vendor/IREGI/src/oneloop/COPYING (+674/-0)
vendor/IREGI/src/oneloop/DESCRIPTION (+201/-0)
vendor/IREGI/src/oneloop/ONI/README (+15/-0)
vendor/IREGI/src/oneloop/ONI/example/README (+13/-0)
vendor/IREGI/src/oneloop/ONI/example/example.f (+171/-0)
vendor/IREGI/src/oneloop/ONI/example/input (+37/-0)
vendor/IREGI/src/oneloop/ONI/example/input05 (+60/-0)
vendor/IREGI/src/oneloop/ONI/example/input06 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input07 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input08 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input09 (+20/-0)
vendor/IREGI/src/oneloop/ONI/example/input10 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input11 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input12 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input13 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input14 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input15 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/input16 (+12/-0)
vendor/IREGI/src/oneloop/ONI/example/makefile (+65/-0)
vendor/IREGI/src/oneloop/ONI/makefile (+50/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_3div.f (+629/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_3fin.f (+305/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_4div.f (+423/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_cmplx.f (+651/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_cuba-1.x.h (+1/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_cuba-2.x.h (+1/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_cuba.f (+159/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_cuba.h (+1/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_d1mach.f (+231/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_dfam.f (+215/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_dqagpe.f (+1079/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_func.f (+206/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_hello.f (+177/-0)
vendor/IREGI/src/oneloop/ONI/src/avh_oni_real.f (+177/-0)
vendor/IREGI/src/oneloop/README (+155/-0)
vendor/IREGI/src/oneloop/clean.sh (+2/-0)
vendor/IREGI/src/oneloop/create.py (+89/-0)
vendor/IREGI/src/oneloop/example/README (+13/-0)
vendor/IREGI/src/oneloop/example/example.f (+162/-0)
vendor/IREGI/src/oneloop/example/input (+25/-0)
vendor/IREGI/src/oneloop/example/irdiv_input (+260/-0)
vendor/IREGI/src/oneloop/example/makefile (+42/-0)
vendor/IREGI/src/oneloop/example_arprec/README (+10/-0)
vendor/IREGI/src/oneloop/example_arprec/f_test.f (+172/-0)
vendor/IREGI/src/oneloop/example_arprec/input (+25/-0)
vendor/IREGI/src/oneloop/example_arprec/irdiv_input (+260/-0)
vendor/IREGI/src/oneloop/example_arprec/makefile (+25/-0)
vendor/IREGI/src/oneloop/example_cpp/Config (+16/-0)
vendor/IREGI/src/oneloop/example_cpp/README (+31/-0)
vendor/IREGI/src/oneloop/example_cpp/cavh_olo.h (+246/-0)
vendor/IREGI/src/oneloop/example_cpp/clean (+2/-0)
vendor/IREGI/src/oneloop/example_cpp/clean.sh (+2/-0)
vendor/IREGI/src/oneloop/example_cpp/create.py (+89/-0)
vendor/IREGI/src/oneloop/example_cpp/example.cpp (+55/-0)
vendor/IREGI/src/oneloop/example_ddfun90/README (+19/-0)
vendor/IREGI/src/oneloop/example_ddfun90/example.f (+212/-0)
vendor/IREGI/src/oneloop/example_ddfun90/input (+25/-0)
vendor/IREGI/src/oneloop/example_ddfun90/irdiv_input (+260/-0)
vendor/IREGI/src/oneloop/example_ddfun90/makefile (+46/-0)
vendor/IREGI/src/oneloop/example_mpfun90/README (+19/-0)
vendor/IREGI/src/oneloop/example_mpfun90/example.f (+213/-0)
vendor/IREGI/src/oneloop/example_mpfun90/input (+25/-0)
vendor/IREGI/src/oneloop/example_mpfun90/irdiv_input (+260/-0)
vendor/IREGI/src/oneloop/example_mpfun90/makefile (+46/-0)
vendor/IREGI/src/oneloop/example_qdcpp/README (+10/-0)
vendor/IREGI/src/oneloop/example_qdcpp/f_test.f (+178/-0)
vendor/IREGI/src/oneloop/example_qdcpp/input (+25/-0)
vendor/IREGI/src/oneloop/example_qdcpp/irdiv_input (+260/-0)
vendor/IREGI/src/oneloop/example_qdcpp/makefile (+25/-0)
vendor/IREGI/src/oneloop/make_cuttools (+26/-0)
vendor/IREGI/src/oneloop/makefile_config (+17/-0)
vendor/IREGI/src/oneloop/src/avh_olo.py (+45/-0)
vendor/IREGI/src/oneloop/src/avh_olo_a0.h90 (+63/-0)
vendor/IREGI/src/oneloop/src/avh_olo_an.h90 (+68/-0)
vendor/IREGI/src/oneloop/src/avh_olo_arprec.f90 (+253/-0)
vendor/IREGI/src/oneloop/src/avh_olo_arrays.f90 (+290/-0)
vendor/IREGI/src/oneloop/src/avh_olo_auxfun.f90 (+576/-0)
vendor/IREGI/src/oneloop/src/avh_olo_b0.h90 (+109/-0)
vendor/IREGI/src/oneloop/src/avh_olo_b11.h90 (+118/-0)
vendor/IREGI/src/oneloop/src/avh_olo_bn.h90 (+162/-0)
vendor/IREGI/src/oneloop/src/avh_olo_bnlog.f90 (+335/-0)
vendor/IREGI/src/oneloop/src/avh_olo_box.f90 (+1548/-0)
vendor/IREGI/src/oneloop/src/avh_olo_boxc.f90 (+615/-0)
vendor/IREGI/src/oneloop/src/avh_olo_bub.f90 (+157/-0)
vendor/IREGI/src/oneloop/src/avh_olo_bub.h90 (+163/-0)
vendor/IREGI/src/oneloop/src/avh_olo_c0.h90 (+200/-0)
vendor/IREGI/src/oneloop/src/avh_olo_comb.f90 (+134/-0)
vendor/IREGI/src/oneloop/src/avh_olo_complex.h90 (+4/-0)
vendor/IREGI/src/oneloop/src/avh_olo_d0.h90 (+309/-0)
vendor/IREGI/src/oneloop/src/avh_olo_ddfun90.f90 (+233/-0)
vendor/IREGI/src/oneloop/src/avh_olo_dilog.f90 (+695/-0)
vendor/IREGI/src/oneloop/src/avh_olo_intrf.h90 (+165/-0)
vendor/IREGI/src/oneloop/src/avh_olo_intrinsic.f90 (+178/-0)
vendor/IREGI/src/oneloop/src/avh_olo_kinds.f90 (+24/-0)
vendor/IREGI/src/oneloop/src/avh_olo_main.f90 (+483/-0)
vendor/IREGI/src/oneloop/src/avh_olo_mpfun90.f90 (+205/-0)
vendor/IREGI/src/oneloop/src/avh_olo_olog.f90 (+290/-0)
vendor/IREGI/src/oneloop/src/avh_olo_print.f90 (+91/-0)
vendor/IREGI/src/oneloop/src/avh_olo_qdcpp.f90 (+262/-0)
vendor/IREGI/src/oneloop/src/avh_olo_qmplx.f90 (+309/-0)
vendor/IREGI/src/oneloop/src/avh_olo_real.h90 (+4/-0)
vendor/IREGI/src/oneloop/src/avh_olo_tri.f90 (+791/-0)
vendor/IREGI/src/oneloop/src/avh_olo_units.f90 (+48/-0)
vendor/IREGI/src/oneloop/src/avh_olo_version.f90 (+47/-0)
vendor/IREGI/src/oneloop/src/avh_olo_wrp01.f90 (+109/-0)
vendor/IREGI/src/oneloop/src/avh_pc.py (+106/-0)
vendor/IREGI/src/oneloop/src/avh_pc_exe.py (+20/-0)
vendor/IREGI/src/oneloop/src/avh_pc_olo.py (+106/-0)
vendor/IREGI/src/pave_reduce.f90 (+5782/-0)
vendor/IREGI/src/qcdloop/Doc/man.ps (+2726/-0)
vendor/IREGI/src/qcdloop/Doc/man.tex (+164/-0)
vendor/IREGI/src/qcdloop/Doc/tot.eps (+390/-0)
vendor/IREGI/src/qcdloop/README (+18/-0)
vendor/IREGI/src/qcdloop/ff/Makefile.old (+95/-0)
vendor/IREGI/src/qcdloop/ff/Makefile.orig (+255/-0)
vendor/IREGI/src/qcdloop/ff/README (+103/-0)
vendor/IREGI/src/qcdloop/ff/aa.h (+2/-0)
vendor/IREGI/src/qcdloop/ff/aacbc.f (+220/-0)
vendor/IREGI/src/qcdloop/ff/aaccc.f (+583/-0)
vendor/IREGI/src/qcdloop/ff/aacinv.f (+186/-0)
vendor/IREGI/src/qcdloop/ff/aaxbx.f (+201/-0)
vendor/IREGI/src/qcdloop/ff/aaxcx.f (+569/-0)
vendor/IREGI/src/qcdloop/ff/aaxdx.f (+976/-0)
vendor/IREGI/src/qcdloop/ff/aaxex.f (+710/-0)
vendor/IREGI/src/qcdloop/ff/aaxinv.f (+273/-0)
vendor/IREGI/src/qcdloop/ff/ff.h (+169/-0)
vendor/IREGI/src/qcdloop/ff/ff2dl2.f (+632/-0)
vendor/IREGI/src/qcdloop/ff/ffabcd.f (+501/-0)
vendor/IREGI/src/qcdloop/ff/ffca0.f (+194/-0)
vendor/IREGI/src/qcdloop/ff/ffcb0.f (+1022/-0)
vendor/IREGI/src/qcdloop/ff/ffcb1.f (+447/-0)
vendor/IREGI/src/qcdloop/ff/ffcb2.f (+400/-0)
vendor/IREGI/src/qcdloop/ff/ffcb2p.f (+526/-0)
vendor/IREGI/src/qcdloop/ff/ffcc0.f (+1250/-0)
vendor/IREGI/src/qcdloop/ff/ffcc0p.f (+638/-0)
vendor/IREGI/src/qcdloop/ff/ffcc1.f (+218/-0)
vendor/IREGI/src/qcdloop/ff/ffcd0.f (+796/-0)
vendor/IREGI/src/qcdloop/ff/ffcdb0.f (+880/-0)
vendor/IREGI/src/qcdloop/ff/ffcdbd.f (+474/-0)
vendor/IREGI/src/qcdloop/ff/ffcel2.f (+782/-0)
vendor/IREGI/src/qcdloop/ff/ffcel3.f (+402/-0)
vendor/IREGI/src/qcdloop/ff/ffcel4.f (+419/-0)
vendor/IREGI/src/qcdloop/ff/ffcel5.f (+575/-0)
vendor/IREGI/src/qcdloop/ff/ffceta.f (+463/-0)
vendor/IREGI/src/qcdloop/ff/ffcli2.f (+720/-0)
vendor/IREGI/src/qcdloop/ff/ffcrr.f (+844/-0)
vendor/IREGI/src/qcdloop/ff/ffcxr.f (+634/-0)
vendor/IREGI/src/qcdloop/ff/ffcxs3.f (+779/-0)
vendor/IREGI/src/qcdloop/ff/ffcxs4.f (+1021/-0)
vendor/IREGI/src/qcdloop/ff/ffcxyz.f (+375/-0)
vendor/IREGI/src/qcdloop/ff/ffdcc0.f (+443/-0)
vendor/IREGI/src/qcdloop/ff/ffdcxs.f (+931/-0)
vendor/IREGI/src/qcdloop/ff/ffdel2.f (+801/-0)
vendor/IREGI/src/qcdloop/ff/ffdel3.f (+374/-0)
vendor/IREGI/src/qcdloop/ff/ffdel4.f (+424/-0)
vendor/IREGI/src/qcdloop/ff/ffdel5.f (+661/-0)
vendor/IREGI/src/qcdloop/ff/ffdel6.f (+787/-0)
vendor/IREGI/src/qcdloop/ff/ffdl2i.f (+342/-0)
vendor/IREGI/src/qcdloop/ff/ffdl5p.f (+444/-0)
vendor/IREGI/src/qcdloop/ff/ffdxc0.f (+1029/-0)
vendor/IREGI/src/qcdloop/ff/fferr.dat (+101/-0)
vendor/IREGI/src/qcdloop/ff/ffini.f (+16/-0)
vendor/IREGI/src/qcdloop/ff/ffinit.f (+1276/-0)
vendor/IREGI/src/qcdloop/ff/ffinit_mine.f (+1278/-0)
vendor/IREGI/src/qcdloop/ff/ffperm5.dat (+327/-0)
vendor/IREGI/src/qcdloop/ff/ffrcvr.f (+29/-0)
vendor/IREGI/src/qcdloop/ff/ffs.h (+39/-0)
vendor/IREGI/src/qcdloop/ff/fftest.f (+622/-0)
vendor/IREGI/src/qcdloop/ff/fftran.f (+944/-0)
vendor/IREGI/src/qcdloop/ff/ffwarn.dat (+294/-0)
vendor/IREGI/src/qcdloop/ff/ffxb0.f (+1171/-0)
vendor/IREGI/src/qcdloop/ff/ffxb1.f (+372/-0)
vendor/IREGI/src/qcdloop/ff/ffxb2p.f (+487/-0)
vendor/IREGI/src/qcdloop/ff/ffxc0.f (+994/-0)
vendor/IREGI/src/qcdloop/ff/ffxc0i.f (+956/-0)
vendor/IREGI/src/qcdloop/ff/ffxc0p.f (+641/-0)
vendor/IREGI/src/qcdloop/ff/ffxc1.f (+256/-0)
vendor/IREGI/src/qcdloop/ff/ffxd0.f (+1005/-0)
vendor/IREGI/src/qcdloop/ff/ffxd0h.f (+897/-0)
vendor/IREGI/src/qcdloop/ff/ffxd0i.f (+187/-0)
vendor/IREGI/src/qcdloop/ff/ffxd0p.f (+814/-0)
vendor/IREGI/src/qcdloop/ff/ffxd1.f (+352/-0)
vendor/IREGI/src/qcdloop/ff/ffxdb0.f (+827/-0)
vendor/IREGI/src/qcdloop/ff/ffxdbd.f (+1047/-0)
vendor/IREGI/src/qcdloop/ff/ffxdi.f (+938/-0)
vendor/IREGI/src/qcdloop/ff/ffxdpv.f (+261/-0)
vendor/IREGI/src/qcdloop/ff/ffxe0.f (+1236/-0)
vendor/IREGI/src/qcdloop/ff/ffxe1.f (+452/-0)
vendor/IREGI/src/qcdloop/ff/ffxf0.f (+508/-0)
vendor/IREGI/src/qcdloop/ff/ffxf0h.f (+1071/-0)
vendor/IREGI/src/qcdloop/ff/ffxli2.f (+640/-0)
vendor/IREGI/src/qcdloop/ff/ffxxyz.f (+856/-0)
vendor/IREGI/src/qcdloop/ff/makefile (+256/-0)
vendor/IREGI/src/qcdloop/ff/npoin.f (+208/-0)
vendor/IREGI/src/qcdloop/ff/npointes.f (+68/-0)
vendor/IREGI/src/qcdloop/ff/npointes.out (+35/-0)
vendor/IREGI/src/qcdloop/ff/spence.f (+48/-0)
vendor/IREGI/src/qcdloop/ff/update (+8/-0)
vendor/IREGI/src/qcdloop/fort.301 (+6/-0)
vendor/IREGI/src/qcdloop/makefile (+42/-0)
vendor/IREGI/src/qcdloop/ql/ChangeLog (+141/-0)
vendor/IREGI/src/qcdloop/ql/auxCD.f (+134/-0)
vendor/IREGI/src/qcdloop/ql/ddilog.f (+76/-0)
vendor/IREGI/src/qcdloop/ql/makefile (+102/-0)
vendor/IREGI/src/qcdloop/ql/qlI1.f (+41/-0)
vendor/IREGI/src/qcdloop/ql/qlI2.f (+54/-0)
vendor/IREGI/src/qcdloop/ql/qlI2fin.f (+67/-0)
vendor/IREGI/src/qcdloop/ql/qlI3.f (+71/-0)
vendor/IREGI/src/qcdloop/ql/qlI3fin.f (+8/-0)
vendor/IREGI/src/qcdloop/ql/qlI3sub.f (+77/-0)
vendor/IREGI/src/qcdloop/ql/qlI4.f (+43/-0)
vendor/IREGI/src/qcdloop/ql/qlI4DNS41.f (+70/-0)
vendor/IREGI/src/qcdloop/ql/qlI4array.f (+60/-0)
vendor/IREGI/src/qcdloop/ql/qlI4fin.f (+8/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub0m.f (+110/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub1m.f (+101/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub2m.f (+64/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub2ma.f (+50/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub2mo.f (+58/-0)
vendor/IREGI/src/qcdloop/ql/qlI4sub3m.f (+60/-0)
vendor/IREGI/src/qcdloop/ql/qlLi2omprod.f (+53/-0)
vendor/IREGI/src/qcdloop/ql/qlLi2omrat.f (+18/-0)
vendor/IREGI/src/qcdloop/ql/qlLi2omx.f (+28/-0)
vendor/IREGI/src/qcdloop/ql/qlLi2omx2.f (+27/-0)
vendor/IREGI/src/qcdloop/ql/qlYcalc.f (+99/-0)
vendor/IREGI/src/qcdloop/ql/qlbox1.f (+42/-0)
vendor/IREGI/src/qcdloop/ql/qlbox10.f (+59/-0)
vendor/IREGI/src/qcdloop/ql/qlbox11.f (+89/-0)
vendor/IREGI/src/qcdloop/ql/qlbox12.f (+99/-0)
vendor/IREGI/src/qcdloop/ql/qlbox13.f (+140/-0)
vendor/IREGI/src/qcdloop/ql/qlbox14.f (+60/-0)
vendor/IREGI/src/qcdloop/ql/qlbox15.f (+118/-0)
vendor/IREGI/src/qcdloop/ql/qlbox16.f (+105/-0)
vendor/IREGI/src/qcdloop/ql/qlbox2.f (+42/-0)
vendor/IREGI/src/qcdloop/ql/qlbox3.f (+65/-0)
vendor/IREGI/src/qcdloop/ql/qlbox4.f (+52/-0)
vendor/IREGI/src/qcdloop/ql/qlbox5.f (+78/-0)
vendor/IREGI/src/qcdloop/ql/qlbox6.f (+39/-0)
vendor/IREGI/src/qcdloop/ql/qlbox7.f (+43/-0)
vendor/IREGI/src/qcdloop/ql/qlbox8.f (+56/-0)
vendor/IREGI/src/qcdloop/ql/qlbox9.f (+47/-0)
vendor/IREGI/src/qcdloop/ql/qlcLi2omx2.f (+28/-0)
vendor/IREGI/src/qcdloop/ql/qlcLi2omx3.f (+33/-0)
vendor/IREGI/src/qcdloop/ql/qlconstants.f (+16/-0)
vendor/IREGI/src/qcdloop/ql/qlfndd.f (+37/-0)
vendor/IREGI/src/qcdloop/ql/qlfunctions.f (+90/-0)
vendor/IREGI/src/qcdloop/ql/qlinit.f (+15/-0)
vendor/IREGI/src/qcdloop/ql/qlkfn.f (+51/-0)
vendor/IREGI/src/qcdloop/ql/qllnomrat4.f (+22/-0)
vendor/IREGI/src/qcdloop/ql/qllnrat.f (+18/-0)
vendor/IREGI/src/qcdloop/ql/qlonshellcutoff.f (+2/-0)
vendor/IREGI/src/qcdloop/ql/qlratgam.f (+22/-0)
vendor/IREGI/src/qcdloop/ql/qlratreal.f (+30/-0)
vendor/IREGI/src/qcdloop/ql/qlsnglsort.f (+15/-0)
vendor/IREGI/src/qcdloop/ql/qlspencer.f (+36/-0)
vendor/IREGI/src/qcdloop/ql/qltri1.f (+10/-0)
vendor/IREGI/src/qcdloop/ql/qltri2.f (+20/-0)
vendor/IREGI/src/qcdloop/ql/qltri3.f (+33/-0)
vendor/IREGI/src/qcdloop/ql/qltri4.f (+24/-0)
vendor/IREGI/src/qcdloop/ql/qltri5.f (+12/-0)
vendor/IREGI/src/qcdloop/ql/qltri6.f (+47/-0)
vendor/IREGI/src/qcdloop/ql/qltrisort.f (+42/-0)
vendor/IREGI/src/qcdloop/ql/qlxpicheck.f (+21/-0)
vendor/IREGI/src/qcdloop/ql/qlzero.f (+23/-0)
vendor/IREGI/src/qcdloop/test.f (+995/-0)
vendor/IREGI/src/qcdloop/test.out (+41/-0)
vendor/IREGI/src/si_reduce.f90 (+1244/-0)
vendor/IREGI/src/special_fun.f90 (+651/-0)
vendor/IREGI/src/ti_reduce.f90 (+669/-0)
Text conflict in UpdateNotes.txt
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/2.1.2-lhapdf6
Reviewer Review Type Date Requested Status
Olivier Mattelaer Needs Fixing
Review via email: mp+231518@code.launchpad.net

Description of the change

enable lhapdf6

To post a comment you must log in.
Revision history for this message
Valentin Hirschi (valentin-hirschi) wrote :

Shouldn't this be merged to 2.2.0 instead?

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

i don’t know, which one will be the next release?

On 20 Aug 2014, at 11:53, Valentin Hirschi <email address hidden> wrote:

> Shouldn't this be merged to 2.2.0 instead?
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.1.2-lhapdf6/+merge/231518
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/2.1.3.

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

Hi,

2.1.3 is for bug fixing only. If we need to rush a release for political reason.
So this should be for 2.2.0

Note that I can not test for lhapdf6 since I can't install lhapdf6 (and do not want to change the configuration of the machime for that).

I have test however the lhapdf5 one, and it doesn't work ...
Note sure what the problem is but he code didn't recognize correctly the lhapdf mode.

If I do the following it works nicely:

generate p p > e+ e-
launch
set pdlabel lhapdf
set lhaid 10772

I'm however worry about some misterious print statement which not always appear multiple times.
This might indicate a side effect and/or that the pdf change during the run...

Here is the log where the see the line twice.

INFO: Using LHAPDF v5.9.1 interface for PDFs
write compile file for card: /Users/omatt/Documents/eclipse/2.1.2-lhapdf6/PROC_sm_0/Cards/param_card.dat
run_card missed argument xmtcentral. Takes default: 0.0
run_card missed argument d. Takes default: 1.0
run_card missed argument gridrun. Takes default: False
run_card missed argument fixed_couplings. Takes default: True
Using random number seed offset = 21
INFO: Running Survey
Creating Jobs
Working on SubProcesses
    P0_qq_ll
INFO: Idle: 0, Running: 1, Completed: 0 [ current time: 12h15 ]
DEBUG: Found too many jobs. Recovering
INFO: Idle: 0, Running: 0, Completed: 1 [ 5s ]
INFO: End survey
refine 10000
INFO: compile directory
INFO: Using LHAPDF v5.9.1 interface for PDFs <------ WHY HERE?

I guess the main question is why is there also twice the line:
INFO: compile directory

Now they are for sure a side effect since, If I run the following:

Then the two first run go trough but the latest returns 0 cross-section:
The log indicate the following line:
 Unimplemented distribution= lhapdf
 Implemented are:
So clearly the switch between the mode are not working in both direction.

For lhapdf6 in itself, I will abstain. My understanding was that Paolo was going to check that part, and since I didn't hear about him that's why I didn't include that part in 2.1.2.

Cheers,

Olivier

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

Ciao Olivier,
but are these problems related to the lhapdf6 branch or they are also there in 2.1.2?
The changes i did in lhapdf6 are very minimal…
I’ll have a look anyway.
Can oyu please check that if one does one run with internal pdfs and the next one with lhapdf, the libpdf and libgeneric are correctly recompiled with the lhapdf related wrappers?
It seems not to be the case for madevent runs…
I’ll have a look later.

Cheers,

Marco

On 21 Aug 2014, at 13:49, Olivier Mattelaer <email address hidden> wrote:

> Review: Needs Fixing
>
> Hi,
>
> 2.1.3 is for bug fixing only. If we need to rush a release for political reason.
> So this should be for 2.2.0
>
> Note that I can not test for lhapdf6 since I can't install lhapdf6 (and do not want to change the configuration of the machime for that).
>
> I have test however the lhapdf5 one, and it doesn't work ...
> Note sure what the problem is but he code didn't recognize correctly the lhapdf mode.
>
> If I do the following it works nicely:
>
> generate p p > e+ e-
> launch
> set pdlabel lhapdf
> set lhaid 10772
>
> I'm however worry about some misterious print statement which not always appear multiple times.
> This might indicate a side effect and/or that the pdf change during the run...
>
> Here is the log where the see the line twice.
>
> INFO: Using LHAPDF v5.9.1 interface for PDFs
> write compile file for card: /Users/omatt/Documents/eclipse/2.1.2-lhapdf6/PROC_sm_0/Cards/param_card.dat
> run_card missed argument xmtcentral. Takes default: 0.0
> run_card missed argument d. Takes default: 1.0
> run_card missed argument gridrun. Takes default: False
> run_card missed argument fixed_couplings. Takes default: True
> Using random number seed offset = 21
> INFO: Running Survey
> Creating Jobs
> Working on SubProcesses
> P0_qq_ll
> INFO: Idle: 0, Running: 1, Completed: 0 [ current time: 12h15 ]
> DEBUG: Found too many jobs. Recovering
> INFO: Idle: 0, Running: 0, Completed: 1 [ 5s ]
> INFO: End survey
> refine 10000
> INFO: compile directory
> INFO: Using LHAPDF v5.9.1 interface for PDFs <------ WHY HERE?
>
> I guess the main question is why is there also twice the line:
> INFO: compile directory
>
>
> Now they are for sure a side effect since, If I run the following:
>
> Then the two first run go trough but the latest returns 0 cross-section:
> The log indicate the following line:
> Unimplemented distribution= lhapdf
> Implemented are:
> So clearly the switch between the mode are not working in both direction.
>
>
> For lhapdf6 in itself, I will abstain. My understanding was that Paolo was going to check that part, and since I didn't hear about him that's why I didn't include that part in 2.1.2.
>
> Cheers,
>
> Olivier
>
>
>
> --
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.1.2-lhapdf6/+merge/231518
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/mg5amcnlo/2.1.3.

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

Ciao Olivier,
I just managed to install lhapdf6 (v 6.1.4) on my mac, with the —disable-python flag when you configure it…
It is working…
I will now update the lhapdf6 branch with the latest 2.2.0 and check out the problems you were mentioning…
Cheers,

Marco

On 21 Aug 2014, at 14:01, marco zaro <email address hidden> wrote:

> Ciao Olivier,
> but are these problems related to the lhapdf6 branch or they are also there in 2.1.2?
> The changes i did in lhapdf6 are very minimal…
> I’ll have a look anyway.
> Can oyu please check that if one does one run with internal pdfs and the next one with lhapdf, the libpdf and libgeneric are correctly recompiled with the lhapdf related wrappers?
> It seems not to be the case for madevent runs…
> I’ll have a look later.
>
> Cheers,
>
> Marco
>
>
>
> On 21 Aug 2014, at 13:49, Olivier Mattelaer <email address hidden> wrote:
>
>> Review: Needs Fixing
>>
>> Hi,
>>
>> 2.1.3 is for bug fixing only. If we need to rush a release for political reason.
>> So this should be for 2.2.0
>>
>> Note that I can not test for lhapdf6 since I can't install lhapdf6 (and do not want to change the configuration of the machime for that).
>>
>> I have test however the lhapdf5 one, and it doesn't work ...
>> Note sure what the problem is but he code didn't recognize correctly the lhapdf mode.
>>
>> If I do the following it works nicely:
>>
>> generate p p > e+ e-
>> launch
>> set pdlabel lhapdf
>> set lhaid 10772
>>
>> I'm however worry about some misterious print statement which not always appear multiple times.
>> This might indicate a side effect and/or that the pdf change during the run...
>>
>> Here is the log where the see the line twice.
>>
>> INFO: Using LHAPDF v5.9.1 interface for PDFs
>> write compile file for card: /Users/omatt/Documents/eclipse/2.1.2-lhapdf6/PROC_sm_0/Cards/param_card.dat
>> run_card missed argument xmtcentral. Takes default: 0.0
>> run_card missed argument d. Takes default: 1.0
>> run_card missed argument gridrun. Takes default: False
>> run_card missed argument fixed_couplings. Takes default: True
>> Using random number seed offset = 21
>> INFO: Running Survey
>> Creating Jobs
>> Working on SubProcesses
>> P0_qq_ll
>> INFO: Idle: 0, Running: 1, Completed: 0 [ current time: 12h15 ]
>> DEBUG: Found too many jobs. Recovering
>> INFO: Idle: 0, Running: 0, Completed: 1 [ 5s ]
>> INFO: End survey
>> refine 10000
>> INFO: compile directory
>> INFO: Using LHAPDF v5.9.1 interface for PDFs <------ WHY HERE?
>>
>> I guess the main question is why is there also twice the line:
>> INFO: compile directory
>>
>>
>> Now they are for sure a side effect since, If I run the following:
>>
>> Then the two first run go trough but the latest returns 0 cross-section:
>> The log indicate the following line:
>> Unimplemented distribution= lhapdf
>> Implemented are:
>> So clearly the switch between the mode are not working in both direction.
>>
>>
>> For lhapdf6 in itself, I will abstain. My understanding was that Paolo was going to check that part, and since I didn't hear about him that's why I didn't include that part in 2.1.2.
>>
>> Cheers,
>>
>> Olivier
>>
>>
>>
>> --
>...

Read more...

271. By marco zaro

merged with 2.2.0 r303

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

Hi Olivier,
btw, it runs smoothly for madevent, with this output (the lhapdf print statement occurs only once)
Cheers,

Marco

INFO: load configuration from /Users/marcozaro/Physics/MadGraph/2.1.2-lhapdf6/PROC_sm_0/Cards/me5_configuration.txt
INFO: load configuration from /Users/marcozaro/Physics/MadGraph/2.1.2-lhapdf6/input/mg5_configuration.txt
INFO: load configuration from /Users/marcozaro/Physics/MadGraph/2.1.2-lhapdf6/PROC_sm_0/Cards/me5_configuration.txt
generate_events run_01
The following switches determine which programs are run:
 1 Run the pythia shower/hadronization: pythia=NOT INSTALLED
 2 Run PGS as detector simulator: pgs=NOT INSTALLED
 3 Run Delphes as detector simulator: delphes=NOT INSTALLED
 4 Decay particles with the MadSpin module: madspin=OFF
 5 Add weight to events based on coupling parameters: reweight=OFF
  Either type the switch number (1 to 5) to change its default setting,
  or set any switch explicitly (e.g. type 'madspin=ON' at the prompt)
  Type '0', 'auto', 'done' or just press enter when you are done.
 [0, 4, 5, auto, done, madspin=ON, madspin=OFF, madspin, reweight=ON, ... ][60s to answer]
>
Do you want to edit a card (press enter to bypass editing)?
  1 / param : param_card.dat
  2 / run : run_card.dat
 you can also
   - enter the path to a valid card or banner.
   - use the 'set' command to modify a parameter directly.
     The set option works only for param_card and run_card.
     Type 'help set' for more information on this command.
   - call an external program (ASperGE/MadWidth/...).
     Type 'help' for the list of available command
 [0, done, 1, param, 2, run, enter path][60s to answer]
>set pdlabel lhapdf
INFO: modify parameter pdlabel of the run_card.dat to lhapdf
Do you want to edit a card (press enter to bypass editing)?
  1 / param : param_card.dat
  2 / run : run_card.dat
 you can also
   - enter the path to a valid card or banner.
   - use the 'set' command to modify a parameter directly.
     The set option works only for param_card and run_card.
     Type 'help set' for more information on this command.
   - call an external program (ASperGE/MadWidth/...).
     Type 'help' for the list of available command
 [0, done, 1, param, 2, run, enter path]
>
Generating 10000 events with run name run_01
survey run_01
INFO: compile directory
INFO: Using LHAPDF v6.1.4 interface for PDFs
INFO: Trying to download NNPDF23_nlo_as_0119
NNPDF23_nlo_as_0119.tar.gz: 20.6 MB [100.0%]
INFO: NNPDF23_nlo_as_0119 successfully downloaded and stored in /Users/marcozaro/Physics/LHAPDF-6/share/LHAPDF
write compile file for card: /Users/marcozaro/Physics/MadGraph/2.1.2-lhapdf6/PROC_sm_0/Cards/param_card.dat
run_card missed argument xmtcentral. Takes default: 0.0
run_card missed argument d. Takes default: 1.0
run_card missed argument gridrun. Takes default: False
run_card missed argument fixed_couplings. Takes default: True
Using random number seed offset = 21
INFO: Running Survey
Creating Jobs
Working on SubProcesses
    P0_qq_lvl
INFO: Idle: 0, Running: 1, Completed: 0 [ current time: 15h27 ]
...

Read more...

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

For the print statement, it was happening only once (the very first time). No idea why...
I guess that we can forget that proble,

I realize that I forget to put the command that I use for the second bug (the critical one).

generate p p > e+ e-
launch
set pdlabel lhapdf
set lhaid 70251
launch
set pdlabel cteq6l1
launch
set pdlabel lhapdf

actually the command crash as well:
generate p p > e+ e-
launch
set pdlabel cteq6l1
launch
set pdlabel lhapd
set lhaid 70251

Cheers,

Olivier

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

Ciao Olivier,
this crash is there in 2.1.2 as well
it is related to the fact that if you run first with internal pdfs, then a
second time with the lhapdf ones, some files in Source need to be
recompiled in order to have LHAPDF working.
The error

 Unimplemented distribution= lhapdf
 Implemented are:
mrs02nl,mrs02nn,mrs0119,mrs0117,mrs0121,mrs01_j,mrs99_1,mrs99_2,mrs99_3,mrs99_4,mrs99_5,mrs99_6,mrs99_7,mrs99_8,mrs99_9,mrs9910,mrs9911,mrs9912,mrs98z1,mrs98z2,mrs98z3,mrs98z4,mrs98z5,mrs98ht,mrs98l1,mrs98l2,mrs98l3,mrs98l4,mrs98l5,cteq3_m,cteq3_l,cteq3_d,cteq4_m,cteq4_d,cteq4_l,cteq4a1,cteq4a2,cteq4a3,cteq4a4,cteq4a5,cteq4hj,cteq4lq,cteq5_m,cteq5_d,cteq5_l,cteq5hj,cteq5hq,cteq5f3,cteq5f4,cteq5m1,ctq5hq1,cteq5l1,cteq6_m,cteq6_d,cteq6_l,cteq6l1,nn23lo,nn23lo1,nn23nlo,

comes from PDF/pdfwrap.f, which should not be compiled and linked if one is
using lhapdf.

in the NLO Source makefile, there is 'clean4pdf' which removes the existing
libraries

clean4pdf:

        rm -f ../lib/libpdf.a

        rm -f ../lib/libgeneric.a

and it is not there in the LO one.
It is called at every run, when Source is compiled.

This should fix the madevent behaviour.

Cheers,

Marco

Marco Zaro

On Thu, Aug 21, 2014 at 4:17 PM, Olivier Mattelaer <
<email address hidden>> wrote:

>
> For the print statement, it was happening only once (the very first time).
> No idea why...
> I guess that we can forget that proble,
>
> I realize that I forget to put the command that I use for the second bug
> (the critical one).
>
> generate p p > e+ e-
> launch
> set pdlabel lhapdf
> set lhaid 70251
> launch
> set pdlabel cteq6l1
> launch
> set pdlabel lhapdf
>
> actually the command crash as well:
> generate p p > e+ e-
> launch
> set pdlabel cteq6l1
> launch
> set pdlabel lhapd
> set lhaid 70251
>
>
> Cheers,
>
> Olivier
> --
>
> https://code.launchpad.net/~maddevelopers/mg5amcnlo/2.1.2-lhapdf6/+merge/231518
> Your team MadDevelopers is subscribed to branch
> lp:~maddevelopers/mg5amcnlo/2.1.3.
>

272. By marco zaro

the pdf set is installed locally only for v5 (for v6 an error is raised)

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

Hi Marco,

>it is related to the fact that if you run first with internal pdfs, then a
second time with the lhapdf ones, some files in Source need to be
recompiled in order to have LHAPDF working.

Did you fix this? Tell me when it's done and I will retry.

Cheers,

Olivier

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

Ok I put this review in rejected, since they are a second proposal directly in 2.2.0

Cheers,

Olivier

Unmerged revisions

275. By Olivier Mattelaer

add a nice error message if the pdlabel is not valid (doesn't need to dig into the fortran log file anymore).

274. By marco zaro

merged with 2.2.0 r307

273. By marco zaro

fixed bug related to madevent

the commands
    generate p p > e+ e-
    launch
    set pdlabel cteq6l1
    launch
    set pdlabel lhapdf
    set lhaid 21100
now work

272. By marco zaro

the pdf set is installed locally only for v5 (for v6 an error is raised)

271. By marco zaro

merged with 2.2.0 r303

270. By Marco Zaro <email address hidden>

fix in the madevent interface, lhapdf6 should be working for LO as well

269. By Marco Zaro <email address hidden>

imerged with 2.1.2 r304

------------- th 2.1.2This line and the following will be ignored --------------

modified:
  Template/LO/Source/PDF/pdf_lhapdf.f
  Template/NLO/MCatNLO/srcCommon/myfastjetfortran.cc
  Template/NLO/Source/PDF/pdf_lhapdf.f
  Template/NLO/SubProcesses/cuts.f
  Template/NLO/SubProcesses/fastjet_wrapper.f
  Template/NLO/SubProcesses/fastjetfortran_madfks_core.cc
  Template/NLO/SubProcesses/fastjetfortran_madfks_full.cc
  madgraph/various/cluster.py
unknown:
  --auto
  ME5_debug@
  PROCNLO_loop_sm_0/
  PROCNLO_loop_sm_1/
  PROC_sm_0/
  additional_command
  py.py
  input/mg5_configuration.txt
  models/loop_sm/model.pkl
  models/sm/model.pkl
  vendor/CutTools/includects/
  vendor/StdHEP/log.mcfio.5938
  vendor/StdHEP/log.stdhep.6496
pending merges:
  Marco Zaro 2014-06-19 fix to push 300
    Marco Zaro 2014-06-19 [merge] merged with 2.1.2-fastjet-eta
    Marco Zaro 2014-06-18 compilation errors fixed in
    Marco Zaro 2014-06-17 the fastjet functions now can directly return tje jets within etamax.
    Rikkert Frederix 2014-06-18 [merge] To be sure to have a correct termination when running on a cluster,
    Rikkert Frederix 2014-06-17 To determine if a cluster run finished correctly, also check that the

268. By Marco Zaro <email address hidden>

merged with 2.1.2 r301

267. By Marco Zaro <email address hidden>

fixed case in srcHerwig/jimmy.f

266. By Marco Zaro <email address hidden>

fixed lhapdf related commands not to copy a pdf set if it exists

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Template/LO/Source/make_opts'
2--- Template/LO/Source/make_opts 2014-01-07 10:50:42 +0000
3+++ Template/LO/Source/make_opts 2014-08-26 07:56:12 +0000
4@@ -1,14 +1,15 @@
5 # Environment variables
6
7 ifeq ($(origin FFLAGS),undefined)
8- FFLAGS= -O -w -fbounds-check
9+ FFLAGS= -O -w -fbounds-check -fPIC
10 #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
11 endif
12 FFLAGS+= -ffixed-line-length-132
13
14 # Set FC unless it's defined by an environment variable
15 ifeq ($(origin FC),default)
16- FC=gfortran
17+# FC=gfortran
18+ FC=gfortran
19 endif
20
21 # Options: dynamic, lhapdf
22@@ -17,6 +18,12 @@
23
24 # Option dynamic
25
26+ifeq ($(UNAME), Darwin)
27+ dylibext=dylib
28+else
29+ dylibext=so
30+endif
31+
32 ifdef dynamic
33 ifeq ($(UNAME), Darwin)
34 libext=dylib
35
36=== modified file 'Template/NLO/Cards/shower_card.dat'
37--- Template/NLO/Cards/shower_card.dat 2014-07-01 13:57:28 +0000
38+++ Template/NLO/Cards/shower_card.dat 2014-08-26 07:56:12 +0000
39@@ -1,81 +1,111 @@
40-################################################################################
41-#
42-# This file contains the settings for partons showers to be used in aMC@NLO
43-# mind the format: variable = name # comment
44-#
45-################################################################################
46-#
47-# SHOWER SETTINGS:
48-#
49-nevents = -1 # number of events to shower. If negative, shower all events
50-nsplit_jobs= 1 # number of jobs to be run on parallel or on a cluster (<100)
51-combine_td = T # combine or not the td files if splitting
52-ue_enabled = F # underlying event on (T)/ off (F) (is MSTP(81) 0/1 for PY6)
53-pdfcode = 0 # pdf code: 0 = internal pdf, 1 = same as NLO, other = lhaglue
54-hadronize = T # hadronization on/off (is MSTP(111) 0/1 for PY6)
55-maxprint = 2 # maximum number of events to be printed in the log
56-maxerrs = 0.1 # maximum tolerated fraction of errors
57-b_stable = F # b hadrons are stable
58-pi_stable = T # pi0's are stable
59-wp_stable = F # w+'s are stable
60-wm_stable = F # w-'s are stable
61-z_stable = F # z0's are stable
62-h_stable = F # Higgs bosons are stable
63-tap_stable = F # tau+'s are stable
64-tam_stable = F # tau-'s are stable
65-mup_stable = F # mu+'s are stable
66-mum_stable = F # mu-'s are stable
67-rnd_seed = 0 # random seed (0 is default)
68-rnd_seed2 = 0 # 2nd random seed (only for HW6, 0 is default)
69-lambda_5 = -1 # lambda_5 value, -1 for default
70-b_mass = -1 # b mass, -1 for default
71-is_4lep = F # true if it is 4 lepton production (only for PY6)
72-is_bbar = F # true if it is b-b~ production (only for HW6)
73-modbos_1 = 5 # dec mode for boson 1 (only for HW6, overridden by DM_ below)
74-modbos_2 = 5 # dec mode for boson 2 (only for HW6, overridden by DM_ below)
75-################################################################################
76-# DECAY CHANNELS
77-# Write down the decay channels for the resonances, to be performed by the shower.
78-# The syntax (for a two-body decay) is
79-# DM_I = M > D1 D2 @ BR @ ME
80-# where I = 1, ..., 99, M is the decaying resonance, D1, D2 are the decay products
81-# (up to D5 if such a decay is supported by the shower), BR is the branching ratio
82-# (only used by the HERWIG6 shower, ignored otherwise) and ME is the type of matrix
83-# element to be used in the decay (only used by HERWIG6, ignored otherwise).
84-# BR's are correctly understood by HERWIG6 only if they add up to one and only if
85-# no more than three modes are required for a given resonance.
86-# ME corresponds to the third entry of subroutine HWMODK, see the relevant manual.
87-# Examples of syntax:
88-# Z -> e+ e- or mu+ mu- with BR = 0.5 each
89-# DM_1 = 23 > -11 11 @ 0.5d0 @ 100
90-# DM_2 = 23 > -13 13 @ 0.5d0 @ 100
91-# H -> tau+ tau- with BR = 1
92-# DM_3 = 25 > -15 15 @ 1.0d0 @ 0
93-# t -> nu_e e+ b @ 1d0
94-# DM_4 = 6 > 12 -11 5 @ 1d0 @ 100
95-# WARNING: for HERWIG6 the order of decay products in >2-body decays IS RELEVANT.
96-# WARNING: 1 -> n decays (with n > 2) are handled by PYTHIA6 and PYTHIA8 through
97-# a sequence of 1 -> 2 decays.
98-################################################################################
99+#***********************************************************************
100+# MadGraph5_aMC@NLO *
101+# *
102+# shower_card.dat aMC@NLO *
103+# *
104+# This file is used to set the parameters for the shower. *
105+# *
106+# Some notation/conventions: *
107+# *
108+# Lines starting with a hash (#) are info or comments *
109+# *
110+# mind the format: variable = value # comment *
111+#***********************************************************************
112+#
113+#****************
114+# Shower settings
115+#****************
116+#
117+#***********************************************************************
118+# Number of events, jobs, errors, and random seeds *
119+#***********************************************************************
120+nevents = -1 # N evts to shower (< 0 = all)
121+nsplit_jobs = 1 # N jobs to run in parallel (< 100!!)
122+combine_td = T # combine the topdrawer files if nsplit_jobs > 1
123+maxprint = 2 # N evts to print in the log
124+maxerrs = 0.1 # max fraction of errors
125+rnd_seed = 0 # 1st random seed (0 = default)
126+rnd_seed2 = 0 # 2nd random seed (0 = default) !ONLY FOR HWERIG6!
127+#***********************************************************************
128+# PDFs and non-perturbative modelling *
129+#***********************************************************************
130+pdfcode = 0 # 0 = internal, 1 = same as NLO, other = lhaglue
131+ue_enabled = F # underlying event
132+hadronize = T # hadronisation on/off !IGNORED BY HERWIG6!
133+lambda_5 = -1 # Lambda_5 (< 0 = default) !IGNORED BY PYTHIA8!
134+#***********************************************************************
135+# Stable or unstable particles *
136+#***********************************************************************
137+b_stable = F # set B hadrons stable
138+pi_stable = T # set pi0's stable
139+wp_stable = F # set w+'s stable
140+wm_stable = F # set w-'s stable
141+z_stable = F # set z0's stable
142+h_stable = F # set Higgs' stable
143+tap_stable = F # set tau+'s stable
144+tam_stable = F # set tau-'s stable
145+mup_stable = F # set mu+'s stable
146+mum_stable = F # set mu-'s stable
147+#***********************************************************************
148+# Mass of the b quark *
149+#***********************************************************************
150+b_mass = -1 # if < 0 = read from SubProcesses/MCmasses_*.inc
151+#***********************************************************************
152+# Special settings *
153+#***********************************************************************
154+is_4lep = F # T if 4-lepton production !ONLY FOR PYTHIA6!
155+is_bbar = F # T if bb~ production !ONLY FOR HERWIG6!
156+#***********************************************************************
157+# Decay channels *
158+# Write down the decay channels for the resonances, to be performed by *
159+# the shower. *
160+# The syntax (for a two-body decay) is *
161+# DM_I = M > D1 D2 @ BR @ ME *
162+# where I < 100, M is the decaying resonance, D1, D2 are the decay *
163+# products (up to D5 if such a decay is supported by the shower), BR *
164+# is the branching ratio (only used by the HERWIG6 shower, ignored *
165+# otherwise) and ME is the type of matrix element to be used in the *
166+# decay (only used by HERWIG6, ignored otherwise). *
167+# BR's are correctly understood by HERWIG6 only if they add up to 1 *
168+# and only if no more than three modes are required for a given *
169+# resonance. *
170+# ME corresponds to the third entry of subroutine HWMODK, see the *
171+# relevant manual. *
172+# *
173+# WARNING: in HERWIG6, the order of decay products in > 2-body decays *
174+# IS RELEVANT. *
175+# WARNING: in PYTHIA6, turning hadronisation off disables top decays *
176+# WARNING: in PYTHIA6 and PYTHIA8, 1 -> n decays (with n > 2) are *
177+# handled through a sequence of 1 -> 2 decays. *
178+# *
179+# Examples of syntax: *
180+# Z -> e+ e- or mu+ mu- with BR = 0.5 each *
181+# DM_1 = 23 > -11 11 @ 0.5d0 @ 100 *
182+# DM_2 = 23 > -13 13 @ 0.5d0 @ 100 *
183+# H -> tau+ tau- with BR = 1 *
184+# DM_3 = 25 > -15 15 @ 1.0d0 @ 0 *
185+# t -> nu_e e+ b with BR = 1 (HERWIG) *
186+# DM_4 = 6 > 12 -11 5 @ 1d0 @ 100 *
187+# t -> nu_e e+ b with BR = 1 (PYTHIA) *
188+# DM_5 = 6 > 24 5 @ 1d0 @ 100 *
189+# DM_6 = 24 > 12 -11 @ 1d0 @ 100 *
190+#***********************************************************************
191
192-################################################################################
193-#
194-# EXTRA LIBRARIES/ANALYSES
195-# The following lines need to be changed if the user does not want to create the
196-# StdHEP/HEPMC file, but to directly run his/her own analyse.
197-# Please note that this works only for HW6 and PY6, and that the analysis should
198-# be in the HWAnalyzer/ (or PYAnalyzer/) folder.
199-# Please use files in those folders as examples.
200-# "None" and an empty value are equivalent.
201-#
202-################################################################################
203-EXTRALIBS = stdhep Fmcfio # Needed extra-libraries (not LHAPDF).
204- # Default: "stdhep Fmcfio"
205-EXTRAPATHS = ../lib # Path to the extra-libraries.
206- # Default: "../lib"
207-INCLUDEPATHS= # Path to the dirs containing header files neede by C++.
208- # Directory names are separated by white spaces
209-ANALYSE = # User's analysis and histogramming routines
210- # (please use .o as extension and use spaces to separate files)
211+#***********************************************************************
212+# Extra Libraries/analyses *
213+# The following lines need to be changed if the user does not want to *
214+# create a StdHEP/HepMC file, but to directly run an own analysis (to *
215+# be placed in HWAnalyzer or analogous MCatNLO subfolders). *
216+# Please use files in those folders as examples. *
217+#***********************************************************************
218+EXTRALIBS = stdhep Fmcfio # Extra-libraries (not LHAPDF)
219+ # Default: "stdhep Fmcfio"
220+EXTRAPATHS = ../lib # Path to the extra-libraries
221+ # Default: "../lib"
222+INCLUDEPATHS = # Path to header files needed by c++
223+ # Dir names separated by white spaces
224+ANALYSE = # User's analysis and histogramming
225+ # routines (please use .o as extension
226+ # and use spaces to separate files)
227
228
229
230=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script'
231--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-06-19 07:02:07 +0000
232+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-08-26 07:56:12 +0000
233@@ -316,7 +316,6 @@
234 '$PART1' '$PART2' ! hadron types
235 $beammom1 $beammom2 ! beam momenta
236 $LHSOFT ! Underlying event on (.TRUE.) or off (.FALSE.)
237- $MODBOS_1 $MODBOS_2 ! Gauge boson decay modes
238 EOF
239 if [ $pdftype = 1 ]
240 then
241
242=== modified file 'Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f'
243--- Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f 2014-06-06 09:51:20 +0000
244+++ Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f 2014-08-26 07:56:12 +0000
245@@ -69,9 +69,6 @@
246 IF(.NOT.LHSOFT)WRITE(*,*)'Underlying event WILL NOT be generated'
247 WRITE(*,*)
248 C
249- WRITE(*,*)'Enter decay modes for gauge bosons'
250- READ(*,*)MODBOS(1),MODBOS(2)
251-C
252 IF(LHSOFT.AND.IPDF.NE.1)THEN
253 WRITE(*,*)' '
254 WRITE(*,*)'Underlying event requires external PDF sets'
255
256=== removed file 'Template/NLO/Source/make_opts'
257--- Template/NLO/Source/make_opts 2014-06-24 08:40:18 +0000
258+++ Template/NLO/Source/make_opts 1970-01-01 00:00:00 +0000
259@@ -1,86 +0,0 @@
260-# Environment variables
261-
262-ifeq ($(origin FFLAGS),undefined)
263- #FFLAGS= -O -w
264- FFLAGS = -O -fno-automatic
265- #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
266-endif
267-
268-ifeq ($(origin CXXFLAGS),undefined)
269- #CXXFLAGS= -g
270- CXXFLAGS = -O
271-endif
272-
273-ifeq ($(origin CFLAGS),undefined)
274- #CFLAGS= -g
275- CFLAGS = -O
276-endif
277-
278-
279-
280-FFLAGS+= -ffixed-line-length-132
281-
282-# Set FC unless it's defined by an environment variable
283-ifeq ($(origin FC),default)
284-# FC=g77
285- FC=gfortran
286-endif
287-
288-# Set CXX unless it's defined by an environment variable
289-ifeq ($(origin CXX),default)
290- CXX=g++
291-endif
292-
293-# Options: dynamic, lhapdf
294-
295-UNAME := $(shell uname)
296-
297-# Option dynamic
298-
299-ifdef dynamic
300- ifeq ($(UNAME), Darwin)
301- libext=dylib
302- FFLAGS+= -fno-common
303- LDFLAGS += -bundle
304- define CREATELIB
305- $(FC) -dynamiclib -undefined dynamic_lookup -o $(1) $(2)
306- endef
307- else
308- libext=so
309- FFLAGS+= -fPIC
310- LDFLAGS += -shared
311- define CREATELIB
312- $(FC) $(FFLAGS) $(LDFLAGS) -o $(1) $(2)
313- endef
314- endif
315-else
316- libext=a
317- define CREATELIB
318- $(AR) cru $(1) $(2)
319- ranlib $(1)
320- endef
321-endif
322-
323-# Option lhapdf
324-
325-ifdef lhapdf
326- alfas_functions=alfas_functions_lhapdf
327- lhapdf=-lLHAPDF -lstdc++
328- reweight_xsec_events_pdf_dummy=
329-else
330- alfas_functions=alfas_functions
331- lhapdf=
332- reweight_xsec_events_pdf_dummy=reweight_xsec_events_pdf_dummy.o
333-endif
334-
335-# Madloop
336-ifeq ($(has_loops),true)
337- libmadloop=libMadLoop.a
338- libcuttools=-lcts
339-else
340- libmadloop=
341- libcuttools=
342-endif
343-
344-# OLP (virtuals) necessary link
345-libOLP=
346
347=== added file 'Template/NLO/Source/make_opts.inc'
348--- Template/NLO/Source/make_opts.inc 1970-01-01 00:00:00 +0000
349+++ Template/NLO/Source/make_opts.inc 2014-08-26 07:56:12 +0000
350@@ -0,0 +1,86 @@
351+# Environment variables
352+
353+ifeq ($(origin FFLAGS),undefined)
354+ #FFLAGS= -O -w
355+ FFLAGS = -O -fno-automatic
356+ #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
357+endif
358+
359+ifeq ($(origin CXXFLAGS),undefined)
360+ #CXXFLAGS= -g
361+ CXXFLAGS = -O
362+endif
363+
364+ifeq ($(origin CFLAGS),undefined)
365+ #CFLAGS= -g
366+ CFLAGS = -O
367+endif
368+
369+
370+
371+FFLAGS+= -ffixed-line-length-132
372+
373+# Set FC unless it's defined by an environment variable
374+ifeq ($(origin FC),default)
375+# FC=g77
376+ FC=gfortran
377+endif
378+
379+# Set CXX unless it's defined by an environment variable
380+ifeq ($(origin CXX),default)
381+ CXX=g++
382+endif
383+
384+# Options: dynamic, lhapdf
385+
386+UNAME := $(shell uname)
387+
388+# Option dynamic
389+
390+ifdef dynamic
391+ ifeq ($(UNAME), Darwin)
392+ libext=dylib
393+ FFLAGS+= -fno-common
394+ LDFLAGS += -bundle
395+ define CREATELIB
396+ $(FC) -dynamiclib -undefined dynamic_lookup -o $(1) $(2)
397+ endef
398+ else
399+ libext=so
400+ FFLAGS+= -fPIC
401+ LDFLAGS += -shared
402+ define CREATELIB
403+ $(FC) $(FFLAGS) $(LDFLAGS) -o $(1) $(2)
404+ endef
405+ endif
406+else
407+ libext=a
408+ define CREATELIB
409+ $(AR) cru $(1) $(2)
410+ ranlib $(1)
411+ endef
412+endif
413+
414+# Option lhapdf
415+
416+ifdef lhapdf
417+ alfas_functions=alfas_functions_lhapdf
418+ lhapdf=-lLHAPDF -lstdc++
419+ reweight_xsec_events_pdf_dummy=
420+else
421+ alfas_functions=alfas_functions
422+ lhapdf=
423+ reweight_xsec_events_pdf_dummy=reweight_xsec_events_pdf_dummy.o
424+endif
425+
426+# Madloop
427+ifdef madloop
428+ libmadloop=libMadLoop.a
429+ libcuttools=-lcts %(link_tir_libs)s
430+else
431+ libmadloop=
432+ libcuttools=
433+endif
434+
435+# OLP (virtuals) necessary link
436+libOLP=
437
438=== modified file 'Template/NLO/Source/makefile'
439--- Template/NLO/Source/makefile 2014-06-25 23:19:58 +0000
440+++ Template/NLO/Source/makefile 2014-08-26 07:56:12 +0000
441@@ -5,6 +5,7 @@
442 BINDIR= ../bin/
443 PDFDIR= ./PDF/
444 CUTTOOLSDIR= ./CutTools/
445+IREGIDIR= ./IREGI/src/
446 STDHEPDIR= ./StdHEP/
447
448 PROCESS= hfill.o matrix.o myamp.o
449@@ -80,10 +81,16 @@
450
451 CutTools: $(LIBDIR)libcts.a
452
453+IREGI: $(LIBDIR)libiregi.a
454+
455 $(LIBDIR)libcts.a: $(CUTTOOLSDIR)
456 cd $(CUTTOOLSDIR); make
457- ln -sf ../Source/CutTools/includects/libcts.a $(LIBDIR)libcts.a
458- ln -sf ../Source/CutTools/includects/mpmodule.mod $(LIBDIR)mpmodule.mod
459+ ln -sf ../Source/$(CUTTOOLSDIR)includects/libcts.a $(LIBDIR)libcts.a
460+ ln -sf ../Source/$(CUTTOOLSDIR)includects/mpmodule.mod $(LIBDIR)mpmodule.mod
461+
462+$(LIBDIR)libiregi.a: $(IREGIDIR)
463+ cd $(IREGIDIR); make
464+ ln -sf ../Source/$(IREGIDIR)libiregi.a $(LIBDIR)libiregi.a
465
466 StdHEP: $(MCATNLOLIBDIR)libstdhep.a
467
468@@ -99,6 +106,9 @@
469 cleanCT:
470 cd $(CUTTOOLSDIR); make clean; cd ..
471
472+cleanIR:
473+ cd $(IREGIDIR); make clean; cd ..
474+
475 cleanStdHEP:
476 cd $(STDHEPDIR); make clean; cd ..
477
478
479=== modified file 'Template/NLO/SubProcesses/BinothLHA.f'
480--- Template/NLO/SubProcesses/BinothLHA.f 2013-12-18 07:47:00 +0000
481+++ Template/NLO/SubProcesses/BinothLHA.f 2014-08-26 07:56:12 +0000
482@@ -28,8 +28,10 @@
483 parameter (pi=3.1415926535897932385d0)
484 parameter (zero=0d0)
485 double precision p(0:3,nexternal-1)
486- double precision virt_wgt,born_wgt,double,single,virt_wgts(3)
487- $ ,virt_wgts_hel(3),born_wgt_recomputed,born_wgt_recomp_direct
488+ double precision virt_wgt,born_wgt,double,single
489+ $ ,born_wgt_recomputed,born_wgt_recomp_direct
490+ double precision, allocatable :: virt_wgts(:,:)
491+ double precision, allocatable :: virt_wgts_hel(:,:)
492 double precision mu,ao2pi,conversion,alpha_S
493 save conversion
494 double precision fkssymmetryfactor,fkssymmetryfactorBorn,
495@@ -39,6 +41,8 @@
496 & fkssymmetryfactorDeg,ngluons,nquarks
497 logical firsttime,firsttime_conversion
498 data firsttime,firsttime_conversion /.true.,.true./
499+ logical firsttime_run
500+ data firsttime_run /.true./
501 double precision qes2
502 common /coupl_es/ qes2
503 integer nvtozero
504@@ -52,16 +56,18 @@
505 parameter (fksprefact=.true.)
506 integer ret_code
507 double precision madfks_single, madfks_double
508- double precision tolerance,prec_found
509+ double precision tolerance, prec_found
510+ double precision, allocatable :: accuracies(:)
511 integer i,j
512 integer nbad, nbadmax
513 double precision target,ran2,accum
514 external ran2
515 double precision wgt_hel(max_bhel)
516 common/c_born_hel/wgt_hel
517+ integer nsqso, MLResArrayDim
518 c statistics for MadLoop
519 double precision avgPoleRes(2),PoleDiff(2)
520- integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
521+ integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
522 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
523 parameter (nbadmax = 5)
524 double precision pmass(nexternal)
525@@ -86,30 +92,39 @@
526 single = 0d0
527 double = 0d0
528 prec_found = 1.0d0
529- if (firsttime) then
530+ if (firsttime_run) then
531+ call get_nsqso_loop(nsqso)
532+ call get_answer_dimension(MLResArrayDim)
533+ allocate(accuracies(0:nsqso))
534+ allocate(virt_wgts(0:3,0:MLResArrayDim))
535+ allocate(virt_wgts_hel(0:3,0:MLResArrayDim))
536 c Make sure that whenever in the initialisation phase, MadLoop calls
537 c itself again to perform stability check to make sure no unstable EPS
538 c splips unnoticed.
539 CALL FORCE_STABILITY_CHECK(.TRUE.)
540-
541+ firsttime_run = .false.
542+ endif
543+ if (firsttime) then
544 write(*,*) "alpha_s value used for the virtuals"/
545 & /" is (for the first PS point): ", alpha_S
546 tolerance=IRPoleCheckThreshold/10d0 ! for the pole check below
547- call sloopmatrix_thres(p, virt_wgts, tolerance, prec_found,
548+ call sloopmatrix_thres(p, virt_wgts, tolerance, accuracies,
549 $ ret_code)
550- virt_wgt= virt_wgts(1)/dble(ngluons)
551- single = virt_wgts(2)/dble(ngluons)
552- double = virt_wgts(3)/dble(ngluons)
553+ prec_found = accuracies(0)
554+ virt_wgt= virt_wgts(1,0)/dble(ngluons)
555+ single = virt_wgts(2,0)/dble(ngluons)
556+ double = virt_wgts(3,0)/dble(ngluons)
557 else
558 tolerance=PrecisionVirtualAtRunTime
559 c Just set the accuracy found to a positive value as it is not specified
560 c once the initial pole check is performed.
561 if (mc_hel.eq.0) then
562- call sloopmatrix_thres(p,virt_wgts,tolerance,prec_found
563+ call sloopmatrix_thres(p,virt_wgts,tolerance,accuracies
564 $ ,ret_code)
565- virt_wgt= virt_wgts(1)/dble(ngluons)
566- single = virt_wgts(2)/dble(ngluons)
567- double = virt_wgts(3)/dble(ngluons)
568+ prec_found = accuracies(0)
569+ virt_wgt= virt_wgts(1,0)/dble(ngluons)
570+ single = virt_wgts(2,0)/dble(ngluons)
571+ double = virt_wgts(3,0)/dble(ngluons)
572 elseif (mc_hel.eq.1) then
573 c Use the Born helicity amplitudes to sample the helicities of the
574 c virtual as flat as possible
575@@ -142,12 +157,13 @@
576 c$$$ fillh=.true.
577 fillh=.false.
578 call sloopmatrixhel_thres(p,hel(ihel),virt_wgts_hel
579- $ ,tolerance,prec_found,ret_code)
580- virt_wgt = virt_wgt + virt_wgts_hel(1)*dble(goodhel(ihel))
581- $ /volh/4d0/dble(ngluons)
582- single = single + virt_wgts_hel(2)*dble(goodhel(ihel))
583- $ /volh/4d0/dble(ngluons)
584- double = double + virt_wgts_hel(3)*dble(goodhel(ihel))
585+ $ ,tolerance,accuracies,ret_code)
586+ prec_found = accuracies(0)
587+ virt_wgt = virt_wgt + virt_wgts_hel(1,0)*dble(goodhel(ihel))
588+ $ /volh/4d0/dble(ngluons)
589+ single = single + virt_wgts_hel(2,0)*dble(goodhel(ihel))
590+ $ /volh/4d0/dble(ngluons)
591+ double = double + virt_wgts_hel(3,0)*dble(goodhel(ihel))
592 $ /volh/4d0/dble(ngluons)
593 c Average over initial state helicities (and take the ngluon factor into
594 c account)
595@@ -200,7 +216,12 @@
596 if (mc_hel.ne.0) then
597 c Set-up the MC over helicities. This assumes that the 'HelFilter.dat'
598 c exists, which should be the case when firsttime is false.
599- open (unit=67,file='HelFilter.dat',status='old',err=201)
600+ if (NHelForMCoverHels.lt.0) then
601+ mc_hel=0
602+ goto 203
603+ endif
604+ open (unit=67,file='../MadLoop5_resources/HelFilter.dat',
605+ $ status='old',err=201)
606 hel(0)=0
607 j=0
608 c optimized loop output
609@@ -214,8 +235,18 @@
610 endif
611 enddo
612 goto 203
613+201 continue
614+ write (*,*) 'Cannot do MC over hel:'/
615+ & /' "HelFilter.dat" does not exist'/
616+ & /' or does not have the correct format.'/
617+ $ /' Change NHelForMCoverHels in FKS_params.dat '/
618+ & /'to explicitly summ over them instead.'
619+ stop
620+c mc_hel=0
621+c goto 203
622+202 continue
623 c non optimized loop output
624- 202 rewind(67)
625+ rewind(67)
626 read(67,*,err=201) (include_hel(i),i=1,max_bhel)
627 do i=1,max_bhel
628 if (include_hel(i).eq.'T') then
629@@ -225,7 +256,7 @@
630 hel(j)=i
631 endif
632 enddo
633- 203 continue
634+203 continue
635 c Only do MC over helicities if there are NHelForMCoverHels
636 c or more non-zero (independent) helicities
637 if (NHelForMCoverHels.eq.-1) then
638@@ -290,9 +321,7 @@
639 else
640 n10=n10+1 ! no known ret_code (10)
641 endif
642- if (mod(ret_code,10).ne.0) then
643- n1=n1+1 ! no known ret_code (1)
644- endif
645+ n1(mod(ret_code,10))=n1(mod(ret_code,10))+1 ! unit ret code distribution
646
647 c Write out the unstable, non-rescued phase-space points (MadLoop return
648 c code is in the four hundreds) or the ones that are found by the pole
649@@ -342,10 +371,6 @@
650 $ .and. ret_code/100.eq.1)virt_wgt=0d0
651
652 return
653- 201 write (*,*) 'Cannot do MC over hel:'/
654- & /' "HelFilter.dat" does not exist'/
655- & /' or does not have the correct format'
656- stop
657 end
658
659 subroutine BinothLHAInit(filename)
660
661=== modified file 'Template/NLO/SubProcesses/add_write_info.f'
662--- Template/NLO/SubProcesses/add_write_info.f 2014-02-19 09:46:05 +0000
663+++ Template/NLO/SubProcesses/add_write_info.f 2014-08-26 07:56:12 +0000
664@@ -228,7 +228,7 @@
665 enddo
666 c Assume helicity summed
667 do i=1,nexternal
668- jpart(7,i)=0
669+ jpart(7,i)=9
670 enddo
671 if (firsttime2 .and. isum_hel.ne.0) then
672 write (*,*) 'WARNING: for writing the events, no helicity '//
673
674=== modified file 'Template/NLO/SubProcesses/ajob_template'
675--- Template/NLO/SubProcesses/ajob_template 2014-06-12 08:52:03 +0000
676+++ Template/NLO/SubProcesses/ajob_template 2014-08-26 07:56:12 +0000
677@@ -7,8 +7,9 @@
678 fi
679 }
680
681-
682-
683+if [[ -e MadLoop5_resources.tar && ! -e MadLoop5_resources ]]; then
684+ tar -xf MadLoop5_resources.tar
685+fi
686
687 TAGTAGTAGTAGTAGTAGTAG for i in 1 ; do
688
689@@ -72,22 +73,17 @@
690 fi
691 if [[ ! -e symfact.dat ]] ; then
692 if [[ -e ../symfact.dat ]] ; then
693- ln -sf ../symfact.dat .
694- else
695- ln -sf ../../symfact.dat .
696- fi
697+ ln -sf ../symfact.dat .
698+ else
699+ ln -sf ../../symfact.dat .
700+ fi
701 fi
702
703- link1up MadLoopParams.dat
704- link1up HelFilter.dat
705- link1up LoopFilter.dat
706- link1up ColorDenomFactors.dat
707- link1up HelConfigs.dat
708- link1up ColorNumFactors.dat
709 link1up FKS_params.dat
710+# Not necessary anymore
711+# link1up MadLoop5_resources
712 link1up OLE_order.olc
713 link1up param_card.dat
714- link1up libLHAPDF.so
715
716 # check where is the basic file for the creation of input_app.txt
717 #
718
719=== modified file 'Template/NLO/SubProcesses/check_poles.f'
720--- Template/NLO/SubProcesses/check_poles.f 2013-12-13 08:38:35 +0000
721+++ Template/NLO/SubProcesses/check_poles.f 2014-08-26 07:56:12 +0000
722@@ -9,10 +9,13 @@
723 double precision pi, zero
724 parameter (pi=3.1415926535897932385d0)
725 parameter (zero = 0d0)
726- integer npoints, npointsChecked,ret_code
727+ integer npoints, npointsChecked
728 integer i, j, k
729- double precision tolerance
730+ integer return_code
731+ double precision tolerance, tolerance_default
732+ double precision, allocatable :: accuracies(:)
733 double precision accuracy
734+ parameter (tolerance_default = 1d-5)
735 double precision ren_scale, energy
736 parameter (ren_scale = 1d2)
737 parameter (energy = 1d3)
738@@ -23,7 +26,8 @@
739 double precision p_born(0:3,nexternal-1)
740 common/pborn/p_born
741 double precision pswgt
742- double precision virt_wgts(3), fks_double, fks_single
743+ double precision fks_double, fks_single
744+ double precision, allocatable :: virt_wgts(:,:)
745 double precision double, single, finite
746 double complex born(2)
747 logical calculatedborn
748@@ -46,19 +50,21 @@
749 include 'run.inc'
750 include 'coupl.inc'
751 include 'q_es.inc'
752+ integer nsqso
753 double precision pmass(nexternal), pmass_rambo(nexternal)
754 integer nfail
755+ logical first_time
756+ data first_time/.TRUE./
757
758-c general MadFKS parameters
759- include "FKSParams.inc"
760-
761 C-----
762 C BEGIN CODE
763 C-----
764-c
765-c Read general MadFKS parameters
766-c
767- call FKSParamReader(paramFileName,.TRUE.,.FALSE.)
768+ if (first_time) then
769+ call get_nsqso_loop(nsqso)
770+ allocate(virt_wgts(0:3,0:nsqso))
771+ allocate(accuracies(0:nsqso))
772+ first_time = .false.
773+ endif
774
775 call setrun !Sets up run parameters
776 call setpara('param_card.dat') !Sets up couplings and masses
777@@ -71,9 +77,9 @@
778 read(*,*) npoints
779 write(*,*)'Insert the relative tolerance'
780 write(*,*)' A negative number will mean use the default one: ',
781- 1 IRPoleCheckThreshold
782+ 1 tolerance_default
783 read(*,*) tolerance
784- if (tolerance .le. zero) tolerance = IRPoleCheckThreshold
785+ if (tolerance .le. zero) tolerance = tolerance_default
786
787 mu_r = ren_scale
788 qes2 = ren_scale**2
789@@ -160,12 +166,13 @@
790 enddo
791
792 call sborn(p_born, born)
793- call sloopmatrix_thres(p_born,virt_wgts,tolerance,accuracy
794- $ ,ret_code)
795+ call sloopmatrix_thres(p_born,virt_wgts,tolerance,
796+ 1 accuracies,return_code)
797+ accuracy=accuracies(0)
798
799- finite = virt_wgts(1)/dble(ngluons)
800- single = virt_wgts(2)/dble(ngluons)
801- double = virt_wgts(3)/dble(ngluons)
802+ finite = virt_wgts(1,0)/dble(ngluons)
803+ single = virt_wgts(2,0)/dble(ngluons)
804+ double = virt_wgts(3,0)/dble(ngluons)
805
806 C If MadLoop was still in initialization mode, then skip this
807 C point for the checks
808
809=== removed symlink 'Template/NLO/SubProcesses/check_sa_loop.f'
810=== target was u'../../loop_material/StandAlone/SubProcesses/check_sa.f'
811=== modified file 'Template/NLO/SubProcesses/driver_mintFO.f'
812--- Template/NLO/SubProcesses/driver_mintFO.f 2014-07-02 13:45:42 +0000
813+++ Template/NLO/SubProcesses/driver_mintFO.f 2014-08-26 07:56:12 +0000
814@@ -107,7 +107,7 @@
815 common/SHevents/Hevents
816 character*10 dum
817 c statistics for MadLoop
818- integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
819+ integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
820 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
821
822 double precision virtual_over_born
823@@ -148,7 +148,9 @@
824 nqdp=0
825 nini=0
826 n10=0
827- n1=0
828+ do i=0,9
829+ n1(i)=0
830+ enddo
831
832 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
833 read (lun+1,'(a130)',err=11,end=11) buf
834@@ -320,7 +322,12 @@
835 write(*,*)
836 & " Unknown return code (10): ",n10
837 write(*,*)
838- & " Unknown return code (1): ",n1
839+ & " Unit return code distribution (1): "
840+ do j=0,9
841+ if (n1(j).ne.0) then
842+ write(*,*) "#Unit ",j," = ",n1(j)
843+ endif
844+ enddo
845 endif
846
847 call cpu_time(tAfter)
848
849=== modified file 'Template/NLO/SubProcesses/driver_mintMC.f'
850--- Template/NLO/SubProcesses/driver_mintMC.f 2014-07-02 13:45:42 +0000
851+++ Template/NLO/SubProcesses/driver_mintMC.f 2014-08-26 07:56:12 +0000
852@@ -128,7 +128,7 @@
853 common/SHevents/Hevents
854 character*10 dum
855 c statistics for MadLoop
856- integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
857+ integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
858 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
859
860 c timing statistics
861@@ -161,7 +161,9 @@
862 nqdp=0
863 nini=0
864 n10=0
865- n1=0
866+ do i=0,9
867+ n1(i)=0
868+ enddo
869
870 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
871 read (lun+1,'(a130)',err=11,end=11) buf
872@@ -513,7 +515,12 @@
873 write(*,*)
874 & " Unknown return code (10): ",n10
875 write(*,*)
876- & " Unknown return code (1): ",n1
877+ & " Unit return code distribution (1): "
878+ do j=0,9
879+ if (n1(j).ne.0) then
880+ write(*,*) "#Unit ",j," = ",n1(j)
881+ endif
882+ enddo
883 endif
884
885 call cpu_time(tAfter)
886
887=== modified file 'Template/NLO/SubProcesses/driver_vegas.f'
888--- Template/NLO/SubProcesses/driver_vegas.f 2013-11-28 17:05:38 +0000
889+++ Template/NLO/SubProcesses/driver_vegas.f 2014-08-26 07:56:12 +0000
890@@ -98,7 +98,7 @@
891
892 integer n_mp, n_disc
893 c statistics for MadLoop
894- integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
895+ integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
896 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
897
898 c general MadFKS parameters
899@@ -126,7 +126,9 @@
900 nqdp=0
901 nini=0
902 n10=0
903- n1=0
904+ do i=0,9
905+ n1(i)=0
906+ enddo
907
908 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
909 read (lun+1,'(a130)',err=11,end=11) buf
910@@ -311,7 +313,12 @@
911 write(*,*)
912 & " Unknown return code (10): ",n10
913 write(*,*)
914- & " Unknown return code (1): ",n1
915+ & " Unit return code distribution (1): "
916+ do j=0,9
917+ if (n1(j).ne.0) then
918+ write(*,*) "#Unit ",j," = ",n1(j)
919+ endif
920+ enddo
921 endif
922
923 if(savegrid)call initplot_dummy
924
925=== removed file 'Template/NLO/SubProcesses/makefile_loop'
926--- Template/NLO/SubProcesses/makefile_loop 2012-11-15 11:00:21 +0000
927+++ Template/NLO/SubProcesses/makefile_loop 1970-01-01 00:00:00 +0000
928@@ -1,33 +0,0 @@
929-include ../../../Source/make_opts
930-
931-LIBDIR = ../../../lib/
932-LOOPLIB= libMadLoop.a
933-LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel
934-LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) \
935- $(LIBDIR)libmodel.$(libext)
936-PROCESS= loop_matrix.o improve_ps.o born_matrix.o loop_num.o CT_interface.o \
937- $(patsubst %.f,%.o,$(wildcard polynomial.f)) \
938- $(patsubst %.f,%.o,$(wildcard MadLoopParamReader.f)) \
939- $(patsubst %.f,%.o,$(wildcard helas_calls*.f)) \
940- $(patsubst %.f,%.o,$(wildcard jamp?_calls_*.f)) \
941- $(patsubst %.f,%.o,$(wildcard mp_born_amps_and_wfs.f)) \
942- $(patsubst %.f,%.o,$(wildcard mp_compute_loop_coefs.f)) \
943- $(patsubst %.f,%.o,$(wildcard mp_helas_calls*.f)) \
944- $(patsubst %.f,%.o,$(wildcard coef_construction_*.f)) \
945- $(patsubst %.f,%.o,$(wildcard loop_CT_calls_*.f)) \
946- $(patsubst %.f,%.o,$(wildcard mp_coef_construction_*.f))
947-
948-%.o : %.f
949- $(FC) $(FFLAGS) -c $<
950-
951-all: cleanlib $(LOOPLIB)
952-
953-$(LOOPLIB): $(PROCESS)
954- @ar cr $(LOOPLIB) $(PROCESS)
955- mv $(LOOPLIB) ../
956-
957-clean: cleanlib
958- @rm -f *.o
959-
960-cleanlib:
961- rm -f ../$(LOOPLIB) $(PROG)
962
963=== added file 'Template/NLO/SubProcesses/makefile_loop.inc'
964--- Template/NLO/SubProcesses/makefile_loop.inc 1970-01-01 00:00:00 +0000
965+++ Template/NLO/SubProcesses/makefile_loop.inc 2014-08-26 07:56:12 +0000
966@@ -0,0 +1,36 @@
967+include ../../../Source/make_opts
968+
969+LIBDIR = ../../../lib/
970+LOOPLIB= libMadLoop.a
971+
972+LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel %(link_tir_libs)s
973+LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) \
974+ $(LIBDIR)libmodel.$(libext) %(tir_libs)s
975+PROCESS= loop_matrix.o improve_ps.o born_matrix.o loop_num.o CT_interface.o MadLoopCommons.o \
976+ $(patsubst %(dotf)s,%(doto)s,$(wildcard polynomial.f)) \
977+ $(patsubst %(dotf)s,%(doto)s,$(wildcard MadLoopParamReader.f)) \
978+ $(patsubst %(dotf)s,%(doto)s,$(wildcard helas_calls*.f)) \
979+ $(patsubst %(dotf)s,%(doto)s,$(wildcard jamp?_calls_*.f)) \
980+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_born_amps_and_wfs.f)) \
981+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_compute_loop_coefs.f)) \
982+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_helas_calls*.f)) \
983+ $(patsubst %(dotf)s,%(doto)s,$(wildcard coef_construction_*.f)) \
984+ $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_CT_calls_*.f)) \
985+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_coef_construction_*.f)) \
986+ $(patsubst %(dotf)s,%(doto)s,$(wildcard TIR_interface.f)) \
987+ $(patsubst %(dotf)s,%(doto)s,$(wildcard GOLEM_interface.f))
988+
989+%(doto)s : %(dotf)s
990+ $(FC) $(FFLAGS) -c $< %(tir_include)s
991+
992+all: cleanlib $(LOOPLIB)
993+
994+$(LOOPLIB): $(PROCESS)
995+ @ar cr $(LOOPLIB) $(PROCESS)
996+ mv $(LOOPLIB) ../
997+
998+clean: cleanlib
999+ @rm -f *.o
1000+
1001+cleanlib:
1002+ rm -f ../$(LOOPLIB) $(PROG)
1003
1004=== modified file 'Template/NLO/SubProcesses/montecarlocounter.f'
1005--- Template/NLO/SubProcesses/montecarlocounter.f 2014-05-27 16:58:59 +0000
1006+++ Template/NLO/SubProcesses/montecarlocounter.f 2014-08-26 07:56:12 +0000
1007@@ -349,6 +349,7 @@
1008 include "fks_powers.inc"
1009 include "madfks_mcatnlo.inc"
1010 include "run.inc"
1011+ include "../../Source/MODEL/input.inc"
1012 include 'nFKSconfigs.inc'
1013 integer fks_j_from_i(nexternal,0:nexternal)
1014 & ,particle_type(nexternal),pdg_type(nexternal)
1015@@ -366,7 +367,7 @@
1016 integer jpartner,mpartner
1017 logical emscasharp
1018
1019- double precision shattmp,dot,xkern,xkernazi,born_red,
1020+ double precision shattmp,dot,xkern(2),xkernazi(2),born_red,
1021 & born_red_tilde
1022 double precision bornbars(max_bcol), bornbarstilde(max_bcol)
1023
1024@@ -452,6 +453,7 @@
1025 parameter (vtf=1d0/2d0)
1026 parameter (vca=3d0)
1027
1028+ double precision g_ew,charge,qi2,qj2
1029 double precision pmass(nexternal)
1030 include "pmass.inc"
1031
1032@@ -470,6 +472,9 @@
1033 knbar = veckbarn_ev
1034 kn0 = xp0jfks
1035 nofpartners = ipartners(0)
1036+ g_ew=sqrt(4.d0*pi/aewm1)
1037+ qi2=charge(pdg_type(i_fks))**2
1038+ qj2=charge(pdg_type(j_fks))**2
1039 tiny = 1d-4
1040 if (softtest.or.colltest)tiny = 1d-6
1041 c Logical variables to control the IR limits:
1042@@ -585,8 +590,8 @@
1043 c Compute MC subtraction terms
1044 if(lzone(npartner))then
1045 if(.not.flagmc)flagmc=.true.
1046- if( (ileg.ge.3 .and. m_type.eq.8) .or.
1047- & (ileg.le.2 .and. j_type.eq.8) )then
1048+ if( (ileg.ge.3 .and. (m_type.eq.8.or.m_type.eq.0)) .or.
1049+ & (ileg.le.2 .and. (j_type.eq.8.or.j_type.eq.0)) )then
1050 if(i_type.eq.8)then
1051 c g --> g g ( icode = 1 )
1052 c go --> go g
1053@@ -594,17 +599,17 @@
1054 N_p=2
1055 if(isspecial)N_p=1
1056 if(limit)then
1057- xkern=(g**2/N_p)*8*vca*(1-x*(1-x))**2/(s*x**2)
1058- xkernazi=-(g**2/N_p)*16*vca*(1-x)**2/(s*x**2)
1059+ xkern(1)=(g**2/N_p)*8*vca*(1-x*(1-x))**2/(s*x**2)
1060+ xkernazi(1)=-(g**2/N_p)*16*vca*(1-x)**2/(s*x**2)
1061 elseif(non_limit)then
1062 xfact=(1-yi)*(1-x)/x
1063 prefact=4/(s*N_p)
1064 call AP_reduced(m_type,i_type,one,z(npartner),ap)
1065 ap=ap/(1-z(npartner))
1066- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1067+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1068 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)
1069 Q=Q/(1-z(npartner))
1070- xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1071+ xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1072 endif
1073 c
1074 elseif(ileg.eq.3)then
1075@@ -615,59 +620,66 @@
1076 prefact=2/(s*N_p)
1077 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
1078 ap=ap/(1-z(npartner))
1079- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1080+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1081 endif
1082 c
1083 elseif(ileg.eq.4)then
1084 N_p=2
1085 if(isspecial)N_p=1
1086 if(limit)then
1087- xkern=(g**2/N_p)*( 8*vca*
1088+ xkern(1)=(g**2/N_p)*( 8*vca*
1089 & (s**2*(1-(1-x)*x)-s*(1+x)*xm12+xm12**2)**2 )/
1090 & ( s*(s-xm12)**2*(s*x-xm12)**2 )
1091- xkernazi=-(g**2/N_p)*(16*vca*s*(1-x)**2)/((s-xm12)**2)
1092+ xkernazi(1)=-(g**2/N_p)*(16*vca*s*(1-x)**2)/((s-xm12)**2)
1093 elseif(non_limit)then
1094 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
1095 prefact=2/(s*N_p)
1096 call AP_reduced(j_type,i_type,one,z(npartner),ap)
1097 ap=ap/(1-z(npartner))
1098- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1099+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1100 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)
1101 Q=Q/(1-z(npartner))
1102- xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1103+ xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1104 endif
1105 endif
1106 elseif(abs(i_type).eq.3)then
1107 c g --> q q~ ( icode = 2 )
1108+c a --> q q~
1109 if(ileg.le.2)then
1110 N_p=1
1111 if(limit)then
1112- xkern=(g**2/N_p)*4*vtf*(1-x)*((1-x)**2+x**2)/(s*x)
1113+ xkern(1)=(g**2/N_p)*4*vtf*(1-x)*((1-x)**2+x**2)/(s*x)
1114+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1115 elseif(non_limit)then
1116 xfact=(1-yi)*(1-x)/x
1117 prefact=4/(s*N_p)
1118 call AP_reduced(m_type,i_type,one,z(npartner),ap)
1119 ap=ap/(1-z(npartner))
1120- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1121+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1122+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1123 endif
1124 c
1125 elseif(ileg.eq.4)then
1126 N_p=2
1127 if(isspecial)N_p=1
1128 if(limit)then
1129- xkern=(g**2/N_p)*( 4*vtf*(1-x)*
1130+ xkern(1)=(g**2/N_p)*( 4*vtf*(1-x)*
1131 & (s**2*(1-2*(1-x)*x)-2*s*x*xm12+xm12**2) )/
1132 & ( (s-xm12)**2*(s*x-xm12) )
1133- xkernazi=(g**2/N_p)*(16*vtf*s*(1-x)**2)/((s-xm12)**2)
1134+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1135+ xkernazi(1)=(g**2/N_p)*(16*vtf*s*(1-x)**2)/((s-xm12)**2)
1136+ xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1137 elseif(non_limit)then
1138 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
1139 prefact=2/(s*N_p)
1140 call AP_reduced(j_type,i_type,one,z(npartner),ap)
1141 ap=ap/(1-z(npartner))
1142- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1143+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1144+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1145 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)
1146 Q=Q/(1-z(npartner))
1147- xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1148+ xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1149+ xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
1150 endif
1151 endif
1152 else
1153@@ -679,21 +691,26 @@
1154 & (ileg.le.2 .and. abs(j_type).eq.3) )then
1155 if(abs(i_type).eq.3)then
1156 c q --> g q ( icode = 3 )
1157+c a --> a q
1158 if(ileg.le.2)then
1159 N_p=2
1160 if(isspecial)N_p=1
1161 if(limit)then
1162- xkern=(g**2/N_p)*4*vcf*(1-x)*((1-x)**2+1)/(s*x**2)
1163- xkernazi=-(g**2/N_p)*16*vcf*(1-x)**2/(s*x**2)
1164+ xkern(1)=(g**2/N_p)*4*vcf*(1-x)*((1-x)**2+1)/(s*x**2)
1165+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
1166+ xkernazi(1)=-(g**2/N_p)*16*vcf*(1-x)**2/(s*x**2)
1167+ xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2/vcf)
1168 elseif(non_limit)then
1169 xfact=(1-yi)*(1-x)/x
1170 prefact=4/(s*N_p)
1171 call AP_reduced(m_type,i_type,one,z(npartner),ap)
1172 ap=ap/(1-z(npartner))
1173- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1174+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1175+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
1176 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)
1177 Q=Q/(1-z(npartner))
1178- xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1179+ xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
1180+ xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2/vcf)
1181 endif
1182 c
1183 elseif(ileg.eq.3)then
1184@@ -703,21 +720,24 @@
1185 prefact=2/(s*N_p)
1186 call AP_reduced(j_type,i_type,one,z(npartner),ap)
1187 ap=ap/(1-z(npartner))
1188- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1189+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1190+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
1191 endif
1192 c
1193 elseif(ileg.eq.4)then
1194 N_p=1
1195 if(limit)then
1196- xkern=(g**2/N_p)*
1197- & ( 4*vcf*(1-x)*(s**2*(1-x)**2+(s-xm12)**2) )/
1198- & ( (s-xm12)*(s*x-xm12)**2 )
1199+ xkern(1)=(g**2/N_p)*
1200+ & ( 4*vcf*(1-x)*(s**2*(1-x)**2+(s-xm12)**2) )/
1201+ & ( (s-xm12)*(s*x-xm12)**2 )
1202+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
1203 elseif(non_limit)then
1204 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
1205 prefact=2/(s*N_p)
1206 call AP_reduced(j_type,i_type,one,z(npartner),ap)
1207 ap=ap/(1-z(npartner))
1208- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1209+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1210+ xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
1211 endif
1212 endif
1213 elseif(i_type.eq.8)then
1214@@ -726,13 +746,13 @@
1215 if(ileg.le.2)then
1216 N_p=1
1217 if(limit)then
1218- xkern=(g**2/N_p)*4*vcf*(1+x**2)/(s*x)
1219+ xkern(1)=(g**2/N_p)*4*vcf*(1+x**2)/(s*x)
1220 elseif(non_limit)then
1221 xfact=(1-yi)*(1-x)/x
1222 prefact=4/(s*N_p)
1223 call AP_reduced(m_type,i_type,one,z(npartner),ap)
1224 ap=ap/(1-z(npartner))
1225- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1226+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1227 endif
1228 c
1229 elseif(ileg.eq.3)then
1230@@ -750,13 +770,13 @@
1231 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
1232 endif
1233 ap=ap/(1-z(npartner))
1234- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1235+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1236 endif
1237 c
1238 elseif(ileg.eq.4)then
1239 N_p=1
1240 if(limit)then
1241- xkern=(g**2/N_p)*4*vcf*
1242+ xkern(1)=(g**2/N_p)*4*vcf*
1243 & ( s**2*(1+x**2)-2*xm12*(s*(1+x)-xm12) )/
1244 & ( s*(s-xm12)*(s*x-xm12) )
1245 elseif(non_limit)then
1246@@ -764,7 +784,57 @@
1247 prefact=2/(s*N_p)
1248 call AP_reduced(j_type,i_type,one,z(npartner),ap)
1249 ap=ap/(1-z(npartner))
1250- xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1251+ xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1252+ endif
1253+ endif
1254+ elseif(i_type.eq.0)then
1255+c q --> q a ( icode = 4 )
1256+c sq --> sq a
1257+ if(ileg.le.2)then
1258+ N_p=1
1259+ if(limit)then
1260+ xkern(2)=(g_ew**2/N_p)*4*qj2*(1+x**2)/(s*x)
1261+ else
1262+ xfact=(1-yi)*(1-x)/x
1263+ prefact=4/(s*N_p)
1264+ call AP_reduced(m_type,i_type,one,z(npartner),ap)
1265+ ap=ap/(1-z(npartner))
1266+ xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1267+ xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
1268+ endif
1269+c
1270+ elseif(ileg.eq.3)then
1271+ N_p=1
1272+ if(non_limit)then
1273+ xfact=(2-(1-x)*(1-(kn0/kn)*yj))/kn*knbar*(1-x)*(1-yj)
1274+ prefact=2/(s*N_p)
1275+ if(abs(PDG_type(j_fks)).le.6)then
1276+ if(shower_mc.ne.'HERWIGPP')
1277+ & call AP_reduced(j_type,i_type,one,z(npartner),ap)
1278+ if(shower_mc.eq.'HERWIGPP')
1279+ & call AP_reduced_massive(j_type,i_type,one,z(npartner),
1280+ & xi(npartner),xm12,ap)
1281+ else
1282+ call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
1283+ endif
1284+ ap=ap/(1-z(npartner))
1285+ xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1286+ xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
1287+ endif
1288+c
1289+ elseif(ileg.eq.4)then
1290+ N_p=1
1291+ if(limit)then
1292+ xkern(2)=(g_ew**2/N_p)*4*qj2*
1293+ & ( s**2*(1+x**2)-2*xm12*(s*(1+x)-xm12) )/
1294+ & ( s*(s-xm12)*(s*x-xm12) )
1295+ else
1296+ xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
1297+ prefact=2/(s*N_p)
1298+ call AP_reduced(j_type,i_type,one,z(npartner),ap)
1299+ ap=ap/(1-z(npartner))
1300+ xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
1301+ xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
1302 endif
1303 endif
1304 else
1305@@ -814,13 +884,16 @@
1306
1307 born_red=0d0
1308 born_red_tilde=0d0
1309- xkern=xkern*gfactsf*wcc
1310- xkernazi=xkernazi*gfactazi*gfactsf*wcc
1311+ do i=1,2
1312+ xkern(i)=xkern(i)*gfactsf*wcc
1313+ xkernazi(i)=xkernazi(i)*gfactazi*gfactsf*wcc
1314+ enddo
1315 do cflows=1,colorflow(npartner,0)
1316 born_red=born_red+bornbars(colorflow(npartner,cflows))
1317 born_red_tilde=born_red_tilde+bornbarstilde(colorflow(npartner,cflows))
1318 enddo
1319- xmcxsec(npartner)=xkern*born_red+xkernazi*born_red_tilde
1320+c Change here, to include also xkern(2)!
1321+ xmcxsec(npartner)=xkern(1)*born_red+xkernazi(1)*born_red_tilde
1322 if(dampMCsubt)xmcxsec(npartner)=xmcxsec(npartner)*emscwgt(npartner)
1323 wgt=wgt+xmcxsec(npartner)
1324
1325@@ -2650,6 +2723,7 @@
1326 zm3=(1-sqrt(1-4*xi/mdip_g**2))/2
1327
1328 c Dead zones
1329+c IMPLEMENT QED DZ's!
1330 if(shower_mc.eq.'HERWIG6')then
1331 lzone=.false.
1332 if(ileg.le.2.and.z**2.ge.xi)lzone=.true.
1333@@ -2713,3 +2787,38 @@
1334 lzone=.false.
1335 return
1336 end
1337+
1338+
1339+
1340+ function charge(ipdg)
1341+c computes the electric charge given the pdg code
1342+ implicit none
1343+ integer ipdg
1344+ double precision charge,tmp,dipdg
1345+
1346+ dipdg=dble(ipdg)
1347+c quarks
1348+ if(abs(dipdg).eq.1) tmp=-1d0/3d0*sign(1d0,dipdg)
1349+ if(abs(dipdg).eq.2) tmp= 2d0/3d0*sign(1d0,dipdg)
1350+ if(abs(dipdg).eq.3) tmp=-1d0/3d0*sign(1d0,dipdg)
1351+ if(abs(dipdg).eq.4) tmp= 2d0/3d0*sign(1d0,dipdg)
1352+ if(abs(dipdg).eq.5) tmp=-1d0/3d0*sign(1d0,dipdg)
1353+ if(abs(dipdg).eq.6) tmp= 2d0/3d0*sign(1d0,dipdg)
1354+c leptons
1355+ if(abs(dipdg).eq.11)tmp=-1d0*sign(1d0,dipdg)
1356+ if(abs(dipdg).eq.12)tmp= 0d0
1357+ if(abs(dipdg).eq.13)tmp=-1d0*sign(1d0,dipdg)
1358+ if(abs(dipdg).eq.14)tmp= 0d0
1359+ if(abs(dipdg).eq.15)tmp=-1d0*sign(1d0,dipdg)
1360+ if(abs(dipdg).eq.16)tmp= 0d0
1361+c bosons
1362+ if(dipdg.eq.21) tmp= 0d0
1363+ if(dipdg.eq.22) tmp= 0d0
1364+ if(dipdg.eq.23) tmp= 0d0
1365+ if(abs(dipdg).eq.24)tmp= 1d0*sign(1d0,dipdg)
1366+ if(dipdg.eq.25) tmp= 0d0
1367+c
1368+ charge=tmp
1369+
1370+ return
1371+ end
1372
1373=== modified file 'Template/NLO/SubProcesses/setcuts.f'
1374--- Template/NLO/SubProcesses/setcuts.f 2014-04-17 12:06:34 +0000
1375+++ Template/NLO/SubProcesses/setcuts.f 2014-08-26 07:56:12 +0000
1376@@ -409,7 +409,7 @@
1377 if ( itree(1,i).eq.1 .or. itree(1,i).eq.2 ) t_channel=i
1378 if (t_channel.ne.0) exit ! only s-channels
1379 mass_min(i)=mass_min(itree(1,i))+mass_min(itree(2,i))
1380- if (xm(i).lt.mass_min(i)) then
1381+ if (xm(i).lt.mass_min(i)-vtiny) then
1382 write (*,*)
1383 $ 'ERROR in the determination of conflicting BW',i
1384 $ ,xm(i),mass_min(i)
1385
1386=== modified file 'Template/NLO/SubProcesses/sumres.py'
1387--- Template/NLO/SubProcesses/sumres.py 2013-12-12 13:33:17 +0000
1388+++ Template/NLO/SubProcesses/sumres.py 2014-08-26 07:56:12 +0000
1389@@ -65,8 +65,9 @@
1390 tot+= proc['result']
1391 err+= math.pow(proc['error'],2)
1392 if dirs:
1393- print "%d jobs did not terminate correctly " % len(dirs)
1394+ print "%d jobs did not terminate correctly: " % len(dirs)
1395 print '\n'.join(dirs)
1396+ print "The results are probably not correct. Please check the relevant log files corresponding to the above jobs for more information."
1397
1398 processes.sort(key = lambda proc: -proc['errorABS'])
1399
1400
1401=== modified file 'Template/loop_material/Checks/StabilityCheckDriver.f'
1402--- Template/loop_material/Checks/StabilityCheckDriver.f 2012-11-09 19:55:19 +0000
1403+++ Template/loop_material/Checks/StabilityCheckDriver.f 2014-08-26 07:56:12 +0000
1404@@ -24,11 +24,23 @@
1405 !
1406 INTEGER I,J,K
1407 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
1408- REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy
1409+
1410+ INTEGER MATELEM_ARRAY_DIM
1411+ REAL*8 , allocatable :: MATELEM(:,:)
1412+
1413+ REAL*8 SQRTS,BORNELEM,AO2PI ! sqrt(s)= center of mass energy
1414 REAL*8 PIN(0:3), POUT(0:3)
1415 CHARACTER*120 BUFF(NEXTERNAL)
1416 CHARACTER*1 EX
1417 INTEGER HELCHOICE
1418+ INTEGER SOCHOICE
1419+
1420+!
1421+! SAVED VARIABLES
1422+!
1423+ LOGICAL INIT
1424+ DATA INIT/.TRUE./
1425+ COMMON/INITCHECKSA/INIT
1426
1427 !
1428 ! EXTERNAL
1429@@ -41,15 +53,22 @@
1430 !-----
1431 !
1432 !--- INITIALIZATION CALLS
1433-!
1434+!
1435+ IF (INIT) THEN
1436+ INIT=.FALSE.
1437+ CALL %(proc_prefix)sGET_ANSWER_DIMENSION(MATELEM_ARRAY_DIM)
1438+ ALLOCATE(MATELEM(0:3,0:MATELEM_ARRAY_DIM))
1439+
1440+
1441 !--- Call to initialize the values of the couplings, masses and widths
1442 ! used in the evaluation of the matrix element. The primary parameters of the
1443 ! models are read from Cards/param_card.dat. The secondary parameters are calculated
1444 ! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
1445 ! in coupl.inc .
1446
1447- call setpara('param_card.dat') !first call to setup the paramaters
1448+ call setpara('param_card.dat') !first call to setup the paramaters
1449
1450+ ENDIF
1451 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
1452
1453
1454@@ -79,28 +98,35 @@
1455 if (MU_R.lt.0.0d0) then
1456 MU_R=SQRTS
1457 endif
1458- write(*,*) "Enter Helicity tag, -1 = summed. For loops only."
1459+ write(*,*) "Enter Helicity tag, -1 = summed."
1460 read(*,*) HELCHOICE
1461+ write(*,*) "Enter split_orders choice, -1 = all."
1462+ read(*,*) SOCHOICE
1463+ IF (SOCHOICE.NE.-1) THEN
1464+ CALL %(proc_prefix)sSET_COUPLINGORDERS_TARGET(SOCHOICE)
1465+ ENDIF
1466 !--- Update the couplings with the new MU_R
1467 CALL UPDATE_AS_PARAM()
1468 !
1469 ! Now we can call the matrix element!
1470 !
1471- CALL SMATRIX(P,BORNELEM)
1472 IF (HELCHOICE.EQ.-1) THEN
1473- CALL SLOOPMATRIX(P,MATELEM)
1474+ CALL %(proc_prefix)sSLOOPMATRIX(P,MATELEM)
1475 ELSE
1476- CALL SLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
1477+ CALL %(proc_prefix)sSLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
1478 ENDIF
1479 write(*,*) '##TAG#RESULT_START#TAG##'
1480 do i=1,nexternal
1481 write (*,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
1482 enddo
1483 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
1484- write (*,'(a4,1x,1e25.15)') 'BORN',BORNELEM
1485- write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)/BORNELEM/AO2PI
1486- write (*,'(a4,1x,1e25.15)') '1EPS',MATELEM(2)/BORNELEM/AO2PI
1487- write (*,'(a4,1x,1e25.15)') '2EPS',MATELEM(3)/BORNELEM/AO2PI
1488+ write (*,'(a4,1x,1e25.15)') 'BORN',MATELEM(0,0)
1489+ write (*,'(a3,1x,1e25.15)') 'FIN',
1490+ &MATELEM(1,0)/MATELEM(0,0)/AO2PI
1491+ write (*,'(a4,1x,1e25.15)') '1EPS',
1492+ &MATELEM(2,0)/MATELEM(0,0)/AO2PI
1493+ write (*,'(a4,1x,1e25.15)') '2EPS',
1494+ &MATELEM(3,0)/MATELEM(0,0)/AO2PI
1495 write (*,*) 'Export_Format Default'
1496 write(*,*) '##TAG#RESULT_STOP#TAG##'
1497 enddo
1498
1499=== modified file 'Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f'
1500--- Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f 2012-11-09 19:55:19 +0000
1501+++ Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f 2014-08-26 07:56:12 +0000
1502@@ -24,11 +24,22 @@
1503 !
1504 INTEGER I,J,K
1505 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
1506- REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy
1507+
1508+ INTEGER MATELEM_ARRAY_DIM
1509+ REAL*8 , allocatable :: MATELEM(:,:)
1510+
1511+ REAL*8 SQRTS,BORNELEM,AO2PI ! sqrt(s)= center of mass energy
1512 REAL*8 PIN(0:3), POUT(0:3)
1513 CHARACTER*120 BUFF(NEXTERNAL)
1514 CHARACTER*1 EX
1515- INTEGER HELCHOICE
1516+ INTEGER HELCHOICE, SOCHOICE
1517+
1518+!
1519+! SAVED VARIABLES
1520+!
1521+ LOGICAL INIT
1522+ DATA INIT/.TRUE./
1523+ COMMON/INITCHECKSA/INIT
1524
1525 !
1526 ! EXTERNAL
1527@@ -41,14 +52,22 @@
1528 !-----
1529 !
1530 !--- INITIALIZATION CALLS
1531-!
1532+!
1533+
1534+ IF (INIT) THEN
1535+ INIT=.FALSE.
1536+ CALL %(proc_prefix)sGET_ANSWER_DIMENSION(MATELEM_ARRAY_DIM)
1537+ ALLOCATE(MATELEM(0:3,0:MATELEM_ARRAY_DIM))
1538+
1539 !--- Call to initialize the values of the couplings, masses and widths
1540 ! used in the evaluation of the matrix element. The primary parameters of the
1541 ! models are read from Cards/param_card.dat. The secondary parameters are calculated
1542 ! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
1543 ! in coupl.inc .
1544
1545- call setpara('param_card.dat') !first call to setup the paramaters
1546+ call setpara('param_card.dat') !first call to setup the paramaters
1547+
1548+ ENDIF
1549
1550 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
1551
1552@@ -81,15 +100,20 @@
1553 endif
1554 write(*,*) "Enter Helicity tag, -1 = summed. For loops only."
1555 read(*,*) HELCHOICE
1556+ write(*,*) "Enter split_orders choice, -1 = all."
1557+ read(*,*) SOCHOICE
1558+ IF (SOCHOICE.NE.-1) THEN
1559+ CALL %(proc_prefix)sSET_COUPLINGORDERS_TARGET(SOCHOICE)
1560+ ENDIF
1561 !--- Update the couplings with the new MU_R
1562 CALL UPDATE_AS_PARAM()
1563 !
1564 ! Now we can call the matrix element!
1565 !
1566 IF (HELCHOICE.EQ.-1) THEN
1567- CALL SLOOPMATRIX(P,MATELEM)
1568+ CALL %(proc_prefix)sSLOOPMATRIX(P,MATELEM)
1569 ELSE
1570- CALL SLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
1571+ CALL %(proc_prefix)sSLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
1572 ENDIF
1573 write(*,*) '##TAG#RESULT_START#TAG##'
1574 do i=1,nexternal
1575@@ -97,7 +121,7 @@
1576 enddo
1577 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
1578 write (*,'(a4,1x,1e25.15)') 'BORN',0.0d0
1579- write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)
1580+ write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1,0)
1581 write (*,'(a4,1x,1e25.15)') '1EPS',0.0d0
1582 write (*,'(a4,1x,1e25.15)') '2EPS',0.0d0
1583 write (*,*) 'Export_Format LoopInduced'
1584
1585=== added directory 'Template/loop_material/StandAlone/Cards'
1586=== removed directory 'Template/loop_material/StandAlone/Cards'
1587=== renamed file 'Template/loop_material/StandAlone/Cards/MadLoopParams.dat' => 'Template/loop_material/StandAlone/Cards/MadLoopParams.dat'
1588--- Template/loop_material/StandAlone/Cards/MadLoopParams.dat 2013-05-01 16:26:01 +0000
1589+++ Template/loop_material/StandAlone/Cards/MadLoopParams.dat 2014-08-26 07:56:12 +0000
1590@@ -2,6 +2,37 @@
1591 ! The name of the variable to define must start with the '#' sign and then
1592 ! the value should be put immediately on the next line.
1593
1594+!
1595+#MLReductionLib
1596+1|4|3|2
1597+! Default :: 1|4|3|2
1598+! The tensor integral reduction library.The current choices are:
1599+! 1 | CutTools
1600+! 2 | PJFry++
1601+! 3 | IREGI
1602+! 4 | Golem95
1603+! One can use the combinations to reduce integral,e.g.
1604+! 1|2|3 means first use CutTools, if it is not stable, use PJFry++,
1605+! if it is still unstable, use IREGI. If it failed, use QP of CutTools.
1606+!
1607+
1608+! =================================================================================
1609+! The parameters below set the parameters for IREGI
1610+! =================================================================================
1611+
1612+#IREGIMODE
1613+2
1614+! Default :: 2
1615+! IMODE=0, IBP reduction
1616+! IMODE=1, PaVe reduction
1617+! IMODE=2, PaVe reduction with stablility improved by IBP reduction
1618+
1619+#IREGIRECY
1620+.TRUE.
1621+! Default :: .TRUE.
1622+! Use RECYCLING OR NOT IN IREGI
1623+!
1624+
1625 ! =================================================================================
1626 ! The parameters below set the stability checks of MadLoop at run time
1627 ! =================================================================================
1628@@ -78,9 +109,10 @@
1629 ! The parameters below set two CutTools internal parameters accessible to the user.
1630 ! =================================================================================
1631
1632-! Choose here what library to chose for CutTools to compute the scalar loops of the
1633+! Choose here what library to chose for CutTools/TIR to compute the scalar loops of the
1634 ! master integral basis. The choices are as follows:
1635-! 2 | AVH
1636+! (Does not apply for Golem95, where OneLOop is always used)
1637+! 2 | OneLOop
1638 ! 3 | QCDLoop
1639 #CTLoopLibrary
1640 2
1641@@ -131,6 +163,13 @@
1642 1.0d-9
1643 ! Default :: 1.0d-9
1644
1645+! Setting the on-shell threshold for deciding whether the invariant variables
1646+! of external momenta are on-shell or not. It will only be used in constructing
1647+! s-matrix in Golem95.
1648+#OSThres
1649+1.0d-8
1650+! Default :: 1.0d-8
1651+
1652 ! The setting below is recommended to be on as it allows to systematically used the
1653 ! first PS point thrown at ML5 to be used for making sure that the helicity filter
1654 ! read from HelFilter.dat is consistent as it might be no longer up to date with
1655@@ -139,6 +178,14 @@
1656 .TRUE.
1657 ! Default :: .TRUE.
1658
1659+! This decides whether to write out the helicity and loop filters to the files
1660+! HelFilters.dat and LoopFilters.dat to save them for future runs. It usually
1661+! preferable but sometimes not desired because of the need of threadlocks in the
1662+! context of mpi parallelization. So it can be turned off here in such cases.
1663+#WriteOutFilters
1664+.TRUE.
1665+! Default :: .TRUE.
1666+
1667 ! Some loop contributions may be zero for some helicities which are however
1668 ! contributing. In order to save their computing time, you can chose here to try
1669 ! to filter them out. The gain is typically minimal, so it is turned off by default.
1670@@ -146,7 +193,7 @@
1671 .FALSE.
1672 ! Default :: .FALSE.
1673
1674-! This decides wether consecutive consistency for the loop filtering setup is also
1675+! This decides whether consecutive consistency for the loop filtering setup is also
1676 ! required.
1677 #LoopInitStartOver
1678 .FALSE.
1679
1680=== added directory 'Template/loop_material/StandAlone/SubProcesses/MadLoop5_resources'
1681=== added file 'Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f'
1682--- Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f 1970-01-01 00:00:00 +0000
1683+++ Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f 2014-08-26 07:56:12 +0000
1684@@ -0,0 +1,341 @@
1685+ subroutine joinPath(str1,str2,path)
1686+
1687+ character*(*) str1
1688+ character*(*) str2
1689+ character*(*) path
1690+
1691+ integer i,j,k
1692+
1693+ i =1
1694+ do while (i.le.LEN(str1))
1695+ if(str1(i:i).eq.' ') goto 800
1696+ path(i:i) = str1(i:i)
1697+ i=i+1
1698+ enddo
1699+800 continue
1700+ j=1
1701+ do while (j.le.LEN(str2))
1702+ if(str2(j:j).eq.' ') goto 801
1703+ path(i-1+j:i-1+j) = str2(j:j)
1704+ j=j+1
1705+ enddo
1706+801 continue
1707+ k=i+j-1
1708+ do while (k.le.LEN(path))
1709+ path(k:k) = ' '
1710+ k=k+1
1711+ enddo
1712+
1713+ return
1714+
1715+ end
1716+
1717+ subroutine setMadLoopPath(path)
1718+
1719+ character(512) path
1720+ character(512) dummy
1721+
1722+ character(512) prefix,fpath
1723+ character(17) nameToCheck
1724+ parameter (nameToCheck='MadLoopParams.dat')
1725+
1726+ LOGICAL ML_INIT
1727+ DATA ML_INIT/.TRUE./
1728+ common/ML_INIT/ML_INIT
1729+
1730+ LOGICAL CTINIT,TIRINIT,GOLEMINIT
1731+ DATA CTINIT,TIRINIT,GOLEMINIT/.TRUE.,.TRUE.,.TRUE./
1732+ COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT, GOLEMINIT
1733+
1734+ character(512) MLPath
1735+ data MLPath/'[[NA]]'/
1736+ common/MLPATH/MLPath
1737+
1738+ integer i
1739+
1740+C Just a dummy call for LD to pick up this function
1741+C when creating the BLHA2 dynamic library
1742+ dummy = ' '
1743+ CALL SETPARA2(dummy)
1744+
1745+ if (LEN(path).ge.4 .and. path(1:4).eq.'auto') then
1746+ if (MLPath(1:6).eq.'[[NA]]') then
1747+C Try to automatically find the path
1748+ prefix='./'
1749+ call joinPath(prefix,nameToCheck,fpath)
1750+ OPEN(1, FILE=fpath, ERR=1, STATUS='OLD',
1751+ $ ACTION='READ')
1752+ MLPath=prefix
1753+ goto 10
1754+1 continue
1755+ close(1)
1756+ prefix='./MadLoop5_resources/'
1757+ call joinPath(prefix,nameToCheck,fpath)
1758+ OPEN(1, FILE=fpath, ERR=2, STATUS='OLD',
1759+ $ ACTION='READ')
1760+ MLPath=prefix
1761+ goto 10
1762+2 continue
1763+ close(1)
1764+ prefix='../MadLoop5_resources/'
1765+ call joinPath(prefix,nameToCheck,fpath)
1766+ OPEN(1, FILE=fpath, ERR=66, STATUS='OLD',
1767+ $ ACTION='READ')
1768+ MLPath=prefix
1769+ goto 10
1770+66 continue
1771+ close(1)
1772+c We could not automatically find the auxiliary files
1773+ write(*,*) '==='
1774+ write(*,*) 'ERROR: MadLoop5 could not automatically find',
1775+ $ ' the file MadLoopParams.dat.'
1776+ write(*,*) '==='
1777+ write(*,*) '(Try using <CALL setMadLoopPath(/my/path)>',
1778+ $ ' (before your first call to MadLoop) in order to',
1779+ $ ' set the directory where this file is located as well as',
1780+ $ ' other auxiliary files, such as <xxx>_ColorNumFactors.dat',
1781+ $ ', <xxx>_ColorDenomFactors.dat, etc..)'
1782+ stop
1783+10 continue
1784+ close(1)
1785+ return
1786+ endif
1787+ else
1788+C Use the one specified by the user
1789+C Make sure there is a separator added
1790+ i =1
1791+ do while (i.le.LEN(path) .and. path(i:i).ne.' ')
1792+ i=i+1
1793+ enddo
1794+ if (path(i-1:i-1).ne.'/') then
1795+ path(i:i) = '/'
1796+ endif
1797+ MLpath=path
1798+ endif
1799+
1800+C Check that the FilePath set is correct
1801+ call joinPath(MLPath,nameToCheck,fpath)
1802+ OPEN(1, FILE=fpath, ERR=3, STATUS='OLD',
1803+ $ACTION='READ')
1804+ goto 11
1805+3 continue
1806+ close(1)
1807+ write(*,*) '==='
1808+ write(*,*) 'ERROR: The MadLoop5 auxiliary files could not',
1809+ $' be found in ',MLPath
1810+ write(*,*) '==='
1811+ stop
1812+11 continue
1813+ close(1)
1814+
1815+ end
1816+
1817+ INTEGER FUNCTION SET_RET_CODE_U(MLRed,DOING_QP,STABLE)
1818+C
1819+C This functions returns the value of U
1820+C
1821+C
1822+C U == 0
1823+C Not stable.
1824+C U == 1
1825+C Stable with CutTools in double precision.
1826+C U == 2
1827+C Stable with PJFry++.
1828+C U == 3
1829+C Stable with IREGI.
1830+C U == 4
1831+C Stable with Golem95
1832+C U == 9
1833+C Stable with CutTools in quadruple precision.
1834+C
1835+ IMPLICIT NONE
1836+C
1837+C CONSTANTS
1838+C
1839+C
1840+C ARGUMENTS
1841+C
1842+ INTEGER MLRed
1843+ LOGICAL DOING_QP,STABLE
1844+C
1845+C LOCAL VARIABLES
1846+C
1847+C
1848+C FUNCTION
1849+C
1850+C
1851+C BEGIN CODE
1852+C
1853+ IF(.NOT.STABLE)THEN
1854+ SET_RET_CODE_U=0
1855+ RETURN
1856+ ENDIF
1857+ IF(DOING_QP)THEN
1858+ IF(MLRed.EQ.1)THEN
1859+ SET_RET_CODE_U=9
1860+ RETURN
1861+ ELSE
1862+ STOP 'Only CutTools can use quardruple precision'
1863+ ENDIF
1864+ ENDIF
1865+ IF(MLRed.GE.1.AND.MLRed.LE.4)THEN
1866+ SET_RET_CODE_U=MLRed
1867+ ELSE
1868+ STOP 'Only CutTools,PJFry++,IREGI,Golem95 are available'
1869+ ENDIF
1870+ END
1871+
1872+ SUBROUTINE DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,complex_mass,
1873+ $ LPASS)
1874+C
1875+C DETECT WHICH LOOP LIB PASSED
1876+C
1877+ IMPLICIT NONE
1878+C
1879+C CONSTANTS
1880+C
1881+C
1882+C ARGUMENTS
1883+C
1884+ INTEGER LIBNUM,NLOOPLINE,RANK
1885+ LOGICAL complex_mass,LPASS
1886+C
1887+C LOCAL VARIABLES
1888+C
1889+C
1890+C GLOBAL VARIABLES
1891+C
1892+C ----------
1893+C BEGIN CODE
1894+C ----------
1895+ IF(LIBNUM.EQ.1)THEN
1896+C CutTools
1897+ CALL DETECT_CUTTOOLS(NLOOPLINE,RANK,complex_mass,LPASS)
1898+ ELSEIF(LIBNUM.EQ.2)THEN
1899+C PJFry++
1900+ CALL DETECT_PJFRY(NLOOPLINE,RANK,complex_mass,LPASS)
1901+ ELSEIF(LIBNUM.EQ.3)THEN
1902+C IREGI
1903+ CALL DETECT_IREGI(NLOOPLINE,RANK,complex_mass,LPASS)
1904+ ELSEIF(LIBNUM.EQ.4)THEN
1905+C Golem95
1906+ CALL DETECT_GOLEM(NLOOPLINE,RANK,complex_mass,LPASS)
1907+ ELSE
1908+ STOP 'ONLY CUTTOOLS,PJFry++,IREGI,Golem95 are provided'
1909+ ENDIF
1910+ RETURN
1911+ END
1912+
1913+ SUBROUTINE DETECT_CUTTOOLS(NLOOPLINE,RANK,complex_mass,LPASS)
1914+C
1915+C DETECT THE CUTTOOLS CAN BE USED OR NOT
1916+C
1917+ IMPLICIT NONE
1918+C
1919+C CONSTANTS
1920+C
1921+C
1922+C ARGUMENTS
1923+C
1924+ INTEGER NLOOPLINE,RANK
1925+ LOGICAL complex_mass,LPASS
1926+C
1927+C LOCAL VARIABLES
1928+C
1929+C
1930+C GLOBAL VARIABLES
1931+C
1932+C ----------
1933+C BEGIN CODE
1934+C ----------
1935+ LPASS=.TRUE.
1936+ IF(NLOOPLINE+1.LT.RANK)LPASS=.FALSE.
1937+ RETURN
1938+ END
1939+
1940+ SUBROUTINE DETECT_PJFRY(NLOOPLINE,RANK,complex_mass,LPASS)
1941+C
1942+C DETECT THE PJFRY++ CAN BE USED OR NOT
1943+C
1944+ IMPLICIT NONE
1945+C
1946+C CONSTANTS
1947+C
1948+C
1949+C ARGUMENTS
1950+C
1951+ INTEGER NLOOPLINE,RANK
1952+ LOGICAL complex_mass,LPASS
1953+C
1954+C LOCAL VARIABLES
1955+C
1956+C
1957+C GLOBAL VARIABLES
1958+C
1959+C ----------
1960+C BEGIN CODE
1961+C ----------
1962+ LPASS=.TRUE.
1963+ IF(NLOOPLINE.LT.RANK.OR.RANK.GT.5
1964+ $.OR.NLOOPLINE.GT.5.OR.complex_mass.OR.NLOOPLINE.eq.1) THEN
1965+ LPASS=.FALSE.
1966+ ENDIF
1967+ RETURN
1968+ END
1969+
1970+ SUBROUTINE DETECT_IREGI(NLOOPLINE,RANK,complex_mass,LPASS)
1971+C
1972+C DETECT THE IREGI CAN BE USED OR NOT
1973+C
1974+ IMPLICIT NONE
1975+C
1976+C CONSTANTS
1977+C
1978+C
1979+C ARGUMENTS
1980+C
1981+ INTEGER NLOOPLINE,RANK
1982+ LOGICAL complex_mass,LPASS
1983+C
1984+C LOCAL VARIABLES
1985+C
1986+C
1987+C GLOBAL VARIABLES
1988+C
1989+C ----------
1990+C BEGIN CODE
1991+C ----------
1992+ LPASS=.TRUE.
1993+ IF(NLOOPLINE.GE.7.OR.RANK.GE.7)LPASS=.FALSE.
1994+ RETURN
1995+ END
1996+
1997+ SUBROUTINE DETECT_GOLEM(NLOOPLINE,RANK,complex_mass,LPASS)
1998+C
1999+C DETECT THE Golem95 CAN BE USED OR NOT
2000+C
2001+ IMPLICIT NONE
2002+C
2003+C CONSTANTS
2004+C
2005+C
2006+C ARGUMENTS
2007+C
2008+ INTEGER NLOOPLINE,RANK
2009+ LOGICAL complex_mass,LPASS
2010+C
2011+C LOCAL VARIABLES
2012+C
2013+C
2014+C GLOBAL VARIABLES
2015+C
2016+C ----------
2017+C BEGIN CODE
2018+C ----------
2019+
2020+ LPASS=.TRUE.
2021+ IF(NLOOPLINE.GE.7.OR.RANK.GE.7.OR.NLOOPLINE.LE.1)LPASS=.FALSE.
2022+ IF(NLOOPLINE.LE.5.AND.RANK.GT.NLOOPLINE+1)LPASS=.FALSE.
2023+ IF(NLOOPLINE.EQ.6.AND.RANK.GT.NLOOPLINE)LPASS=.FALSE.
2024+ RETURN
2025+ END
2026
2027=== modified file 'Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f'
2028--- Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f 2013-05-01 16:26:01 +0000
2029+++ Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f 2014-08-26 07:56:12 +0000
2030@@ -2,10 +2,14 @@
2031
2032 implicit none
2033
2034- CHARACTER*64 fileName, buff, buff2, mode
2035+ CHARACTER(512) fileName, buff, buff2, mode
2036+ CHARACTER*10 MLReductionLib_str,MLReductionLib_str_save
2037+ CHARACTER*2 MLReductionLib_char
2038+ INTEGER MLRed,i,j,k
2039+
2040 include "MadLoopParams.inc"
2041
2042- logical printParam, couldRead, paramPrinted
2043+ logical printParam, couldRead, paramPrinted, find
2044 data paramPrinted/.FALSE./
2045 couldRead=.False.
2046 ! Default parameters
2047@@ -68,6 +72,12 @@
2048 stop 'ZeroThres must be > 0'
2049 endif
2050
2051+ else if (buff .eq. '#OSThres') then
2052+ read(666,*,end=999) OSThres
2053+ if (OSThres.le.0.0d0) then
2054+ stop 'OSThres must be > 0'
2055+ endif
2056+
2057 else if (buff .eq. '#CheckCycle') then
2058 read(666,*,end=999) CheckCycle
2059 if (CheckCycle.lt.1) then
2060@@ -92,13 +102,65 @@
2061 else if (buff .eq. '#HelInitStartOver') then
2062 read(666,*,end=999) HelInitStartOver
2063
2064+ else if (buff .eq. '#WriteOutFilters') then
2065+ read(666,*,end=999) WriteOutFilters
2066+
2067 else if (buff .eq. '#ImprovePSPoint') then
2068 read(666,*,end=999) ImprovePSPoint
2069 if (ImprovePSPoint .lt. -1 .or.
2070 & ImprovePSPoint .gt. 2 ) then
2071 stop 'ImprovePSPoint must be >= -1 and <=2.'
2072 endif
2073-
2074+ else if (buff .eq. '#MLReductionLib') then
2075+ read(666,*,end=999) MLReductionLib_str
2076+ MLReductionLib(1:5)=0
2077+ MLReductionLib_str_save=MLReductionLib_str
2078+ j=0
2079+ DO
2080+ i=index(MLReductionLib_str,'|')
2081+ IF(i.EQ.0)THEN
2082+ MLReductionLib_char=MLReductionLib_str
2083+ ELSE
2084+ MLReductionLib_char=MLReductionLib_str(:i-1)
2085+ ENDIF
2086+ IF(MLReductionLib_char.EQ.'1 ')THEN
2087+ MLRed=1
2088+ ELSEIF(MLReductionLib_char.EQ.'2 ')THEN
2089+ MLRed=2
2090+ ELSEIF(MLReductionLib_char.EQ.'3 ')THEN
2091+ MLRed=3
2092+ ELSEIF(MLReductionLib_char.EQ.'4 ')THEN
2093+ MLRed=4
2094+ ELSE
2095+ PRINT *, 'MLReductionLib is wrong: '//
2096+ $ TRIM(MLReductionLib_str_save)
2097+ STOP
2098+ ENDIF
2099+ find=.FALSE.
2100+ DO k=1,j
2101+ IF(MLReductionLib(k).EQ.MLRed)THEN
2102+ find=.TRUE.
2103+ EXIT
2104+ ENDIF
2105+ ENDDO
2106+ IF(.NOT.find)THEN
2107+ j=j+1
2108+ MLReductionLib(j)=MLRed
2109+ ENDIF
2110+ IF(i.EQ.0)THEN
2111+ EXIT
2112+ ELSE
2113+ MLReductionLib_str=MLReductionLib_str(i+1:)
2114+ ENDIF
2115+ ENDDO
2116+ else if (buff .eq. '#IREGIRECY') then
2117+ read(666,*,end=999) IREGIRECY
2118+ else if (buff .eq. '#IREGIMODE') then
2119+ read(666,*,end=999) IREGIMODE
2120+ if (IREGIMODE .lt. 0 .or.
2121+ & IREGIMODE .gt.2) then
2122+ stop 'IREGIMODE must be >=0 and <=2.'
2123+ endif
2124 else
2125 write(*,*) 'The parameter name ',buff(2:),
2126 &' is not reckognized.'
2127@@ -136,6 +198,10 @@
2128 endif
2129 write(*,*)
2130 & '==============================================================='
2131+ write(*,*) ' > MLReductionLib = '
2132+ $ //TRIM(MLReductionLib_str_save)
2133+ write(*,*) ' > IREGIMODE = ',IREGIMODE
2134+ write(*,*) ' > IREGIRECY = ',IREGIRECY
2135 write(*,*) ' > CTModeRun = ',CTModeRun
2136 write(*,*) ' > MLStabThres = ',MLStabThres
2137 write(*,*) ' > NRotations_DP = ',NRotations_DP
2138@@ -152,6 +218,8 @@
2139 write(*,*) ' > LoopInitStartOver = ',LoopInitStartOver
2140 write(*,*) ' > HelInitStartOver = ',HelInitStartOver
2141 write(*,*) ' > ZeroThres = ',ZeroThres
2142+ write(*,*) ' > OSThres = ',OSThres
2143+ write(*,*) ' > WriteOutFilters = ',WriteOutFilters
2144 write(*,*)
2145 & '==============================================================='
2146 paramPrinted=.TRUE.
2147@@ -167,6 +235,10 @@
2148
2149 include "MadLoopParams.inc"
2150
2151+ MLReductionLib(1)=1
2152+ MLReductionLib(2:5)=0
2153+ IREGIMODE=2
2154+ IREGIRECY=.TRUE.
2155 CTModeInit=0
2156 CTModeRun=-1
2157 NRotations_DP=1
2158@@ -180,7 +252,9 @@
2159 DoubleCheckHelicityFilter=.True.
2160 LoopInitStartOver=.False.
2161 HelInitStartOver=.False.
2162+ WriteOutFilters=.True.
2163 ZeroThres=1.0d-9
2164+ OSThres=1.0d-13
2165 ImprovePSPoint=2
2166
2167 end
2168
2169=== modified file 'Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc'
2170--- Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc 2013-05-01 16:26:01 +0000
2171+++ Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc 2014-08-26 07:56:12 +0000
2172@@ -6,14 +6,16 @@
2173 !====================================================================
2174 !
2175 integer CTModeInit,CTModeRun,CheckCycle,MaxAttempts,
2176- &CTLoopLibrary,NRotations_DP,NRotations_QP,ImprovePSPoint
2177+ &CTLoopLibrary,NRotations_DP,NRotations_QP,ImprovePSPoint,
2178+ &MLReductionLib(5),IREGIMODE
2179
2180- real*8 MLStabThres,CTStabThres,ZeroThres
2181+ real*8 MLStabThres,CTStabThres,ZeroThres,OSThres
2182
2183 logical UseLoopFilter,LoopInitStartOver,DoubleCheckHelicityFilter
2184- logical HelInitStartOver
2185+ logical HelInitStartOver,IREGIRECY,WriteOutFilters
2186
2187 common /MADLOOP/CTModeInit,CTModeRun,NRotations_DP,NRotations_QP,
2188 &ImprovePSPoint,CheckCycle, MaxAttempts,UseLoopFilter,MLStabThres,
2189 &CTStabThres,CTLoopLibrary,LoopInitStartOver,
2190- &DoubleCheckHelicityFilter,ZeroThres,HelInitStartOver
2191+ &DoubleCheckHelicityFilter,ZeroThres,OSThres,HelInitStartOver,
2192+ &MLReductionLib,IREGIMODE,IREGIRECY,WriteOutFilters
2193
2194=== removed file 'Template/loop_material/StandAlone/SubProcesses/check_sa.f'
2195--- Template/loop_material/StandAlone/SubProcesses/check_sa.f 2013-12-13 07:04:16 +0000
2196+++ Template/loop_material/StandAlone/SubProcesses/check_sa.f 1970-01-01 00:00:00 +0000
2197@@ -1,583 +0,0 @@
2198- PROGRAM DRIVER
2199-!**************************************************************************
2200-! THIS IS THE DRIVER FOR CHECKING THE STANDALONE MATRIX ELEMENT.
2201-! IT USES A SIMPLE PHASE SPACE GENERATOR
2202-! Fabio Maltoni - 3rd Febraury 2007
2203-!**************************************************************************
2204- IMPLICIT NONE
2205-!
2206-! CONSTANTS
2207-!
2208- REAL*8 ZERO
2209- PARAMETER (ZERO=0D0)
2210-
2211- LOGICAL READPS
2212- PARAMETER (READPS = .FALSE.)
2213-
2214- INTEGER NPSPOINTS
2215- PARAMETER (NPSPOINTS = 4)
2216-
2217-!
2218-! INCLUDE FILES
2219-!
2220-!--- the include file with the values of the parameters and masses
2221- INCLUDE "coupl.inc"
2222-!--- integer nexternal ! number particles (incoming+outgoing) in the me
2223- INCLUDE "nexternal.inc"
2224-!--- particle masses
2225- REAL*8 PMASS(NEXTERNAL)
2226-!--- integer n_max_cg
2227- INCLUDE "ngraphs.inc" !how many diagrams (could be useful to know...)
2228-
2229-!
2230-! LOCAL
2231-!
2232- INTEGER I,J,K
2233- REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
2234- REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy
2235- REAL*8 PIN(0:3), POUT(0:3)
2236- CHARACTER*120 BUFF(NEXTERNAL)
2237- REAL*8 PREC_FOUND
2238- INTEGER RETURNCODE, HUNDREDS, TENS, UNITS
2239-!
2240-! EXTERNAL
2241-!
2242- REAL*8 DOT
2243- EXTERNAL DOT
2244-
2245-!-----
2246-! BEGIN CODE
2247-!-----
2248-!
2249-!--- INITIALIZATION CALLS
2250-!
2251-!--- Call to initialize the values of the couplings, masses and widths
2252-! used in the evaluation of the matrix element. The primary parameters of the
2253-! models are read from Cards/param_card.dat. The secondary parameters are calculated
2254-! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
2255-! in coupl.inc .
2256-
2257- call setpara('param_card.dat') !first call to setup the paramaters
2258- include "pmass.inc" !set up masses
2259-
2260- AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
2261-
2262- write(*,*) 'AO2PI=',AO2PI
2263-!--- Now use a simple multipurpose PS generator (RAMBO) just to get a
2264-! RANDOM set of four momenta of given masses pmass(i) to be used to evaluate
2265-! the madgraph matrix-element.
2266-! Alternatevely, here the user can call or set the four momenta at his will, see below.
2267-!
2268- IF(nincoming.EQ.1) THEN
2269- SQRTS=PMASS(1)
2270- ELSE
2271- SQRTS=1000d0 !CMS energy in GEV
2272- ENDIF
2273-
2274- call printout()
2275-
2276- do K=1,NPSPOINTS
2277-
2278- if(READPS) then
2279- open(967, file="PS.input", err=976, status='OLD', action='READ')
2280- do i=1,NExternal
2281- read(967,*,end=978) P(0,i),P(1,i),P(2,i),P(3,i)
2282- enddo
2283- goto 978
2284- 976 continue
2285- stop 'Could not read the PS.input phase-space point.'
2286- 978 continue
2287- close(967)
2288- else
2289- if ((nincoming.eq.2).and.((nexternal - nincoming .eq.1))) then
2290- if (pmass(3).eq.0.0d0) then
2291- stop 'Cannot generate 2>1 kin. config. with m3=0.0d0'
2292- else
2293- ! deal with the case of only one particle in the final
2294- ! state
2295- p(0,1) = pmass(3)/2d0
2296- p(1,1) = 0d0
2297- p(2,1) = 0d0
2298- p(3,1) = pmass(3)/2d0
2299- if (pmass(1).GT.0d0) then
2300- p(3,1) = dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
2301- endif
2302- p(0,2) = pmass(3)/2d0
2303- p(1,2) = 0d0
2304- p(2,2) = 0d0
2305- p(3,2) = -pmass(3)/2d0
2306- if (pmass(2) > 0d0) then
2307- p(3,2) = -dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
2308- endif
2309- p(0,3) = pmass(3)
2310- p(1,3) = 0d0
2311- p(2,3) = 0d0
2312- p(3,3) = 0d0
2313- endif
2314- else
2315- CALL GET_MOMENTA(SQRTS,PMASS,P)
2316- endif
2317- endif
2318-
2319- do i=0,3
2320- PIN(i)=0.0d0
2321- do j=1,nincoming
2322- PIN(i)=PIN(i)+p(i,j)
2323- enddo
2324- enddo
2325-
2326-!--- In standalone mode, always use sqrt_s as the renormalization
2327-! scale.
2328- SQRTS=dsqrt(dabs(DOT(PIN(0),PIN(0))))
2329- MU_R=SQRTS
2330-
2331-!--- Update the couplings with the new MU_R
2332- CALL UPDATE_AS_PARAM()
2333-
2334-!-- Possible tweaks to the run
2335-! CALL FORCE_STABILITY_CHECK(.TRUE.)
2336-
2337-!
2338-! Now we can call the matrix element!
2339-!
2340- CALL SMATRIX(P,BORNELEM)
2341- CALL SLOOPMATRIX_THRES(P,MATELEM,
2342- &-1.0d0,PREC_FOUND,RETURNCODE)
2343-!
2344-! write the information on the four momenta
2345-!
2346- if (K.eq.NPSPOINTS) then
2347- write (*,*)
2348- write (*,*) " Phase space point:"
2349- write (*,*) "--------------------------------------------------",
2350- &"---------------------------"
2351- write (*,*) "n E px py ",
2352- &"pz m "
2353- do i=1,nexternal
2354- write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
2355- .dsqrt(dabs(DOT(p(0,i),p(0,i))))
2356- enddo
2357- write (*,*) "--------------------------------------------------",
2358- &"---------------------------"
2359- UNITS=MOD(RETURNCODE,10)
2360- TENS=(MOD(RETURNCODE,100)-UNITS)/10
2361- HUNDREDS=(RETURNCODE-TENS*10-UNITS)/100
2362- if (HUNDREDS.eq.1) then
2363- if (TENS.eq.3.or.TENS.eq.4) then
2364- write(*,*) 'Unknown numerical stability because ',
2365- &' MadLoop is in the initialization stage.'
2366- else
2367- write(*,*) 'Unknown numerical stability, check ',
2368- &'CTModeRun value in MadLoopParams.dat.'
2369- endif
2370- elseif (HUNDREDS.eq.2) then
2371- write(*,*) 'Stable kinematic configuration (SPS).'
2372- elseif (HUNDREDS.eq.3) then
2373- write(*,*) 'Unstable kinematic configuration (UPS).'
2374- write(*,*) 'Quadruple precision rescue successful.'
2375- elseif (HUNDREDS.eq.4) then
2376- write(*,*) 'Exceptional kinematic configuration (EPS).'
2377- write(*,*) 'Both double an quadruple precision computations',
2378- %' are unstable.'
2379- endif
2380- if (TENS.eq.2.or.TENS.eq.4) then
2381- write(*,*) 'Quadruple precision computation used.'
2382- endif
2383- if (HUNDREDS.ne.1) then
2384- if (PREC_FOUND.gt.0.0d0) then
2385- write(*,'(1x,a23,1x,1e10.2)') 'Relative accuracy =',
2386- &PREC_FOUND
2387- elseif (PREC_FOUND.eq.0.0d0) then
2388- write(*,'(1x,a23,1x,1e10.2,1x,a30)') 'Relative accuracy ='
2389- &,PREC_FOUND,'(i.e. beyond double precision)'
2390- else
2391- write(*,*) 'Estimated accuracy could not be',
2392- &' computed for an unknown reason.'
2393- endif
2394- endif
2395- write (*,*) "---------------------------------------------------",
2396- &"--------------------------"
2397- write (*,*) "Matrix element born = ", BORNELEM, " GeV^",
2398- &-(2*nexternal-8)
2399- write (*,*) "Matrix element finite = ", MATELEM(1), " GeV^",
2400- &-(2*nexternal-8)
2401- write (*,*) "Matrix element 1eps = ", MATELEM(2), " GeV^",
2402- &-(2*nexternal-8)
2403- write (*,*) "Matrix element 2eps = ", MATELEM(3), " GeV^",
2404- &-(2*nexternal-8)
2405- write (*,*) "---------------------------------------------------",
2406- &"--------------------------"
2407- write (*,*) "finite / (born*ao2pi) = ", MATELEM(1)/BORNELEM/AO2PI
2408- write (*,*) "1eps / (born*ao2pi) = ", MATELEM(2)/BORNELEM/AO2PI
2409- write (*,*) "2eps / (born*ao2pi) = ", MATELEM(3)/BORNELEM/AO2PI
2410- write (*,*) "---------------------------------------------------",
2411- &"--------------------------"
2412-
2413- open(69, file="result.dat", err=976, action='WRITE')
2414- do i=1,nexternal
2415- write (69,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
2416- enddo
2417- write (69,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
2418- write (69,'(a4,1x,1e25.15)') 'BORN',BORNELEM
2419- write (69,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)/BORNELEM/AO2PI
2420- write (69,'(a4,1x,1e25.15)') '1EPS',MATELEM(2)/BORNELEM/AO2PI
2421- write (69,'(a4,1x,1e25.15)') '2EPS',MATELEM(3)/BORNELEM/AO2PI
2422- write (69,'(a3,1x,1e10.2)') 'ACC',PREC_FOUND
2423- write (69,'(a7,1x,i3)') 'RETCODE',RETURNCODE
2424- write (69,*) 'Export_Format Default'
2425- close(69)
2426- else
2427- write (*,*) "PS Point #",K," done."
2428- endif
2429- enddo
2430-
2431-!!
2432-!! Copy down here (or read in) the four momenta as a string.
2433-!!
2434-!!
2435-! buff(1)=" 1 0.5630480E+04 0.0000000E+00 0.0000000E+00 0.5630480E+04"
2436-! buff(2)=" 2 0.5630480E+04 0.0000000E+00 0.0000000E+00 -0.5630480E+04"
2437-! buff(3)=" 3 0.5466073E+04 0.4443190E+03 0.2446331E+04 -0.4864732E+04"
2438-! buff(4)=" 4 0.8785819E+03 -0.2533886E+03 0.2741971E+03 0.7759741E+03"
2439-! buff(5)=" 5 0.4916306E+04 -0.1909305E+03 -0.2720528E+04 0.4088757E+04"
2440-!!
2441-!! Here the k,E,px,py,pz are read from the string into the momenta array.
2442-!! k=1,2 : incoming
2443-!! k=3,nexternal : outgoing
2444-!!
2445-! do i=1,nexternal
2446-! read (buff(i),*) k, P(0,i),P(1,i),P(2,i),P(3,i)
2447-! enddo
2448-!
2449-!!- print the momenta out
2450-!
2451-! do i=1,nexternal
2452-! write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
2453-! .dsqrt(dabs(DOT(p(0,i),p(0,i))))
2454-! enddo
2455-!
2456-! CALL SLOOPMATRIX(P,MATELEM)
2457-!
2458-! write (*,*) "-------------------------------------------------"
2459-! write (*,*) "Matrix element = ", MATELEM(1), " GeV^",
2460-! &-(2*nexternal-8)
2461-! write (*,*) "-------------------------------------------------"
2462-
2463- end
2464-
2465-
2466-
2467-
2468- double precision function dot(p1,p2)
2469-C****************************************************************************
2470-C 4-Vector Dot product
2471-C****************************************************************************
2472- implicit none
2473- double precision p1(0:3),p2(0:3)
2474- dot=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
2475- end
2476-
2477-
2478- SUBROUTINE GET_MOMENTA(ENERGY,PMASS,P)
2479-C---- auxiliary function to change convention between madgraph and rambo
2480-c---- four momenta.
2481- IMPLICIT NONE
2482- INCLUDE "nexternal.inc"
2483-C ARGUMENTS
2484- REAL*8 ENERGY,PMASS(NEXTERNAL),P(0:3,NEXTERNAL),PRAMBO(4,10),WGT
2485-C LOCAL
2486- INTEGER I
2487- REAL*8 etot2,mom,m1,m2,e1,e2
2488-
2489- ETOT2=energy**2
2490- m1=pmass(1)
2491- m2=pmass(2)
2492- mom=(Etot2**2 - 2*Etot2*m1**2 + m1**4 -
2493- - 2*Etot2*m2**2 - 2*m1**2*m2**2 + m2**4)/(4.*Etot2)
2494- mom=dsqrt(mom)
2495- e1=DSQRT(mom**2+m1**2)
2496- e2=DSQRT(mom**2+m2**2)
2497-c write (*,*) e1+e2,mom
2498-
2499- if(nincoming.eq.2) then
2500-
2501- P(0,1)=e1
2502- P(1,1)=0d0
2503- P(2,1)=0d0
2504- P(3,1)=mom
2505-
2506- P(0,2)=e2
2507- P(1,2)=0d0
2508- P(2,2)=0d0
2509- P(3,2)=-mom
2510-
2511- call rambo(nexternal-2,energy,pmass(3),prambo,WGT)
2512- DO I=3, NEXTERNAL
2513- P(0,I)=PRAMBO(4,I-2)
2514- P(1,I)=PRAMBO(1,I-2)
2515- P(2,I)=PRAMBO(2,I-2)
2516- P(3,I)=PRAMBO(3,I-2)
2517- ENDDO
2518-
2519- elseif(nincoming.eq.1) then
2520-
2521- P(0,1)=energy
2522- P(1,1)=0d0
2523- P(2,1)=0d0
2524- P(3,1)=0d0
2525-
2526- call rambo(nexternal-1,energy,pmass(2),prambo,WGT)
2527- DO I=2, NEXTERNAL
2528- P(0,I)=PRAMBO(4,I-1)
2529- P(1,I)=PRAMBO(1,I-1)
2530- P(2,I)=PRAMBO(2,I-1)
2531- P(3,I)=PRAMBO(3,I-1)
2532- ENDDO
2533- endif
2534-
2535- RETURN
2536- END
2537-
2538-
2539- SUBROUTINE RAMBO(N,ET,XM,P,WT)
2540-***********************************************************************
2541-* RAMBO *
2542-* RA(NDOM) M(OMENTA) B(EAUTIFULLY) O(RGANIZED) *
2543-* *
2544-* A DEMOCRATIC MULTI-PARTICLE PHASE SPACE GENERATOR *
2545-* AUTHORS: S.D. ELLIS, R. KLEISS, W.J. STIRLING *
2546-* THIS IS VERSION 1.0 - WRITTEN BY R. KLEISS *
2547-* -- ADJUSTED BY HANS KUIJF, WEIGHTS ARE LOGARITHMIC (20-08-90) *
2548-* *
2549-* N = NUMBER OF PARTICLES *
2550-* ET = TOTAL CENTRE-OF-MASS ENERGY *
2551-* XM = PARTICLE MASSES ( DIM=NEXTERNAL-nincoming ) *
2552-* P = PARTICLE MOMENTA ( DIM=(4,NEXTERNAL-nincoming) ) *
2553-* WT = WEIGHT OF THE EVENT *
2554-***********************************************************************
2555- IMPLICIT REAL*8(A-H,O-Z)
2556- INCLUDE "nexternal.inc"
2557- DIMENSION XM(NEXTERNAL-NINCOMING),P(4,NEXTERNAL-NINCOMING)
2558- DIMENSION Q(4,NEXTERNAL-NINCOMING),Z(NEXTERNAL-NINCOMING),R(4),
2559- . B(3),P2(NEXTERNAL-NINCOMING),XM2(NEXTERNAL-NINCOMING),
2560- . E(NEXTERNAL-NINCOMING),V(NEXTERNAL-NINCOMING),IWARN(5)
2561- SAVE ACC,ITMAX,IBEGIN,IWARN
2562- DATA ACC/1.D-14/,ITMAX/6/,IBEGIN/0/,IWARN/5*0/
2563-*
2564-* INITIALIZATION STEP: FACTORIALS FOR THE PHASE SPACE WEIGHT
2565- IF(IBEGIN.NE.0) GOTO 103
2566- IBEGIN=1
2567- TWOPI=8.*DATAN(1.D0)
2568- PO2LOG=LOG(TWOPI/4.)
2569- Z(2)=PO2LOG
2570- DO 101 K=3,(NEXTERNAL-NINCOMING-1)
2571- 101 Z(K)=Z(K-1)+PO2LOG-2.*LOG(DFLOAT(K-2))
2572- DO 102 K=3,(NEXTERNAL-NINCOMING-1)
2573- 102 Z(K)=(Z(K)-LOG(DFLOAT(K-1)))
2574-*
2575-* CHECK ON THE NUMBER OF PARTICLES
2576- 103 IF(N.GT.1.AND.N.LT.101) GOTO 104
2577- PRINT 1001,N
2578- STOP
2579-*
2580-* CHECK WHETHER TOTAL ENERGY IS SUFFICIENT; COUNT NONZERO MASSES
2581- 104 XMT=0.
2582- NM=0
2583- DO 105 I=1,N
2584- IF(XM(I).NE.0.D0) NM=NM+1
2585- 105 XMT=XMT+ABS(XM(I))
2586- IF(XMT.LE.ET) GOTO 201
2587- PRINT 1002,XMT,ET
2588- STOP
2589-*
2590-* THE PARAMETER VALUES ARE NOW ACCEPTED
2591-*
2592-* GENERATE N MASSLESS MOMENTA IN INFINITE PHASE SPACE
2593- 201 DO 202 I=1,N
2594- r1=rn(1)
2595- C=2.*r1-1.
2596- S=SQRT(1.-C*C)
2597- F=TWOPI*RN(2)
2598- r1=rn(3)
2599- r2=rn(4)
2600- Q(4,I)=-LOG(r1*r2)
2601- Q(3,I)=Q(4,I)*C
2602- Q(2,I)=Q(4,I)*S*COS(F)
2603- 202 Q(1,I)=Q(4,I)*S*SIN(F)
2604-*
2605-* CALCULATE THE PARAMETERS OF THE CONFORMAL TRANSFORMATION
2606- DO 203 I=1,4
2607- 203 R(I)=0.
2608- DO 204 I=1,N
2609- DO 204 K=1,4
2610- 204 R(K)=R(K)+Q(K,I)
2611- RMAS=SQRT(R(4)**2-R(3)**2-R(2)**2-R(1)**2)
2612- DO 205 K=1,3
2613- 205 B(K)=-R(K)/RMAS
2614- G=R(4)/RMAS
2615- A=1./(1.+G)
2616- X=ET/RMAS
2617-*
2618-* TRANSFORM THE Q'S CONFORMALLY INTO THE P'S
2619- DO 207 I=1,N
2620- BQ=B(1)*Q(1,I)+B(2)*Q(2,I)+B(3)*Q(3,I)
2621- DO 206 K=1,3
2622- 206 P(K,I)=X*(Q(K,I)+B(K)*(Q(4,I)+A*BQ))
2623- 207 P(4,I)=X*(G*Q(4,I)+BQ)
2624-*
2625-* CALCULATE WEIGHT AND POSSIBLE WARNINGS
2626- WT=PO2LOG
2627- IF(N.NE.2) WT=(2.*N-4.)*LOG(ET)+Z(N)
2628- IF(WT.GE.-180.D0) GOTO 208
2629- IF(IWARN(1).LE.5) PRINT 1004,WT
2630- IWARN(1)=IWARN(1)+1
2631- 208 IF(WT.LE. 174.D0) GOTO 209
2632- IF(IWARN(2).LE.5) PRINT 1005,WT
2633- IWARN(2)=IWARN(2)+1
2634-*
2635-* RETURN FOR WEIGHTED MASSLESS MOMENTA
2636- 209 IF(NM.NE.0) GOTO 210
2637-* RETURN LOG OF WEIGHT
2638- WT=WT
2639- RETURN
2640-*
2641-* MASSIVE PARTICLES: RESCALE THE MOMENTA BY A FACTOR X
2642- 210 XMAX=SQRT(1.-(XMT/ET)**2)
2643- DO 301 I=1,N
2644- XM2(I)=XM(I)**2
2645- 301 P2(I)=P(4,I)**2
2646- ITER=0
2647- X=XMAX
2648- ACCU=ET*ACC
2649- 302 F0=-ET
2650- G0=0.
2651- X2=X*X
2652- DO 303 I=1,N
2653- E(I)=SQRT(XM2(I)+X2*P2(I))
2654- F0=F0+E(I)
2655- 303 G0=G0+P2(I)/E(I)
2656- IF(ABS(F0).LE.ACCU) GOTO 305
2657- ITER=ITER+1
2658- IF(ITER.LE.ITMAX) GOTO 304
2659- PRINT 1006,ITMAX
2660- GOTO 305
2661- 304 X=X-F0/(X*G0)
2662- GOTO 302
2663- 305 DO 307 I=1,N
2664- V(I)=X*P(4,I)
2665- DO 306 K=1,3
2666- 306 P(K,I)=X*P(K,I)
2667- 307 P(4,I)=E(I)
2668-*
2669-* CALCULATE THE MASS-EFFECT WEIGHT FACTOR
2670- WT2=1.
2671- WT3=0.
2672- DO 308 I=1,N
2673- WT2=WT2*V(I)/E(I)
2674- 308 WT3=WT3+V(I)**2/E(I)
2675- WTM=(2.*N-3.)*LOG(X)+LOG(WT2/WT3*ET)
2676-*
2677-* RETURN FOR WEIGHTED MASSIVE MOMENTA
2678- WT=WT+WTM
2679- IF(WT.GE.-180.D0) GOTO 309
2680- IF(IWARN(3).LE.5) PRINT 1004,WT
2681- IWARN(3)=IWARN(3)+1
2682- 309 IF(WT.LE. 174.D0) GOTO 310
2683- IF(IWARN(4).LE.5) PRINT 1005,WT
2684- IWARN(4)=IWARN(4)+1
2685-* RETURN LOG OF WEIGHT
2686- 310 WT=WT
2687- RETURN
2688-*
2689- 1001 FORMAT(' RAMBO FAILS: # OF PARTICLES =',I5,' IS NOT ALLOWED')
2690- 1002 FORMAT(' RAMBO FAILS: TOTAL MASS =',D15.6,' IS NOT',
2691- . ' SMALLER THAN TOTAL ENERGY =',D15.6)
2692- 1004 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY UNDERFLOW')
2693- 1005 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY OVERFLOW')
2694- 1006 FORMAT(' RAMBO WARNS:',I3,' ITERATIONS DID NOT GIVE THE',
2695- . ' DESIRED ACCURACY =',D15.6)
2696- END
2697-
2698- FUNCTION RN(IDUMMY)
2699- REAL*8 RN,RAN
2700- SAVE INIT
2701- DATA INIT /1/
2702- IF (INIT.EQ.1) THEN
2703- INIT=0
2704- CALL RMARIN(1802,9373)
2705- END IF
2706-*
2707- 10 CALL RANMAR(RAN)
2708- IF (RAN.LT.1D-16) GOTO 10
2709- RN=RAN
2710-*
2711- END
2712-
2713-
2714-
2715- SUBROUTINE RANMAR(RVEC)
2716-* -----------------
2717-* Universal random number generator proposed by Marsaglia and Zaman
2718-* in report FSU-SCRI-87-50
2719-* In this version RVEC is a double precision variable.
2720- IMPLICIT REAL*8(A-H,O-Z)
2721- COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
2722- COMMON/ RASET2 / IRANMR,JRANMR
2723- SAVE /RASET1/,/RASET2/
2724- UNI = RANU(IRANMR) - RANU(JRANMR)
2725- IF(UNI .LT. 0D0) UNI = UNI + 1D0
2726- RANU(IRANMR) = UNI
2727- IRANMR = IRANMR - 1
2728- JRANMR = JRANMR - 1
2729- IF(IRANMR .EQ. 0) IRANMR = 97
2730- IF(JRANMR .EQ. 0) JRANMR = 97
2731- RANC = RANC - RANCD
2732- IF(RANC .LT. 0D0) RANC = RANC + RANCM
2733- UNI = UNI - RANC
2734- IF(UNI .LT. 0D0) UNI = UNI + 1D0
2735- RVEC = UNI
2736- END
2737-
2738- SUBROUTINE RMARIN(IJ,KL)
2739-* -----------------
2740-* Initializing routine for RANMAR, must be called before generating
2741-* any pseudorandom numbers with RANMAR. The input values should be in
2742-* the ranges 0<=ij<=31328 ; 0<=kl<=30081
2743- IMPLICIT REAL*8(A-H,O-Z)
2744- COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
2745- COMMON/ RASET2 / IRANMR,JRANMR
2746- SAVE /RASET1/,/RASET2/
2747-* This shows correspondence between the simplified input seeds IJ, KL
2748-* and the original Marsaglia-Zaman seeds I,J,K,L.
2749-* To get the standard values in the Marsaglia-Zaman paper (i=12,j=34
2750-* k=56,l=78) put ij=1802, kl=9373
2751- I = MOD( IJ/177 , 177 ) + 2
2752- J = MOD( IJ , 177 ) + 2
2753- K = MOD( KL/169 , 178 ) + 1
2754- L = MOD( KL , 169 )
2755- DO 300 II = 1 , 97
2756- S = 0D0
2757- T = .5D0
2758- DO 200 JJ = 1 , 24
2759- M = MOD( MOD(I*J,179)*K , 179 )
2760- I = J
2761- J = K
2762- K = M
2763- L = MOD( 53*L+1 , 169 )
2764- IF(MOD(L*M,64) .GE. 32) S = S + T
2765- T = .5D0*T
2766- 200 CONTINUE
2767- RANU(II) = S
2768- 300 CONTINUE
2769- RANC = 362436D0 / 16777216D0
2770- RANCD = 7654321D0 / 16777216D0
2771- RANCM = 16777213D0 / 16777216D0
2772- IRANMR = 97
2773- JRANMR = 33
2774- END
2775-
2776-
2777-
2778-
2779-
2780-
2781
2782=== removed file 'Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f'
2783--- Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f 2013-12-13 07:04:16 +0000
2784+++ Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f 1970-01-01 00:00:00 +0000
2785@@ -1,574 +0,0 @@
2786- PROGRAM DRIVER
2787-!**************************************************************************
2788-! THIS IS THE DRIVER FOR CHECKING THE STANDALONE MATRIX ELEMENT.
2789-! IT USES A SIMPLE PHASE SPACE GENERATOR
2790-! Fabio Maltoni - 3rd Febraury 2007
2791-!**************************************************************************
2792- IMPLICIT NONE
2793-!
2794-! CONSTANTS
2795-!
2796- REAL*8 ZERO
2797- PARAMETER (ZERO=0D0)
2798-
2799- LOGICAL READPS
2800- PARAMETER (READPS = .FALSE.)
2801-
2802- INTEGER NPSPOINTS
2803- PARAMETER (NPSPOINTS = 4)
2804-
2805-!
2806-! INCLUDE FILES
2807-!
2808-!--- the include file with the values of the parameters and masses
2809- INCLUDE "coupl.inc"
2810-!--- integer nexternal ! number particles (incoming+outgoing) in the me
2811- INCLUDE "nexternal.inc"
2812-!--- particle masses
2813- REAL*8 PMASS(NEXTERNAL)
2814-!--- integer n_max_cg
2815- INCLUDE "ngraphs.inc" !how many diagrams (could be useful to know...)
2816-
2817-!
2818-! LOCAL
2819-!
2820- INTEGER I,J,K
2821- REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
2822- REAL*8 SQRTS,MATELEM(3) ! sqrt(s)= center of mass energy
2823- REAL*8 PIN(0:3), POUT(0:3)
2824- CHARACTER*120 BUFF(NEXTERNAL)
2825- REAL*8 PREC_FOUND
2826- INTEGER RETURNCODE, HUNDREDS, TENS, UNITS
2827-!
2828-! EXTERNAL
2829-!
2830- REAL*8 DOT
2831- EXTERNAL DOT
2832-
2833-!-----
2834-! BEGIN CODE
2835-!-----
2836-!
2837-!--- INITIALIZATION CALLS
2838-!
2839-!--- Call to initialize the values of the couplings, masses and widths
2840-! used in the evaluation of the matrix element. The primary parameters of the
2841-! models are read from Cards/param_card.dat. The secondary parameters are calculated
2842-! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
2843-! in coupl.inc .
2844-
2845- call setpara('param_card.dat') !first call to setup the paramaters
2846- include "pmass.inc" !set up masses
2847-
2848-!--- Now use a simple multipurpose PS generator (RAMBO) just to get a
2849-! RANDOM set of four momenta of given masses pmass(i) to be used to evaluate
2850-! the madgraph matrix-element.
2851-! Alternatevely, here the user can call or set the four momenta at his will, see below.
2852-!
2853- IF(nincoming.EQ.1) THEN
2854- SQRTS=PMASS(1)
2855- ELSE
2856- SQRTS=1000d0 !CMS energy in GEV
2857- ENDIF
2858-
2859- call printout()
2860-
2861- do K=1,NPSPOINTS
2862-
2863- if(READPS) then
2864- open(967, file="PS.input", err=976, status='OLD', action='READ')
2865- do i=1,NExternal
2866- read(967,*,end=978) P(0,i),P(1,i),P(2,i),P(3,i)
2867- enddo
2868- goto 978
2869- 976 continue
2870- stop 'Could not read the PS.input phase-space point.'
2871- 978 continue
2872- close(967)
2873- else
2874- if ((nincoming.eq.2).and.((nexternal - nincoming .eq.1))) then
2875- if (pmass(3).eq.0.0d0) then
2876- stop 'Cannot generate 2>1 kin. config. with m3=0.0d0'
2877- else
2878- ! deal with the case of only one particle in the final
2879- ! state
2880- p(0,1) = pmass(3)/2d0
2881- p(1,1) = 0d0
2882- p(2,1) = 0d0
2883- p(3,1) = pmass(3)/2d0
2884- if (pmass(1).GT.0d0) then
2885- p(3,1) = dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
2886- endif
2887- p(0,2) = pmass(3)/2d0
2888- p(1,2) = 0d0
2889- p(2,2) = 0d0
2890- p(3,2) = -pmass(3)/2d0
2891- if (pmass(2) > 0d0) then
2892- p(3,2) = -dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
2893- endif
2894- p(0,3) = pmass(3)
2895- p(1,3) = 0d0
2896- p(2,3) = 0d0
2897- p(3,3) = 0d0
2898- endif
2899- else
2900- CALL GET_MOMENTA(SQRTS,PMASS,P)
2901- endif
2902- endif
2903-
2904- do i=0,3
2905- PIN(i)=0.0d0
2906- do j=1,nincoming
2907- PIN(i)=PIN(i)+p(i,j)
2908- enddo
2909- enddo
2910-
2911-!--- In standalone mode, always use sqrt_s as the renormalization
2912-! scale.
2913- SQRTS=dsqrt(dabs(DOT(PIN(0),PIN(0))))
2914-
2915- MU_R=SQRTS
2916-
2917-!--- Update the couplings with the new MU_R
2918- CALL UPDATE_AS_PARAM()
2919-
2920-!-- Possible tweaks to the run
2921-! CALL FORCE_STABILITY_CHECK(.TRUE.)
2922-
2923-!
2924-! Now we can call the matrix element!
2925-!
2926- CALL SLOOPMATRIX_THRES(P,MATELEM,-1.0d0,
2927- &PREC_FOUND,RETURNCODE)
2928-!
2929-! write the information on the four momenta
2930-!
2931- if (K.eq.NPSPOINTS) then
2932- write (*,*)
2933- write (*,*) " Phase space point:"
2934- write (*,*) "--------------------------------------------------",
2935- &"---------------------------"
2936- write (*,*) "n E px py ",
2937- &"pz m "
2938- do i=1,nexternal
2939- write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
2940- .dsqrt(dabs(DOT(p(0,i),p(0,i))))
2941- enddo
2942- write (*,*) "--------------------------------------------------",
2943- &"---------------------------"
2944- UNITS=MOD(RETURNCODE,10)
2945- TENS=(MOD(RETURNCODE,100)-UNITS)/10
2946- HUNDREDS=(RETURNCODE-TENS*10-UNITS)/100
2947- if (HUNDREDS.eq.1) then
2948- if (TENS.eq.3.or.TENS.eq.4) then
2949- write(*,*) 'Unknown numerical stability because ',
2950- &' MadLoop is in the initialization stage.'
2951- else
2952- write(*,*) 'Unknown numerical stability, due to ',
2953- &'the value of CTModeRun set in MadLoopParams.dat.'
2954- endif
2955- elseif (HUNDREDS.eq.2) then
2956- write(*,*) 'Stable kinematic configuration (SPS).'
2957- elseif (HUNDREDS.eq.3) then
2958- write(*,*) 'Unstable kinematic configuration (UPS).'
2959- write(*,*) 'Quadruple precision rescue successful.'
2960- elseif (HUNDREDS.eq.4) then
2961- write(*,*) 'Exceptional kinematic configuration (EPS).'
2962- write(*,*) 'Both double an quadruple precision computations',
2963- %' are unstable.'
2964- endif
2965- if (TENS.eq.2.or.TENS.eq.4) then
2966- write(*,*) 'Quadruple precision computation used.'
2967- endif
2968- if (HUNDREDS.ne.1) then
2969- if (PREC_FOUND.ge.0.0d0) then
2970- write(*,'(1x,a23,1x,1e10.2)') 'Relative accuracy =',
2971- &PREC_FOUND
2972- elseif (PREC_FOUND.eq.0.0d0) then
2973- write(*,'(1x,a23,1x,1e10.2,1x,a30)') 'Relative accuracy ='
2974- &,PREC_FOUND,'(i.e. beyond double precision)'
2975- else
2976- write(*,*) 'Estimated accuracy could not be',
2977- &' computed for an unknown reason.'
2978- endif
2979- endif
2980- write (*,*) "This is a loop induced process, so only the ",
2981- &"unnormalized finite part is output"
2982- write (*,*) " here. Be aware that all loops",
2983- &" are expected to be UV-finite as no "
2984- write (*,*) " renormalization prescription is considered. "
2985- write (*,*) "---------------------------------------------------",
2986- &"--------------------------"
2987- write (*,*) "Matrix element finite = ", MATELEM(1), " GeV^",
2988- &-(2*nexternal-8)
2989- write (*,*) "---------------------------------------------------",
2990- &"--------------------------"
2991-
2992- open(69, file="result.dat", err=976, action='WRITE')
2993- do i=1,nexternal
2994- write (69,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
2995- enddo
2996- write (69,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
2997- write (69,'(a4,1x,1e25.15)') 'BORN',0.0d0
2998- write (69,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)
2999- write (69,'(a4,1x,1e25.15)') '1EPS',0.0d0
3000- write (69,'(a4,1x,1e25.15)') '2EPS',0.0d0
3001- write (69,'(a3,1x,1e10.2)') 'ACC',PREC_FOUND
3002- write (69,'(a7,1x,i3)') 'RETCODE',RETURNCODE
3003- write (69,*) 'Export_Format LoopInduced'
3004- close(69)
3005- else
3006- write (*,*) "PS Point #",K," done."
3007- endif
3008- enddo
3009-
3010-!!
3011-!! Copy down here (or read in) the four momenta as a string.
3012-!!
3013-!!
3014-! buff(1)=" 1 0.5630480E+04 0.0000000E+00 0.0000000E+00 0.5630480E+04"
3015-! buff(2)=" 2 0.5630480E+04 0.0000000E+00 0.0000000E+00 -0.5630480E+04"
3016-! buff(3)=" 3 0.5466073E+04 0.4443190E+03 0.2446331E+04 -0.4864732E+04"
3017-! buff(4)=" 4 0.8785819E+03 -0.2533886E+03 0.2741971E+03 0.7759741E+03"
3018-! buff(5)=" 5 0.4916306E+04 -0.1909305E+03 -0.2720528E+04 0.4088757E+04"
3019-!!
3020-!! Here the k,E,px,py,pz are read from the string into the momenta array.
3021-!! k=1,2 : incoming
3022-!! k=3,nexternal : outgoing
3023-!!
3024-! do i=1,nexternal
3025-! read (buff(i),*) k, P(0,i),P(1,i),P(2,i),P(3,i)
3026-! enddo
3027-!
3028-!!- print the momenta out
3029-!
3030-! do i=1,nexternal
3031-! write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
3032-! .dsqrt(dabs(DOT(p(0,i),p(0,i))))
3033-! enddo
3034-!
3035-! CALL SLOOPMATRIX(P,MATELEM)
3036-!
3037-! write (*,*) "-------------------------------------------------"
3038-! write (*,*) "Matrix element = ", MATELEM(1), " GeV^",
3039-! &-(2*nexternal-8)
3040-! write (*,*) "-------------------------------------------------"
3041-
3042- end
3043-
3044-
3045-
3046-
3047- double precision function dot(p1,p2)
3048-C****************************************************************************
3049-C 4-Vector Dot product
3050-C****************************************************************************
3051- implicit none
3052- double precision p1(0:3),p2(0:3)
3053- dot=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
3054- end
3055-
3056-
3057- SUBROUTINE GET_MOMENTA(ENERGY,PMASS,P)
3058-C---- auxiliary function to change convention between madgraph and rambo
3059-c---- four momenta.
3060- IMPLICIT NONE
3061- INCLUDE "nexternal.inc"
3062-C ARGUMENTS
3063- REAL*8 ENERGY,PMASS(NEXTERNAL),P(0:3,NEXTERNAL),PRAMBO(4,10),WGT
3064-C LOCAL
3065- INTEGER I
3066- REAL*8 etot2,mom,m1,m2,e1,e2
3067-
3068- ETOT2=energy**2
3069- m1=pmass(1)
3070- m2=pmass(2)
3071- mom=(Etot2**2 - 2*Etot2*m1**2 + m1**4 -
3072- - 2*Etot2*m2**2 - 2*m1**2*m2**2 + m2**4)/(4.*Etot2)
3073- mom=dsqrt(mom)
3074- e1=DSQRT(mom**2+m1**2)
3075- e2=DSQRT(mom**2+m2**2)
3076-c write (*,*) e1+e2,mom
3077-
3078- if(nincoming.eq.2) then
3079-
3080- P(0,1)=e1
3081- P(1,1)=0d0
3082- P(2,1)=0d0
3083- P(3,1)=mom
3084-
3085- P(0,2)=e2
3086- P(1,2)=0d0
3087- P(2,2)=0d0
3088- P(3,2)=-mom
3089-
3090- call rambo(nexternal-2,energy,pmass(3),prambo,WGT)
3091- DO I=3, NEXTERNAL
3092- P(0,I)=PRAMBO(4,I-2)
3093- P(1,I)=PRAMBO(1,I-2)
3094- P(2,I)=PRAMBO(2,I-2)
3095- P(3,I)=PRAMBO(3,I-2)
3096- ENDDO
3097-
3098- elseif(nincoming.eq.1) then
3099-
3100- P(0,1)=energy
3101- P(1,1)=0d0
3102- P(2,1)=0d0
3103- P(3,1)=0d0
3104-
3105- call rambo(nexternal-1,energy,pmass(2),prambo,WGT)
3106- DO I=2, NEXTERNAL
3107- P(0,I)=PRAMBO(4,I-1)
3108- P(1,I)=PRAMBO(1,I-1)
3109- P(2,I)=PRAMBO(2,I-1)
3110- P(3,I)=PRAMBO(3,I-1)
3111- ENDDO
3112- endif
3113-
3114- RETURN
3115- END
3116-
3117-
3118- SUBROUTINE RAMBO(N,ET,XM,P,WT)
3119-***********************************************************************
3120-* RAMBO *
3121-* RA(NDOM) M(OMENTA) B(EAUTIFULLY) O(RGANIZED) *
3122-* *
3123-* A DEMOCRATIC MULTI-PARTICLE PHASE SPACE GENERATOR *
3124-* AUTHORS: S.D. ELLIS, R. KLEISS, W.J. STIRLING *
3125-* THIS IS VERSION 1.0 - WRITTEN BY R. KLEISS *
3126-* -- ADJUSTED BY HANS KUIJF, WEIGHTS ARE LOGARITHMIC (20-08-90) *
3127-* *
3128-* N = NUMBER OF PARTICLES *
3129-* ET = TOTAL CENTRE-OF-MASS ENERGY *
3130-* XM = PARTICLE MASSES ( DIM=NEXTERNAL-nincoming ) *
3131-* P = PARTICLE MOMENTA ( DIM=(4,NEXTERNAL-nincoming) ) *
3132-* WT = WEIGHT OF THE EVENT *
3133-***********************************************************************
3134- IMPLICIT REAL*8(A-H,O-Z)
3135- INCLUDE "nexternal.inc"
3136- DIMENSION XM(NEXTERNAL-NINCOMING),P(4,NEXTERNAL-NINCOMING)
3137- DIMENSION Q(4,NEXTERNAL-NINCOMING),Z(NEXTERNAL-NINCOMING),R(4),
3138- . B(3),P2(NEXTERNAL-NINCOMING),XM2(NEXTERNAL-NINCOMING),
3139- . E(NEXTERNAL-NINCOMING),V(NEXTERNAL-NINCOMING),IWARN(5)
3140- SAVE ACC,ITMAX,IBEGIN,IWARN
3141- DATA ACC/1.D-14/,ITMAX/6/,IBEGIN/0/,IWARN/5*0/
3142-*
3143-* INITIALIZATION STEP: FACTORIALS FOR THE PHASE SPACE WEIGHT
3144- IF(IBEGIN.NE.0) GOTO 103
3145- IBEGIN=1
3146- TWOPI=8.*DATAN(1.D0)
3147- PO2LOG=LOG(TWOPI/4.)
3148- Z(2)=PO2LOG
3149- DO 101 K=3,(NEXTERNAL-NINCOMING-1)
3150- 101 Z(K)=Z(K-1)+PO2LOG-2.*LOG(DFLOAT(K-2))
3151- DO 102 K=3,(NEXTERNAL-NINCOMING-1)
3152- 102 Z(K)=(Z(K)-LOG(DFLOAT(K-1)))
3153-*
3154-* CHECK ON THE NUMBER OF PARTICLES
3155- 103 IF(N.GT.1.AND.N.LT.101) GOTO 104
3156- PRINT 1001,N
3157- STOP
3158-*
3159-* CHECK WHETHER TOTAL ENERGY IS SUFFICIENT; COUNT NONZERO MASSES
3160- 104 XMT=0.
3161- NM=0
3162- DO 105 I=1,N
3163- IF(XM(I).NE.0.D0) NM=NM+1
3164- 105 XMT=XMT+ABS(XM(I))
3165- IF(XMT.LE.ET) GOTO 201
3166- PRINT 1002,XMT,ET
3167- STOP
3168-*
3169-* THE PARAMETER VALUES ARE NOW ACCEPTED
3170-*
3171-* GENERATE N MASSLESS MOMENTA IN INFINITE PHASE SPACE
3172- 201 DO 202 I=1,N
3173- r1=rn(1)
3174- C=2.*r1-1.
3175- S=SQRT(1.-C*C)
3176- F=TWOPI*RN(2)
3177- r1=rn(3)
3178- r2=rn(4)
3179- Q(4,I)=-LOG(r1*r2)
3180- Q(3,I)=Q(4,I)*C
3181- Q(2,I)=Q(4,I)*S*COS(F)
3182- 202 Q(1,I)=Q(4,I)*S*SIN(F)
3183-*
3184-* CALCULATE THE PARAMETERS OF THE CONFORMAL TRANSFORMATION
3185- DO 203 I=1,4
3186- 203 R(I)=0.
3187- DO 204 I=1,N
3188- DO 204 K=1,4
3189- 204 R(K)=R(K)+Q(K,I)
3190- RMAS=SQRT(R(4)**2-R(3)**2-R(2)**2-R(1)**2)
3191- DO 205 K=1,3
3192- 205 B(K)=-R(K)/RMAS
3193- G=R(4)/RMAS
3194- A=1./(1.+G)
3195- X=ET/RMAS
3196-*
3197-* TRANSFORM THE Q'S CONFORMALLY INTO THE P'S
3198- DO 207 I=1,N
3199- BQ=B(1)*Q(1,I)+B(2)*Q(2,I)+B(3)*Q(3,I)
3200- DO 206 K=1,3
3201- 206 P(K,I)=X*(Q(K,I)+B(K)*(Q(4,I)+A*BQ))
3202- 207 P(4,I)=X*(G*Q(4,I)+BQ)
3203-*
3204-* CALCULATE WEIGHT AND POSSIBLE WARNINGS
3205- WT=PO2LOG
3206- IF(N.NE.2) WT=(2.*N-4.)*LOG(ET)+Z(N)
3207- IF(WT.GE.-180.D0) GOTO 208
3208- IF(IWARN(1).LE.5) PRINT 1004,WT
3209- IWARN(1)=IWARN(1)+1
3210- 208 IF(WT.LE. 174.D0) GOTO 209
3211- IF(IWARN(2).LE.5) PRINT 1005,WT
3212- IWARN(2)=IWARN(2)+1
3213-*
3214-* RETURN FOR WEIGHTED MASSLESS MOMENTA
3215- 209 IF(NM.NE.0) GOTO 210
3216-* RETURN LOG OF WEIGHT
3217- WT=WT
3218- RETURN
3219-*
3220-* MASSIVE PARTICLES: RESCALE THE MOMENTA BY A FACTOR X
3221- 210 XMAX=SQRT(1.-(XMT/ET)**2)
3222- DO 301 I=1,N
3223- XM2(I)=XM(I)**2
3224- 301 P2(I)=P(4,I)**2
3225- ITER=0
3226- X=XMAX
3227- ACCU=ET*ACC
3228- 302 F0=-ET
3229- G0=0.
3230- X2=X*X
3231- DO 303 I=1,N
3232- E(I)=SQRT(XM2(I)+X2*P2(I))
3233- F0=F0+E(I)
3234- 303 G0=G0+P2(I)/E(I)
3235- IF(ABS(F0).LE.ACCU) GOTO 305
3236- ITER=ITER+1
3237- IF(ITER.LE.ITMAX) GOTO 304
3238- PRINT 1006,ITMAX
3239- GOTO 305
3240- 304 X=X-F0/(X*G0)
3241- GOTO 302
3242- 305 DO 307 I=1,N
3243- V(I)=X*P(4,I)
3244- DO 306 K=1,3
3245- 306 P(K,I)=X*P(K,I)
3246- 307 P(4,I)=E(I)
3247-*
3248-* CALCULATE THE MASS-EFFECT WEIGHT FACTOR
3249- WT2=1.
3250- WT3=0.
3251- DO 308 I=1,N
3252- WT2=WT2*V(I)/E(I)
3253- 308 WT3=WT3+V(I)**2/E(I)
3254- WTM=(2.*N-3.)*LOG(X)+LOG(WT2/WT3*ET)
3255-*
3256-* RETURN FOR WEIGHTED MASSIVE MOMENTA
3257- WT=WT+WTM
3258- IF(WT.GE.-180.D0) GOTO 309
3259- IF(IWARN(3).LE.5) PRINT 1004,WT
3260- IWARN(3)=IWARN(3)+1
3261- 309 IF(WT.LE. 174.D0) GOTO 310
3262- IF(IWARN(4).LE.5) PRINT 1005,WT
3263- IWARN(4)=IWARN(4)+1
3264-* RETURN LOG OF WEIGHT
3265- 310 WT=WT
3266- RETURN
3267-*
3268- 1001 FORMAT(' RAMBO FAILS: # OF PARTICLES =',I5,' IS NOT ALLOWED')
3269- 1002 FORMAT(' RAMBO FAILS: TOTAL MASS =',D15.6,' IS NOT',
3270- . ' SMALLER THAN TOTAL ENERGY =',D15.6)
3271- 1004 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY UNDERFLOW')
3272- 1005 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY OVERFLOW')
3273- 1006 FORMAT(' RAMBO WARNS:',I3,' ITERATIONS DID NOT GIVE THE',
3274- . ' DESIRED ACCURACY =',D15.6)
3275- END
3276-
3277- FUNCTION RN(IDUMMY)
3278- REAL*8 RN,RAN
3279- SAVE INIT
3280- DATA INIT /1/
3281- IF (INIT.EQ.1) THEN
3282- INIT=0
3283- CALL RMARIN(1802,9373)
3284- END IF
3285-*
3286- 10 CALL RANMAR(RAN)
3287- IF (RAN.LT.1D-16) GOTO 10
3288- RN=RAN
3289-*
3290- END
3291-
3292-
3293-
3294- SUBROUTINE RANMAR(RVEC)
3295-* -----------------
3296-* Universal random number generator proposed by Marsaglia and Zaman
3297-* in report FSU-SCRI-87-50
3298-* In this version RVEC is a double precision variable.
3299- IMPLICIT REAL*8(A-H,O-Z)
3300- COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
3301- COMMON/ RASET2 / IRANMR,JRANMR
3302- SAVE /RASET1/,/RASET2/
3303- UNI = RANU(IRANMR) - RANU(JRANMR)
3304- IF(UNI .LT. 0D0) UNI = UNI + 1D0
3305- RANU(IRANMR) = UNI
3306- IRANMR = IRANMR - 1
3307- JRANMR = JRANMR - 1
3308- IF(IRANMR .EQ. 0) IRANMR = 97
3309- IF(JRANMR .EQ. 0) JRANMR = 97
3310- RANC = RANC - RANCD
3311- IF(RANC .LT. 0D0) RANC = RANC + RANCM
3312- UNI = UNI - RANC
3313- IF(UNI .LT. 0D0) UNI = UNI + 1D0
3314- RVEC = UNI
3315- END
3316-
3317- SUBROUTINE RMARIN(IJ,KL)
3318-* -----------------
3319-* Initializing routine for RANMAR, must be called before generating
3320-* any pseudorandom numbers with RANMAR. The input values should be in
3321-* the ranges 0<=ij<=31328 ; 0<=kl<=30081
3322- IMPLICIT REAL*8(A-H,O-Z)
3323- COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
3324- COMMON/ RASET2 / IRANMR,JRANMR
3325- SAVE /RASET1/,/RASET2/
3326-* This shows correspondence between the simplified input seeds IJ, KL
3327-* and the original Marsaglia-Zaman seeds I,J,K,L.
3328-* To get the standard values in the Marsaglia-Zaman paper (i=12,j=34
3329-* k=56,l=78) put ij=1802, kl=9373
3330- I = MOD( IJ/177 , 177 ) + 2
3331- J = MOD( IJ , 177 ) + 2
3332- K = MOD( KL/169 , 178 ) + 1
3333- L = MOD( KL , 169 )
3334- DO 300 II = 1 , 97
3335- S = 0D0
3336- T = .5D0
3337- DO 200 JJ = 1 , 24
3338- M = MOD( MOD(I*J,179)*K , 179 )
3339- I = J
3340- J = K
3341- K = M
3342- L = MOD( 53*L+1 , 169 )
3343- IF(MOD(L*M,64) .GE. 32) S = S + T
3344- T = .5D0*T
3345- 200 CONTINUE
3346- RANU(II) = S
3347- 300 CONTINUE
3348- RANC = 362436D0 / 16777216D0
3349- RANCD = 7654321D0 / 16777216D0
3350- RANCM = 16777213D0 / 16777216D0
3351- IRANMR = 97
3352- JRANMR = 33
3353- END
3354-
3355-
3356-
3357-
3358-
3359-
3360
3361=== removed file 'Template/loop_material/StandAlone/SubProcesses/makefile'
3362--- Template/loop_material/StandAlone/SubProcesses/makefile 2012-11-09 17:13:53 +0000
3363+++ Template/loop_material/StandAlone/SubProcesses/makefile 1970-01-01 00:00:00 +0000
3364@@ -1,29 +0,0 @@
3365-include ../../Source/make_opts
3366-
3367-LIBDIR = ../../lib/
3368-PROG = check
3369-STABCHECKDRIVER = StabilityCheckDriver
3370-LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel
3371-LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext)
3372-PROCESS= loop_matrix.o improve_ps.o\
3373- $(patsubst %.f,%.o,$(wildcard born_matrix.f)) \
3374- loop_num.o CT_interface.o \
3375- $(patsubst %.f,%.o,$(wildcard polynomial.f)) \
3376- $(patsubst %.f,%.o,$(wildcard MadLoopParamReader.f)) \
3377- $(patsubst %.f,%.o,$(wildcard helas_calls*.f)) \
3378- $(patsubst %.f,%.o,$(wildcard jamp?_calls_*.f)) \
3379- $(patsubst %.f,%.o,$(wildcard mp_born_amps_and_wfs.f)) \
3380- $(patsubst %.f,%.o,$(wildcard mp_compute_loop_coefs.f)) \
3381- $(patsubst %.f,%.o,$(wildcard mp_helas_calls*.f)) \
3382- $(patsubst %.f,%.o,$(wildcard coef_construction_*.f)) \
3383- $(patsubst %.f,%.o,$(wildcard loop_CT_calls_*.f)) \
3384- $(patsubst %.f,%.o,$(wildcard mp_coef_construction_*.f))
3385-
3386-$(PROG): check_sa.o $(PROCESS) makefile $(LIBS)
3387- $(FC) $(FFLAGS) -o $(PROG) check_sa.o $(PROCESS) $(LINKLIBS)
3388-
3389-$(STABCHECKDRIVER): StabilityCheckDriver.o $(PROCESS) makefile $(LIBS)
3390- $(FC) $(FFLAGS) -o $(STABCHECKDRIVER) StabilityCheckDriver.o $(PROCESS) $(LINKLIBS)
3391-
3392-clean:
3393- @rm -f *.o
3394
3395=== added file 'Template/loop_material/StandAlone/SubProcesses/makefile.inc'
3396--- Template/loop_material/StandAlone/SubProcesses/makefile.inc 1970-01-01 00:00:00 +0000
3397+++ Template/loop_material/StandAlone/SubProcesses/makefile.inc 2014-08-26 07:56:12 +0000
3398@@ -0,0 +1,74 @@
3399+ifeq ($(wildcard ../../Source/make_opts),)
3400+ ROOT = ..
3401+else
3402+ ROOT = ../..
3403+endif
3404+
3405+
3406+if [ -a ../../Source/make_opts]; then ROOT = ../..; fi;
3407+
3408+if [ -a ../Source/make_opts]; then ROOT = ../; fi;
3409+
3410+include $(ROOT)/Source/make_opts
3411+LIBDIR = $(ROOT)/lib/
3412+
3413+PROG = check
3414+OLP = OLP
3415+STABCHECKDRIVER = StabilityCheckDriver
3416+CHECK_SA_BORN_SPLITORDERS = check_sa_born_splitOrders
3417+LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel %(link_tir_libs)s
3418+LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext) %(tir_libs)s
3419+PROCESS= MadLoopParamReader.o MadLoopCommons.o \
3420+ $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_matrix.f)) \
3421+ $(patsubst %(dotf)s,%(doto)s,$(wildcard improve_ps.f)) \
3422+ $(patsubst %(dotf)s,%(doto)s,$(wildcard born_matrix.f)) \
3423+ $(patsubst %(dotf)s,%(doto)s,$(wildcard CT_interface.f)) \
3424+ $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_num.f)) \
3425+ $(patsubst %(dotf)s,%(doto)s,$(wildcard polynomial.f)) \
3426+ $(patsubst %(dotf)s,%(doto)s,$(wildcard helas_calls*.f)) \
3427+ $(patsubst %(dotf)s,%(doto)s,$(wildcard jamp?_calls_*.f)) \
3428+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_born_amps_and_wfs.f)) \
3429+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_compute_loop_coefs.f)) \
3430+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_helas_calls*.f)) \
3431+ $(patsubst %(dotf)s,%(doto)s,$(wildcard coef_construction_*.f)) \
3432+ $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_CT_calls_*.f)) \
3433+ $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_coef_construction_*.f)) \
3434+ $(patsubst %(dotf)s,%(doto)s,$(wildcard TIR_interface.f)) \
3435+ $(patsubst %(dotf)s,%(doto)s,$(wildcard GOLEM_interface.f))
3436+
3437+OLP_PROCESS= MadLoopParamReader.o MadLoopCommons.o \
3438+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_matrix.f)) \
3439+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/improve_ps.f)) \
3440+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/born_matrix.f)) \
3441+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/CT_interface.f)) \
3442+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_num.f)) \
3443+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/polynomial.f)) \
3444+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/helas_calls*.f)) \
3445+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/jamp?_calls_*.f)) \
3446+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_born_amps_and_wfs.f)) \
3447+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_compute_loop_coefs.f)) \
3448+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_helas_calls*.f)) \
3449+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/coef_construction_*.f)) \
3450+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_CT_calls_*.f)) \
3451+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_coef_construction_*.f)) \
3452+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/TIR_interface.f)) \
3453+ $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/GOLEM_interface.f))
3454+
3455+$(PROG): check_sa.o $(PROCESS) makefile $(LIBS)
3456+ $(FC) $(FFLAGS) -o $(PROG) check_sa.o $(PROCESS) $(LINKLIBS)
3457+
3458+$(STABCHECKDRIVER): StabilityCheckDriver.o $(PROCESS) makefile $(LIBS)
3459+ $(FC) $(FFLAGS) -o $(STABCHECKDRIVER) StabilityCheckDriver.o $(PROCESS) $(LINKLIBS)
3460+
3461+# The program below is not essential but just an helpful one to run the born only
3462+$(CHECK_SA_BORN_SPLITORDERS): check_sa_born_splitOrders.o $(patsubst %(dotf)s,%(doto)s,$(wildcard *born_matrix.f)) makefile $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext)
3463+ $(FC) $(FFLAGS) -o $(CHECK_SA_BORN_SPLITORDERS) check_sa_born_splitOrders.o $(patsubst %(dotf)s,%(doto)s,$(wildcard *born_matrix.f)) -L$(LIBDIR) -ldhelas -lmodel
3464+
3465+%(doto)s : %(dotf)s
3466+ $(FC) $(FFLAGS) -c $< -o $@ %(tir_include)s
3467+
3468+$(OLP): $(OLP_PROCESS) $(LIBS)
3469+ $(FC) -shared $(OLP_PROCESS) -o libMadLoop.$(dylibext) $(LINKLIBS)
3470+
3471+clean:
3472+ @rm -f *.o
3473
3474=== modified file 'UpdateNotes.txt'
3475--- UpdateNotes.txt 2014-08-06 16:48:15 +0000
3476+++ UpdateNotes.txt 2014-08-26 07:56:12 +0000
3477@@ -1,5 +1,6 @@
3478 Update notes for MadGraph5_aMC@NLO (in reverse time order)
3479
3480+<<<<<<< TREE
3481 2.1.3()XX/XX/XX)OM: Fix various compatibility problem created by the LHEFv3 version (Thanks to S. Brochet)
3482 OM: Fix a bug for MadSpin in gridpack mode
3483 OM: Add a routine to check the validity of LHE file (check_event command)
3484@@ -8,6 +9,26 @@
3485 OM: Change colorflow information of LHE file in presence of two epsilon_ijk
3486 since PY8 was not able to handle such flow in that format.
3487
3488+=======
3489+2.2.0(21/07/14) VH: General mixed order corrections in MadLoop (only), including QCD/EW/QED and
3490+ the UFO@NLO model 'loop_qcd_qed_sm'.
3491+ VH: Re-design of both the tree and MadLoop matrix elements output to compute
3492+ contributions of different coupling order combinations independently from one another.
3493+ VH+HS: Tensor integral reduction as implemented in PJFry and IREGI readily available and
3494+ interfaced to MadLoop's output.
3495+ VH: Re-structuring of MadLoop's standalone output so as to easily create a single dynamic
3496+ library including many processes at once. Useful for interfacing MadLoop to other MC's
3497+ and already working with Sherpa.
3498+ VH+HS: This branch contains all the fixes for proper treatment of the latest BSM@NLO models
3499+ produced by FeynRules@NLO. In particular, the fixed related to the presence of majorana
3500+ particles in loop ME's.
3501+
3502+ PT: Redesigned shower_card.dat and eliminated modbos options for Herwig6
3503+ RF: Change the SPINUP information in the NLO LHEF from 0 to 9 (i.e. sum over helicities)
3504+ RF: Fixed a bug in the check on the determination of the conflicting BWs.
3505+ MZ: enabled LHAPDF6 interface
3506+
3507+>>>>>>> MERGE-SOURCE
3508 2.1.2(03/07/14) OM: Fix a bug in ALOHA in presence of customized propagator (Thanks Saurabh)
3509 OM: Fixing some compilation issue with MadWeight (Thanks A. Pin)
3510 OM: Fixing a bug preventing MadWidth to run due to the model prefixing (depending
3511
3512=== removed symlink 'VERSION'
3513=== target was u'madgraph/VERSION'
3514=== modified file 'aloha/aloha_lib.py'
3515--- aloha/aloha_lib.py 2014-01-08 20:14:42 +0000
3516+++ aloha/aloha_lib.py 2014-08-26 07:56:12 +0000
3517@@ -938,6 +938,7 @@
3518 if not veto or not scalar.contains(veto):
3519 scalar = scalar.simplify()
3520 prefactor = 1
3521+
3522 if hasattr(scalar, 'vartype') and scalar.prefactor not in [1,-1]:
3523 prefactor = scalar.prefactor
3524 scalar.prefactor = 1
3525@@ -1048,7 +1049,16 @@
3526 else:
3527 raise self.LorentzObjectRepresentationError("There is no key of (0,) in representation.")
3528 else:
3529- self[(0,)] = representation
3530+ if isinstance(representation,dict):
3531+ try:
3532+ self[(0,)] = representation[(0,)]
3533+ except Exception:
3534+ if representation:
3535+ raise LorentzObjectRepresentation.LorentzObjectRepresentationError("There is no key of (0,) in representation.")
3536+ else:
3537+ self[(0,)] = 0
3538+ else:
3539+ self[(0,)] = representation
3540
3541 def __str__(self):
3542 """ string representation """
3543
3544=== modified file 'aloha/aloha_writers.py'
3545--- aloha/aloha_writers.py 2014-08-04 14:56:54 +0000
3546+++ aloha/aloha_writers.py 2014-08-26 07:56:12 +0000
3547@@ -33,7 +33,6 @@
3548
3549
3550 def __init__(self, abstract_routine, dirpath):
3551-
3552 if aloha.loop_mode:
3553 self.momentum_size = 4
3554 else:
3555@@ -53,21 +52,19 @@
3556 self.routine = abstract_routine
3557 self.tag = self.routine.tag
3558 self.name = name
3559+
3560 self.particles = [self.type_to_variable[spin] for spin in \
3561 abstract_routine.spins]
3562-
3563+
3564 self.offshell = abstract_routine.outgoing # position of the outgoing in particle list
3565 self.outgoing = self.offshell # expected position for the argument list
3566 if 'C%s' %((self.outgoing + 1) // 2) in self.tag:
3567 #flip the outgoing tag if in conjugate
3568 self.outgoing = self.outgoing + self.outgoing % 2 - (self.outgoing +1) % 2
3569-
3570 self.outname = '%s%s' % (self.particles[self.outgoing -1], \
3571 self.outgoing)
3572-
3573 #initialize global helper routine
3574 self.declaration = Declaration_list()
3575-
3576
3577
3578 def pass_to_HELAS(self, indices, start=0):
3579@@ -200,7 +197,8 @@
3580 # couplings
3581 if couplings is None:
3582 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]
3583- detected_couplings.sort()
3584+ coup_sort = lambda x,y: int(x[4:])-int(y[4:])
3585+ detected_couplings.sort(coup_sort)
3586 if detected_couplings:
3587 couplings = detected_couplings
3588 else:
3589@@ -449,7 +447,7 @@
3590 'im': 'imag(%s)',
3591 'cmath.sqrt':'sqrt(dble(%s))',
3592 'sqrt': 'sqrt(dble(%s))',
3593- 'complexconjugate': 'conjg(%s)',
3594+ 'complexconjugate': 'conjg(dcmplx(%s))',
3595 '/' : '{0}/(%s)'.format(one),
3596 'pow': '(%s)**(%s)',
3597 'log': 'log(dble(%s))',
3598@@ -689,7 +687,7 @@
3599 if number.imag == 1:
3600 out = 'CI'
3601 elif number.imag == -1:
3602- out = '-CI'
3603+ out = '-CI'
3604 else:
3605 out = '%s * CI' % self.change_number_format(number.imag)
3606 else:
3607@@ -728,8 +726,9 @@
3608 keys.sort(sort_fct)
3609 for name in keys:
3610 fct, objs = self.routine.fct[name]
3611- format = ' %s = %s\n' % (name, self.get_fct_format(fct))
3612- try:
3613+
3614+ format = ' %s = %s\n' % (name, self.get_fct_format(fct))
3615+ try:
3616 text = format % ','.join([self.write_obj(obj) for obj in objs])
3617 except TypeError:
3618 text = format % tuple([self.write_obj(obj) for obj in objs])
3619@@ -909,10 +908,10 @@
3620 # position of the outgoing in particle list
3621 self.l_id = [int(c[1:]) for c in abstract_routine.tag if c[0] == 'L'][0]
3622 self.l_helas_id = self.l_id # expected position for the argument list
3623- if 'C%s' %((self.outgoing + 1) // 2) in abstract_routine.tag:
3624+ if 'C%s' %((self.l_id + 1) // 2) in abstract_routine.tag:
3625 #flip the outgoing tag if in conjugate
3626- self.l_helas_id += self.l_id % 2 - (self.l_id +1) % 2
3627-
3628+ self.l_helas_id += self.l_id % 2 - (self.l_id +1) % 2
3629+
3630
3631 def define_expression(self):
3632 """Define the functions in a 100% way """
3633@@ -1015,30 +1014,25 @@
3634 """define a list with the string of object required as incoming argument"""
3635
3636 conjugate = [2*(int(c[1:])-1) for c in self.tag if c[0] == 'C']
3637- call_arg = [('list_complex', 'P%s'% self.l_helas_id)] #incoming argument of the routine
3638+ call_arg = []
3639+ #incoming argument of the routine
3640+ call_arg.append( ('list_complex', 'P%s'% self.l_helas_id) )
3641+
3642 self.declaration.add(call_arg[0])
3643
3644 for index,spin in enumerate(self.particles):
3645- if self.offshell == index + 1:
3646+ if self.outgoing == index + 1:
3647 continue
3648 if self.l_helas_id == index + 1:
3649 continue
3650-
3651- if index in conjugate:
3652- index2, spin2 = index+1, self.particles[index+1]
3653- call_arg.append(('complex','%s%d' % (spin2, index2 +1)))
3654- #call_arg.append('%s%d' % (spin, index +1))
3655- elif index-1 in conjugate:
3656- index2, spin2 = index-1, self.particles[index-1]
3657- call_arg.append(('complex','%s%d' % (spin2, index2 +1)))
3658- else:
3659- call_arg.append(('complex','%s%d' % (spin, index +1)))
3660+ call_arg.append(('complex','%s%d' % (spin, index +1)))
3661 self.declaration.add(('list_complex', call_arg[-1][-1]))
3662
3663 # couplings
3664 if couplings is None:
3665 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]
3666- detected_couplings.sort()
3667+ coup_sort = lambda x,y: int(x[4:])-int(y[4:])
3668+ detected_couplings.sort(coup_sort)
3669 if detected_couplings:
3670 couplings = detected_couplings
3671 else:
3672@@ -1059,7 +1053,7 @@
3673 self.declaration.add(('double','W%s' % self.outgoing))
3674
3675 self.call_arg = call_arg
3676-
3677+
3678 return call_arg
3679
3680 def get_momenta_txt(self):
3681@@ -1315,9 +1309,9 @@
3682 'im': 'imag(%s)',
3683 'cmath.sqrt':'sqrt(%s)',
3684 'sqrt': 'sqrt(%s)',
3685- 'complexconjugate': 'conj(%s)',
3686+ 'complexconjugate': 'conj(dcmplx(%s))',
3687 '/' : '{0}/%s'.format(one),
3688- 'abs': 'abs(%s)'
3689+ 'abs': 'abs(%s)'
3690 }
3691
3692 if fct in self.fct_format:
3693@@ -2098,7 +2092,6 @@
3694 class WriterFactory(object):
3695
3696 def __new__(cls, data, language, outputdir, tags):
3697-
3698 language = language.lower()
3699 if isinstance(data.expr, aloha_lib.SplitCoefficient):
3700 assert language == 'fortran'
3701@@ -2106,7 +2099,6 @@
3702 return ALOHAWriterForFortranLoopQP(data, outputdir)
3703 else:
3704 return ALOHAWriterForFortranLoop(data, outputdir)
3705-
3706 if language == 'fortran':
3707 if 'MP' in tags:
3708 return ALOHAWriterForFortranQP(data, outputdir)
3709
3710=== modified file 'aloha/create_aloha.py'
3711--- aloha/create_aloha.py 2014-08-04 14:56:54 +0000
3712+++ aloha/create_aloha.py 2014-08-26 07:56:12 +0000
3713@@ -85,7 +85,6 @@
3714
3715 def write(self, output_dir, language='Fortran', mode='self', combine=True,**opt):
3716 """ write the content of the object """
3717-
3718 writer = aloha_writers.WriterFactory(self, language, output_dir, self.tag)
3719 text = writer.write(mode=mode, **opt)
3720 if combine:
3721@@ -94,8 +93,7 @@
3722 text = tuple([old.__add__(new) for old, new in zip(text,
3723 writer.write_combined(grouped, mode=mode+'no_include', **opt))])
3724 else:
3725- text += writer.write_combined(grouped, mode=mode+'no_include', **opt)
3726-
3727+ text += writer.write_combined(grouped, mode=mode+'no_include', **opt)
3728 if aloha.mp_precision and 'MP' not in self.tag:
3729 self.tag.append('MP')
3730 text += self.write(output_dir, language, mode, **opt)
3731@@ -288,7 +286,7 @@
3732 aloha_lib.KERNEL.use_tag = set(self.kernel_tag)
3733 else:
3734 lorentz = copy.copy(self.routine_kernel)
3735- aloha_lib.KERNEL.use_tag = set(self.kernel_tag)
3736+ aloha_lib.KERNEL.use_tag = set(self.kernel_tag)
3737 for (i, spin ) in enumerate(self.spins):
3738 id = i + 1
3739 #Check if this is the outgoing particle
3740@@ -478,8 +476,11 @@
3741
3742 def compute_loop_coefficient(self, lorentz, outgoing):
3743
3744-
3745- l_in = [int(tag[1:]) for tag in self.tag][0]
3746+
3747+ l_in = [int(tag[1:]) for tag in self.tag if tag.startswith('L')][0]
3748+ if (l_in + 1) // 2 in self.conjg:
3749+ #flip the outgoing tag if in conjugate
3750+ l_in = l_in + l_in % 2 - (l_in +1) % 2
3751 assert l_in != outgoing, 'incoming Open Loop can not be the outcoming one'
3752
3753 # modify the expression for the momenta
3754@@ -820,12 +821,10 @@
3755 self[(realname, outgoing)].add_combine(m)
3756 except Exception,error:
3757 self[(realname, self.symmetries[lorentz.name][outgoing])].add_combine(m)
3758-
3759-
3760+
3761 if save:
3762 self.save()
3763
3764-
3765 def add_Lorentz_object(self, lorentzlist):
3766 """add a series of Lorentz structure created dynamically"""
3767
3768@@ -844,12 +843,15 @@
3769 self.look_for_symmetries()
3770 # reorganize the data (in order to use optimization for a given lorentz
3771 #structure
3772+ aloha.loop_mode = False
3773+ # self.explicit_combine = False
3774 request = {}
3775
3776 for list_l_name, tag, outgoing in data:
3777 #allow tag to have integer for retro-compatibility
3778 all_tag = tag[:]
3779 conjugate = [i for i in tag if isinstance(i, int)]
3780+
3781 tag = [i for i in tag if isinstance(i, str) and not i.startswith('P')]
3782 tag = tag + ['C%s'%i for i in conjugate]
3783 tag = tag + [i for i in all_tag if isinstance(i, str) and i.startswith('P')]
3784@@ -859,7 +861,7 @@
3785 if loop:
3786 aloha.loop_mode = True
3787 self.explicit_combine = True
3788-
3789+
3790 for l_name in list_l_name:
3791 try:
3792 request[l_name][conjugate].append((outgoing,tag))
3793@@ -868,7 +870,7 @@
3794 request[l_name][conjugate] = [(outgoing,tag)]
3795 except Exception:
3796 request[l_name] = {conjugate: [(outgoing,tag)]}
3797-
3798+
3799 # Loop on the structure to build exactly what is request
3800 for l_name in request:
3801 lorentz = eval('self.model.lorentz.%s' % l_name)
3802@@ -898,7 +900,8 @@
3803 conjg_builder = builder.define_conjugate_builder(conjg)
3804 # Compute routines
3805 self.compute_aloha(conjg_builder, symmetry=lorentz.name,
3806- routines=routines)
3807+ routines=routines)
3808+
3809
3810 # Build mutiple lorentz call
3811 for list_l_name, tag, outgoing in data:
3812@@ -940,8 +943,10 @@
3813 conjg_builder = builder.define_conjugate_builder(conjg)
3814 # Compute routines
3815 self.compute_aloha(conjg_builder, symmetry=lorentz.name,
3816- routines=routines)
3817-
3818+ routines=routines)
3819+
3820+
3821+
3822 def compute_aloha(self, builder, symmetry=None, routines=None, tag=[]):
3823 """ define all the AbstractRoutine linked to a given lorentz structure
3824 symmetry authorizes to use the symmetry of anoter lorentz structure.
3825@@ -971,7 +976,7 @@
3826 wavefunction = builder.compute_routine(outgoing, tag)
3827 #Store the information
3828 self.set(realname, outgoing, wavefunction)
3829-
3830+
3831
3832 def compute_aloha_without_kernel(self, builder, symmetry=None, routines=None):
3833 """define all the AbstractRoutine linked to a given lorentz structure
3834@@ -992,10 +997,9 @@
3835
3836 def write(self, output_dir, language):
3837 """ write the full set of Helicity Routine in output_dir"""
3838-
3839 for abstract_routine in self.values():
3840 abstract_routine.write(output_dir, language)
3841-
3842+
3843 for routine in self.external_routines:
3844 self.locate_external(routine, language, output_dir)
3845
3846
3847=== modified file 'input/.mg5_configuration_default.txt'
3848--- input/.mg5_configuration_default.txt 2014-06-30 11:59:30 +0000
3849+++ input/.mg5_configuration_default.txt 2014-08-26 07:56:12 +0000
3850@@ -90,7 +90,7 @@
3851 # run_mode = 2
3852
3853 #! Cluster Type [pbs|sge|condor|lsf|ge|slurm] Use for cluster run only
3854-#! And cluster queue
3855+#! And cluster queue (or partition for slurm)
3856 # cluster_type = condor
3857 # cluster_queue = madgraph
3858
3859@@ -151,6 +151,20 @@
3860 #! Set what OLP to use for the loop ME generation
3861 # OLP = MadLoop
3862
3863+#! Set the PJFry++ lib libpjfry.a directory
3864+#! if auto: try to find it automatically on the system (default)
3865+#! if '' or None: not use PJFry++
3866+#! if pjfry=/PATH/TO/pjfry/lib: use that specific installation path for PJFry++
3867+# pjfry = auto
3868+
3869+#! Set the Golem95 lib libgolem.a directory
3870+#! It only supports version higher than 1.3.0
3871+#! if auto: try to find it automatically on the system (default)
3872+#! if '' or None: not use Golem95
3873+#! if golem=/PATH/TO/golem/lib: use that speficif installation path for Golem95
3874+# golem = auto
3875+
3876+
3877 #! Set how MadLoop dependencies (such as CutTools) should be handled
3878 #! > external : ML5 places a link to the MG5_aMC-wide libraries
3879 #! > internal : ML5 copies all dependencies in the output so that it is independent
3880@@ -163,3 +177,4 @@
3881 # syscalc_path = ./SysCalc
3882
3883
3884+
3885
3886=== removed file 'input/proc_card_default.dat'
3887--- input/proc_card_default.dat 2013-12-09 01:31:26 +0000
3888+++ input/proc_card_default.dat 1970-01-01 00:00:00 +0000
3889@@ -1,40 +0,0 @@
3890-#************************************************************
3891-#* MadGraph 5 *
3892-#* *
3893-#* * * *
3894-#* * * * * *
3895-#* * * * * 5 * * * * *
3896-#* * * * * *
3897-#* * * *
3898-#* *
3899-#* *
3900-#* The MadGraph Development Team - Please visit us at *
3901-#* https://server06.fynu.ucl.ac.be/projects/madgraph *
3902-#* *
3903-#************************************************************
3904-#* *
3905-#* Command File for MadGraph 5 *
3906-#* *
3907-#* run as ./bin/mg5 filename *
3908-#* *
3909-#************************************************************
3910-import model sm
3911-# Define multiparticle labels
3912-define p = g u c d s u~ c~ d~ s~
3913-define j = g u c d s u~ c~ d~ s~
3914-define l+ = e+ mu+
3915-define l- = e- mu-
3916-define vl = ve vm vt
3917-define vl~ = ve~ vm~ vt~
3918-# Specify process(es) to run
3919-generate p p > e- ve~ @1
3920-add process p p > e- ve~ j @2
3921-add process p p > t t~ @3
3922-# Output processes to MadEvent directory
3923-output
3924-# This will create a directory PROC_$MODELNAME_$X
3925-# If you want to specify the path/name of the directory use
3926-# output PATH
3927-
3928-# To generate events, you can go to the created directory and
3929-# run ./bin/generate_events
3930\ No newline at end of file
3931
3932=== modified file 'madgraph/VERSION'
3933--- madgraph/VERSION 2014-07-03 13:37:06 +0000
3934+++ madgraph/VERSION 2014-08-26 07:56:12 +0000
3935@@ -1,5 +1,5 @@
3936-version = 2.1.2
3937-date = 2014-07-03
3938+version = 2.2.0
3939+date = 2014-07-21
3940
3941
3942
3943
3944=== modified file 'madgraph/core/base_objects.py'
3945--- madgraph/core/base_objects.py 2014-06-29 15:15:00 +0000
3946+++ madgraph/core/base_objects.py 2014-08-26 07:56:12 +0000
3947@@ -94,7 +94,6 @@
3948 """Set the value of the property name. First check if value
3949 is a valid value for the considered property. Return True if the
3950 value has been correctly set, False otherwise."""
3951-
3952 if not __debug__ or force:
3953 self[name] = value
3954 return True
3955@@ -345,6 +344,16 @@
3956 in argument given the model specified. It is very fast for usual models"""
3957
3958 for int in model['interactions'].get_type('base'):
3959+ # We discard the interactions with more than one type of orders
3960+ # contributing because it then doesn't necessarly mean that this
3961+ # particle (self) is charged under the group corresponding to the
3962+ # coupling order 'order'. The typical example is in SUSY which
3963+ # features a ' photon-gluon-squark-antisquark ' interaction which
3964+ # has coupling orders QED=1, QCD=1 and would induce the photon
3965+ # to be considered as a valid particle to circulate in a loop of
3966+ # type "QCD".
3967+ if len(int.get('orders'))>1:
3968+ continue
3969 if order in int.get('orders').keys() and self.get('pdg_code') in \
3970 [part.get('pdg_code') for part in int.get('particles')]:
3971 return True
3972@@ -385,7 +394,24 @@
3973 return - self['color']
3974 else:
3975 return self['color']
3976-
3977+
3978+ def get_charge(self):
3979+ """Return the charge code with a correct minus sign"""
3980+
3981+ if not self['is_part']:
3982+ return - self['charge']
3983+ else:
3984+ return self['charge']
3985+
3986+ def get_anti_charge(self):
3987+ """Return the charge code of the antiparticle with a correct minus sign
3988+ """
3989+
3990+ if self['is_part']:
3991+ return - self['charge']
3992+ else:
3993+ return self['charge']
3994+
3995 def get_name(self):
3996 """Return the name if particle, antiname if antiparticle"""
3997
3998@@ -453,10 +479,28 @@
3999 corresponding particle (first one in the list), with the
4000 is_part flag set accordingly. None otherwise."""
4001
4002+ assert isinstance(name, str)
4003+
4004 part = self.find_name(name)
4005 if not part:
4006+ # Then try to look for a particle with that PDG
4007+ try:
4008+ pdg = int(name)
4009+ except ValueError:
4010+ return None
4011+
4012+ for p in self:
4013+ if p.get_pdg_code()==pdg:
4014+ part = copy.copy(p)
4015+ part.set('is_part', True)
4016+ return part
4017+ elif p.get_anti_pdg_code()==pdg:
4018+ part = copy.copy(p)
4019+ part.set('is_part', False)
4020+ return part
4021+
4022 return None
4023- part = copy.copy(part)
4024+ part = copy.copy(part)
4025
4026 if part.get('name') == name:
4027 part.set('is_part', True)
4028@@ -1930,6 +1974,13 @@
4029 res.append(leg.get('id'))
4030
4031 return res
4032+
4033+ def sort(self,*args, **opts):
4034+ """Match with FKSLegList"""
4035+ Opts=copy.copy(opts)
4036+ if 'pert' in Opts.keys():
4037+ del Opts['pert']
4038+ return super(LegList,self).sort(*args, **Opts)
4039
4040
4041 #===============================================================================
4042@@ -2159,6 +2210,25 @@
4043 coupling_orders['WEIGHTED'] = weight
4044 self.set('orders', coupling_orders)
4045
4046+ def pass_squared_order_constraints(self, diag_multiplier, squared_orders,
4047+ sq_orders_types):
4048+ """ Returns wether the contributiong consisting in the current diagram
4049+ multiplied by diag_multiplier passes the *positive* squared_orders
4050+ specified ( a dictionary ) of types sq_order_types (a dictionary whose
4051+ values are the relational operator used to define the constraint of the
4052+ order in key)."""
4053+
4054+ for order, value in squared_orders.items():
4055+ if value<0:
4056+ continue
4057+ combined_order = self.get_order(order) + \
4058+ diag_multiplier.get_order(order)
4059+ if ( sq_orders_types[order]=='==' and combined_order != value ) or \
4060+ ( sq_orders_types[order] in ['=', '<='] and combined_order > value) or \
4061+ ( sq_orders_types[order]=='>' and combined_order <= value) :
4062+ return False
4063+ return True
4064+
4065 def get_order(self, order):
4066 """Return the order of this diagram. It returns 0 if it is not present."""
4067
4068@@ -2299,6 +2369,40 @@
4069
4070 return max_order
4071
4072+ def apply_negative_sq_order(self, ref_diag_list, order, value, order_type):
4073+ """ This function returns a fitlered version of the diagram list self
4074+ which satisfy the negative squared_order constraint 'order' with negative
4075+ value 'value' and of type 'order_type', assuming that the diagram_list
4076+ it must be squared against is 'reg_diag_list'. It also returns the
4077+ new postive target squared order which correspond to this negative order
4078+ constraint. Example: u u~ > d d~ QED^2<=-2 means that one wants to
4079+ pick terms only up to the the next-to-leading order contributiong in QED,
4080+ which is QED=2 in this case, so that target_order=4 is returned."""
4081+
4082+ # First we must compute all contributions to that order
4083+ target_order = min(ref_diag_list.get_order_values(order))+\
4084+ min(self.get_order_values(order))+2*(-value-1)
4085+
4086+ new_list = self.apply_positive_sq_orders(ref_diag_list,
4087+ {order:target_order}, {order:order_type})
4088+
4089+ return new_list, target_order
4090+
4091+ def apply_positive_sq_orders(self, ref_diag_list, sq_orders, sq_order_types):
4092+ """ This function returns a filtered version of self which contain
4093+ only the diagram which satisfy the positive squared order constraints
4094+ sq_orders of type sq_order_types and assuming that the diagrams are
4095+ multiplied with those of the reference diagram list ref_diag_list."""
4096+
4097+ new_diag_list = DiagramList()
4098+ for tested_diag in self:
4099+ for ref_diag in ref_diag_list:
4100+ if tested_diag.pass_squared_order_constraints(ref_diag,
4101+ sq_orders,sq_order_types):
4102+ new_diag_list.append(tested_diag)
4103+ break
4104+ return new_diag_list
4105+
4106 def get_min_order(self,order):
4107 """ Return the order of the diagram in the list with the mimimum coupling
4108 order for the coupling specified """
4109@@ -2312,6 +2416,19 @@
4110
4111 return min_order
4112
4113+ def get_order_values(self, order):
4114+ """ Return the list of possible values appearing in the diagrams of this
4115+ list for the order given in argument """
4116+
4117+ values=set([])
4118+ for diag in self:
4119+ if order in diag['orders'].keys():
4120+ values.add(diag['orders'][order])
4121+ else:
4122+ values.add(0)
4123+
4124+ return list(values)
4125+
4126 #===============================================================================
4127 # Process
4128 #===============================================================================
4129@@ -2353,10 +2470,25 @@
4130 # gives the upper bound for the total weighted order of the
4131 # squared amplitude.
4132 self['squared_orders'] = {}
4133+ # The squared order (sqorders) constraints above can either be upper
4134+ # bound (<=) or exact match (==) depending on how they were specified
4135+ # in the user input. This choice is stored in the dictionary below.
4136+ # Notice that the upper bound is the default
4137+ self['sqorders_types'] = {}
4138 self['has_born'] = True
4139 # The NLO_mode is always None for a tree-level process and can be
4140 # 'all', 'real', 'virt' for a loop process.
4141 self['NLO_mode'] = 'tree'
4142+ # The user might want to have the individual matrix element evaluations
4143+ # for specific values of the coupling orders. The list below specifies
4144+ # what are the coupling names which need be individually treated.
4145+ # For example, for the process p p > j j [] QED=2 (QED=2 is
4146+ # then a squared order constraint), then QED will appear in the
4147+ # 'split_orders' list so that the subroutine in matrix.f return the
4148+ # evaluation of the matrix element individually for the pure QCD
4149+ # contribution 'QCD=4 QED=0', the pure interference 'QCD=2 QED=2' and
4150+ # the pure QED contribution of order 'QCD=0 QED=4'.
4151+ self['split_orders'] = []
4152
4153 def filter(self, name, value):
4154 """Filter for valid process property values."""
4155@@ -2369,6 +2501,24 @@
4156 if name in ['orders', 'overall_orders','squared_orders']:
4157 Interaction.filter(Interaction(), 'orders', value)
4158
4159+ if name == 'sqorders_types':
4160+ if not isinstance(value, dict):
4161+ raise self.PhysicsObjectError, \
4162+ "%s is not a valid dictionary" % str(value)
4163+ for order in value.keys()+value.values():
4164+ if not isinstance(order, str):
4165+ raise self.PhysicsObjectError, \
4166+ "%s is not a valid string" % str(value)
4167+
4168+ if name == 'split_orders':
4169+ if not isinstance(value, list):
4170+ raise self.PhysicsObjectError, \
4171+ "%s is not a valid list" % str(value)
4172+ for order in value:
4173+ if not isinstance(order, str):
4174+ raise self.PhysicsObjectError, \
4175+ "%s is not a valid string" % str(value)
4176+
4177 if name == 'model':
4178 if not isinstance(value, Model):
4179 raise self.PhysicsObjectError, \
4180@@ -2471,12 +2621,29 @@
4181
4182 return super(Process, self).set(name, value) # call the mother routine
4183
4184+ def get_squared_order_type(self, order):
4185+ """ Return what kind of squared order constraint was specified for the
4186+ order 'order'."""
4187+
4188+ if order in self['sqorders_types'].keys():
4189+ return self['sqorders_types'][order]
4190+ else:
4191+ # Default behavior '=' is interpreted as upper bound '<='
4192+ return '='
4193+
4194 def get(self, name):
4195 """Special get for legs_with_decays"""
4196
4197 if name == 'legs_with_decays':
4198 self.get_legs_with_decays()
4199
4200+ if name == 'sqorders_types':
4201+ # We must make sure that there is a type for each sqorder defined
4202+ for order in self['squared_orders'].keys():
4203+ if order not in self['sqorders_types']:
4204+ # Then assign its type to the default '='
4205+ self['sqorders_types'][order]='='
4206+
4207 return super(Process, self).get(name) # call the mother routine
4208
4209 def get_sorted_keys(self):
4210@@ -2486,8 +2653,8 @@
4211 'model', 'id', 'required_s_channels',
4212 'forbidden_onsh_s_channels', 'forbidden_s_channels',
4213 'forbidden_particles', 'is_decay_chain', 'decay_chains',
4214- 'legs_with_decays',
4215- 'perturbation_couplings', 'has_born', 'NLO_mode']
4216+ 'legs_with_decays', 'perturbation_couplings', 'has_born',
4217+ 'NLO_mode','split_orders']
4218
4219 def nice_string(self, indent=0, print_weighted = True):
4220 """Returns a nicely formated string about current process
4221@@ -2519,7 +2686,8 @@
4222 # Add orders
4223 if self['orders']:
4224 mystr = mystr + " ".join([key + '=' + repr(self['orders'][key]) \
4225- for key in self['orders'] if print_weighted or key!='WEIGHTED']) + ' '
4226+ for key in self['orders'] if (print_weighted or key!='WEIGHTED') \
4227+ and not key in self['squared_orders'].keys()]) + ' '
4228
4229 # Add perturbation_couplings
4230 if self['perturbation_couplings']:
4231@@ -2531,9 +2699,11 @@
4232 mystr = mystr + '] '
4233
4234 # Add squared orders
4235- if self['perturbation_couplings'] and self['squared_orders']:
4236- mystr = mystr + " ".join([key + '=' + repr(self['squared_orders'][key]) \
4237- for key in self['squared_orders'] if print_weighted or key!='WEIGHTED']) + ' '
4238+ if self['squared_orders']:
4239+ mystr = mystr + " ".join([key + '^2%s%d'%\
4240+ (self.get_squared_order_type(key),self['squared_orders'][key]) \
4241+ for key in self['squared_orders'].keys() \
4242+ if print_weighted or key!='WEIGHTED']) + ' '
4243
4244 # Add forbidden s-channels
4245 if self['forbidden_onsh_s_channels']:
4246@@ -2786,6 +2956,20 @@
4247
4248 # Helper functions
4249
4250+ def are_negative_orders_present(self):
4251+ """ Check iteratively that no coupling order constraint include negative
4252+ values."""
4253+
4254+ if any(val<0 for val in self.get('orders').values()+\
4255+ self.get('squared_orders').values()):
4256+ return True
4257+
4258+ for procdef in self['decay_chains']:
4259+ if procdef.are_negative_orders_present():
4260+ return True
4261+
4262+ return False
4263+
4264 def are_decays_perturbed(self):
4265 """ Check iteratively that the decayed processes are not perturbed """
4266
4267@@ -2794,6 +2978,14 @@
4268 return True
4269 return False
4270
4271+ def decays_have_squared_orders(self):
4272+ """ Check iteratively that the decayed processes are not perturbed """
4273+
4274+ for procdef in self['decay_chains']:
4275+ if procdef['squared_orders']!={} or procdef.decays_have_squared_orders():
4276+ return True
4277+ return False
4278+
4279 def get_ninitial(self):
4280 """Gives number of initial state particles"""
4281
4282@@ -2945,12 +3137,23 @@
4283 # Ensure that expansion orders are taken into account
4284 expansion_orders = self.get('model').get('expansion_order')
4285 orders = self.get('orders')
4286+ sq_orders = self.get('squared_orders')
4287
4288 tmp = [(k,v) for (k,v) in expansion_orders.items() if 0 < v < 99]
4289 for (k,v) in tmp:
4290 if k in orders:
4291 if v < orders[k]:
4292- logger.warning('''The coupling order (%s=%s) specified is larger than the one allowed
4293+ if k in sq_orders.keys() and \
4294+ (sq_orders[k]>v or sq_orders[k]<0):
4295+ logger.warning(
4296+'''The process with the squared coupling order (%s^2%s%s) specified can potentially
4297+recieve contributions with powers of the coupling %s larger than the maximal
4298+value allowed by the model builder (%s). Hence, MG5_aMC sets the amplitude order
4299+for that coupling to be this maximal one. '''%(k,self.get('sqorders_types')[k],
4300+ self.get('squared_orders')[k],k,v))
4301+ else:
4302+ logger.warning(
4303+'''The coupling order (%s=%s) specified is larger than the one allowed
4304 by the model builder. The maximal value allowed is %s.
4305 We set the %s order to this value''' % (k,orders[k],v,k))
4306 orders[k] = v
4307@@ -3113,7 +3316,7 @@
4308
4309 return max_order_now, particles, hierarchy
4310
4311- def nice_string(self, indent=0):
4312+ def nice_string(self, indent=0, print_weighted=False):
4313 """Returns a nicely formated string about current process
4314 content"""
4315
4316@@ -3174,6 +3377,12 @@
4317 mystr = mystr + order + ' '
4318 mystr = mystr + '] '
4319
4320+ if self['squared_orders']:
4321+ mystr = mystr + " ".join([key + '^2%s%d'%\
4322+ (self.get_squared_order_type(key),self['squared_orders'][key]) \
4323+ for key in self['squared_orders'].keys() \
4324+ if print_weighted or key!='WEIGHTED']) + ' '
4325+
4326 # Remove last space
4327 mystr = mystr[:-1]
4328
4329@@ -3192,6 +3401,30 @@
4330
4331 return mystr
4332
4333+ def get_process_with_legs(self, LegList):
4334+ """ Return a Process object which has the same properties of this
4335+ ProcessDefinition but with the specified LegList as legs attribute.
4336+ """
4337+
4338+ return Process({\
4339+ 'legs': LegList,
4340+ 'model':self.get('model'),
4341+ 'id': self.get('id'),
4342+ 'orders': self.get('orders'),
4343+ 'sqorders_types': self.get('sqorders_types'),
4344+ 'squared_orders': self.get('squared_orders'),
4345+ 'has_born': self.get('has_born'),
4346+ 'required_s_channels': self.get('required_s_channels'),
4347+ 'forbidden_onsh_s_channels': self.get('forbidden_onsh_s_channels'),
4348+ 'forbidden_s_channels': self.get('forbidden_s_channels'),
4349+ 'forbidden_particles': self.get('forbidden_particles'),
4350+ 'perturbation_couplings': self.get('perturbation_couplings'),
4351+ 'is_decay_chain': self.get('is_decay_chain'),
4352+ 'overall_orders': self.get('overall_orders'),
4353+ 'split_orders': self.get('split_orders'),
4354+ 'NLO_mode': self.get('NLO_mode')
4355+ })
4356+
4357 def get_process(self, initial_state_ids, final_state_ids):
4358 """ Return a Process object which has the same properties of this
4359 ProcessDefinition but with the specified given leg ids. """
4360@@ -3207,19 +3440,9 @@
4361 for i, fs_id in enumerate(final_state_ids):
4362 assert fs_id in my_fsids[i]
4363
4364- return Process({\
4365- 'legs': LegList(\
4366+ return self.get_process_with_legs(LegList(\
4367 [Leg({'id': id, 'state':False}) for id in initial_state_ids] + \
4368- [Leg({'id': id, 'state':True}) for id in final_state_ids]),
4369- 'model':self.get('model'),
4370- 'id': self.get('id'),
4371- 'orders': self.get('orders'),
4372- 'required_s_channels': self.get('required_s_channels'),
4373- 'forbidden_s_channels': self.get('forbidden_s_channels'),
4374- 'forbidden_particles': self.get('forbidden_particles'),
4375- 'perturbation_couplings': self.get('perturbation_couplings'),
4376- 'is_decay_chain': self.get('is_decay_chain'),
4377- 'overall_orders': self.get('overall_orders')})
4378+ [Leg({'id': id, 'state':True}) for id in final_state_ids]))
4379
4380 def __eq__(self, other):
4381 """Overloading the equality operator, so that only comparison
4382
4383=== modified file 'madgraph/core/color_algebra.py'
4384--- madgraph/core/color_algebra.py 2013-11-12 23:52:05 +0000
4385+++ madgraph/core/color_algebra.py 2014-08-26 07:56:12 +0000
4386@@ -165,6 +165,36 @@
4387 return None
4388
4389 #===============================================================================
4390+# ColorOne
4391+#===============================================================================
4392+class ColorOne(ColorObject):
4393+ """The one of the color object"""
4394+
4395+ def __init__(self, *args):
4396+ """Check for no index"""
4397+
4398+ assert len(args) == 0 , "ColorOne objects must have no index!"
4399+
4400+ super(ColorOne, self).__init__()
4401+
4402+ def simplify(self):
4403+ """"""
4404+ assert len(self)==0, "There is argument(s) in color object ColorOne."
4405+ col_str = ColorString()
4406+ col_str.coeff = fractions.Fraction(1, 1)
4407+ return ColorFactor([col_str])
4408+
4409+
4410+ def pair_simplify(self, col_obj):
4411+ """Implement ColorOne product simplification"""
4412+
4413+ if any(isinstance(col_obj, c_type) for c_type in [Tr,T,f,d,ColorOne]):
4414+ col_str = ColorString([col_obj])
4415+ return ColorFactor([col_str])
4416+ return None
4417+
4418+
4419+#===============================================================================
4420 # T
4421 #===============================================================================
4422 class T(ColorObject):
4423@@ -705,6 +735,10 @@
4424
4425 ret_list = [(col_obj.__class__.__name__, tuple(col_obj)) \
4426 for col_obj in self]
4427+
4428+ if not ret_list and self.coeff:
4429+ ret_list=[("ColorOne",tuple([]))]
4430+
4431 ret_list.sort()
4432 self.immutable = tuple(ret_list)
4433
4434
4435=== modified file 'madgraph/core/color_amp.py'
4436--- madgraph/core/color_amp.py 2013-11-12 23:52:05 +0000
4437+++ madgraph/core/color_amp.py 2014-08-26 07:56:12 +0000
4438@@ -67,10 +67,12 @@
4439 min_index, res_dict = self.add_vertex(vertex, diagram, model,
4440 repl_dict, res_dict, min_index)
4441
4442- # Return an empty list if all entries are empty
4443- if all([cs == color_algebra.ColorString() \
4444- for cs in res_dict.values()]):
4445- res_dict = {}
4446+ # if the process has no QCD particles
4447+ # Return a list filled with ColorOne if all entries are empty ColorString()
4448+ empty_colorstring = color_algebra.ColorString()
4449+ if all(cs == empty_colorstring for cs in res_dict.values()):
4450+ res_dict = dict((key, color_algebra.ColorString(
4451+ [color_algebra.ColorOne()])) for key in res_dict)
4452
4453 return res_dict
4454
4455@@ -369,7 +371,6 @@
4456 indices) associated to my_color_string. Take a list of the external leg
4457 color octet state indices as an input. Returns only the leading N
4458 contribution!"""
4459-
4460 # Create a new color factor to allow for simplification
4461 my_cf = color_algebra.ColorFactor([my_color_string])
4462
4463@@ -453,7 +454,6 @@
4464 # Rebuild a color string from a CB entry
4465 col_str = color_algebra.ColorString()
4466 col_str.from_immutable(col_basis_entry)
4467-
4468 for (leg_num, leg_repr) in repr_dict.items():
4469 # By default, assign a (0,0) color flow
4470 res_dict[leg_num] = [0, 0]
4471@@ -548,7 +548,7 @@
4472
4473 self.col_matrix_fixed_Nc = {}
4474 self.inverted_col_matrix = {}
4475-
4476+
4477 self._col_basis1 = col_basis
4478 if col_basis2:
4479 self._col_basis2 = col_basis2
4480@@ -574,7 +574,6 @@
4481 enumerate(sorted(self._col_basis1.keys())):
4482 for i2, struct2 in \
4483 enumerate(sorted(self._col_basis2.keys())):
4484-
4485 # Only scan upper right triangle if symmetric
4486 if is_symmetric and i2 < i1:
4487 continue
4488@@ -699,13 +698,18 @@
4489 appearing in struct1. Assumes internal summed indices are negative."""
4490
4491 # First, determines what is the smallest index appearing in struct1
4492- min_index = min(reduce(operator.add,
4493- [list(elem[1]) for elem in struct1])) - 1
4494+ #list2 = reduce(operator.add,[list(elem[1]) for elem in struct1])
4495+ list2 = sum((list(elem[1]) for elem in struct1),[])
4496+ if not list2:
4497+ min_index = -1
4498+ else:
4499+ min_index = min(list2) - 1
4500+
4501 # Second, determines the summed indices in struct2 and create a
4502 # replacement dictionary
4503 repl_dict = {}
4504- list2 = reduce(operator.add,
4505- [list(elem[1]) for elem in struct1])
4506+ #list2 = reduce(operator.add,
4507+ # [list(elem[1]) for elem in struct1])
4508 for summed_index in list(set([i for i in list2 \
4509 if list2.count(i) == 2])):
4510 repl_dict[summed_index] = min_index
4511@@ -732,5 +736,8 @@
4512 @staticmethod
4513 def lcmm(*args):
4514 """Return lcm of args."""
4515- return reduce(ColorMatrix.lcm, args)
4516+ if args:
4517+ return reduce(ColorMatrix.lcm, args)
4518+ else:
4519+ return 1
4520
4521
4522=== modified file 'madgraph/core/diagram_generation.py'
4523--- madgraph/core/diagram_generation.py 2014-06-29 15:15:00 +0000
4524+++ madgraph/core/diagram_generation.py 2014-08-26 07:56:12 +0000
4525@@ -387,7 +387,6 @@
4526
4527 def __init__(self, argument=None):
4528 """Allow initialization with Process"""
4529-
4530 if isinstance(argument, base_objects.Process):
4531 super(Amplitude, self).__init__()
4532 self.set('process', argument)
4533@@ -507,7 +506,6 @@
4534 DiagramList by the function. This is controlled by the argument
4535 returndiag.
4536 """
4537-
4538 process = self.get('process')
4539 model = process.get('model')
4540 legs = process.get('legs')
4541@@ -744,13 +742,20 @@
4542 newleg = copy.copy(vert.get('legs').pop(-1))
4543 newleg.set('onshell', False)
4544 vert.get('legs').append(newleg)
4545-
4546- # Set diagrams to res
4547- self['diagrams'] = res
4548
4549 # Set actual coupling orders for each diagram
4550 for diagram in res:
4551 diagram.calculate_orders(model)
4552+
4553+ # Filter the diagrams according to the squared coupling order
4554+ # constraints and possible the negative one. Remember that OrderName=-n
4555+ # means that the user wants to include everything up to the N^(n+1)LO
4556+ # contribution in that order and at most one order can be restricted
4557+ # in this way. We shall do this only if the diagrams are not asked to
4558+ # be returned, as it is the case for NLO because it this case the
4559+ # interference are not necessarily among the diagrams generated here only.
4560+ if not returndiag and len(res)>0:
4561+ res = self.apply_squared_order_constraints(res)
4562
4563 # Replace final id=0 vertex if necessary
4564 if not process.get('is_decay_chain'):
4565@@ -784,7 +789,10 @@
4566 self.trim_diagrams(diaglist=res)
4567
4568 # Sort process legs according to leg number
4569- self.get('process').get('legs').sort()
4570+ pertur = 'QCD'
4571+ if self.get('process')['perturbation_couplings']:
4572+ pertur = sorted(self.get('process')['perturbation_couplings'])[0]
4573+ self.get('process').get('legs').sort(pert=pertur)
4574
4575 # Set diagrams to res if not asked to be returned
4576 if not returndiag:
4577@@ -793,6 +801,47 @@
4578 else:
4579 return not failed_crossing, res
4580
4581+ def apply_squared_order_constraints(self, diag_list):
4582+ """Applies the user specified squared order constraints on the diagram
4583+ list in argument."""
4584+
4585+ res = copy.copy(diag_list)
4586+
4587+ # Iterate the filtering since the applying the constraint on one
4588+ # type of coupling order can impact what the filtering on a previous
4589+ # one (relevant for the '==' type of constraint).
4590+ while True:
4591+ new_res = res.apply_positive_sq_orders(res,
4592+ self['process'].get('squared_orders'),
4593+ self['process']['sqorders_types'])
4594+ # Exit condition
4595+ if len(res)==len(new_res):
4596+ break
4597+ elif (len(new_res)>len(res)):
4598+ raise MadGraph5Error(
4599+ 'Inconsistency in function apply_squared_order_constraints().')
4600+ # Actualizing the list of diagram for the next iteration
4601+ res = new_res
4602+
4603+ # Now treat the negative squared order constraint (at most one)
4604+ neg_orders = [(order, value) for order, value in \
4605+ self['process'].get('squared_orders').items() if value<0]
4606+ if len(neg_orders)==1:
4607+ neg_order, neg_value = neg_orders[0]
4608+ # Now check any negative order constraint
4609+ res, target_order = res.apply_negative_sq_order(res, neg_order,\
4610+ neg_value, self['process']['sqorders_types'][neg_order])
4611+ # Substitute the negative value to this positive one so that
4612+ # the resulting computed constraints appears in the print out
4613+ # and at the output stage we no longer have to deal with
4614+ # negative valued target orders
4615+ self['process']['squared_orders'][neg_order]=target_order
4616+ elif len(neg_orders)>1:
4617+ raise InvalidCmd('At most one negative squared order constraint'+\
4618+ ' can be specified, not %s.'%str(neg_orders))
4619+
4620+ return res
4621+
4622 def create_diagram(self, vertexlist):
4623 """ Return a Diagram created from the vertex list. This function can be
4624 overloaded by daughter classes."""
4625@@ -908,7 +957,9 @@
4626 orders subtracted. If coupling_orders is not given, return
4627 None (which counts as success).
4628 WEIGHTED is a special order, which corresponds to the sum of
4629- order hierarchys for the couplings."""
4630+ order hierarchies for the couplings.
4631+ We ignore negative constraints as these cannot be taken into
4632+ account on the fly but only after generation."""
4633
4634 if not coupling_orders:
4635 return None
4636@@ -922,7 +973,8 @@
4637 for coupling in inter.get('orders').keys():
4638 # Note that we don't consider a missing coupling as a
4639 # constraint
4640- if coupling in present_couplings:
4641+ if coupling in present_couplings and \
4642+ present_couplings[coupling]>=0:
4643 # Reduce the number of couplings that are left
4644 present_couplings[coupling] -= \
4645 inter.get('orders')[coupling]
4646@@ -930,7 +982,8 @@
4647 # We have too many couplings of this type
4648 return False
4649 # Now check for WEIGHTED, i.e. the sum of coupling hierarchy values
4650- if 'WEIGHTED' in present_couplings:
4651+ if 'WEIGHTED' in present_couplings and \
4652+ present_couplings['WEIGHTED']>=0:
4653 weight = sum([model.get('order_hierarchy')[c]*n for \
4654 (c,n) in inter.get('orders').items()])
4655 present_couplings['WEIGHTED'] -= weight
4656@@ -1124,7 +1177,7 @@
4657 def trim_diagrams(self, decay_ids=[], diaglist=None):
4658 """Reduce the number of legs and vertices used in memory.
4659 When called by a diagram generation initiated by LoopAmplitude,
4660- this function should no trim the diagrams in the attribute 'diagrams'
4661+ this function should not trim the diagrams in the attribute 'diagrams'
4662 but rather a given list in the 'diaglist' argument."""
4663
4664 legs = []
4665@@ -1164,7 +1217,6 @@
4666 diagram.get('vertices')[ivx] = vertices[index]
4667 except ValueError:
4668 vertices.append(vertex)
4669-
4670
4671 #===============================================================================
4672 # AmplitudeList
4673@@ -1627,10 +1679,14 @@
4674 process_definition.get('perturbation_couplings'),
4675 'squared_orders': \
4676 process_definition.get('squared_orders'),
4677+ 'sqorders_types': \
4678+ process_definition.get('sqorders_types'),
4679 'overall_orders': \
4680 process_definition.get('overall_orders'),
4681 'has_born': \
4682- process_definition.get('has_born')
4683+ process_definition.get('has_born'),
4684+ 'split_orders': \
4685+ process_definition.get('split_orders')
4686 })
4687 fast_proc = \
4688 array.array('i',[leg.get('id') for leg in legs])
4689@@ -1854,6 +1910,12 @@
4690 process_definition.get('required_s_channels'),
4691 'forbidden_onsh_s_channels': \
4692 process_definition.get('forbidden_onsh_s_channels'),
4693+ 'sqorders_types': \
4694+ process_definition.get('sqorders_types'),
4695+ 'squared_orders': \
4696+ process_definition.get('squared_orders'),
4697+ 'split_orders': \
4698+ process_definition.get('split_orders'),
4699 'forbidden_s_channels': \
4700 process_definition.get('forbidden_s_channels'),
4701 'forbidden_particles': \
4702@@ -1861,7 +1923,9 @@
4703 'is_decay_chain': \
4704 process_definition.get('is_decay_chain'),
4705 'overall_orders': \
4706- process_definition.get('overall_orders')})
4707+ process_definition.get('overall_orders'),
4708+ 'split_orders': \
4709+ process_definition.get('split_orders')})
4710
4711 # Check for couplings with given expansion orders
4712 process.check_expansion_orders()
4713
4714=== modified file 'madgraph/core/drawing.py'
4715--- madgraph/core/drawing.py 2013-11-13 02:21:10 +0000
4716+++ madgraph/core/drawing.py 2014-08-26 07:56:12 +0000
4717@@ -92,8 +92,6 @@
4718 assert isinstance(vertex, VertexPoint), 'The begin point should be a ' + \
4719 'Vertex_Point object'
4720
4721- assert vertex is not self.end
4722-
4723 self.begin = vertex
4724 vertex.add_line(self)
4725 return
4726@@ -104,8 +102,6 @@
4727 assert isinstance(vertex, VertexPoint), 'The end point should be a ' + \
4728 'Vertex_Point object'
4729
4730- assert vertex is not self.begin
4731-
4732 self.end = vertex
4733 vertex.add_line(self)
4734 return
4735@@ -1797,6 +1793,8 @@
4736
4737 # check if we need curved loop particles
4738 curved_for_loop = False
4739+ circled_for_loop = False
4740+
4741 if isinstance(diagram, LoopFeynmanDiagram):
4742 # If only 2 particle in the loop require that those lines are
4743 # curved
4744@@ -1804,10 +1802,17 @@
4745 curved_for_loop = True
4746 self.curved_part_start = (0, 0)
4747
4748+ # for tadpole DOES NOT CRASH BUT STILL NEED FIXING
4749+ elif len([l for l in diagram.lineList if l.loop_line]) == 1:
4750+ circled_for_loop = True
4751+ self.curved_part_start = (0, 0)
4752+
4753 # drawing the particles
4754- for line in diagram.lineList:
4755- if not curved_for_loop or not line.loop_line:
4756+ for line in diagram.lineList:
4757+ if (not curved_for_loop and not circled_for_loop) or not line.loop_line:
4758 self.draw_line(line)
4759+ elif circled_for_loop:
4760+ self.draw_circled_line(line)
4761 else:
4762 self.draw_curved_line(line)
4763
4764@@ -1856,6 +1861,34 @@
4765 number = line.number
4766 self.associate_number(line, number)
4767
4768+ # To draw tadpole
4769+ def draw_circled_line(self, line):
4770+ """Draw the line information.
4771+ First, call the method associate the line type [draw_circled_XXXXXX]
4772+ Then finalize line representation by adding his name."""
4773+
4774+ # if 4 point (or more interaction at the beginning/end of the loop
4775+ # need to reduce curvature
4776+ if len(line.begin.lines) > 3 or len(line.end.lines) > 3 :
4777+ cercle = False
4778+ else:
4779+ cercle = True
4780+
4781+ # Find the type line of the particle [straight, wavy, ...]
4782+ line_type = line.get_info('line')
4783+ # Call the routine associate to this type [self.draw_straight, ...]
4784+ if hasattr(self, 'draw_circled_' + line_type):
4785+ getattr(self, 'draw_circled_' + line_type)(line, cercle)
4786+ else:
4787+ self.draw_circled_straight(line, reduce)
4788+
4789+ # Finalize the line representation with adding the name of the particle
4790+ name = line.get_name()
4791+ self.associate_name(line, name)
4792+
4793+ #store begin for helping future curving
4794+ self.curved_part_start = (line.begin.pos_x, line.begin.pos_y*1.2)
4795+
4796 def draw_curved_line(self, line):
4797 """Draw the line information.
4798 First, call the method associate the line type [draw_curved_XXXXXX]
4799
4800=== modified file 'madgraph/core/helas_objects.py'
4801--- madgraph/core/helas_objects.py 2013-11-29 07:28:53 +0000
4802+++ madgraph/core/helas_objects.py 2014-08-26 07:56:12 +0000
4803@@ -89,6 +89,7 @@
4804 else:
4805 sorted_tags = sorted([cls(d, model, ninitial) for d in \
4806 amplitude.get('diagrams')])
4807+
4808 # Do not use this for loop diagrams as for now the HelasMultiProcess
4809 # always contain only exactly one loop amplitude.
4810 if sorted_tags and not isinstance(amplitude, \
4811@@ -898,12 +899,11 @@
4812 part = self.get('particle')
4813 self.set('particle', self.get('antiparticle'))
4814 self.set('antiparticle', part)
4815-
4816+
4817 def is_anticommutating_ghost(self):
4818- """ Return True if the particle of this wavefunction is a ghost charged
4819- under SU(3)"""
4820- return self.get('particle').get('ghost') and self.get('color')!=1
4821-
4822+ """ Return True if the particle of this wavefunction is a ghost"""
4823+ return self.get('particle').get('ghost')
4824+
4825 def is_fermion(self):
4826 return self.get('spin') % 2 == 0
4827
4828@@ -1006,9 +1006,11 @@
4829 array_rep.append(self['color_key'])
4830 # Also need to specify if it is a loop wf
4831 array_rep.append(int(self['is_loop']))
4832+
4833 # Finally, the mother numbers
4834 array_rep.extend([mother['number'] for \
4835 mother in self['mothers']])
4836+
4837 return array_rep
4838
4839 def get_pdg_code(self):
4840@@ -1039,9 +1041,9 @@
4841 if particles[1].get_pdg_code() != particles[2].get_pdg_code() \
4842 and self.get('pdg_code') == \
4843 particles[1].get_anti_pdg_code()\
4844- and self.get('coupling')[0] != '-':
4845+ and not self.get('coupling')[0].startswith('-'):
4846 # We need a minus sign in front of the coupling
4847- self.set('coupling', ['-' + c for c in self.get('coupling')])
4848+ self.set('coupling', ['-%s'%c for c in self.get('coupling')])
4849
4850 def set_octet_majorana_coupling_sign(self):
4851 """For octet Majorana fermions, need an extra minus sign in
4852@@ -1052,12 +1054,9 @@
4853 if self.get('color') == 8 and \
4854 self.get_spin_state_number() == -2 and \
4855 self.get('self_antipart') and \
4856- [m.get('color') for m in self.get('mothers')] == [8, 8]:
4857- if hasattr(self, 'octet_majorana_flip'):
4858- return
4859- self.octet_majorana_flip = True
4860- self.set('coupling', ['-%s' % c
4861- for c in self.get('coupling')])
4862+ [m.get('color') for m in self.get('mothers')] == [8, 8] and \
4863+ not self.get('coupling')[0].startswith('-'):
4864+ self.set('coupling', ['-%s' % c for c in self.get('coupling')])
4865
4866 def set_state_and_particle(self, model):
4867 """Set incoming/outgoing state according to mother states and
4868@@ -1260,11 +1259,36 @@
4869 diagram_wavefunctions.insert(i, new_wf)
4870 break
4871 else:
4872- diagram_wavefunctions.append(new_wf)
4873+ # For loop processes, care is needed since
4874+ # some loop wavefunctions in the diag_wfs might have
4875+ # the new_wf in their mother, so we want to place
4876+ # new_wf as early as possible in the list.
4877+ # We first look if any mother of the wavefunction
4878+ # we want to add appears in the diagram_wavefunctions
4879+ # list. If it doesn't, max_mother_index is -1.
4880+ # If it does, then max_mother_index is the maximum
4881+ # index in diagram_wavefunctions of those of the
4882+ # mothers present in this list.
4883+ max_mother_index = max([-1]+
4884+ [diagram_wavefunctions.index(wf) for wf in
4885+ mothers if wf in diagram_wavefunctions])
4886+
4887+ # We want to insert this new_wf as early as
4888+ # possible in the diagram_wavefunctions list so that
4889+ # we are guaranteed that it will be placed *before*
4890+ # wavefunctions that have new_wf as a mother.
4891+ # We therefore place it at max_mother_index+1.
4892+ if max_mother_index<len(diagram_wavefunctions)-1:
4893+ new_wf.set('number',diagram_wavefunctions[
4894+ max_mother_index+1].get('number'))
4895+ for wf in diagram_wavefunctions[max_mother_index+1:]:
4896+ wf.set('number',wf.get('number')+1)
4897+ diagram_wavefunctions.insert(max_mother_index+1,
4898+ new_wf)
4899
4900 # Set new mothers
4901 new_wf.set('mothers', mothers)
4902-
4903+
4904 # Now flip flow or sign
4905 if flip_flow:
4906 # Flip fermion flow
4907@@ -1283,7 +1307,7 @@
4908 new_wf_number = new_wf.get('number')
4909 new_wf = wavefunctions[wavefunctions.index(new_wf)]
4910 diagram_wf_numbers = [w.get('number') for w in \
4911- diagram_wavefunctions]
4912+ diagram_wavefunctions]
4913 index = diagram_wf_numbers.index(new_wf_number)
4914 diagram_wavefunctions.pop(index)
4915 # We need to decrease the wf number for later
4916@@ -1293,13 +1317,27 @@
4917 wf.set('number', wf.get('number') - 1)
4918 # Since we reuse the old wavefunction, reset wf_number
4919 wf_number = wf_number - 1
4920+
4921 # Need to replace wavefunction in number_to_wavefunctions
4922- # (in case this wavefunction is in another of the dicts)
4923+ # (in case this wavefunction is in another of the dicts)
4924 for n_to_wf_dict in number_to_wavefunctions:
4925 if new_wf in n_to_wf_dict.values():
4926 for key in n_to_wf_dict.keys():
4927 if n_to_wf_dict[key] == new_wf:
4928- n_to_wf_dict[key] = new_wf
4929+ n_to_wf_dict[key] = new_wf
4930+
4931+ if self.get('is_loop'):
4932+ # fix a bug for the g g > go go g [virt=QCD]
4933+ # when there is a wf which is replaced, we need to propagate
4934+ # the change in all wavefunction of that diagrams which could
4935+ # have this replaced wavefunction in their mothers. This
4936+ # plays the role of the 'number_to_wavefunction' dictionary
4937+ # used for tree level.
4938+ for wf in diagram_wavefunctions:
4939+ for i,mother_wf in enumerate(wf.get('mothers')):
4940+ if mother_wf.get('number')==new_wf_number:
4941+ wf.get('mothers')[i]=new_wf
4942+
4943 except ValueError:
4944 pass
4945
4946@@ -1464,7 +1502,15 @@
4947
4948 #fixed argument
4949 for i, coup in enumerate(self.get_with_flow('coupling')):
4950- output['coup%d'%i] = coup
4951+ # We do not include the - sign in front of the coupling of loop
4952+ # wavefunctions (only the loop ones, the tree ones are treated normally)
4953+ # in the non optimized output because this sign was already applied to
4954+ # the coupling passed in argument when calling the loop amplitude.
4955+ if not OptimizedOutput and self.get('is_loop'):
4956+ output['coup%d'%i] = coup[1:] if coup.startswith('-') else coup
4957+ else:
4958+ output['coup%d'%i] = coup
4959+
4960 output['out'] = self.get('me_id') - flip
4961 output['M'] = self.get('mass')
4962 output['W'] = self.get('width')
4963@@ -1543,10 +1589,9 @@
4964
4965 # Sort according to spin and flow direction
4966 res.sort()
4967-# if not self['is_loop']:
4968 res.append(self.get_spin_state_number())
4969 res.append(self.find_outgoing_number())
4970-# else:
4971+
4972 if self['is_loop']:
4973 res.append(self.get_loop_index())
4974 if not self.get('mothers'):
4975@@ -2075,6 +2120,7 @@
4976 wf_number,
4977 force_flip_flow=False,
4978 number_to_wavefunctions=[]):
4979+
4980 """Check for clashing fermion flow (N(incoming) !=
4981 N(outgoing)). If found, we need to trace back through the
4982 mother structure (only looking at fermions), until we find a
4983@@ -2267,6 +2313,76 @@
4984
4985 return conjugates
4986
4987+
4988+ def check_wavefunction_numbers_order(self, applyChanges=False, raiseError=True):
4989+ """ This function only serves as an internal consistency check to
4990+ make sure that when setting the 'wavefunctions' attribute of the
4991+ diagram, their order is consistent, in the sense that all mothers
4992+ of any given wavefunction appear before that wavefunction.
4993+ This function returns True if there was no change and the original
4994+ wavefunction list was consistent and False otherwise.
4995+ The option 'applyChanges' controls whether the function should substitute
4996+ the original list (self) with the new corrected one. For now, this function
4997+ is only used for self-consistency checks and the changes are not applied."""
4998+
4999+ if len(self)<2:
5000+ return True
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: